source: branches/features/taskProcedureRework/grails-app/services/CreateDataService.groovy @ 783

Last change on this file since 783 was 783, checked in by gav, 13 years ago

Demo data adjustment.

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