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

Last change on this file since 821 was 821, checked in by gav, 8 years ago

Domain change, add ConditionSeverity.

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