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
RevLine 
[149]1/**
2* Provides a data service to create base and demo data.
[180]3* Beware that most, if not all, base data is referenced by "Id" throughout the program.
4* This allows changing the text of the 'name' property to something of the same meaning.
5* But be sure to maintain the correct Id during creation, indicated by #1, #2 etc.
[149]6*/
7class  CreateDataService {
8
9    boolean transactional = false
10
[291]11    def authService
[180]12    def taskService
[210]13    def dateUtilService
[237]14    def appConfigService
[251]15    def assignedGroupService
16    def assignedPersonService
[180]17
[149]18/*******************************************
19Start of Group methods.
20Generally use these methods to create data.
21*******************************************/
22
23    /**
[199]24    * Always call this at startup to ensure that we have admin access
25    * and that the system pseudo person is available.
[149]26    */
[199]27    def ensureSystemAndAdminAccess() {
[149]28        if(!Authority.findByAuthority("ROLE_AppAdmin") ) {
[199]29            log.warn "ROLE_AppAdmin not found, calling createAdminAuthority()."
[149]30            createAdminAuthority()
31        }
[199]32        if(!Person.findByloginName("system") ) {
33            log.warn "LoginName 'system' not found, calling createSystemPerson()."
34            createSystemPerson()
35        }
[149]36        if(!Person.findByloginName("admin") ) {
[199]37            log.warn "LoginName 'admin' not found, calling createAdminPerson()."
[149]38            createAdminPerson()
39        }
40    }
41
42    /**
43    * Create the base data required for the application to function.
44    */
45    def createBaseData() {
[237]46
47        if(appConfigService.exists("baseDataCreated")) {
48            log.error "Base data has already been created, will NOT recreate."
49            return false
50        }
51
[199]52        log.info "Creating base data..."
[237]53
[149]54        // Person and Utils
55        createBaseAuthorities()
56        createBasePersonGroups()
[265]57        createBaseDefinitions()
[149]58        createBaseUnitsOfMeasure()
59        createBasePeriods()
[175]60        createBaseSupplierType()
61        createBaseManufacturerType()
[237]62
[149]63        // Tasks
[180]64        createBaseTaskGroups()
[149]65        createBaseTaskStatus()
66        createBaseTaskPriorities()
[252]67        createBaseTaskBudgetStatus()
[149]68        createBaseTaskTypes()
[180]69        createBaseTaskModificationTypes()
[149]70        createBaseEntryTypes()
[237]71
[149]72        // Inventory
73        createBaseInventoryTypes()
[175]74        createBaseInventoryMovementTypes()
[237]75
[149]76        // Assets
[270]77        createBaseExtenededAttributeTypes()
78        createBaseMaintenancePolicies()
[149]79
[237]80        // Record that data has been created.
81        appConfigService.set("baseDataCreated")
[149]82    }
83
84    /**
85    * Create demo data for some example sites.
86    */
87    def createDemoData() {
[237]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
[199]104        log.info "Creating demo data..."
[237]105
[149]106        // Person and Utils
107        createDemoPersons()
108        createDemoSites()
[162]109        createDemoDepartments()
[175]110        createDemoSuppliers()
111        createDemoManufacturers()
[237]112
[149]113        // Tasks
114        createDemoTasks()
115        createDemoEntries()
[242]116        createDemoAssignedGroups()
[241]117        createDemoAssignedPersons()
[149]118        createDemoTaskRecurringSchedules()
[237]119
[149]120        // Inventory
121        createDemoInventoryStores()  /// @todo: Perhaps a 'createQuickStartData' method?
[175]122        createDemoInventoryLocations()
[149]123        createDemoInventoryGroups() /// @todo: Perhaps a 'createQuickStartData' method?
124        createDemoInventoryItems()
[237]125
[149]126        // Assets
127        createDemoLifePlan()
128        createDemoTaskProcedure()
129        createDemoMaintenanceActions()
[268]130        createDemoSections()
[276]131        createDemoAssetTree()
[149]132        createDemoAssetExtenedAttributes()
[237]133
134        // Record that data has been created.
135        appConfigService.set("demoDataCreated")
[149]136    }
137
138/******************
139Start of Person
140*******************/
141
142    def createAdminAuthority() {
143        def authInstance
144
[294]145        // Authority #1
[149]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
[294]155        // Authority #2
[149]156        authInstance = new Authority(description:"Business manager, grants full management access.",
157                                        authority:"ROLE_Manager")
158        saveAndTest(authInstance)
159
[294]160        // Authority #3
[149]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
[164]169            personGroupTypeInstance = new PersonGroupType(name:"Team")
[149]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
[164]178            personGroupInstance = new PersonGroup(personGroupType:PersonGroupType.get(1),
[149]179                            name:"Electrical")
180        saveAndTest(personGroupInstance)
[164]181            personGroupInstance = new PersonGroup(personGroupType:PersonGroupType.get(1),
[149]182                            name:"Mechanical")
183        saveAndTest(personGroupInstance)
[164]184            personGroupInstance = new PersonGroup(personGroupType:PersonGroupType.get(1),
[149]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
[199]195    def createSystemPerson() {
196        //Person
197        def passClearText = "pass"
[291]198        def passwordEncoded = authService.encodePassword(passClearText)
[199]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
[149]213    def createAdminPerson() {
214        //Person
215        def passClearText = "pass"
[291]216        def passwordEncoded = authService.encodePassword(passClearText)
[149]217        def personInstance
218
[199]219        //Person #2
[149]220        personInstance = new Person(loginName:"admin",
221                                    firstName:"Admin",
222                                    lastName:"Powers",
[199]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'. ''',
[149]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() {
[199]233    }
234
235    def createDemoPersons() {
[149]236        //Person
237        def passClearText = "pass"
[291]238        def passwordEncoded = authService.encodePassword(passClearText)
[149]239        def personInstance
240
[199]241        //Person #1 is system.
242        //Person #2 is admin.
[149]243
[199]244        //Person #3
[149]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))
[164]254        personInstance.addToPersonGroups(PersonGroup.get(5))
[149]255
[199]256        //Person #4
[149]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))
[164]265        personInstance.addToPersonGroups(PersonGroup.get(1))
[149]266
[199]267        //Person #5
[149]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))
[164]276        personInstance.addToPersonGroups(PersonGroup.get(1))
[149]277
[199]278        //Person #6
[149]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))
[164]287        personInstance.addToPersonGroups(PersonGroup.get(2))
[149]288
[199]289        //Person #7
[149]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))
[164]298        personInstance.addToPersonGroups(PersonGroup.get(3))
[149]299    }
300
301/***********************
302START OF UTILITIES
303***********************/
304
[265]305    //These can redefined by the site at deployment time.
[266]306    /// @todo: build an admin view so that only the value (definition) can be changed.
[265]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")
[266]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")
[265]320    }
321
[149]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)
[162]331
332        siteInstance = new Site(name: "River Press")
333        saveAndTest(siteInstance)
[149]334    }
335
[162]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
[149]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
[175]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
[149]465/*********************
466START OF TASK
467*********************/
468
[180]469    def createBaseTaskGroups() {
[149]470        //TaskGroup
471        def taskGroupInstance
472
[258]473        //TaskGroup #1
[149]474        taskGroupInstance = new TaskGroup(name:"Engineering Activites",
475                                                                            description:"Engineering daily activities")
476        saveAndTest(taskGroupInstance)
477
[258]478        //TaskGroup #2
[149]479        taskGroupInstance = new TaskGroup(name:"Production Activites",
480                                                                            description:"Production daily activities")
481        saveAndTest(taskGroupInstance)
482
[258]483        //TaskGroup #3
[149]484        taskGroupInstance = new TaskGroup(name:"New Projects",
485                                                                            description:" ")
486        saveAndTest(taskGroupInstance)
487    }
488
489    def createBaseTaskStatus() {
490
491        //TaskStatus
492        def taskStatusInstance
493
[181]494        taskStatusInstance = new TaskStatus(name:"Not Started") // #1
[149]495        saveAndTest(taskStatusInstance)
496
[181]497        taskStatusInstance = new TaskStatus(name:"In Progress") // #2
[149]498        saveAndTest(taskStatusInstance)
499
[222]500        taskStatusInstance = new TaskStatus(name:"Complete") // #3
[149]501        saveAndTest(taskStatusInstance)
502    }
503
504    def createBaseTaskPriorities() {
505
506        //TaskPriority
507        def taskPriorityInstance
508
[199]509        taskPriorityInstance = new TaskPriority(name:"Normal") // #1
[149]510        saveAndTest(taskPriorityInstance)
511
[199]512        taskPriorityInstance = new TaskPriority(name:"Low") // #2
[149]513        saveAndTest(taskPriorityInstance)
514
[199]515        taskPriorityInstance = new TaskPriority(name:"High") // #3
[149]516        saveAndTest(taskPriorityInstance)
517
[199]518        taskPriorityInstance = new TaskPriority(name:"Immediate") // #4
[149]519        saveAndTest(taskPriorityInstance)
520    }
521
[252]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
[149]534    def createBaseTaskTypes() {
535
536        //TaskType
537        def taskTypeInstance
538
[199]539        taskTypeInstance = new TaskType(name:"Unscheduled Breakin") // #1
[149]540        saveAndTest(taskTypeInstance)
541
[199]542        taskTypeInstance = new TaskType(name:"Preventative Maintenance") // #2
[149]543        saveAndTest(taskTypeInstance)
544
[199]545        taskTypeInstance = new TaskType(name:"Project") // #3
[149]546        saveAndTest(taskTypeInstance)
547
[199]548        taskTypeInstance = new TaskType(name:"Turnaround") // #4
[149]549        saveAndTest(taskTypeInstance)
550
[199]551        taskTypeInstance = new TaskType(name:"Production Run") // #5
[149]552        saveAndTest(taskTypeInstance)
553    }
554
[180]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
[251]568        taskModificationTypeInstance = new TaskModificationType(name:"Modified (Assigned Groups)").save()  // #10
569        taskModificationTypeInstance = new TaskModificationType(name:"Modified (Assigned Persons)").save()  // #11
[180]570    }
571
[149]572    def createDemoTasks() {
573
[180]574        def taskResult
575        def p = [:]
[149]576
577        //Task #1
[180]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.",
[210]584                targetStartDate: dateUtilService.today]
[149]585
[180]586        taskResult = taskService.create(p)
587
[149]588        //Task #2
[180]589        p = [taskGroup:TaskGroup.findByName("Engineering Activites"),
[149]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",
[210]595                targetStartDate: dateUtilService.tomorrow,
[180]596                parentTask: Task.get(1)]
[149]597
[180]598        taskResult = taskService.create(p)
599
[149]600        //Task #3
[180]601        p = [taskGroup:TaskGroup.findByName("Engineering Activites"),
[149]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",
[210]607                targetStartDate: dateUtilService.yesterday,
[180]608                parentTask: Task.get(1)]
[149]609
[180]610        taskResult = taskService.create(p)
611
[149]612        //Task #4
[180]613        p = [taskGroup:TaskGroup.findByName("Engineering Activites"),
[149]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.",
[210]619                targetStartDate: dateUtilService.oneWeekFromNow,
[180]620                parentTask: Task.get(1)]
[149]621
[180]622        taskResult = taskService.create(p)
623
[149]624        //Task #5
[180]625        p = [taskGroup:TaskGroup.findByName("Production Activites"),
[149]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",
[210]631                targetStartDate: dateUtilService.today - 6]
[149]632
[180]633        taskResult = taskService.create(p)
634
[149]635        //Task #6
[199]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.",
[210]642                targetStartDate: dateUtilService.today]
[180]643
644        taskResult = taskService.create(p)
[149]645    }
646
647    def createBaseEntryTypes() {
648
649        //EntryType
650        def entryTypeInstance
651
[190]652        entryTypeInstance = new EntryType(name:"Fault") // #1
[149]653        saveAndTest(entryTypeInstance)
654
[190]655        entryTypeInstance = new EntryType(name:"Work Done") // #2
[149]656        saveAndTest(entryTypeInstance)
657
[190]658        entryTypeInstance = new EntryType(name:"Production Note") // #3
[149]659        saveAndTest(entryTypeInstance)
660
[190]661        entryTypeInstance = new EntryType(name:"Work Request") // #4
[149]662        saveAndTest(entryTypeInstance)
663    }
664
665    def createDemoEntries() {
666
[190]667        def entryResult
668        def p = [:]
[149]669
670        //Entry #1
[190]671        p = [task: Task.get(1),
672                entryType: EntryType.get(1),
673                comment: "This level sensor is causing us trouble.",
674                durationMinute: 20]
[149]675
[190]676        entryResult = taskService.createEntry(p)
677
[149]678        //Entry #2
[190]679        p = [task: Task.get(1),
680                entryType: EntryType.get(2),
681                comment: "Cleaned sensor, see how it goes.",
682                durationMinute: 30]
[149]683
[190]684        entryResult = taskService.createEntry(p)
685
[149]686        //Entry #3
[190]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)
[149]693    }
694
[242]695    def createDemoAssignedGroups() {
696
[251]697        def result
698        def p = [:]
[242]699
700        //AssignedGroup #1
[251]701        p = [personGroup: PersonGroup.get(1),
702                task: Task.get(1),
703                estimatedHour: 2,
704                estimatedMinute: 30]
705        result = assignedGroupService.save(p)
[242]706
707        //AssignedGroup #2
[251]708        p = [personGroup: PersonGroup.get(2),
709                task: Task.get(1),
710                estimatedHour: 1,
711                estimatedMinute: 0]
712        result = assignedGroupService.save(p)
[242]713    }
714
[241]715    def createDemoAssignedPersons() {
[149]716
[251]717        def result
718        def p = [:]
[149]719
[241]720        //AssignedPerson #1
[251]721        p = [person: Person.get(4),
722                task: Task.get(1),
723                estimatedHour: 1,
724                estimatedMinute: 20]
725        result = assignedPersonService.save(p)
[149]726
[241]727        //AssignedPerson #2
[251]728        p = [person: Person.get(5),
729                task: Task.get(1),
730                estimatedHour: 3,
731                estimatedMinute: 30]
732        result = assignedPersonService.save(p)
[149]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,
[199]743                                                                                                    recurPeriod: Period.get(2),
[210]744                                                                                                    nextTargetStartDate: dateUtilService.today,
[149]745                                                                                                    generateAhead: 1,
[199]746                                                                                                    taskDuration: 2,
747                                                                                                    taskDurationPeriod: Period.get(1),
748                                                                                                    enabled: false)
[149]749        saveAndTest(taskRecurringScheduleInstance)
750
751        //TaskRecurringSchedule #2
[199]752        taskRecurringScheduleInstance = new TaskRecurringSchedule(task: Task.get(6),
[149]753                                                                                                    recurEvery: 1,
754                                                                                                    recurPeriod: Period.get(1),
[210]755                                                                                                    nextTargetStartDate: dateUtilService.today,
[149]756                                                                                                    generateAhead: 1,
757                                                                                                    taskDuration: 1,
[199]758                                                                                                    taskDurationPeriod: Period.get(1),
759                                                                                                    enabled: true)
[149]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
[175]779    def createDemoInventoryLocations() {
[149]780
[175]781        // InventoryLocation
782        def inventoryLocation
[149]783
[175]784        inventoryLocation = new InventoryLocation(inventoryStore: InventoryStore.get(1), name: "A1-2")
785        saveAndTest(inventoryLocation)
[149]786
[175]787        inventoryLocation = new InventoryLocation(inventoryStore: InventoryStore.get(1), name: "C55")
788        saveAndTest(inventoryLocation)
[149]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
[175]825    def createBaseInventoryMovementTypes() {
826
827        // InventoryMovementType
828        def inventoryMovementTypeInstance
829
830        // InventoryMovementType #1
[177]831        inventoryMovementTypeInstance = new InventoryMovementType(name: "Used",
832                                                                                                                        incrementsInventory: false)
[175]833        saveAndTest(inventoryMovementTypeInstance)
834
835        // InventoryMovementType #2
[177]836        inventoryMovementTypeInstance = new InventoryMovementType(name: "Repaired",
837                                                                                                                        incrementsInventory: true)
[175]838        saveAndTest(inventoryMovementTypeInstance)
839
840        // InventoryMovementType #3
[177]841        inventoryMovementTypeInstance = new InventoryMovementType(name: "Purchase Received",
842                                                                                                                        incrementsInventory: true)
[175]843        saveAndTest(inventoryMovementTypeInstance)
[177]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)
[175]854    }
855
[149]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),
[175]865                                                                                    inventoryLocation: InventoryLocation.get(1),
[185]866                                                                                    name: "Hemp rope",
867                                                                                    description: "Natural hemp rope.",
[175]868                                                                                    unitsInStock: 2,
[149]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),
[175]876                                                                                    inventoryLocation: InventoryLocation.get(1),
[185]877                                                                                    name: "Cotton Rope 12mm",
878                                                                                    description: "A soft natural rope made from cotton.",
[149]879                                                                                    alternateItems: InventoryItem.get(1),
[175]880                                                                                    unitsInStock: 2,
[149]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),
[175]888                                                                                    inventoryLocation: InventoryLocation.get(2),
[149]889                                                                                    name: "2305-2RS",
890                                                                                    description: "Bearing 25x62x24mm double row self aligning ball",
[175]891                                                                                    unitsInStock: 3,
[149]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),
[175]899                                                                                    inventoryLocation: InventoryLocation.get(2),
[149]900                                                                                    name: "L1592-K10",
901                                                                                    description: "10kW contactor",
[175]902                                                                                    unitsInStock: 4,
[149]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),
[175]910                                                                                    inventoryLocation: InventoryLocation.get(2),
[149]911                                                                                    name: "6205-ZZ",
912                                                                                    description: "Bearing 25x52x15mm single row ball shielded",
[175]913                                                                                    unitsInStock: 5,
[149]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
[270]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
[149]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)
[275]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)
[149]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
[268]1044    def createDemoSections() {
[149]1045
[268]1046        //Section
1047        def sectionInstance
[149]1048
[268]1049        //Section #1
1050        sectionInstance = new Section(name: "Press Section",
[276]1051                                                                                    site: Site.get(3),
[162]1052                                                                                    department: Department.get(1))
[268]1053        saveAndTest(sectionInstance)
[149]1054
[268]1055        //Section #2
1056        sectionInstance = new Section(name: "RO System",
[276]1057                                                                                    site: Site.get(1),
[162]1058                                                                                    department: Department.get(2))
[268]1059        saveAndTest(sectionInstance)
[149]1060
[268]1061        //Section #3
[276]1062        sectionInstance = new Section(name: "Auxiliary Section",
[162]1063                                                                                    site: Site.get(1),
1064                                                                                    department: Department.get(1))
[268]1065        saveAndTest(sectionInstance)
[149]1066    }
1067
[276]1068    def createDemoAssetTree() {
[149]1069
[270]1070        //Asset
1071        def assetInstance
[149]1072
[270]1073        //Asset #1
[276]1074        def assetInstance1 = new Asset(name: "Print Tower 22",
1075                                                            section: Section.get(1))
1076        saveAndTest(assetInstance1)
[270]1077//        assetInstance.addToMaintenanceActions(MaintenanceAction.get(1))
[149]1078
[270]1079        //Asset #2
[276]1080        def assetInstance2 = new Asset(name: "Print Tower 21",
1081                                                            section: Section.get(1))
1082        saveAndTest(assetInstance2)
[149]1083
[270]1084        //Asset #3
[276]1085        def assetInstance3 = new Asset(name: "Print Tower 23",
1086                                                            section: Section.get(1))
1087        saveAndTest(assetInstance3)
[149]1088
[270]1089        //Asset #4
[276]1090        def assetInstance4 = new Asset(name: "RO 1",
1091                                                            section: Section.get(2))
1092        saveAndTest(assetInstance4)
[149]1093
[270]1094        //AssetSubItem
1095        def assetSubItemInstance
[149]1096
[276]1097        //AssetSubItem #1 Level1
1098        def assetSubItemInstance1 = new AssetSubItem(name: "Print Tower")
1099        saveAndTest(assetSubItemInstance1)
[149]1100
[276]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
[270]1121        assetSubItemInstance = new AssetSubItem(name: "Print Unit Upper",
[276]1122                                                                                parentItem: AssetSubItem.get(1))
[270]1123        saveAndTest(assetSubItemInstance)
[149]1124
[276]1125        //AssetSubItem #5 Level3
1126        assetSubItemInstance = new AssetSubItem(name: "Agitator",
1127                                                                                parentItem: AssetSubItem.get(2))
[270]1128        saveAndTest(assetSubItemInstance)
[149]1129
[276]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
[149]1156    def createDemoAssetExtenedAttributes() {
1157
[270]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)
[149]1172    }
1173
1174
1175/****************************************
1176Call this function instead of .save()
1177*****************************************/
1178    private boolean saveAndTest(object) {
1179        if(!object.save()) {
1180//             DemoDataSuccessful = false
[199]1181            log.error "'${object}' failed to save!"
1182            log.error object.errors
[149]1183            return false
1184        }
1185        return true
1186    }
1187}
Note: See TracBrowser for help on using the repository browser.