source: trunk/grails-app/services/CreateDataService.groovy @ 519

Last change on this file since 519 was 506, checked in by gav, 15 years ago

Create data adjustment, split createBasePersonGroupTypes into a separate method.
Small adjustment to person show and edit views, add group link and only show active PersonGroups.

File size: 64.8 KB
RevLine 
[149]1/**
2* Provides a data service to create base and demo data.
[180]3* Beware that most, if not all, base data is referenced by "Id" throughout the program.
4* This allows changing the text of the 'name' property to something of the same meaning.
5* But be sure to maintain the correct Id during creation, indicated by #1, #2 etc.
[149]6*/
7class  CreateDataService {
8
9    boolean transactional = false
10
[291]11    def authService
[180]12    def taskService
[210]13    def dateUtilService
[237]14    def appConfigService
[251]15    def assignedGroupService
16    def assignedPersonService
[180]17
[149]18/*******************************************
19Start of Group methods.
20Generally use these methods to create data.
21*******************************************/
22
23    /**
[199]24    * Always call this at startup to ensure that we have admin access
25    * and that the system pseudo person is available.
[149]26    */
[199]27    def ensureSystemAndAdminAccess() {
[149]28        if(!Authority.findByAuthority("ROLE_AppAdmin") ) {
[199]29            log.warn "ROLE_AppAdmin not found, calling createAdminAuthority()."
[149]30            createAdminAuthority()
31        }
[199]32        if(!Person.findByloginName("system") ) {
33            log.warn "LoginName 'system' not found, calling createSystemPerson()."
34            createSystemPerson()
35        }
[149]36        if(!Person.findByloginName("admin") ) {
[199]37            log.warn "LoginName 'admin' not found, calling createAdminPerson()."
[149]38            createAdminPerson()
39        }
40    }
41
42    /**
43    * Create the base data required for the application to function.
44    */
45    def createBaseData() {
[237]46
47        if(appConfigService.exists("baseDataCreated")) {
[506]48            log.info "Base data previously created."
[237]49            return false
50        }
51
[506]52        log.info "Creating base data."
[237]53
[149]54        // Person and Utils
55        createBaseAuthorities()
[506]56        createBasePersonGroupTypes()
[149]57        createBasePersonGroups()
[265]58        createBaseDefinitions()
[149]59        createBaseUnitsOfMeasure()
60        createBasePeriods()
[397]61        createBaseSupplierTypes()
62        createBaseManufacturerTypes()
63        createBaseAddressTypes()
[402]64        createBaseContactTypes()
[441]65        createBaseInventoryItemPurchaseTypes()
[237]66
[149]67        // Tasks
[180]68        createBaseTaskGroups()
[149]69        createBaseTaskStatus()
70        createBaseTaskPriorities()
[252]71        createBaseTaskBudgetStatus()
[149]72        createBaseTaskTypes()
[180]73        createBaseTaskModificationTypes()
[149]74        createBaseEntryTypes()
[237]75
[149]76        // Inventory
77        createBaseInventoryTypes()
[175]78        createBaseInventoryMovementTypes()
[237]79
[149]80        // Assets
[270]81        createBaseExtenededAttributeTypes()
82        createBaseMaintenancePolicies()
[149]83
[237]84        // Record that data has been created.
85        appConfigService.set("baseDataCreated")
[149]86    }
87
88    /**
89    * Create demo data for some example sites.
90    */
91    def createDemoData() {
[237]92
93        if(!appConfigService.exists("baseDataCreated")) {
94            log.error "Demo data cannot be created until base data has been created."
95            return false
96        }
97
98        if(appConfigService.exists("demoDataCreated")) {
99            log.error "Demo data has already been created, will NOT recreate."
100            return false
101        }
102
103        if(appConfigService.exists("demoDataCreationDisabled")) {
104            log.error "Demo data creation has been disabled, will NOT create."
105            return false
106        }
107
[199]108        log.info "Creating demo data..."
[237]109
[149]110        // Person and Utils
111        createDemoPersons()
112        createDemoSites()
[162]113        createDemoDepartments()
[175]114        createDemoSuppliers()
115        createDemoManufacturers()
[431]116        createDemoProductionReference()
[441]117        createDemoCostCodes()
[237]118
[149]119        // Tasks
120        createDemoTasks()
121        createDemoEntries()
[242]122        createDemoAssignedGroups()
[241]123        createDemoAssignedPersons()
[149]124        createDemoTaskRecurringSchedules()
[237]125
[149]126        // Inventory
127        createDemoInventoryStores()  /// @todo: Perhaps a 'createQuickStartData' method?
[175]128        createDemoInventoryLocations()
[149]129        createDemoInventoryGroups() /// @todo: Perhaps a 'createQuickStartData' method?
130        createDemoInventoryItems()
[237]131
[149]132        // Assets
133        createDemoLifePlan()
134        createDemoTaskProcedure()
135        createDemoMaintenanceActions()
[268]136        createDemoSections()
[276]137        createDemoAssetTree()
[149]138        createDemoAssetExtenedAttributes()
[237]139
140        // Record that data has been created.
141        appConfigService.set("demoDataCreated")
[149]142    }
143
144/******************
145Start of Person
146*******************/
147
148    def createAdminAuthority() {
149        def authInstance
150
[294]151        // Authority #1
[431]152        authInstance = new Authority(description:"Application Admin, not required for daily use! \
153                                                                                Grants full admin access to the application.",
[149]154                                        authority:"ROLE_AppAdmin")
155        saveAndTest(authInstance)
156    }
157
158    def createBaseAuthorities() {
159
160        def authInstance
161
[294]162        // Authority #2
[296]163        authInstance = new Authority(description:"Business Manager, grants full management access.",
[431]164                                                            authority:"ROLE_Manager")
[149]165        saveAndTest(authInstance)
166
[294]167        // Authority #3
[431]168        authInstance = new Authority(description:"Application User, all application users need this base role \
169                                                                                    to allow login.",
170                                                            authority:"ROLE_AppUser")
[149]171        saveAndTest(authInstance)
[296]172
173        // Authority #4
174        authInstance = new Authority(description:"Task Manager",
[431]175                                                            authority:"ROLE_TaskManager")
[296]176        saveAndTest(authInstance)
177
178        // Authority #5
179        authInstance = new Authority(description:"Task User",
[431]180                                                            authority:"ROLE_TaskUser")
[296]181        saveAndTest(authInstance)
182
183        // Authority #6
184        authInstance = new Authority(description:"Inventory Manager",
[431]185                                                            authority:"ROLE_InventoryManager")
[296]186        saveAndTest(authInstance)
187
188        // Authority #7
189        authInstance = new Authority(description:"Inventory User",
[431]190                                                            authority:"ROLE_InventoryUser")
[296]191        saveAndTest(authInstance)
192
193        // Authority #8
194        authInstance = new Authority(description:"Asset Manager",
[431]195                                                            authority:"ROLE_AssetManager")
[296]196        saveAndTest(authInstance)
197
198        // Authority #9
199        authInstance = new Authority(description:"Asset User",
[431]200                                                            authority:"ROLE_AssetUser")
[296]201        saveAndTest(authInstance)
[431]202
203        // Authority #10
204        authInstance = new Authority(description:"Production Manager",
205                                                            authority:"ROLE_ProductionManager")
206        saveAndTest(authInstance)
207
208        // Authority #11
209        authInstance = new Authority(description:"Production User",
210                                                            authority:"ROLE_ProductionUser")
211        saveAndTest(authInstance)
[149]212    }
213
[506]214    void createBasePersonGroupTypes() {
215
216        //PersonGroupType.
[149]217        def personGroupTypeInstance
[506]218        personGroupTypeInstance = new PersonGroupType(name:"Team")
[149]219        saveAndTest(personGroupTypeInstance)
[506]220        personGroupTypeInstance = new PersonGroupType(name:"Contractor")
[149]221        saveAndTest(personGroupTypeInstance)
[506]222        personGroupTypeInstance = new PersonGroupType(name:"Project Team")
[149]223        saveAndTest(personGroupTypeInstance)
[506]224    }
[149]225
[506]226    void createBasePersonGroups() {
227
[149]228        //PersonGroup
229        def personGroupInstance
[506]230        personGroupInstance = new PersonGroup(personGroupType:PersonGroupType.get(1),
231                                                                                name:"Electrical - General")
[149]232        saveAndTest(personGroupInstance)
[506]233        personGroupInstance = new PersonGroup(personGroupType:PersonGroupType.get(1),
234                                                                                name:"Mechanical - General")
[149]235        saveAndTest(personGroupInstance)
[506]236        personGroupInstance = new PersonGroup(personGroupType:PersonGroupType.get(1),
237                                                                                name:"Production")
[149]238        saveAndTest(personGroupInstance)
[506]239        personGroupInstance = new PersonGroup(personGroupType:PersonGroupType.get(2),
240                                                                                name:"AirCon Contractor")
[149]241        saveAndTest(personGroupInstance)
[506]242        personGroupInstance = new PersonGroup(personGroupType:PersonGroupType.get(3),
243                                                                                name:"gnuMims")
[149]244        saveAndTest(personGroupInstance)
245    }
246
[199]247    def createSystemPerson() {
248        //Person
249        def passClearText = "pass"
[291]250        def passwordEncoded = authService.encodePassword(passClearText)
[199]251        def personInstance
252
253        //Person #1
254        personInstance = new Person(loginName:"system",
255                                    firstName:"gnuMims",
256                                    lastName:"System",
257                                    description:'''This is a pseudo person that the application uses to insert data. DO NOT
258                                                        assign login authorities or change the details of this person.''',
259                                    pass:passClearText,
[399]260                                    password:passwordEncoded)
[199]261        saveAndTest(personInstance)
262    }
263
[149]264    def createAdminPerson() {
265        //Person
266        def passClearText = "pass"
[291]267        def passwordEncoded = authService.encodePassword(passClearText)
[149]268        def personInstance
269
[199]270        //Person #2
[149]271        personInstance = new Person(loginName:"admin",
272                                    firstName:"Admin",
273                                    lastName:"Powers",
[199]274                                    description:'''Every time the application starts it ensures that the 'admin' login name is available.
275                                                        DO update the password and other details but keep the login name as 'admin'. ''',
[149]276                                    pass:passClearText,
[399]277                                    password:passwordEncoded)
[149]278        saveAndTest(personInstance)
279        personInstance.addToAuthorities(Authority.get(1))
280    }
281
282    def createBasePersons() {
[199]283    }
284
285    def createDemoPersons() {
[149]286        //Person
287        def passClearText = "pass"
[291]288        def passwordEncoded = authService.encodePassword(passClearText)
[149]289        def personInstance
290
[199]291        //Person #1 is system.
292        //Person #2 is admin.
[149]293
[199]294        //Person #3
[149]295        personInstance = new Person(loginName:"manager",
296                                    firstName:"Demo",
297                                    lastName:"Manager",
298                                    pass:passClearText,
[399]299                                    password:passwordEncoded)
[149]300        saveAndTest(personInstance)
[431]301        personInstance.addToAuthorities(Authority.get(2)) // ROLE_Manager.
302        personInstance.addToAuthorities(Authority.get(3)) // ROLE_AppUser.
[149]303
[199]304        //Person #4
[149]305        personInstance = new Person(loginName:"user",
306                                    firstName:"Demo",
307                                    lastName:"User",
308                                    pass:passClearText,
[399]309                                    password:passwordEncoded)
[149]310        saveAndTest(personInstance)
[431]311        personInstance.addToAuthorities(Authority.get(3)) // ROLE_AppUser.
312        personInstance.addToAuthorities(Authority.get(5)) // ROLE_TaskManager.
313        personInstance.addToAuthorities(Authority.get(7)) // ROLE_InventoryUser.
314        personInstance.addToAuthorities(Authority.get(9)) // ROLE_AssetUser.
[164]315        personInstance.addToPersonGroups(PersonGroup.get(1))
[149]316
[199]317        //Person #5
[149]318        personInstance = new Person(loginName:"craig",
319                                    firstName:"Craig",
320                                    lastName:"SuperSparky",
321                                    pass:passClearText,
[399]322                                    password:passwordEncoded)
[149]323        saveAndTest(personInstance)
324        personInstance.addToAuthorities(Authority.get(3))
[296]325        personInstance.addToAuthorities(Authority.get(5))
326        personInstance.addToAuthorities(Authority.get(7))
327        personInstance.addToAuthorities(Authority.get(9))
[164]328        personInstance.addToPersonGroups(PersonGroup.get(1))
[149]329
[199]330        //Person #6
[149]331        personInstance = new Person(loginName:"john",
332                                    firstName:"John",
333                                    lastName:"SuperFitter",
334                                    pass:passClearText,
[399]335                                    password:passwordEncoded)
[149]336        saveAndTest(personInstance)
337        personInstance.addToAuthorities(Authority.get(3))
[296]338        personInstance.addToAuthorities(Authority.get(5))
339        personInstance.addToAuthorities(Authority.get(7))
340        personInstance.addToAuthorities(Authority.get(9))
[164]341        personInstance.addToPersonGroups(PersonGroup.get(2))
[149]342
[199]343        //Person #7
[431]344        personInstance = new Person(loginName:"production manager",
[149]345                                    firstName:"Production",
[431]346                                    lastName:"Manager",
[149]347                                    pass:passClearText,
[399]348                                    password:passwordEncoded)
[149]349        saveAndTest(personInstance)
[431]350        personInstance.addToAuthorities(Authority.get(3)) // ROLE_AppUser.
351        personInstance.addToAuthorities(Authority.get(10)) // ROLE_ProductionManager.
[164]352        personInstance.addToPersonGroups(PersonGroup.get(3))
[296]353
[431]354        //Person #8
355        personInstance = new Person(loginName:"production",
356                                    firstName:"Production",
357                                    lastName:"User",
358                                    pass:passClearText,
359                                    password:passwordEncoded)
360        saveAndTest(personInstance)
361        personInstance.addToAuthorities(Authority.get(3)) // ROLE_AppUser.
362        personInstance.addToAuthorities(Authority.get(11)) // ROLE_ProductionUser.
363        personInstance.addToPersonGroups(PersonGroup.get(3))
364
365        //Person #9
[296]366        personInstance = new Person(loginName:"testmanager",
367                                    firstName:"Test",
368                                    lastName:"Manager",
369                                    pass:passClearText,
[399]370                                    password:passwordEncoded)
[296]371        saveAndTest(personInstance)
[431]372        personInstance.addToAuthorities(Authority.get(3)) // ROLE_AppUser.
373        personInstance.addToAuthorities(Authority.get(4)) // ROLE_TaskManager.
374        personInstance.addToAuthorities(Authority.get(6)) // ROLE_InventoryManager.
375        personInstance.addToAuthorities(Authority.get(8)) // ROLE_AssetManager.
[296]376        personInstance.addToPersonGroups(PersonGroup.get(3))
[149]377    }
378
379/***********************
380START OF UTILITIES
381***********************/
382
[265]383    //These can redefined by the site at deployment time.
[266]384    /// @todo: build an admin view so that only the value (definition) can be changed.
[265]385    def createBaseDefinitions() {
386        appConfigService.set("Department Definition", "A department as recongised by accounting.")
[393]387        appConfigService.set("Site Definition", "The plant, work or production site.")
388        appConfigService.set("Section Definition", "A logical grouping of assets, which may be an area, system or process \
389                                            as determined by design.")
390        appConfigService.set("Asset Definition",
391                                            "The complete asset as it is known on the site. \
392                                            Often purchased as a whole with the primary purpose of returning value by performing a function. \
393                                            An asset is made up of 1 or more sub assets and performs a complete function as specified by the designer.")
394        appConfigService.set("Asset Sub Item 1 Name",
395                                            "Sub Asset")
396        appConfigService.set("Asset Sub Item 1 Definition",
397                                            "A machine that performs part of a complete asset's function and often has a model number.")
398        appConfigService.set("Asset Sub Item 2 Name",
399                                            "Functional Assembly")
400        appConfigService.set("Asset Sub Item 2 Definition",
401                                            "Functional Assemblies are taken from the designer's functional list for the sub asset and are made up of sub \
402                                            assemblies that together perform that function.")
403        appConfigService.set("Asset Sub Item 3 Name",
404                                            "Sub Assembly Group")
405        appConfigService.set("Asset Sub Item 3 Definition",
406                                            "Group or type of part.")
407        appConfigService.set("Asset Sub Item 4 Name",
408                                            "Component Item")
409        appConfigService.set("Asset Sub Item 4 Definition",
410                                            "The smallest part that would be analysed for failure.")
[265]411    }
412
[149]413    def createDemoSites() {
414        //Site
415        def siteInstance
416
[321]417        siteInstance = new Site(name: "CSM",
[314]418                                                    description: "Creek Side Mill")
[149]419        saveAndTest(siteInstance)
420
[314]421        siteInstance = new Site(name: "Jasper Street Depot",
422                                                    description: "Storage depot on Jasper Street.")
[149]423        saveAndTest(siteInstance)
[162]424
[314]425        siteInstance = new Site(name: "River Press",
426                                                    description: "Printing press site")
[162]427        saveAndTest(siteInstance)
[149]428    }
429
[162]430    def createDemoDepartments() {
431
432        //Department
433        def departmentInstance
434
435        //Department #1
436        departmentInstance = new Department(name: "Print Centre",
[314]437                                                                                description: "Printing Department",
438                                                                                site: Site.get(1))
[162]439        saveAndTest(departmentInstance)
440
441        //Department #2
[321]442        departmentInstance = new Department(name: "Pulp Mill",
443                                                                                description: "Business Department",
[314]444                                                                                site: Site.get(2))
[162]445        saveAndTest(departmentInstance)
446    }
447
[149]448    def createBaseUnitsOfMeasure() {
449
450        //UnitOfMeasure
451        def unitOfMeasureInstance
452
453        //UnitOfMeasure #1
454        unitOfMeasureInstance = new UnitOfMeasure(name: "each")
455        saveAndTest(unitOfMeasureInstance)
456
457        //UnitOfMeasure #2
458        unitOfMeasureInstance = new UnitOfMeasure(name: "meter(s)")
459        saveAndTest(unitOfMeasureInstance)
460
461        //UnitOfMeasure #3
462        unitOfMeasureInstance = new UnitOfMeasure(name: "box(es)")
463        saveAndTest(unitOfMeasureInstance)
464
465        //UnitOfMeasure #4
466        unitOfMeasureInstance = new UnitOfMeasure(name: "litre(s)")
467        saveAndTest(unitOfMeasureInstance)
468
469        //UnitOfMeasure #5
470        unitOfMeasureInstance = new UnitOfMeasure(name: "kilogram(s)")
471        saveAndTest(unitOfMeasureInstance)
472    }
473
474    def createBasePeriods() {
475
476        //Period
477        def periodInstance
478
479        //Period #1
480        periodInstance = new Period(period: "Day(s)")
481        saveAndTest(periodInstance)
482
483        //Period #2
484        periodInstance = new Period(period: "Week(s)")
485        saveAndTest(periodInstance)
486
487        //Period #3
488        periodInstance = new Period(period: "Month(s)")
489        saveAndTest(periodInstance)
490
491        //Period #4
492        periodInstance = new Period(period: "Year(s)")
493        saveAndTest(periodInstance)
494    }
495
[397]496    def createBaseSupplierTypes() {
[175]497
498        // SupplierType
499        def supplierTypeInstance
500
501        // SupplierType #1
[420]502        supplierTypeInstance = new SupplierType(name: "Unknown",
503                                                                    description: "Unknown supplier type")
504        saveAndTest(supplierTypeInstance)
505
506        // SupplierType #2
[175]507        supplierTypeInstance = new SupplierType(name: "OEM",
508                                                                    description: "Original equipment supplier")
509        saveAndTest(supplierTypeInstance)
510
[420]511        // SupplierType #3
[175]512        supplierTypeInstance = new SupplierType(name: "Local",
513                                                                    description: "Local supplier")
514        saveAndTest(supplierTypeInstance)
515    }
516
[397]517    def createBaseManufacturerTypes() {
[175]518
519        // ManufacturerType
520        def manufacturerTypeInstance
521
522        // ManufacturerType #1
[420]523        manufacturerTypeInstance = new ManufacturerType(name: "Unknown",
524                                                                        description: "Unknown manufacturer type")
525        saveAndTest(manufacturerTypeInstance)
526
527        // ManufacturerType #2
[175]528        manufacturerTypeInstance = new ManufacturerType(name: "OEM",
529                                                                        description: "Original equipment manufacturer")
530        saveAndTest(manufacturerTypeInstance)
531
[420]532        // ManufacturerType #3
[175]533        manufacturerTypeInstance = new ManufacturerType(name: "Alternate",
534                                                                        description: "Not original equipment manufacturer")
535        saveAndTest(manufacturerTypeInstance)
536
537    }
538
[397]539    def createBaseAddressTypes() {
540
541        // AddressType
542        def addressTypeInstance
543
544        // AddressType #1
545        addressTypeInstance = new AddressType(name: "Postal",
546                                                                                description: "A postal address.")
547        saveAndTest(addressTypeInstance)
548
549        // AddressType #2
550        addressTypeInstance = new AddressType(name: "Physical",
551                                                                                description: "A physical address.")
552        saveAndTest(addressTypeInstance)
553
554        // AddressType #3
555        addressTypeInstance = new AddressType(name: "Postal & Physical",
556                                                                                description: "An address that is both the postal and physical address.")
557        saveAndTest(addressTypeInstance)
558
559        // AddressType #4
560        addressTypeInstance = new AddressType(name: "Invoice",
561                                                                                description: "An address to send invoices to.")
562        saveAndTest(addressTypeInstance)
563
564        // AddressType #5
565        addressTypeInstance = new AddressType(name: "Delivery",
566                                                                                description: "An address to send deliveries to.")
567        saveAndTest(addressTypeInstance)
568    }
569
[402]570    def createBaseContactTypes() {
571
572        // ContactType
573        def contactTypeInstance
574
575        // ContactType #1
576        contactTypeInstance = new ContactType(name: "Email",
577                                                                                description: "Email address.")
578        saveAndTest(contactTypeInstance)
579
580        // ContactType #2
581        contactTypeInstance = new ContactType(name: "Alternate Email",
582                                                                                description: "Alternate email address.")
583        saveAndTest(contactTypeInstance)
584
585        // ContactType #3
586        contactTypeInstance = new ContactType(name: "Mobile",
587                                                                                description: "Modile phone number.")
588        saveAndTest(contactTypeInstance)
589
590        // ContactType #4
591        contactTypeInstance = new ContactType(name: "Work Phone",
592                                                                                description: "Work phone number.")
593        saveAndTest(contactTypeInstance)
594
595        // ContactType #5
596        contactTypeInstance = new ContactType(name: "Home Phone",
597                                                                                description: "Home phone number.")
598        saveAndTest(contactTypeInstance)
599
600        // ContactType #6
601        contactTypeInstance = new ContactType(name: "Work Fax",
602                                                                                description: "Work fax number.")
603        saveAndTest(contactTypeInstance)
604
605        // ContactType #7
606        contactTypeInstance = new ContactType(name: "Home Fax",
607                                                                                description: "Home fax number.")
608        saveAndTest(contactTypeInstance)
609
610        // ContactType #8
611        contactTypeInstance = new ContactType(name: "Web Site",
612                                                                                description: "Web site address.")
613        saveAndTest(contactTypeInstance)
614
615        // ContactType #9
616        contactTypeInstance = new ContactType(name: "Person",
617                                                                                description: "Contact person.")
618        saveAndTest(contactTypeInstance)
619    }
620
[441]621    def createBaseInventoryItemPurchaseTypes() {
622
623        // InventoryItemPurchaseType
624        def inventoryItemPurchaseTypeInstance
625
626        // InventoryItemPurchaseType #1
627        inventoryItemPurchaseTypeInstance = new InventoryItemPurchaseType(name: "Order Placed",
628                                                                                description: "Order has been placed.")
629        saveAndTest(inventoryItemPurchaseTypeInstance)
630
631        // InventoryItemPurchaseType #2
632        inventoryItemPurchaseTypeInstance = new InventoryItemPurchaseType(name: "Received B/order To Come",
633                                                                                description: "Order has been partially received.")
634        saveAndTest(inventoryItemPurchaseTypeInstance)
635        // InventoryItemPurchaseType #3
636        inventoryItemPurchaseTypeInstance = new InventoryItemPurchaseType(name: "Received Complete",
637                                                                                description: "Order has been partially received.")
638        saveAndTest(inventoryItemPurchaseTypeInstance)
639
640        // InventoryItemPurchaseType #4
641        inventoryItemPurchaseTypeInstance = new InventoryItemPurchaseType(name: "Invoice Approved",
642                                                                                description: "Invoice approved for payment.")
643        saveAndTest(inventoryItemPurchaseTypeInstance)
644    }
645
[175]646    def createDemoSuppliers() {
647
648        // Supplier
649        def supplierInstance
650
651        // Supplier #1
652        supplierInstance = new Supplier(name: "OEM Distributors",
[420]653                                                                        supplierType: SupplierType.get(2))
[175]654        saveAndTest(supplierInstance)
655
656        // Supplier #2
657        supplierInstance = new Supplier(name: "Mex Holdings",
[420]658                                                                        supplierType: SupplierType.get(3))
[175]659        saveAndTest(supplierInstance)
660    }
661
662    def createDemoManufacturers() {
663
664        // Manufacturer
665        def manufacturerInstance
666
667        // Manufacturer #1
668        manufacturerInstance = new Manufacturer(name: "OEM Manufacturer",
[420]669                                                                        manufacturerType: ManufacturerType.get(2))
[175]670        saveAndTest(manufacturerInstance)
671
672        // Manufacturer #2
673        manufacturerInstance = new Manufacturer(name: "Laser Cutting Services Pty",
[420]674                                                                        manufacturerType: ManufacturerType.get(3))
[175]675        saveAndTest(manufacturerInstance)
676    }
677
[431]678    def createDemoProductionReference() {
679
680        // ProductionReference
681        def productionReferenceInstance
682
683        // ProductionReference #1
684        productionReferenceInstance = new ProductionReference(name: "Monday Production")
685        saveAndTest(productionReferenceInstance)
686
687        // ProductionReference #2
688        productionReferenceInstance = new ProductionReference(name: "Tuesday Production")
689        saveAndTest(productionReferenceInstance)
690    }
691
[441]692    def createDemoCostCodes() {
693
694        // CostCode
695        def costCodeInstance
696
697        // CostCode #1
698        costCodeInstance = new CostCode(name: "RM Reelstand")
699        saveAndTest(costCodeInstance)
700
701        // CostCode #2
702        costCodeInstance = new CostCode(name: "CAPEX Reelstand")
703        saveAndTest(costCodeInstance)
704    }
705
[149]706/*********************
707START OF TASK
708*********************/
709
[180]710    def createBaseTaskGroups() {
[149]711        //TaskGroup
712        def taskGroupInstance
713
[258]714        //TaskGroup #1
[149]715        taskGroupInstance = new TaskGroup(name:"Engineering Activites",
716                                                                            description:"Engineering daily activities")
717        saveAndTest(taskGroupInstance)
718
[258]719        //TaskGroup #2
[149]720        taskGroupInstance = new TaskGroup(name:"Production Activites",
721                                                                            description:"Production daily activities")
722        saveAndTest(taskGroupInstance)
723
[258]724        //TaskGroup #3
[149]725        taskGroupInstance = new TaskGroup(name:"New Projects",
726                                                                            description:" ")
727        saveAndTest(taskGroupInstance)
728    }
729
730    def createBaseTaskStatus() {
731
732        //TaskStatus
733        def taskStatusInstance
734
[181]735        taskStatusInstance = new TaskStatus(name:"Not Started") // #1
[149]736        saveAndTest(taskStatusInstance)
737
[181]738        taskStatusInstance = new TaskStatus(name:"In Progress") // #2
[149]739        saveAndTest(taskStatusInstance)
740
[222]741        taskStatusInstance = new TaskStatus(name:"Complete") // #3
[149]742        saveAndTest(taskStatusInstance)
743    }
744
745    def createBaseTaskPriorities() {
746
747        //TaskPriority
748        def taskPriorityInstance
749
[433]750        taskPriorityInstance = new TaskPriority(name:"0 - Immediate") // #1
[149]751        saveAndTest(taskPriorityInstance)
752
[433]753        taskPriorityInstance = new TaskPriority(name:"1 - Very High") // #2
[149]754        saveAndTest(taskPriorityInstance)
755
[433]756        taskPriorityInstance = new TaskPriority(name:"2 - High") // #3
[149]757        saveAndTest(taskPriorityInstance)
758
[433]759        taskPriorityInstance = new TaskPriority(name:"3 - Normal") // #4
[149]760        saveAndTest(taskPriorityInstance)
[433]761
762        taskPriorityInstance = new TaskPriority(name:"4 - Low") // #5
763        saveAndTest(taskPriorityInstance)
764
765        taskPriorityInstance = new TaskPriority(name:"5 - Minor") //  #6
766        saveAndTest(taskPriorityInstance)
[149]767    }
768
[252]769    def createBaseTaskBudgetStatus() {
770
771        //TaskBudgetStatus
772        def taskBudgetStatusInstance
773
774        taskBudgetStatusInstance = new TaskBudgetStatus(name:"Unplanned") // #1
775        saveAndTest(taskBudgetStatusInstance)
776
777        taskBudgetStatusInstance = new TaskBudgetStatus(name:"Planned") // #2
778        saveAndTest(taskBudgetStatusInstance)
779    }
780
[149]781    def createBaseTaskTypes() {
782
783        //TaskType
784        def taskTypeInstance
785
[418]786        taskTypeInstance = new TaskType(name:"Immediate Callout") // #1
[149]787        saveAndTest(taskTypeInstance)
788
[418]789        taskTypeInstance = new TaskType(name:"Unscheduled Breakin") // #2
[149]790        saveAndTest(taskTypeInstance)
791
[418]792        taskTypeInstance = new TaskType(name:"Scheduled") // #3
[149]793        saveAndTest(taskTypeInstance)
794
[418]795        taskTypeInstance = new TaskType(name:"Preventative Maintenance") // #4
[149]796        saveAndTest(taskTypeInstance)
797
[418]798        taskTypeInstance = new TaskType(name:"Predictive Maintenance") // #5
[149]799        saveAndTest(taskTypeInstance)
[418]800
801        taskTypeInstance = new TaskType(name:"Project") // #6
802        saveAndTest(taskTypeInstance)
[149]803    }
804
[180]805    def createBaseTaskModificationTypes() {
806
807        //ModificationType
808        def taskModificationTypeInstance
809        taskModificationTypeInstance = new TaskModificationType(name:"Created").save()  // #1
810        taskModificationTypeInstance = new TaskModificationType(name:"Started").save()  // #2
811        taskModificationTypeInstance = new TaskModificationType(name:"Modified").save()  // #3
812        taskModificationTypeInstance = new TaskModificationType(name:"Completed").save()  // #4
813        taskModificationTypeInstance = new TaskModificationType(name:"Reopened").save()  // #5
814        taskModificationTypeInstance = new TaskModificationType(name:"Trashed").save()  // #6
815        taskModificationTypeInstance = new TaskModificationType(name:"Restored").save()  // #7
816        taskModificationTypeInstance = new TaskModificationType(name:"Approved").save()  // #8
817        taskModificationTypeInstance = new TaskModificationType(name:"Renege approval").save()  // #9
[251]818        taskModificationTypeInstance = new TaskModificationType(name:"Modified (Assigned Groups)").save()  // #10
819        taskModificationTypeInstance = new TaskModificationType(name:"Modified (Assigned Persons)").save()  // #11
[418]820        taskModificationTypeInstance = new TaskModificationType(name:"Modified (Flagged for attention)").save()  // #12
821        taskModificationTypeInstance = new TaskModificationType(name:"Modified (Attention flag cleared)").save()  // #13
[180]822    }
823
[149]824    def createDemoTasks() {
825
[180]826        def taskResult
827        def p = [:]
[149]828
829        //Task #1
[180]830        p = [taskGroup:TaskGroup.findByName("Engineering Activites"),
831                taskPriority:TaskPriority.get(2),
832                taskType:TaskType.get(1),
833                leadPerson:Person.get(2),
[418]834                description:"Level sensor not working",
[180]835                comment:"Has been noted as problematic, try recalibrating.",
[447]836                targetStartDate: dateUtilService.today,
837                targetCompletionDate: dateUtilService.today]
[149]838
[394]839        taskResult = taskService.save(p)
[180]840
[149]841        //Task #2
[180]842        p = [taskGroup:TaskGroup.findByName("Engineering Activites"),
[149]843                taskPriority:TaskPriority.get(2),
[418]844                taskType:TaskType.get(3),
[149]845                leadPerson:Person.get(5),
846                description:"Some follow-up work",
847                comment:"Some help required",
[210]848                targetStartDate: dateUtilService.tomorrow,
[447]849                targetCompletionDate: dateUtilService.tomorrow,
[180]850                parentTask: Task.get(1)]
[149]851
[394]852        taskResult = taskService.save(p)
[180]853
[149]854        //Task #3
[180]855        p = [taskGroup:TaskGroup.findByName("Engineering Activites"),
[149]856                taskPriority:TaskPriority.get(2),
[418]857                taskType:TaskType.get(3),
[149]858                leadPerson:Person.get(5),
[418]859                description:"A Sub Task can be created from the 'Sub Task' tab.",
[149]860                comment:"Some help required",
[210]861                targetStartDate: dateUtilService.yesterday,
[447]862                targetCompletionDate: dateUtilService.yesterday,
[180]863                parentTask: Task.get(1)]
[149]864
[394]865        taskResult = taskService.save(p)
[180]866
[149]867        //Task #4
[180]868        p = [taskGroup:TaskGroup.findByName("Engineering Activites"),
[149]869                 taskPriority:TaskPriority.get(2),
[418]870                 taskType:TaskType.get(2),
[149]871                 leadPerson:Person.get(4),
[418]872                 description:"Please replace sensor at next available opportunity.",
873                 comment:"Nothing else has worked. So we now require the part to be replaced.",
[447]874                targetStartDate: dateUtilService.today,
875                targetCompletionDate: dateUtilService.oneWeekFromNow,
[180]876                parentTask: Task.get(1)]
[149]877
[394]878        taskResult = taskService.save(p)
[180]879
[149]880        //Task #5
[180]881        p = [taskGroup:TaskGroup.findByName("Production Activites"),
[149]882                 taskPriority:TaskPriority.get(2),
[418]883                 taskType:TaskType.get(3),
[149]884                 leadPerson:Person.get(6),
[418]885                 description:"Production Task",
886                 comment:"Production task for specific production run or shift",
[447]887                targetStartDate: dateUtilService.today - 6,
888                targetCompletionDate: dateUtilService.today - 6]
[149]889
[394]890        taskResult = taskService.save(p)
[180]891
[149]892        //Task #6
[199]893        p = [taskGroup:TaskGroup.findByName("Engineering Activites"),
[418]894                 taskPriority:TaskPriority.get(4),
895                 taskType:TaskType.get(3),
[199]896                 leadPerson:Person.get(4),
[418]897                 description:"This is a recurring preventative maintenance task.",
[199]898                 comment:"If there is a parent task specified then this is a generated sub task, if there is a recurring schedule specified then this is a parent task.",
[447]899                targetStartDate: dateUtilService.today,
900                targetCompletionDate: dateUtilService.today + 30]
[180]901
[394]902        taskResult = taskService.save(p)
[149]903    }
904
905    def createBaseEntryTypes() {
906
907        //EntryType
908        def entryTypeInstance
909
[190]910        entryTypeInstance = new EntryType(name:"Fault") // #1
[149]911        saveAndTest(entryTypeInstance)
912
[418]913        entryTypeInstance = new EntryType(name:"Cause") // #2
[149]914        saveAndTest(entryTypeInstance)
915
[418]916        entryTypeInstance = new EntryType(name:"Work Done") // #3
[149]917        saveAndTest(entryTypeInstance)
918
[418]919        entryTypeInstance = new EntryType(name:"Production Note") // #4
[149]920        saveAndTest(entryTypeInstance)
[418]921
922        entryTypeInstance = new EntryType(name:"Work Request") // #5
923        saveAndTest(entryTypeInstance)
[149]924    }
925
926    def createDemoEntries() {
927
[190]928        def entryResult
929        def p = [:]
[149]930
931        //Entry #1
[190]932        p = [task: Task.get(1),
933                entryType: EntryType.get(1),
934                comment: "This level sensor is causing us trouble.",
935                durationMinute: 20]
[149]936
[394]937        entryResult = taskService.saveEntry(p)
[190]938
[149]939        //Entry #2
[190]940        p = [task: Task.get(1),
[418]941                entryType: EntryType.get(3),
[190]942                comment: "Cleaned sensor, see how it goes.",
943                durationMinute: 30]
[149]944
[394]945        entryResult = taskService.saveEntry(p)
[190]946
[149]947        //Entry #3
[190]948        p = [task: Task.get(1),
[418]949                entryType: EntryType.get(3),
[190]950                comment: "Checked up on it later and sensor is dropping out intermittently, created sub task to replace sensor.",
951                durationMinute: 20]
952
[394]953        entryResult = taskService.saveEntry(p)
[149]954    }
955
[242]956    def createDemoAssignedGroups() {
957
[251]958        def result
959        def p = [:]
[242]960
961        //AssignedGroup #1
[251]962        p = [personGroup: PersonGroup.get(1),
963                task: Task.get(1),
964                estimatedHour: 2,
965                estimatedMinute: 30]
966        result = assignedGroupService.save(p)
[242]967
968        //AssignedGroup #2
[251]969        p = [personGroup: PersonGroup.get(2),
970                task: Task.get(1),
971                estimatedHour: 1,
972                estimatedMinute: 0]
973        result = assignedGroupService.save(p)
[242]974    }
975
[241]976    def createDemoAssignedPersons() {
[149]977
[251]978        def result
979        def p = [:]
[149]980
[241]981        //AssignedPerson #1
[251]982        p = [person: Person.get(4),
983                task: Task.get(1),
984                estimatedHour: 1,
985                estimatedMinute: 20]
986        result = assignedPersonService.save(p)
[149]987
[241]988        //AssignedPerson #2
[251]989        p = [person: Person.get(5),
990                task: Task.get(1),
991                estimatedHour: 3,
992                estimatedMinute: 30]
993        result = assignedPersonService.save(p)
[149]994    }
995
996    def createDemoTaskRecurringSchedules() {
997
998        //TaskRecurringSchedule
999        def taskRecurringScheduleInstance
1000
1001        //TaskRecurringSchedule #1
1002        taskRecurringScheduleInstance = new TaskRecurringSchedule(task: Task.get(1),
1003                                                                                                    recurEvery: 1,
[199]1004                                                                                                    recurPeriod: Period.get(2),
[210]1005                                                                                                    nextTargetStartDate: dateUtilService.today,
[149]1006                                                                                                    generateAhead: 1,
[199]1007                                                                                                    taskDuration: 2,
1008                                                                                                    taskDurationPeriod: Period.get(1),
1009                                                                                                    enabled: false)
[149]1010        saveAndTest(taskRecurringScheduleInstance)
1011
1012        //TaskRecurringSchedule #2
[199]1013        taskRecurringScheduleInstance = new TaskRecurringSchedule(task: Task.get(6),
[149]1014                                                                                                    recurEvery: 1,
1015                                                                                                    recurPeriod: Period.get(1),
[210]1016                                                                                                    nextTargetStartDate: dateUtilService.today,
[149]1017                                                                                                    generateAhead: 1,
1018                                                                                                    taskDuration: 1,
[199]1019                                                                                                    taskDurationPeriod: Period.get(1),
1020                                                                                                    enabled: true)
[149]1021        saveAndTest(taskRecurringScheduleInstance)
1022    }
1023
1024/*************************
1025START OF INVENTORY
1026**************************/
1027
1028    def createDemoInventoryStores() {
1029
1030        //InventoryStore
1031        def inventoryStoreInstance
1032
1033        inventoryStoreInstance = new InventoryStore(site: Site.get(1), name: "Store #1")
1034        saveAndTest(inventoryStoreInstance)
1035
1036        inventoryStoreInstance = new InventoryStore(site: Site.get(2), name: "Store #2")
1037        saveAndTest(inventoryStoreInstance)
1038    }
1039
[175]1040    def createDemoInventoryLocations() {
[149]1041
[175]1042        // InventoryLocation
1043        def inventoryLocation
[149]1044
[175]1045        inventoryLocation = new InventoryLocation(inventoryStore: InventoryStore.get(1), name: "A1-2")
1046        saveAndTest(inventoryLocation)
[149]1047
[418]1048        inventoryLocation = new InventoryLocation(inventoryStore: InventoryStore.get(2), name: "C55")
[175]1049        saveAndTest(inventoryLocation)
[149]1050    }
1051
1052    def createDemoInventoryGroups() {
1053
1054        //InventoryGroup
1055        def inventoryGroupInstance
1056
1057        //InventoryGroup #1
1058        inventoryGroupInstance = new InventoryGroup(name: "Misc")
1059        saveAndTest(inventoryGroupInstance)
1060
1061        //InventoryGroup #2
1062        inventoryGroupInstance = new InventoryGroup(name: "Electrical")
1063        saveAndTest(inventoryGroupInstance)
1064
1065        //InventoryGroup #3
1066        inventoryGroupInstance = new InventoryGroup(name: "Mechanical")
1067        saveAndTest(inventoryGroupInstance)
1068
1069        //InventoryGroup #4
1070        inventoryGroupInstance = new InventoryGroup(name: "Production")
1071        saveAndTest(inventoryGroupInstance)
1072    }
1073
1074    def createBaseInventoryTypes() {
1075
1076        //InventoryType
1077        def inventoryTypeInstance
1078
1079        inventoryTypeInstance = new InventoryType(name: "Consumable")
1080        saveAndTest(inventoryTypeInstance)
1081
1082        inventoryTypeInstance = new InventoryType(name: "Repairable")
1083        saveAndTest(inventoryTypeInstance)
1084    }
1085
[175]1086    def createBaseInventoryMovementTypes() {
1087
1088        // InventoryMovementType
1089        def inventoryMovementTypeInstance
1090
1091        // InventoryMovementType #1
[177]1092        inventoryMovementTypeInstance = new InventoryMovementType(name: "Used",
1093                                                                                                                        incrementsInventory: false)
[175]1094        saveAndTest(inventoryMovementTypeInstance)
1095
1096        // InventoryMovementType #2
[177]1097        inventoryMovementTypeInstance = new InventoryMovementType(name: "Repaired",
1098                                                                                                                        incrementsInventory: true)
[175]1099        saveAndTest(inventoryMovementTypeInstance)
1100
1101        // InventoryMovementType #3
[177]1102        inventoryMovementTypeInstance = new InventoryMovementType(name: "Purchase Received",
1103                                                                                                                        incrementsInventory: true)
[175]1104        saveAndTest(inventoryMovementTypeInstance)
[177]1105
1106        // InventoryMovementType #4
1107        inventoryMovementTypeInstance = new InventoryMovementType(name: "Correction Increase",
1108                                                                                                                        incrementsInventory: true)
1109        saveAndTest(inventoryMovementTypeInstance)
1110
1111        // InventoryMovementType #5
1112        inventoryMovementTypeInstance = new InventoryMovementType(name: "Correction Decrease",
1113                                                                                                                        incrementsInventory: false)
1114        saveAndTest(inventoryMovementTypeInstance)
[175]1115    }
1116
[149]1117    def createDemoInventoryItems() {
1118
1119        //InventoryItem
1120        def inventoryItemInstance
1121
1122        //InventoryItem #1
1123        inventoryItemInstance = new InventoryItem(inventoryGroup: InventoryGroup.get(1),
1124                                                                                    inventoryType: InventoryType.get(1),
1125                                                                                    unitOfMeasure: UnitOfMeasure.get(2),
[175]1126                                                                                    inventoryLocation: InventoryLocation.get(1),
[185]1127                                                                                    name: "Hemp rope",
1128                                                                                    description: "Natural hemp rope.",
[175]1129                                                                                    unitsInStock: 2,
[149]1130                                                                                    reorderPoint: 0)
1131        saveAndTest(inventoryItemInstance)
1132
1133        //InventoryItem #2
1134        inventoryItemInstance = new InventoryItem(inventoryGroup: InventoryGroup.get(1),
1135                                                                                    inventoryType: InventoryType.get(1),
1136                                                                                    unitOfMeasure: UnitOfMeasure.get(2),
[175]1137                                                                                    inventoryLocation: InventoryLocation.get(1),
[185]1138                                                                                    name: "Cotton Rope 12mm",
1139                                                                                    description: "A soft natural rope made from cotton.",
[149]1140                                                                                    alternateItems: InventoryItem.get(1),
[175]1141                                                                                    unitsInStock: 2,
[149]1142                                                                                    reorderPoint: 0)
1143        saveAndTest(inventoryItemInstance)
1144
1145        //InventoryItem #3
1146        inventoryItemInstance = new InventoryItem(inventoryGroup: InventoryGroup.get(3),
1147                                                                                    inventoryType: InventoryType.get(1),
1148                                                                                    unitOfMeasure: UnitOfMeasure.get(1),
[175]1149                                                                                    inventoryLocation: InventoryLocation.get(2),
[149]1150                                                                                    name: "2305-2RS",
1151                                                                                    description: "Bearing 25x62x24mm double row self aligning ball",
[175]1152                                                                                    unitsInStock: 3,
[149]1153                                                                                    reorderPoint: 2)
1154        saveAndTest(inventoryItemInstance)
1155
1156        //InventoryItem #4
1157        inventoryItemInstance = new InventoryItem(inventoryGroup: InventoryGroup.get(2),
1158                                                                                    inventoryType: InventoryType.get(1),
1159                                                                                    unitOfMeasure: UnitOfMeasure.get(1),
[175]1160                                                                                    inventoryLocation: InventoryLocation.get(2),
[149]1161                                                                                    name: "L1592-K10",
1162                                                                                    description: "10kW contactor",
[175]1163                                                                                    unitsInStock: 4,
[149]1164                                                                                    reorderPoint: 0)
1165        saveAndTest(inventoryItemInstance)
1166
1167        //InventoryItem #5
1168        inventoryItemInstance = new InventoryItem(inventoryGroup: InventoryGroup.get(3),
1169                                                                                    inventoryType: InventoryType.get(1),
1170                                                                                    unitOfMeasure: UnitOfMeasure.get(1),
[175]1171                                                                                    inventoryLocation: InventoryLocation.get(2),
[149]1172                                                                                    name: "6205-ZZ",
1173                                                                                    description: "Bearing 25x52x15mm single row ball shielded",
[175]1174                                                                                    unitsInStock: 5,
[149]1175                                                                                    reorderPoint: 2)
1176        saveAndTest(inventoryItemInstance)
1177    }
1178
1179/*******************
1180START OF ASSET
1181*******************/
1182
1183    def createDemoLifePlan() {
1184
1185        //LifePlan
1186        def lifeplanInstance
1187
1188        lifeplanInstance = new LifePlan(name: "Initial Plan")
1189        saveAndTest(lifeplanInstance)
1190    }
1191
[270]1192    def createBaseExtenededAttributeTypes() {
1193
1194        //ExtendedAttributeType
1195        def extendedAttributeTypeInstance
1196
1197        //ExtendedAttributeType #1
1198        extendedAttributeTypeInstance = new ExtendedAttributeType(name: "Model Number")
1199        saveAndTest(extendedAttributeTypeInstance)
1200
1201        //ExtendedAttributeType #2
1202        extendedAttributeTypeInstance = new ExtendedAttributeType(name: "Purchase Cost")
1203        saveAndTest(extendedAttributeTypeInstance)
1204
1205        //ExtendedAttributeType #3
1206        extendedAttributeTypeInstance = new ExtendedAttributeType(name: "Serial Number")
1207        saveAndTest(extendedAttributeTypeInstance)
1208
1209        //ExtendedAttributeType #4
1210        extendedAttributeTypeInstance = new ExtendedAttributeType(name: "Manufactured Date")
1211        saveAndTest(extendedAttributeTypeInstance)
1212
1213        //ExtendedAttributeType #5
1214        extendedAttributeTypeInstance = new ExtendedAttributeType(name: "Location Description")
1215        saveAndTest(extendedAttributeTypeInstance)
1216
1217        //ExtendedAttributeType #6
1218        extendedAttributeTypeInstance = new ExtendedAttributeType(name: "Cost Centre")
1219        saveAndTest(extendedAttributeTypeInstance)
1220
1221        //ExtendedAttributeType #7
1222        extendedAttributeTypeInstance = new ExtendedAttributeType(name: "Cost Code")
1223        saveAndTest(extendedAttributeTypeInstance)
1224
1225        //ExtendedAttributeType #8
1226        extendedAttributeTypeInstance = new ExtendedAttributeType(name: "Manufacturer's Number")
1227        saveAndTest(extendedAttributeTypeInstance)
1228
1229        //ExtendedAttributeType #9
1230        extendedAttributeTypeInstance = new ExtendedAttributeType(name: "Inventory Number")
1231        saveAndTest(extendedAttributeTypeInstance)
1232    }
1233
[149]1234    def createBaseMaintenancePolicies() {
1235
1236        //MaintenancePolicy
1237        def maintenancePolicyInstance
1238
1239        //MaintenancePolicy #1
1240        maintenancePolicyInstance = new MaintenancePolicy(name: "Fixed Time")
1241        saveAndTest(maintenancePolicyInstance)
1242
1243        //MaintenancePolicy #2
1244        maintenancePolicyInstance = new MaintenancePolicy(name: "Condition Based Online")
1245        saveAndTest(maintenancePolicyInstance)
1246
1247        //MaintenancePolicy #3
1248        maintenancePolicyInstance = new MaintenancePolicy(name: "Condition Based Offline")
1249        saveAndTest(maintenancePolicyInstance)
1250
1251        //MaintenancePolicy #4
1252        maintenancePolicyInstance = new MaintenancePolicy(name: "Design Out")
1253        saveAndTest(maintenancePolicyInstance)
1254
1255        //MaintenancePolicy #5
1256        maintenancePolicyInstance = new MaintenancePolicy(name: "Operate To Failure")
1257        saveAndTest(maintenancePolicyInstance)
[275]1258
1259        //MaintenancePolicy #6
1260        maintenancePolicyInstance = new MaintenancePolicy(name: "Regulatory Requirement")
1261        saveAndTest(maintenancePolicyInstance)
1262
1263        //MaintenancePolicy #7
1264        maintenancePolicyInstance = new MaintenancePolicy(name: "Hidden Function Test")
1265        saveAndTest(maintenancePolicyInstance)
[149]1266    }
1267
1268    def createDemoTaskProcedure() {
1269
1270        //TaskProcedure
1271        def taskProcedureInstance
1272
1273        taskProcedureInstance = new TaskProcedure(name: "Daily check")
1274        saveAndTest(taskProcedureInstance)
1275        taskProcedureInstance.addToTasks(Task.get(1))
1276    }
1277
1278    def createDemoMaintenanceActions() {
1279
1280        //MaintenanceAction
1281        def maintenanceActionInstance
1282
1283        //MaintenanceAction #1
1284        maintenanceActionInstance = new MaintenanceAction(description: "Check all E-stops, activate E-stops S1-S12 and ensure machine cannot run",
1285                                                                                                        procedureStepNumber: 1,
1286                                                                                                        maintenancePolicy: MaintenancePolicy.get(1),
1287                                                                                                        taskProcedure: TaskProcedure.get(1))
1288        saveAndTest(maintenanceActionInstance)
1289
1290        //MaintenanceAction #2
1291        maintenanceActionInstance = new MaintenanceAction(description: "Do more pushups",
1292                                                                                                        procedureStepNumber: 2,
1293                                                                                                        maintenancePolicy: MaintenancePolicy.get(1),
1294                                                                                                        taskProcedure: TaskProcedure.get(1))
1295        saveAndTest(maintenanceActionInstance)
1296
1297        //MaintenanceAction #3
1298        maintenanceActionInstance = new MaintenanceAction(description: "Ok just one more pushup",
1299                                                                                                        procedureStepNumber: 3,
1300                                                                                                        maintenancePolicy: MaintenancePolicy.get(1),
1301                                                                                                        taskProcedure: TaskProcedure.get(1))
1302        saveAndTest(maintenanceActionInstance)
1303    }
1304
[268]1305    def createDemoSections() {
[149]1306
[268]1307        //Section
1308        def sectionInstance
[149]1309
[268]1310        //Section #1
[314]1311        sectionInstance = new Section(name: "Press",
1312                                                                description: "Press Section",
1313                                                                site: Site.get(3),
1314                                                                department: Department.get(1))
[268]1315        saveAndTest(sectionInstance)
[149]1316
[268]1317        //Section #2
[321]1318        sectionInstance = new Section(name: "CSM-Delig",
[314]1319                                                                description: "Pulp Delignification",
1320                                                                site: Site.get(1),
1321                                                                department: Department.get(2))
[268]1322        saveAndTest(sectionInstance)
[149]1323
[268]1324        //Section #3
[321]1325        sectionInstance = new Section(name: "CSM-Aux",
[314]1326                                                                description: "Auxilliary Section",
1327                                                                site: Site.get(1),
1328                                                                department: Department.get(1))
[268]1329        saveAndTest(sectionInstance)
[149]1330    }
1331
[276]1332    def createDemoAssetTree() {
[149]1333
[270]1334        //Asset
1335        def assetInstance
[149]1336
[270]1337        //Asset #1
[276]1338        def assetInstance1 = new Asset(name: "Print Tower 22",
[314]1339                                                                description: "Complete Printing Asset #22",
1340                                                                section: Section.get(1))
[276]1341        saveAndTest(assetInstance1)
[270]1342//        assetInstance.addToMaintenanceActions(MaintenanceAction.get(1))
[149]1343
[270]1344        //Asset #2
[276]1345        def assetInstance2 = new Asset(name: "Print Tower 21",
[314]1346                                                                description: "Complete Printing Asset #21",
1347                                                                section: Section.get(1))
[276]1348        saveAndTest(assetInstance2)
[149]1349
[270]1350        //Asset #3
[276]1351        def assetInstance3 = new Asset(name: "Print Tower 23",
[314]1352                                                                description: "Complete Printing Asset #23",
1353                                                                section: Section.get(1))
[276]1354        saveAndTest(assetInstance3)
[149]1355
[270]1356        //Asset #4
[321]1357        def assetInstance4 = new Asset(name: "C579",
[314]1358                                                                description: "RO #1",
1359                                                                section: Section.get(2))
[276]1360        saveAndTest(assetInstance4)
[149]1361
[270]1362        //AssetSubItem
1363        def assetSubItemInstance
[149]1364
[276]1365        //AssetSubItem #1 Level1
[314]1366        def assetSubItemInstance1 = new AssetSubItem(name: "Print Tower",
1367                                                                                            description: "Common sub asset.")
[276]1368        saveAndTest(assetSubItemInstance1)
[149]1369
[276]1370        // Add assetSubItemInstance1 to some assets.
1371        assetInstance1.addToAssetSubItems(assetSubItemInstance1)
1372        assetInstance2.addToAssetSubItems(assetSubItemInstance1)
1373        assetInstance3.addToAssetSubItems(assetSubItemInstance1)
1374
1375        //AssetSubItem #2 Level1
[321]1376        def assetSubItemInstance2 = new AssetSubItem(name: "C579-44",
1377                                                                                            description: "Tanks and towers")
[276]1378        saveAndTest(assetSubItemInstance2)
1379
1380        // Add assetSubItemInstance2 to some assets.
1381        assetInstance4.addToAssetSubItems(assetSubItemInstance2)
1382
1383        //AssetSubItem #3 Level1
[321]1384        def assetSubItemInstance3 = new AssetSubItem(name: "C579-20",
1385                                                                                            description: "Control Loops")
[276]1386        saveAndTest(assetSubItemInstance3)
1387
1388        // Add assetSubItemInstance3 to some assets.
1389        assetInstance4.addToAssetSubItems(assetSubItemInstance3)
1390
1391        //AssetSubItem #4 Level2
[321]1392        assetSubItemInstance = new AssetSubItem(name: "C579-TK-0022",
1393                                                                                            description: "Blow Tank",
1394                                                                                            parentItem: AssetSubItem.get(2))
1395        saveAndTest(assetSubItemInstance)
1396
1397        //AssetSubItem #5 Level2
1398        assetSubItemInstance = new AssetSubItem(name: "C579-TK-0023",
1399                                                                                            description: "Reactor Tower",
1400                                                                                            parentItem: AssetSubItem.get(2))
1401        saveAndTest(assetSubItemInstance)
1402
1403        //AssetSubItem #6 Level2
[314]1404        assetSubItemInstance = new AssetSubItem(name: "Print Unit",
1405                                                                                    description: "Print Unit - Common Level 2 sub item.",
1406                                                                                    parentItem: AssetSubItem.get(1))
[270]1407        saveAndTest(assetSubItemInstance)
[149]1408
[321]1409        //AssetSubItem #7 Level2
1410        assetSubItemInstance = new AssetSubItem(name: "1925365",
1411                                                                                    description: "Agitator",
1412                                                                                    parentItem: AssetSubItem.get(4))
[270]1413        saveAndTest(assetSubItemInstance)
[149]1414
[321]1415        //AssetSubItem #8 Level2
1416        assetSubItemInstance = new AssetSubItem(name: "1925366",
1417                                                                                    description: "Scraper",
1418                                                                                    parentItem: AssetSubItem.get(4))
[276]1419        saveAndTest(assetSubItemInstance)
1420
[321]1421        //AssetSubItem #9 Level3
[276]1422        assetSubItemInstance = new AssetSubItem(name: "Motor",
[314]1423                                                                                    description: "Motor - Level 3 sub item",
[321]1424                                                                                    parentItem: AssetSubItem.get(6))
[276]1425        saveAndTest(assetSubItemInstance)
1426
[321]1427        //AssetSubItem #10 Level3
[276]1428        assetSubItemInstance = new AssetSubItem(name: "Gearbox",
[314]1429                                                                                    description: "Gearbox - Level 3 sub item, gearbox",
[321]1430                                                                                    parentItem: AssetSubItem.get(6))
[276]1431        saveAndTest(assetSubItemInstance)
1432
[321]1433        //AssetSubItem #11 Level4
[276]1434        assetSubItemInstance = new AssetSubItem(name: "DS Bearing",
[314]1435                                                                                    description: "Drive Side Bearing",
[321]1436                                                                                    parentItem: AssetSubItem.get(9))
[276]1437        saveAndTest(assetSubItemInstance)
1438
[321]1439        //AssetSubItem #12 Level4
[276]1440        assetSubItemInstance = new AssetSubItem(name: "NDS Bearing",
[314]1441                                                                                    description: "Non Drive Side Bearing",
[321]1442                                                                                    parentItem: AssetSubItem.get(9))
[276]1443        saveAndTest(assetSubItemInstance)
[321]1444
1445        //AssetSubItem #13 Level2
1446        assetSubItemInstance = new AssetSubItem(name: "C579-F-0001",
1447                                                                                    description: "Weak Caustic Flow",
1448                                                                                    parentItem: AssetSubItem.get(3))
1449        saveAndTest(assetSubItemInstance)
1450
1451        //AssetSubItem #14 Level3
1452        assetSubItemInstance = new AssetSubItem(name: "C579-FT-0002",
1453                                                                                    description: "Weak Caustic Flow Transmitter",
1454                                                                                    parentItem: AssetSubItem.get(13))
1455        saveAndTest(assetSubItemInstance)
1456
1457        //AssetSubItem #15 Level3
1458        assetSubItemInstance = new AssetSubItem(name: "C579-PT-0003",
1459                                                                                    description: "Weak Caustic Pressure Transmitter",
1460                                                                                    parentItem: AssetSubItem.get(13))
1461        saveAndTest(assetSubItemInstance)
[276]1462    } // createDemoAssetTree()
1463
[149]1464    def createDemoAssetExtenedAttributes() {
1465
[270]1466        //AssetExtendedAttribute
1467        def assetExtendedAttributeInstance
1468
1469        //AssetExtendedAttribute #1
1470        assetExtendedAttributeInstance = new AssetExtendedAttribute(value: "PU Mark 2",
1471                                                                                                                    asset: Asset.get(1),
1472                                                                                                                    extendedAttributeType: ExtendedAttributeType.get(1))
1473        saveAndTest(assetExtendedAttributeInstance)
1474
1475        //AssetExtendedAttribute #2
1476        assetExtendedAttributeInstance = new AssetExtendedAttribute(value: "On the far side of Tank 5",
1477                                                                                                                    asset: Asset.get(1),
1478                                                                                                                    extendedAttributeType: ExtendedAttributeType.get(5))
1479        saveAndTest(assetExtendedAttributeInstance)
[149]1480    }
1481
1482
1483/****************************************
1484Call this function instead of .save()
1485*****************************************/
1486    private boolean saveAndTest(object) {
1487        if(!object.save()) {
1488//             DemoDataSuccessful = false
[199]1489            log.error "'${object}' failed to save!"
1490            log.error object.errors
[149]1491            return false
1492        }
1493        return true
1494    }
1495}
Note: See TracBrowser for help on using the repository browser.