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

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

Add custom checkBoxList for personGroups to Person.
Wrap save and update in transactions, tweak role add/remove logic and use a limited role list for non-admin users.

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