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

Last change on this file since 241 was 241, checked in by gav, 14 years ago

Undo the AssignedGroup implementation by reverse merge r240:r239.

File size: 45.3 KB
Line 
1/**
2* Provides a data service to create base and demo data.
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.
6*/
7class  CreateDataService {
8
9    boolean transactional = false
10
11    def personService
12    def taskService
13    def dateUtilService
14    def appConfigService
15
16/*******************************************
17Start of Group methods.
18Generally use these methods to create data.
19*******************************************/
20
21    /**
22    * Always call this at startup to ensure that we have admin access
23    * and that the system pseudo person is available.
24    */
25    def ensureSystemAndAdminAccess() {
26        if(!Authority.findByAuthority("ROLE_AppAdmin") ) {
27            log.warn "ROLE_AppAdmin not found, calling createAdminAuthority()."
28            createAdminAuthority()
29        }
30        if(!Person.findByloginName("system") ) {
31            log.warn "LoginName 'system' not found, calling createSystemPerson()."
32            createSystemPerson()
33        }
34        if(!Person.findByloginName("admin") ) {
35            log.warn "LoginName 'admin' not found, calling createAdminPerson()."
36            createAdminPerson()
37        }
38    }
39
40    /**
41    * Create the base data required for the application to function.
42    */
43    def createBaseData() {
44
45        if(appConfigService.exists("baseDataCreated")) {
46            log.error "Base data has already been created, will NOT recreate."
47            return false
48        }
49
50        log.info "Creating base data..."
51
52        // Person and Utils
53        createBaseAuthorities()
54        createBasePersonGroups()
55        createBaseUnitsOfMeasure()
56        createBasePeriods()
57        createBaseSupplierType()
58        createBaseManufacturerType()
59
60        // Tasks
61        createBaseTaskGroups()
62        createBaseTaskStatus()
63        createBaseTaskPriorities()
64        createBaseTaskTypes()
65        createBaseTaskModificationTypes()
66        createBaseEntryTypes()
67
68        // Inventory
69        createBaseInventoryTypes()
70        createBaseInventoryMovementTypes()
71        createBaseMaintenancePolicies()
72
73        // Assets
74        createBaseAssetExtenededAttributeTypes()
75
76        // Record that data has been created.
77        appConfigService.set("baseDataCreated")
78    }
79
80    /**
81    * Create demo data for some example sites.
82    */
83    def createDemoData() {
84
85        if(!appConfigService.exists("baseDataCreated")) {
86            log.error "Demo data cannot be created until base data has been created."
87            return false
88        }
89
90        if(appConfigService.exists("demoDataCreated")) {
91            log.error "Demo data has already been created, will NOT recreate."
92            return false
93        }
94
95        if(appConfigService.exists("demoDataCreationDisabled")) {
96            log.error "Demo data creation has been disabled, will NOT create."
97            return false
98        }
99
100        log.info "Creating demo data..."
101
102        // Person and Utils
103        createDemoPersons()
104        createDemoSites()
105        createDemoDepartments()
106        createDemoSuppliers()
107        createDemoManufacturers()
108
109        // Tasks
110        createDemoTasks()
111        createDemoEntries()
112        createDemoAssignedPersons()
113        createDemoTaskRecurringSchedules()
114
115        // Inventory
116        createDemoInventoryStores()  /// @todo: Perhaps a 'createQuickStartData' method?
117        createDemoInventoryLocations()
118        createDemoInventoryGroups() /// @todo: Perhaps a 'createQuickStartData' method?
119        createDemoInventoryItems()
120
121        // Assets
122        createDemoLifePlan()
123        createDemoTaskProcedure()
124        createDemoMaintenanceActions()
125        createDemoSystemSections()
126        createDemoAssetTypes()
127        createDemoAssemblies()
128        createDemoSubAssemblies()
129        createDemoComponentItems()
130        createDemoAssets()
131        createDemoAssetExtenedAttributes()
132
133        // Record that data has been created.
134        appConfigService.set("demoDataCreated")
135    }
136
137/******************
138Start of Person
139*******************/
140
141    def createAdminAuthority() {
142        def authInstance
143
144        authInstance = new Authority(description:"Application Admin, not required for daily use! Grants full admin access to the application.",
145                                        authority:"ROLE_AppAdmin")
146        saveAndTest(authInstance)
147    }
148
149    def createBaseAuthorities() {
150
151        def authInstance
152
153        authInstance = new Authority(description:"Business manager, grants full management access.",
154                                        authority:"ROLE_Manager")
155        saveAndTest(authInstance)
156
157        authInstance = new Authority(description:"Application User, all application users need this base role to allow login.",
158                                        authority:"ROLE_AppUser")
159        saveAndTest(authInstance)
160    }
161
162    void createBasePersonGroups() {
163        //TypeOfPersonGroup
164        def personGroupTypeInstance
165            personGroupTypeInstance = new PersonGroupType(name:"Team")
166        saveAndTest(personGroupTypeInstance)
167            personGroupTypeInstance = new PersonGroupType(name:"Contractor")
168        saveAndTest(personGroupTypeInstance)
169            personGroupTypeInstance = new PersonGroupType(name:"ProjectTeam")
170        saveAndTest(personGroupTypeInstance)
171
172        //PersonGroup
173        def personGroupInstance
174            personGroupInstance = new PersonGroup(personGroupType:PersonGroupType.get(1),
175                            name:"Electrical")
176        saveAndTest(personGroupInstance)
177            personGroupInstance = new PersonGroup(personGroupType:PersonGroupType.get(1),
178                            name:"Mechanical")
179        saveAndTest(personGroupInstance)
180            personGroupInstance = new PersonGroup(personGroupType:PersonGroupType.get(1),
181                            name:"Production")
182        saveAndTest(personGroupInstance)
183            personGroupInstance = new PersonGroup(personGroupType:PersonGroupType.get(2),
184                            name:"Kewl AirCon Guys")
185        saveAndTest(personGroupInstance)
186            personGroupInstance = new PersonGroup(personGroupType:PersonGroupType.get(3),
187                            name:"gnuMims")
188        saveAndTest(personGroupInstance)
189    }
190
191    def createSystemPerson() {
192        //Person
193        def passClearText = "pass"
194        def passwordEncoded = personService.encodePassword(passClearText)
195        def personInstance
196
197        //Person #1
198        personInstance = new Person(loginName:"system",
199                                    firstName:"gnuMims",
200                                    lastName:"System",
201                                    description:'''This is a pseudo person that the application uses to insert data. DO NOT
202                                                        assign login authorities or change the details of this person.''',
203                                    pass:passClearText,
204                                    password:passwordEncoded,
205                                    email:"system@example.com")
206        saveAndTest(personInstance)
207    }
208
209    def createAdminPerson() {
210        //Person
211        def passClearText = "pass"
212        def passwordEncoded = personService.encodePassword(passClearText)
213        def personInstance
214
215        //Person #2
216        personInstance = new Person(loginName:"admin",
217                                    firstName:"Admin",
218                                    lastName:"Powers",
219                                    description:'''Every time the application starts it ensures that the 'admin' login name is available.
220                                                        DO update the password and other details but keep the login name as 'admin'. ''',
221                                    pass:passClearText,
222                                    password:passwordEncoded,
223                                    email:"admin@example.com")
224        saveAndTest(personInstance)
225        personInstance.addToAuthorities(Authority.get(1))
226    }
227
228    def createBasePersons() {
229    }
230
231    def createDemoPersons() {
232        //Person
233        def passClearText = "pass"
234        def passwordEncoded = personService.encodePassword(passClearText)
235        def personInstance
236
237        //Person #1 is system.
238        //Person #2 is admin.
239
240        //Person #3
241        personInstance = new Person(loginName:"manager",
242                                    firstName:"Demo",
243                                    lastName:"Manager",
244                                    pass:passClearText,
245                                    password:passwordEncoded,
246                                    email:"manager@example.com")
247        saveAndTest(personInstance)
248        personInstance.addToAuthorities(Authority.get(2))
249        personInstance.addToAuthorities(Authority.get(3))
250        personInstance.addToPersonGroups(PersonGroup.get(5))
251
252        //Person #4
253        personInstance = new Person(loginName:"user",
254                                    firstName:"Demo",
255                                    lastName:"User",
256                                    pass:passClearText,
257                                    password:passwordEncoded,
258                                    email:"user@example.com")
259        saveAndTest(personInstance)
260        personInstance.addToAuthorities(Authority.get(3))
261        personInstance.addToPersonGroups(PersonGroup.get(1))
262
263        //Person #5
264        personInstance = new Person(loginName:"craig",
265                                    firstName:"Craig",
266                                    lastName:"SuperSparky",
267                                    pass:passClearText,
268                                    password:passwordEncoded,
269                                    email:"user@example.com")
270        saveAndTest(personInstance)
271        personInstance.addToAuthorities(Authority.get(3))
272        personInstance.addToPersonGroups(PersonGroup.get(1))
273
274        //Person #6
275        personInstance = new Person(loginName:"john",
276                                    firstName:"John",
277                                    lastName:"SuperFitter",
278                                    pass:passClearText,
279                                    password:passwordEncoded,
280                                    email:"user@example.com")
281        saveAndTest(personInstance)
282        personInstance.addToAuthorities(Authority.get(3))
283        personInstance.addToPersonGroups(PersonGroup.get(2))
284
285        //Person #7
286        personInstance = new Person(loginName:"mann",
287                                    firstName:"Production",
288                                    lastName:"Mann",
289                                    pass:passClearText,
290                                    password:passwordEncoded,
291                                    email:"user@example.com")
292        saveAndTest(personInstance)
293        personInstance.addToAuthorities(Authority.get(3))
294        personInstance.addToPersonGroups(PersonGroup.get(3))
295    }
296
297/***********************
298START OF UTILITIES
299***********************/
300
301    def createDemoSites() {
302        //Site
303        def siteInstance
304
305        siteInstance = new Site(name: "Creek Mill")
306        saveAndTest(siteInstance)
307
308        siteInstance = new Site(name: "Jasper Street Depot")
309        saveAndTest(siteInstance)
310
311        siteInstance = new Site(name: "River Press")
312        saveAndTest(siteInstance)
313    }
314
315    def createDemoDepartments() {
316
317        //Department
318        def departmentInstance
319
320        //Department #1
321        departmentInstance = new Department(name: "Print Centre",
322                                                                                    site: Site.get(1))
323        saveAndTest(departmentInstance)
324
325        //Department #2
326        departmentInstance = new Department(name: "Pulp Mill 2",
327                                                                                    site: Site.get(2))
328        saveAndTest(departmentInstance)
329    }
330
331    def createBaseUnitsOfMeasure() {
332
333        //UnitOfMeasure
334        def unitOfMeasureInstance
335
336        //UnitOfMeasure #1
337        unitOfMeasureInstance = new UnitOfMeasure(name: "each")
338        saveAndTest(unitOfMeasureInstance)
339
340        //UnitOfMeasure #2
341        unitOfMeasureInstance = new UnitOfMeasure(name: "meter(s)")
342        saveAndTest(unitOfMeasureInstance)
343
344        //UnitOfMeasure #3
345        unitOfMeasureInstance = new UnitOfMeasure(name: "box(es)")
346        saveAndTest(unitOfMeasureInstance)
347
348        //UnitOfMeasure #4
349        unitOfMeasureInstance = new UnitOfMeasure(name: "litre(s)")
350        saveAndTest(unitOfMeasureInstance)
351
352        //UnitOfMeasure #5
353        unitOfMeasureInstance = new UnitOfMeasure(name: "kilogram(s)")
354        saveAndTest(unitOfMeasureInstance)
355    }
356
357    def createBasePeriods() {
358
359        //Period
360        def periodInstance
361
362        //Period #1
363        periodInstance = new Period(period: "Day(s)")
364        saveAndTest(periodInstance)
365
366        //Period #2
367        periodInstance = new Period(period: "Week(s)")
368        saveAndTest(periodInstance)
369
370        //Period #3
371        periodInstance = new Period(period: "Month(s)")
372        saveAndTest(periodInstance)
373
374        //Period #4
375        periodInstance = new Period(period: "Year(s)")
376        saveAndTest(periodInstance)
377    }
378
379    def createBaseSupplierType() {
380
381        // SupplierType
382        def supplierTypeInstance
383
384        // SupplierType #1
385        supplierTypeInstance = new SupplierType(name: "OEM",
386                                                                    description: "Original equipment supplier")
387        saveAndTest(supplierTypeInstance)
388
389        // SupplierType #2
390        supplierTypeInstance = new SupplierType(name: "Local",
391                                                                    description: "Local supplier")
392        saveAndTest(supplierTypeInstance)
393    }
394
395    def createBaseManufacturerType() {
396
397        // ManufacturerType
398        def manufacturerTypeInstance
399
400        // ManufacturerType #1
401        manufacturerTypeInstance = new ManufacturerType(name: "OEM",
402                                                                        description: "Original equipment manufacturer")
403        saveAndTest(manufacturerTypeInstance)
404
405        // ManufacturerType #2
406        manufacturerTypeInstance = new ManufacturerType(name: "Alternate",
407                                                                        description: "Not original equipment manufacturer")
408        saveAndTest(manufacturerTypeInstance)
409
410    }
411
412    def createDemoSuppliers() {
413
414        // Supplier
415        def supplierInstance
416
417        // Supplier #1
418        supplierInstance = new Supplier(name: "OEM Distributors",
419                                                                        supplierType: SupplierType.get(1))
420        saveAndTest(supplierInstance)
421
422        // Supplier #2
423        supplierInstance = new Supplier(name: "Mex Holdings",
424                                                                        supplierType: SupplierType.get(2))
425        saveAndTest(supplierInstance)
426    }
427
428    def createDemoManufacturers() {
429
430        // Manufacturer
431        def manufacturerInstance
432
433        // Manufacturer #1
434        manufacturerInstance = new Manufacturer(name: "OEM Manufacturer",
435                                                                        manufacturerType: ManufacturerType.get(1))
436        saveAndTest(manufacturerInstance)
437
438        // Manufacturer #2
439        manufacturerInstance = new Manufacturer(name: "Laser Cutting Services Pty",
440                                                                        manufacturerType: ManufacturerType.get(2))
441        saveAndTest(manufacturerInstance)
442    }
443
444/*********************
445START OF TASK
446*********************/
447
448    def createBaseTaskGroups() {
449        //TaskGroup
450        def taskGroupInstance
451
452        taskGroupInstance = new TaskGroup(name:"Engineering Activites",
453                                                                            description:"Engineering daily activities")
454        saveAndTest(taskGroupInstance)
455
456        taskGroupInstance = new TaskGroup(name:"Production Activites",
457                                                                            description:"Production daily activities")
458        saveAndTest(taskGroupInstance)
459
460        taskGroupInstance = new TaskGroup(name:"New Projects",
461                                                                            description:" ")
462        saveAndTest(taskGroupInstance)
463    }
464
465    def createBaseTaskStatus() {
466
467        //TaskStatus
468        def taskStatusInstance
469
470        taskStatusInstance = new TaskStatus(name:"Not Started") // #1
471        saveAndTest(taskStatusInstance)
472
473        taskStatusInstance = new TaskStatus(name:"In Progress") // #2
474        saveAndTest(taskStatusInstance)
475
476        taskStatusInstance = new TaskStatus(name:"Complete") // #3
477        saveAndTest(taskStatusInstance)
478    }
479
480    def createBaseTaskPriorities() {
481
482        //TaskPriority
483        def taskPriorityInstance
484
485        taskPriorityInstance = new TaskPriority(name:"Normal") // #1
486        saveAndTest(taskPriorityInstance)
487
488        taskPriorityInstance = new TaskPriority(name:"Low") // #2
489        saveAndTest(taskPriorityInstance)
490
491        taskPriorityInstance = new TaskPriority(name:"High") // #3
492        saveAndTest(taskPriorityInstance)
493
494        taskPriorityInstance = new TaskPriority(name:"Immediate") // #4
495        saveAndTest(taskPriorityInstance)
496    }
497
498    def createBaseTaskTypes() {
499
500        //TaskType
501        def taskTypeInstance
502
503        taskTypeInstance = new TaskType(name:"Unscheduled Breakin") // #1
504        saveAndTest(taskTypeInstance)
505
506        taskTypeInstance = new TaskType(name:"Preventative Maintenance") // #2
507        saveAndTest(taskTypeInstance)
508
509        taskTypeInstance = new TaskType(name:"Project") // #3
510        saveAndTest(taskTypeInstance)
511
512        taskTypeInstance = new TaskType(name:"Turnaround") // #4
513        saveAndTest(taskTypeInstance)
514
515        taskTypeInstance = new TaskType(name:"Production Run") // #5
516        saveAndTest(taskTypeInstance)
517    }
518
519    def createBaseTaskModificationTypes() {
520
521        //ModificationType
522        def taskModificationTypeInstance
523        taskModificationTypeInstance = new TaskModificationType(name:"Created").save()  // #1
524        taskModificationTypeInstance = new TaskModificationType(name:"Started").save()  // #2
525        taskModificationTypeInstance = new TaskModificationType(name:"Modified").save()  // #3
526        taskModificationTypeInstance = new TaskModificationType(name:"Completed").save()  // #4
527        taskModificationTypeInstance = new TaskModificationType(name:"Reopened").save()  // #5
528        taskModificationTypeInstance = new TaskModificationType(name:"Trashed").save()  // #6
529        taskModificationTypeInstance = new TaskModificationType(name:"Restored").save()  // #7
530        taskModificationTypeInstance = new TaskModificationType(name:"Approved").save()  // #8
531        taskModificationTypeInstance = new TaskModificationType(name:"Renege approval").save()  // #9
532    }
533
534    def createDemoTasks() {
535
536        def taskResult
537        def p = [:]
538
539        //Task #1
540        p = [taskGroup:TaskGroup.findByName("Engineering Activites"),
541                taskPriority:TaskPriority.get(2),
542                taskType:TaskType.get(1),
543                leadPerson:Person.get(2),
544                description:"Check specific level sensor",
545                comment:"Has been noted as problematic, try recalibrating.",
546                targetStartDate: dateUtilService.today]
547
548        taskResult = taskService.create(p)
549
550        //Task #2
551        p = [taskGroup:TaskGroup.findByName("Engineering Activites"),
552                taskPriority:TaskPriority.get(2),
553                taskType:TaskType.get(1),
554                leadPerson:Person.get(5),
555                description:"Some follow-up work",
556                comment:"Some help required",
557                targetStartDate: dateUtilService.tomorrow,
558                parentTask: Task.get(1)]
559
560        taskResult = taskService.create(p)
561
562        //Task #3
563        p = [taskGroup:TaskGroup.findByName("Engineering Activites"),
564                taskPriority:TaskPriority.get(2),
565                taskType:TaskType.get(1),
566                leadPerson:Person.get(5),
567                description:"A Sub Task can be created by setting the Parent Task value",
568                comment:"Some help required",
569                targetStartDate: dateUtilService.yesterday,
570                parentTask: Task.get(1)]
571
572        taskResult = taskService.create(p)
573
574        //Task #4
575        p = [taskGroup:TaskGroup.findByName("Engineering Activites"),
576                 taskPriority:TaskPriority.get(2),
577                 taskType:TaskType.get(1),
578                 leadPerson:Person.get(4),
579                 description:"Replace sensor at next opportunity.",
580                 comment:"Nothing else has worked.",
581                targetStartDate: dateUtilService.oneWeekFromNow,
582                parentTask: Task.get(1)]
583
584        taskResult = taskService.create(p)
585
586        //Task #5
587        p = [taskGroup:TaskGroup.findByName("Production Activites"),
588                 taskPriority:TaskPriority.get(2),
589                 taskType:TaskType.get(5),
590                 leadPerson:Person.get(6),
591                 description:"Production Report",
592                 comment:"Production report for specific production run or shift",
593                targetStartDate: dateUtilService.today - 6]
594
595        taskResult = taskService.create(p)
596
597        //Task #6
598        p = [taskGroup:TaskGroup.findByName("Engineering Activites"),
599                 taskPriority:TaskPriority.get(1),
600                 taskType:TaskType.get(2),
601                 leadPerson:Person.get(4),
602                 description:"This is a recurring task",
603                 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.",
604                targetStartDate: dateUtilService.today]
605
606        taskResult = taskService.create(p)
607    }
608
609    def createBaseEntryTypes() {
610
611        //EntryType
612        def entryTypeInstance
613
614        entryTypeInstance = new EntryType(name:"Fault") // #1
615        saveAndTest(entryTypeInstance)
616
617        entryTypeInstance = new EntryType(name:"Work Done") // #2
618        saveAndTest(entryTypeInstance)
619
620        entryTypeInstance = new EntryType(name:"Production Note") // #3
621        saveAndTest(entryTypeInstance)
622
623        entryTypeInstance = new EntryType(name:"Work Request") // #4
624        saveAndTest(entryTypeInstance)
625    }
626
627    def createDemoEntries() {
628
629        def entryResult
630        def p = [:]
631
632        //Entry #1
633        p = [task: Task.get(1),
634                entryType: EntryType.get(1),
635                comment: "This level sensor is causing us trouble.",
636                durationMinute: 20]
637
638        entryResult = taskService.createEntry(p)
639
640        //Entry #2
641        p = [task: Task.get(1),
642                entryType: EntryType.get(2),
643                comment: "Cleaned sensor, see how it goes.",
644                durationMinute: 30]
645
646        entryResult = taskService.createEntry(p)
647
648        //Entry #3
649        p = [task: Task.get(1),
650                entryType: EntryType.get(2),
651                comment: "Checked up on it later and sensor is dropping out intermittently, created sub task to replace sensor.",
652                durationMinute: 20]
653
654        entryResult = taskService.createEntry(p)
655    }
656
657    def createDemoAssignedPersons() {
658
659        //AssignedPerson
660        def assignedPersonInstance
661
662        //AssignedPerson #1
663        assignedPersonInstance = new AssignedPerson(person: Person.get(4),
664                                                                                        task: Task.get(1),
665                                                                                        estimatedHour: 1,
666                                                                                        estimatedMinute: 20)
667        saveAndTest(assignedPersonInstance)
668
669        //AssignedPerson #2
670        assignedPersonInstance = new AssignedPerson(person: Person.get(5),
671                                                                                        task: Task.get(1),
672                                                                                        estimatedHour: 3,
673                                                                                        estimatedMinute: 30)
674        saveAndTest(assignedPersonInstance)
675    }
676
677    def createDemoTaskRecurringSchedules() {
678
679        //TaskRecurringSchedule
680        def taskRecurringScheduleInstance
681
682        //TaskRecurringSchedule #1
683        taskRecurringScheduleInstance = new TaskRecurringSchedule(task: Task.get(1),
684                                                                                                    recurEvery: 1,
685                                                                                                    recurPeriod: Period.get(2),
686                                                                                                    nextTargetStartDate: dateUtilService.today,
687                                                                                                    generateAhead: 1,
688                                                                                                    taskDuration: 2,
689                                                                                                    taskDurationPeriod: Period.get(1),
690                                                                                                    enabled: false)
691        saveAndTest(taskRecurringScheduleInstance)
692
693        //TaskRecurringSchedule #2
694        taskRecurringScheduleInstance = new TaskRecurringSchedule(task: Task.get(6),
695                                                                                                    recurEvery: 1,
696                                                                                                    recurPeriod: Period.get(1),
697                                                                                                    nextTargetStartDate: dateUtilService.today,
698                                                                                                    generateAhead: 1,
699                                                                                                    taskDuration: 1,
700                                                                                                    taskDurationPeriod: Period.get(1),
701                                                                                                    enabled: true)
702        saveAndTest(taskRecurringScheduleInstance)
703    }
704
705/*************************
706START OF INVENTORY
707**************************/
708
709    def createDemoInventoryStores() {
710
711        //InventoryStore
712        def inventoryStoreInstance
713
714        inventoryStoreInstance = new InventoryStore(site: Site.get(1), name: "Store #1")
715        saveAndTest(inventoryStoreInstance)
716
717        inventoryStoreInstance = new InventoryStore(site: Site.get(2), name: "Store #2")
718        saveAndTest(inventoryStoreInstance)
719    }
720
721    def createDemoInventoryLocations() {
722
723        // InventoryLocation
724        def inventoryLocation
725
726        inventoryLocation = new InventoryLocation(inventoryStore: InventoryStore.get(1), name: "A1-2")
727        saveAndTest(inventoryLocation)
728
729        inventoryLocation = new InventoryLocation(inventoryStore: InventoryStore.get(1), name: "C55")
730        saveAndTest(inventoryLocation)
731    }
732
733    def createDemoInventoryGroups() {
734
735        //InventoryGroup
736        def inventoryGroupInstance
737
738        //InventoryGroup #1
739        inventoryGroupInstance = new InventoryGroup(name: "Misc")
740        saveAndTest(inventoryGroupInstance)
741
742        //InventoryGroup #2
743        inventoryGroupInstance = new InventoryGroup(name: "Electrical")
744        saveAndTest(inventoryGroupInstance)
745
746        //InventoryGroup #3
747        inventoryGroupInstance = new InventoryGroup(name: "Mechanical")
748        saveAndTest(inventoryGroupInstance)
749
750        //InventoryGroup #4
751        inventoryGroupInstance = new InventoryGroup(name: "Production")
752        saveAndTest(inventoryGroupInstance)
753    }
754
755    def createBaseInventoryTypes() {
756
757        //InventoryType
758        def inventoryTypeInstance
759
760        inventoryTypeInstance = new InventoryType(name: "Consumable")
761        saveAndTest(inventoryTypeInstance)
762
763        inventoryTypeInstance = new InventoryType(name: "Repairable")
764        saveAndTest(inventoryTypeInstance)
765    }
766
767    def createBaseInventoryMovementTypes() {
768
769        // InventoryMovementType
770        def inventoryMovementTypeInstance
771
772        // InventoryMovementType #1
773        inventoryMovementTypeInstance = new InventoryMovementType(name: "Used",
774                                                                                                                        incrementsInventory: false)
775        saveAndTest(inventoryMovementTypeInstance)
776
777        // InventoryMovementType #2
778        inventoryMovementTypeInstance = new InventoryMovementType(name: "Repaired",
779                                                                                                                        incrementsInventory: true)
780        saveAndTest(inventoryMovementTypeInstance)
781
782        // InventoryMovementType #3
783        inventoryMovementTypeInstance = new InventoryMovementType(name: "Purchase Received",
784                                                                                                                        incrementsInventory: true)
785        saveAndTest(inventoryMovementTypeInstance)
786
787        // InventoryMovementType #4
788        inventoryMovementTypeInstance = new InventoryMovementType(name: "Correction Increase",
789                                                                                                                        incrementsInventory: true)
790        saveAndTest(inventoryMovementTypeInstance)
791
792        // InventoryMovementType #5
793        inventoryMovementTypeInstance = new InventoryMovementType(name: "Correction Decrease",
794                                                                                                                        incrementsInventory: false)
795        saveAndTest(inventoryMovementTypeInstance)
796    }
797
798    def createDemoInventoryItems() {
799
800        //InventoryItem
801        def inventoryItemInstance
802
803        //InventoryItem #1
804        inventoryItemInstance = new InventoryItem(inventoryGroup: InventoryGroup.get(1),
805                                                                                    inventoryType: InventoryType.get(1),
806                                                                                    unitOfMeasure: UnitOfMeasure.get(2),
807                                                                                    inventoryLocation: InventoryLocation.get(1),
808                                                                                    name: "Hemp rope",
809                                                                                    description: "Natural hemp rope.",
810                                                                                    unitsInStock: 2,
811                                                                                    reorderPoint: 0)
812        saveAndTest(inventoryItemInstance)
813
814        //InventoryItem #2
815        inventoryItemInstance = new InventoryItem(inventoryGroup: InventoryGroup.get(1),
816                                                                                    inventoryType: InventoryType.get(1),
817                                                                                    unitOfMeasure: UnitOfMeasure.get(2),
818                                                                                    inventoryLocation: InventoryLocation.get(1),
819                                                                                    name: "Cotton Rope 12mm",
820                                                                                    description: "A soft natural rope made from cotton.",
821                                                                                    alternateItems: InventoryItem.get(1),
822                                                                                    unitsInStock: 2,
823                                                                                    reorderPoint: 0)
824        saveAndTest(inventoryItemInstance)
825
826        //InventoryItem #3
827        inventoryItemInstance = new InventoryItem(inventoryGroup: InventoryGroup.get(3),
828                                                                                    inventoryType: InventoryType.get(1),
829                                                                                    unitOfMeasure: UnitOfMeasure.get(1),
830                                                                                    inventoryLocation: InventoryLocation.get(2),
831                                                                                    name: "2305-2RS",
832                                                                                    description: "Bearing 25x62x24mm double row self aligning ball",
833                                                                                    unitsInStock: 3,
834                                                                                    reorderPoint: 2)
835        saveAndTest(inventoryItemInstance)
836
837        //InventoryItem #4
838        inventoryItemInstance = new InventoryItem(inventoryGroup: InventoryGroup.get(2),
839                                                                                    inventoryType: InventoryType.get(1),
840                                                                                    unitOfMeasure: UnitOfMeasure.get(1),
841                                                                                    inventoryLocation: InventoryLocation.get(2),
842                                                                                    name: "L1592-K10",
843                                                                                    description: "10kW contactor",
844                                                                                    unitsInStock: 4,
845                                                                                    reorderPoint: 0)
846        saveAndTest(inventoryItemInstance)
847
848        //InventoryItem #5
849        inventoryItemInstance = new InventoryItem(inventoryGroup: InventoryGroup.get(3),
850                                                                                    inventoryType: InventoryType.get(1),
851                                                                                    unitOfMeasure: UnitOfMeasure.get(1),
852                                                                                    inventoryLocation: InventoryLocation.get(2),
853                                                                                    name: "6205-ZZ",
854                                                                                    description: "Bearing 25x52x15mm single row ball shielded",
855                                                                                    unitsInStock: 5,
856                                                                                    reorderPoint: 2)
857        saveAndTest(inventoryItemInstance)
858    }
859
860/*******************
861START OF ASSET
862*******************/
863
864    def createDemoLifePlan() {
865
866        //LifePlan
867        def lifeplanInstance
868
869        lifeplanInstance = new LifePlan(name: "Initial Plan")
870        saveAndTest(lifeplanInstance)
871    }
872
873    def createBaseMaintenancePolicies() {
874
875        //MaintenancePolicy
876        def maintenancePolicyInstance
877
878        //MaintenancePolicy #1
879        maintenancePolicyInstance = new MaintenancePolicy(name: "Fixed Time")
880        saveAndTest(maintenancePolicyInstance)
881
882        //MaintenancePolicy #2
883        maintenancePolicyInstance = new MaintenancePolicy(name: "Condition Based Online")
884        saveAndTest(maintenancePolicyInstance)
885
886        //MaintenancePolicy #3
887        maintenancePolicyInstance = new MaintenancePolicy(name: "Condition Based Offline")
888        saveAndTest(maintenancePolicyInstance)
889
890        //MaintenancePolicy #4
891        maintenancePolicyInstance = new MaintenancePolicy(name: "Design Out")
892        saveAndTest(maintenancePolicyInstance)
893
894        //MaintenancePolicy #5
895        maintenancePolicyInstance = new MaintenancePolicy(name: "Operate To Failure")
896        saveAndTest(maintenancePolicyInstance)
897    }
898
899    def createDemoTaskProcedure() {
900
901        //TaskProcedure
902        def taskProcedureInstance
903
904        taskProcedureInstance = new TaskProcedure(name: "Daily check")
905        saveAndTest(taskProcedureInstance)
906        taskProcedureInstance.addToTasks(Task.get(1))
907    }
908
909    def createDemoMaintenanceActions() {
910
911        //MaintenanceAction
912        def maintenanceActionInstance
913
914        //MaintenanceAction #1
915        maintenanceActionInstance = new MaintenanceAction(description: "Check all E-stops, activate E-stops S1-S12 and ensure machine cannot run",
916                                                                                                        procedureStepNumber: 1,
917                                                                                                        maintenancePolicy: MaintenancePolicy.get(1),
918                                                                                                        taskProcedure: TaskProcedure.get(1))
919        saveAndTest(maintenanceActionInstance)
920
921        //MaintenanceAction #2
922        maintenanceActionInstance = new MaintenanceAction(description: "Do more pushups",
923                                                                                                        procedureStepNumber: 2,
924                                                                                                        maintenancePolicy: MaintenancePolicy.get(1),
925                                                                                                        taskProcedure: TaskProcedure.get(1))
926        saveAndTest(maintenanceActionInstance)
927
928        //MaintenanceAction #3
929        maintenanceActionInstance = new MaintenanceAction(description: "Ok just one more pushup",
930                                                                                                        procedureStepNumber: 3,
931                                                                                                        maintenancePolicy: MaintenancePolicy.get(1),
932                                                                                                        taskProcedure: TaskProcedure.get(1))
933        saveAndTest(maintenanceActionInstance)
934    }
935
936    def createDemoSystemSections() {
937
938        //SystemSection
939        def systemSectionInstance
940
941        //SystemSection #1
942        systemSectionInstance = new SystemSection(name: "Press Section",
943                                                                                    site: Site.get(1),
944                                                                                    department: Department.get(1))
945        saveAndTest(systemSectionInstance)
946
947        //SystemSection #2
948        systemSectionInstance = new SystemSection(name: "RO System",
949                                                                                    site: Site.get(2),
950                                                                                    department: Department.get(2))
951        saveAndTest(systemSectionInstance)
952
953        //SystemSection #3
954        systemSectionInstance = new SystemSection(name: "Auxilliray Section",
955                                                                                    site: Site.get(1),
956                                                                                    department: Department.get(1))
957        saveAndTest(systemSectionInstance)
958    }
959
960    def createDemoAssetTypes() {
961
962        //AssetType
963        def assetTypeInstance
964
965        //AssetType #1
966        assetTypeInstance = new AssetType(name: "Print Unit")
967        saveAndTest(assetTypeInstance)
968
969        //AssetType #2
970        assetTypeInstance = new AssetType(name: "Reactor Tower")
971        saveAndTest(assetTypeInstance)
972    }
973
974    def createDemoAssemblies() {
975
976        //Assembly
977        def assemblyInstance
978
979        //Assembly #1
980        assemblyInstance = new Assembly(name: "Print Couple",
981                                                                        assetType: AssetType.get(1))
982        saveAndTest(assemblyInstance)
983//        assemblyInstance.addToMaintenanceActions(MaintenanceAction.get(1))
984
985        //Assembly #2
986        assemblyInstance = new Assembly(name: "Agitator",
987                                                                        assetType: AssetType.get(2))
988        saveAndTest(assemblyInstance)
989    }
990
991    def createDemoSubAssemblies() {
992
993        //SubAssembly
994        def subAssemblyInstance
995
996        //SubAssembly #1
997        subAssemblyInstance = new SubAssembly(name: "Cylinder",
998                                                                                    assembly: Assembly.get(1))
999        saveAndTest(subAssemblyInstance)
1000
1001         //SubAssembly #2
1002        subAssemblyInstance = new SubAssembly(name: "Gearmotor",
1003                                                                                    assembly: Assembly.get(2))
1004        saveAndTest(subAssemblyInstance)
1005    }
1006
1007    def createDemoComponentItems() {
1008
1009        //ComponentItem
1010        def componentItemInstance
1011
1012        //ComponentItem #1
1013        componentItemInstance = new ComponentItem(name: "Bearing",
1014                                                                                            subAssembly: SubAssembly.get(1))
1015        saveAndTest(componentItemInstance)
1016
1017         //ComponentItem #2
1018        componentItemInstance = new ComponentItem(name: "Drive shaft oil seal",
1019                                                                                            subAssembly: SubAssembly.get(2))
1020        saveAndTest(componentItemInstance)
1021    }
1022
1023    def createDemoAssets() {
1024
1025        //Asset
1026        def assetInstance
1027
1028        //Asset #1
1029        assetInstance = new Asset(name: "Print Unit 22",
1030                                                        assetType: AssetType.get(1),
1031                                                        systemSection: SystemSection.get(1))
1032        saveAndTest(assetInstance)
1033//        assetInstance.addToMaintenanceActions(MaintenanceAction.get(1))
1034
1035        //Asset #2
1036        assetInstance = new Asset(name: "Print Unit 21",
1037                                                        assetType: AssetType.get(1),
1038                                                        systemSection: SystemSection.get(1))
1039        saveAndTest(assetInstance)
1040
1041        //Asset #3
1042        assetInstance = new Asset(name: "Print Unit 23",
1043                                                        assetType: AssetType.get(1),
1044                                                        systemSection: SystemSection.get(1))
1045        saveAndTest(assetInstance)
1046
1047        //Asset #4
1048        assetInstance = new Asset(name: "RO 1",
1049                                                        assetType: AssetType.get(2),
1050                                                        systemSection: SystemSection.get(2))
1051        saveAndTest(assetInstance)
1052    }
1053
1054    def createBaseAssetExtenededAttributeTypes() {
1055
1056        //AssetExtendedAttributeType
1057        def assetExtendedAttributeInstanceType
1058
1059        //AssetExtendedAttributeType #1
1060        assetExtendedAttributeInstanceType = new AssetExtendedAttributeType(name: "Model Number")
1061        saveAndTest(assetExtendedAttributeInstanceType)
1062
1063        //AssetExtendedAttributeType #2
1064        assetExtendedAttributeInstanceType = new AssetExtendedAttributeType(name: "Purchase Cost")
1065        saveAndTest(assetExtendedAttributeInstanceType)
1066
1067        //AssetExtendedAttributeType #3
1068        assetExtendedAttributeInstanceType = new AssetExtendedAttributeType(name: "Serial Number")
1069        saveAndTest(assetExtendedAttributeInstanceType)
1070
1071        //AssetExtendedAttributeType #4
1072        assetExtendedAttributeInstanceType = new AssetExtendedAttributeType(name: "Manufactured Date")
1073        saveAndTest(assetExtendedAttributeInstanceType)
1074
1075        //AssetExtendedAttributeType #5
1076        assetExtendedAttributeInstanceType = new AssetExtendedAttributeType(name: "Location Description")
1077        saveAndTest(assetExtendedAttributeInstanceType)
1078    }
1079
1080    def createDemoAssetExtenedAttributes() {
1081
1082        //AssetExtendedAttribute
1083        def assetExtendedAttributeInstance
1084
1085        //AssetExtendedAttribute #1
1086        assetExtendedAttributeInstance = new AssetExtendedAttribute(value: "PU Mark 2",
1087                                                                                                                    asset: Asset.get(1),
1088                                                                                                                    assetExtendedAttributeType: AssetExtendedAttributeType.get(1))
1089        saveAndTest(assetExtendedAttributeInstance)
1090
1091        //AssetExtendedAttribute #2
1092        assetExtendedAttributeInstance = new AssetExtendedAttribute(value: "On the far side of Tank 5",
1093                                                                                                                    asset: Asset.get(1),
1094                                                                                                                    assetExtendedAttributeType: AssetExtendedAttributeType.get(5))
1095        saveAndTest(assetExtendedAttributeInstance)
1096    }
1097
1098
1099/****************************************
1100Call this function instead of .save()
1101*****************************************/
1102    private boolean saveAndTest(object) {
1103        if(!object.save()) {
1104//             DemoDataSuccessful = false
1105            log.error "'${object}' failed to save!"
1106            log.error object.errors
1107            return false
1108        }
1109        return true
1110    }
1111}
Note: See TracBrowser for help on using the repository browser.