Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Major clean-up of code #1

Open
wants to merge 6 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
251 changes: 115 additions & 136 deletions WidgetsDirect/Data/PopulateWidgets.cls
Original file line number Diff line number Diff line change
Expand Up @@ -5,168 +5,147 @@ Class Data.PopulateWidgets Extends %RegisteredObject
/// Run all population methods
ClassMethod Populate() As %Status
{
set sc=$$$OK
set sc=$$$ADDSC(sc,##class(Data.PopulateWidgets).CreateWidgets())
set sc=$$$ADDSC(sc,##class(Data.PopulateWidgets).PopulateAccessories())
set sc=$$$ADDSC(sc,##class(Data.PopulateWidgets).PopulateLinks())
set sc=$$$ADDSC(sc,##class(Data.PopulateWidgets).CreateWWWidgets())
set sc = $$$OK
set sc = $$$ADDSC(sc,##class(Data.PopulateWidgets).CreateWidgets())
set sc = $$$ADDSC(sc,##class(Data.PopulateWidgets).PopulateAccessories())
set sc = $$$ADDSC(sc,##class(Data.PopulateWidgets).PopulateLinks())
set sc = $$$ADDSC(sc,##class(Data.PopulateWidgets).CreateWWWidgets())
quit sc
}

ClassMethod CreateWidgets() As %Status
{
set tSC = $$$OK

set tSC = $$$ADDSC(tSC,..CreateWidget("Waterproof Widget", 10.99, 10, "This widget is waterproof to a depth of 100m for up to 7 hours"))
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I refactored the population tools to split up the object creation from the object definition, as well as adding better error handling and more formatting consistency.

set tSC = $$$ADDSC(tSC,..CreateWidget("Motorbike Widget", 110.99, 7, "This widget attaches to all Japanese motorbikes"))
set tSC = $$$ADDSC(tSC,..CreateWidget("Woodland Widget", 7.99, 17, "This widget can identify plant and tree species"))
set tSC = $$$ADDSC(tSC,..CreateWidget("Racing Widget", 1000.98, 100, "This widget records lap time and average speed"))
set tSC = $$$ADDSC(tSC,..CreateWidget("Music Widget", 1.99, 107, "This widget can autotune all brass and string instruments"))
set tSC = $$$ADDSC(tSC,..CreateWidget("Microscope Widget", 8.99, 84, "This widget can magnify to 1000x"))

set widgetObj = ##class(User.Widget).%New()
set widgetObj.Name = "Waterproof Widget"
set widgetObj.Description = "This widget is waterproof to a depth of 100m for up to 7 hours"
set widgetObj.Price = 10.99
set widgetObj.Quantity = 10
do widgetObj.%Save()

set widgetObj = ##class(User.Widget).%New()
set widgetObj.Name = "Motorbike Widget"
set widgetObj.Description = "This widget attaches to all Japanese motorbikes"
set widgetObj.Price = 110.99
set widgetObj.Quantity = 7
do widgetObj.%Save()

set widgetObj = ##class(User.Widget).%New()
set widgetObj.Name = "Woodland Widget"
set widgetObj.Description = "This widget can identify plant and tree species"
set widgetObj.Price = 7.99
set widgetObj.Quantity = 17
do widgetObj.%Save()

set widgetObj = ##class(User.Widget).%New()
set widgetObj.Name = "Racing Widget"
set widgetObj.Description = "This widget record lap time and average speed"
set widgetObj.Price = 1000.98
set widgetObj.Quantity = 100
do widgetObj.%Save()

set widgetObj = ##class(User.Widget).%New()
set widgetObj.Name = "Music Widget"
set widgetObj.Description = "This widget can autotune all brass and string instruments"
set widgetObj.Price = 1.99
set widgetObj.Quantity = 107
do widgetObj.%Save()
set widgetObj = ##class(User.Widget).%New()
set widgetObj.Name = "Microscope Widget"
set widgetObj.Description = "This widget can magnify to 1000x"
set widgetObj.Price = 8.99
set widgetObj.Quantity = 84
do widgetObj.%Save()

QUIT $$$OK
quit tSC
}

ClassMethod PopulateAccessories()
{

s acc = ##class(User.WidgetAccessory).%New()
s acc.Name = "Flotation Aid"
s acc.Description = "This accessory helps the widget to float"
s acc.Price = 18.54
s acc.Quantity = 10
s acc.FirstManufactured = $H-1235
s acc.InProduction =1
s acc.Import =1
s acc.SKU ="AE235B6FB"
w acc.%Save()

s acc = ##class(User.WidgetAccessory).%New()
s acc.Name = "Flight Aid"
s acc.Description = "This accessory helps the widget to fly"
s acc.Price = 180.54
s acc.Quantity = 87
s acc.FirstManufactured = $H-300
s acc.InProduction =1
s acc.Import =1
s acc.SKU ="AE2388DBB"
w acc.%Save()

s acc = ##class(User.WidgetAccessory).%New()
s acc.Name = "Slip Cover"
s acc.Description = "This accessory protects the widget from scratches"
s acc.Price = 7.24
s acc.Quantity = 100
s acc.FirstManufactured = $H-10
s acc.InProduction =1
s acc.Import =1
s acc.SKU ="AE2377800"
w acc.%Save()
QUIT $$$OK
set tSC = $$$OK

set tSC = $$$ADDSC(tSC,..CreateAccessory("Flotation Aid", 18.54, 10, $horolog-1235, 1, 1, "AE235B6FB", "This accessory helps the widget to float"))
set tSC = $$$ADDSC(tSC,..CreateAccessory("Flight Aid", 180.54, 87, $horolog-300, 1, 1, "AE2388DBB", "This accessory helps the widget to fly"))
set tSC = $$$ADDSC(tSC,..CreateAccessory("Slip Cover", 7.24, 100, $horolog-10, 1, 1, "AE2377800", "This accessory protects the widget from scratches"))

quit tSC
}

ClassMethod PopulateLinks()
ClassMethod PopulateLinks() As %Status
{
set tSC = $$$OK

s link = ##class(User.WidgetAccessoryLink).%New()
d link.WidgetSetObjectId(1)
d link.AccessorySetObjectId(1)
w link.%Save()
set tSC = $$$ADDSC(tSC,..PopulateLink(1,1))
set tSC = $$$ADDSC(tSC,..PopulateLink(1,2))
set tSC = $$$ADDSC(tSC,..PopulateLink(1,3))
set tSC = $$$ADDSC(tSC,..PopulateLink(2,2))
set tSC = $$$ADDSC(tSC,..PopulateLink(3,1))
set tSC = $$$ADDSC(tSC,..PopulateLink(5,3))

s link = ##class(User.WidgetAccessoryLink).%New()
d link.WidgetSetObjectId(1)
d link.AccessorySetObjectId(2)
w link.%Save()
quit tSC
}

s link = ##class(User.WidgetAccessoryLink).%New()
d link.WidgetSetObjectId(1)
d link.AccessorySetObjectId(3)
w link.%Save()
ClassMethod CreateWWWidgets() As %Status
{
set tSC = $$$OK

s link = ##class(User.WidgetAccessoryLink).%New()
d link.WidgetSetObjectId(2)
d link.AccessorySetObjectId(2)
w link.%Save()

set tSC = $$$ADDSC(tSC,..CreateWWWidget("Widget of Power", 40.99, 40, "50011001104", "HQ", "This widget provides 110V60 or 230V50"))
set tSC = $$$ADDSC(tSC,..CreateWWWidget("Widget of Speed", 140.99, 87, "50011001105", "HQ", "This widget can travel at 143mph"))
set tSC = $$$ADDSC(tSC,..CreateWWWidget("Widget of Light", 50.99, 54, "50011001106", "HQ", "This widget can provide 10000 Candlepower"))

s link = ##class(User.WidgetAccessoryLink).%New()
d link.WidgetSetObjectId(3)
d link.AccessorySetObjectId(1)
w link.%Save()

s link = ##class(User.WidgetAccessoryLink).%New()
d link.WidgetSetObjectId(5)
d link.AccessorySetObjectId(3)
w link.%Save()
QUIT $$$OK
quit tSC
}

ClassMethod CreateWWWidgets() As %Status
ClassMethod CreateWidget(
Name As %String,
Price As %Currency,
Quantity As %Integer,
Description As %String
) As %Status
{
set widgetObj = ##class(User.Widget).%New()
set widgetObj.Name = Name
set widgetObj.Price = Price
set widgetObj.Quantity = Quantity
set widgetObj.Description = Description

quit widgetObj.%Save()
}

ClassMethod CreateAccessory(
Name As %String,
Price As %Currency,
Quantity As %Integer,
FirstManufactured As %Date,
InProduction As %Boolean,
Import As %Boolean,
SKU As %String,
Description As %String
) As %Status
{
set accessory = ##class(User.WidgetAccessory).%New()
set accessory.Name = Name
set accessory.Price = Price
set accessory.Quantity = Quantity
set accessory.FirstManufactured = FirstManufactured
set accessory.InProduction = InProduction
set accessory.Import = Import
set accessory.SKU = SKU
set accessory.Description = Description

set widgetObj = ##class(User.WWWidget).%New()
set widgetObj.WidgetName = "Widget of Power"
set widgetObj.Summary = "This widget provides 110V60 or 230V50"
set widgetObj.Cost = 40.99
set widgetObj.StockLevel = 40
set widgetObj.Barcode = "50011001104"
set widgetObj.Location = "HQ"
do widgetObj.%Save()

set widgetObj = ##class(User.WWWidget).%New()
set widgetObj.WidgetName = "Widget of Speed"
set widgetObj.Summary = "This widget can travel at 143mph"
set widgetObj.Cost = 140.99
set widgetObj.StockLevel = 87
set widgetObj.Barcode = "50011001105"
set widgetObj.Location = "HQ"
do widgetObj.%Save()
quit accessory.%Save()
}

ClassMethod PopulateLink(
WidgetId As %Integer,
AccessoryId As %Integer
) As %Status
{
set accessoryLink = ##class(User.WidgetAccessoryLink).%New()
if '##class(User.Widget).%ExistsId(WidgetId) {
quit $$$ERROR($$$LoadObjectNotFound,"User.Widget",WidgetId)
}
if '##class(User.WidgetAccessory).%ExistsId(AccessoryId) {
quit $$$ERROR($$$LoadObjectNotFound,"User.WidgetAccessory",AccessoryId)
}
set tSC = accessoryLink.WidgetSetObjectId(WidgetId)
if $$$ISERR(tSC) {
quit tSC
}
set tSC = accessoryLink.AccessorySetObjectId(AccessoryId)
if $$$ISERR(tSC) {
quit tSC
}

set widgetObj = ##class(User.WWWidget).%New()
set widgetObj.WidgetName = "Widget of Light"
set widgetObj.Summary = "This widget can provide 10000 Candlepower"
set widgetObj.Cost = 50.99
set widgetObj.StockLevel = 54
set widgetObj.Barcode = "50011001106"
set widgetObj.Location = "HQ"
do widgetObj.%Save()
quit accessoryLink.%Save()
}


ClassMethod CreateWWWidget(
Name As %String,
Cost As %Currency,
StockLevel As %Integer,
Barcode As %String,
Location As %String,
Summary As %String
) As %Status
{
set widgetObj = ##class(User.WWWidget).%New()
set widgetObj.WidgetName = Name
set widgetObj.Cost = Cost
set widgetObj.StockLevel = StockLevel
set widgetObj.Barcode = Barcode
set widgetObj.Location = Location
set widgetObj.Summary = Summary

QUIT $$$OK
quit widgetObj.%Save()
}

}
Loading