source: trunk/grails-app/conf/BootStrap.groovy @ 117

Last change on this file since 117 was 117, checked in by gav, 15 years ago

Some inventory additions to BootStrap?

File size: 23.9 KB
Line 
1import grails.util.GrailsUtil
2
3class BootStrap 
4{
5    //Required to be right here for Acegi plugin.
6    def authenticateService
7    Boolean BootStrapDemoDataSuccessful = true
8
9    def init = { servletContext ->
10
11    println "**** BootStrap GrailsUtil.environment = ${GrailsUtil.environment}"
12   
13        switch (GrailsUtil.environment)
14        {
15            case "development":
16                        bootStrapDemoData()
17                        break
18            case "test":
19                        break
20            case "production":
21                        bootStrapDemoData()
22                        break 
23        }
24   
25    }
26
27    def destroy = {
28    }
29
30    //Insert some demo/startup data.
31    void bootStrapDemoData()
32    {
33        println "BootStrapping demo data..."
34   
35//TypeOfPersonGroup
36        def personGroupTypeInstance
37        personGroupTypeInstance = new PersonGroupType(name:"Department")
38        BootStrapSaveAndTest(personGroupTypeInstance)
39        personGroupTypeInstance = new PersonGroupType(name:"Contractor")
40        BootStrapSaveAndTest(personGroupTypeInstance)
41        personGroupTypeInstance = new PersonGroupType(name:"ProjectTeam")
42        BootStrapSaveAndTest(personGroupTypeInstance)
43   
44//PersonGroup
45        def personGroupInstance
46        personGroupInstance = new PersonGroup(personGroupType:PersonGroupType.findByName("Department"),
47                        name:"Electrical")
48        BootStrapSaveAndTest(personGroupInstance)
49        personGroupInstance = new PersonGroup(personGroupType:PersonGroupType.findByName("Department"),
50                        name:"Mechanical")
51        BootStrapSaveAndTest(personGroupInstance)
52        personGroupInstance = new PersonGroup(personGroupType:PersonGroupType.findByName("Department"),
53                        name:"Production")
54        BootStrapSaveAndTest(personGroupInstance)
55        personGroupInstance = new PersonGroup(personGroupType:PersonGroupType.get(2),
56                        name:"Kewl AirCon Guys")
57        BootStrapSaveAndTest(personGroupInstance)
58        personGroupInstance = new PersonGroup(personGroupType:PersonGroupType.get(3),
59                        name:"gnuMims")
60        BootStrapSaveAndTest(personGroupInstance)
61
62//Authority
63        def authInstance
64
65        authInstance = new Authority(description:"Application Admin, not required for daily use! Grants full admin access to the application.",
66                                        authority:"ROLE_AppAdmin")
67        BootStrapSaveAndTest(authInstance)
68
69        authInstance = new Authority(description:"Business manager, grants full management access.",
70                                        authority:"ROLE_Manager")
71        BootStrapSaveAndTest(authInstance)
72
73        authInstance = new Authority(description:"Application User, all application users need this base role to allow login.",
74                                        authority:"ROLE_AppUser")
75        BootStrapSaveAndTest(authInstance)
76           
77//Person
78        def passClearText = "pass"
79        def passwordEncoded = authenticateService.encodePassword(passClearText)
80        def personInstance
81
82        //Person #1
83        personInstance = new Person(loginName:"admin",
84                                    firstName:"Admin",
85                                    lastName:"Powers",
86                                    pass:passClearText,
87                                    password:passwordEncoded,
88                                    email:"admin@example.com")
89        BootStrapSaveAndTest(personInstance)
90        personInstance.addToAuthorities(Authority.get(1))
91        personInstance.addToAuthorities(Authority.get(2))
92        personInstance.addToAuthorities(Authority.get(3))
93        personInstance.addToPersonGroups(PersonGroup.findByName("gnuMims"))
94
95        //Person #2
96        personInstance = new Person(loginName:"manager",
97                                    firstName:"Meca",
98                                    lastName:"Manager",
99                                    pass:passClearText,
100                                    password:passwordEncoded,
101                                    email:"manager@example.com")
102        BootStrapSaveAndTest(personInstance)
103        personInstance.addToAuthorities(Authority.get(2))
104        personInstance.addToAuthorities(Authority.get(3))
105        personInstance.addToPersonGroups(PersonGroup.findByName("gnuMims"))
106
107        //Person #3
108        personInstance = new Person(loginName:"user",
109                                    firstName:"Demo",
110                                    lastName:"User",
111                                    pass:passClearText,
112                                    password:passwordEncoded,
113                                    email:"user@example.com")
114        BootStrapSaveAndTest(personInstance)
115        personInstance.addToAuthorities(Authority.get(3))
116        personInstance.addToPersonGroups(PersonGroup.findByName("Electrical"))
117
118        //Person #4
119        personInstance = new Person(loginName:"craig",
120                                    firstName:"Craig",
121                                    lastName:"SuperSparky",
122                                    pass:passClearText,
123                                    password:passwordEncoded,
124                                    email:"user@example.com")
125        BootStrapSaveAndTest(personInstance)
126        personInstance.addToAuthorities(Authority.get(3))
127        personInstance.addToPersonGroups(PersonGroup.findByName("Electrical"))
128
129        //Person #5
130        personInstance = new Person(loginName:"john",
131                                    firstName:"John",
132                                    lastName:"SuperFitter",
133                                    pass:passClearText,
134                                    password:passwordEncoded,
135                                    email:"user@example.com")
136        BootStrapSaveAndTest(personInstance)
137        personInstance.addToAuthorities(Authority.get(3))
138        personInstance.addToPersonGroups(PersonGroup.findByName("Mechanical"))
139
140        //Person #6
141        personInstance = new Person(loginName:"mann",
142                                    firstName:"Production",
143                                    lastName:"Mann",
144                                    pass:passClearText,
145                                    password:passwordEncoded,
146                                    email:"user@example.com")
147        BootStrapSaveAndTest(personInstance)
148        personInstance.addToAuthorities(Authority.get(3))
149        personInstance.addToPersonGroups(PersonGroup.findByName("Production"))
150
151//TaskGroup
152        def taskGroupInstance
153
154        taskGroupInstance = new TaskGroup(name:"Engineering Activites",
155                      description:"Engineering daily activities")
156        BootStrapSaveAndTest(taskGroupInstance)
157
158        taskGroupInstance = new TaskGroup(name:"Production Activites",
159                      description:"Production daily activities")
160        BootStrapSaveAndTest(taskGroupInstance)
161
162        taskGroupInstance = new TaskGroup(name:"New Projects",
163                      description:" ")
164        BootStrapSaveAndTest(taskGroupInstance)
165
166//TaskStatus
167        def taskStatusInstance
168   
169        taskStatusInstance = new TaskStatus(name:"Not Started")
170        BootStrapSaveAndTest(taskStatusInstance)
171
172        taskStatusInstance = new TaskStatus(name:"In Progress")
173        BootStrapSaveAndTest(taskStatusInstance)
174
175        taskStatusInstance = new TaskStatus(name:"Completed")
176        BootStrapSaveAndTest(taskStatusInstance)
177
178//TaskPriority
179        def taskPriorityInstance
180
181        taskPriorityInstance = new TaskPriority(name:"Low")
182        BootStrapSaveAndTest(taskPriorityInstance)
183
184        taskPriorityInstance = new TaskPriority(name:"Normal")
185        BootStrapSaveAndTest(taskPriorityInstance)
186
187        taskPriorityInstance = new TaskPriority(name:"High")
188        BootStrapSaveAndTest(taskPriorityInstance)
189
190        taskPriorityInstance = new TaskPriority(name:"Immediate")
191        BootStrapSaveAndTest(taskPriorityInstance)
192
193//TaskType
194        def taskTypeInstance
195
196        taskTypeInstance = new TaskType(name:"Unscheduled Breakin")
197        BootStrapSaveAndTest(taskTypeInstance)
198
199        taskTypeInstance = new TaskType(name:"Planned Maintenance")
200        BootStrapSaveAndTest(taskTypeInstance)
201
202        taskTypeInstance = new TaskType(name:"Project")
203        BootStrapSaveAndTest(taskTypeInstance)
204
205        taskTypeInstance = new TaskType(name:"Turnaround")
206        BootStrapSaveAndTest(taskTypeInstance)
207
208        taskTypeInstance = new TaskType(name:"Production Run")
209        BootStrapSaveAndTest(taskTypeInstance)
210
211//Task
212        def taskInstance
213
214        //Task #1
215        taskInstance = new Task(taskGroup:TaskGroup.findByName("Engineering Activites"),
216                 taskStatus:TaskStatus.findByName("Not Started"),
217                 taskPriority:TaskPriority.get(2),
218                 taskType:TaskType.get(1),
219                 leadPerson:Person.get(3),
220                 description:"Check specific level sensor",
221                 comment:"Has been noted as problematic, try recallibrating")
222        BootStrapSaveAndTest(taskInstance)
223
224        //Task #2
225        taskInstance = new Task(taskGroup:TaskGroup.findByName("Engineering Activites"),
226                taskStatus:TaskStatus.findByName("Not Started"),
227                taskPriority:TaskPriority.get(2),
228                taskType:TaskType.get(1),
229                leadPerson:Person.get(5),
230                description:"Some follow-up work",
231                comment:"Some help required",
232                parentTask: Task.get(1))
233        BootStrapSaveAndTest(taskInstance)
234
235        //Task #3
236        taskInstance = new Task(taskGroup:TaskGroup.findByName("Engineering Activites"),
237                taskStatus:TaskStatus.findByName("Not Started"),
238                taskPriority:TaskPriority.get(2),
239                taskType:TaskType.get(1),
240                leadPerson:Person.get(5),
241                description:"A Sub Task can be created by setting the Parent Task value",
242                comment:"Some help required",
243                parentTask: Task.get(1))
244        BootStrapSaveAndTest(taskInstance)
245
246        //Task #4
247        taskInstance = new Task(taskGroup:TaskGroup.findByName("Engineering Activites"),
248                 taskStatus:TaskStatus.findByName("Not Started"),
249                 taskPriority:TaskPriority.get(2),
250                 taskType:TaskType.get(1),
251                 leadPerson:Person.get(4),
252                 description:"Replace sensor at next opportunity.",
253                 comment:"Nothing else has worked.",
254                parentTask: Task.get(1))
255        BootStrapSaveAndTest(taskInstance)
256
257        //Task #5
258        taskInstance = new Task(taskGroup:TaskGroup.findByName("Production Activites"),
259                 taskStatus:TaskStatus.findByName("Not Started"),
260                 taskPriority:TaskPriority.get(2),
261                 taskType:TaskType.get(5),
262                 leadPerson:Person.get(6),
263                 description:"Production Report",
264                 comment:"Production report for specific production run or shift")
265        BootStrapSaveAndTest(taskInstance)
266
267        //Task #6
268        taskInstance = new Task(taskGroup:TaskGroup.findByName("New Projects"),
269                 taskStatus:TaskStatus.findByName("Not Started"),
270                 taskPriority:TaskPriority.get(2),
271                 taskType:TaskType.get(3),
272                 leadPerson:Person.get(1),
273                 description:"Make killer CMMS app",
274                 comment:"Use Grails and get a move on!")
275        BootStrapSaveAndTest(taskInstance)
276
277//EntryType
278        def entryTypeInstance
279
280        entryTypeInstance = new EntryType(name:"Fault")
281        BootStrapSaveAndTest(entryTypeInstance)
282
283        entryTypeInstance = new EntryType(name:"WorkDone")
284        BootStrapSaveAndTest(entryTypeInstance)
285
286        entryTypeInstance = new EntryType(name:"Production Note")
287        BootStrapSaveAndTest(entryTypeInstance)
288
289        entryTypeInstance = new EntryType(name:"Work Request")
290        BootStrapSaveAndTest(entryTypeInstance)
291
292//Entry
293        def entryInstance
294
295        //Entry #1
296        entryInstance = new Entry(enteredBy: Person.get(6),
297                                                    task: Task.get(1),
298                                                    entryType: EntryType.findByName("Fault"),
299                                                    comment: "This level sensor is causing us trouble.",
300                                                    durationMinute: 20)
301        BootStrapSaveAndTest(entryInstance)
302
303        //Entry #2
304        entryInstance = new Entry(enteredBy: Person.get(4),
305                                                    task: Task.get(1),
306                                                    entryType: EntryType.findByName("WorkDone"),
307                                                    comment: "Cleaned sensor, see how it goes.",
308                                                    durationMinute: 30)
309        BootStrapSaveAndTest(entryInstance)
310
311        //Entry #3
312        entryInstance = new Entry(enteredBy: Person.get(4),
313                                                    task: Task.get(1),
314                                                    entryType: EntryType.findByName("WorkDone"),
315                                                    comment: "Checked up on it later and sensor is dropping out intermittently, created subTask to replace sensor.",
316                                                    durationMinute: 20)
317        BootStrapSaveAndTest(entryInstance)
318
319//ModificationType
320        def taskModificationTypeInstance
321        taskModificationTypeInstance = new TaskModificationType(name:"Created").save()
322        taskModificationTypeInstance = new TaskModificationType(name:"Completed").save()
323        taskModificationTypeInstance = new TaskModificationType(name:"Closed").save()
324        taskModificationTypeInstance = new TaskModificationType(name:"Altered").save()
325        taskModificationTypeInstance = new TaskModificationType(name:"TargetDateModified").save()
326        taskModificationTypeInstance = new TaskModificationType(name:"ScheduledDateModified").save()
327        taskModificationTypeInstance = new TaskModificationType(name:"DescriptionModified").save()
328        taskModificationTypeInstance = new TaskModificationType(name:"AssignedToModified").save()
329        taskModificationTypeInstance = new TaskModificationType(name:"NameModified").save()
330   
331//AssignedPerson
332        def assignedPersonInstance
333
334        //AssignedPerson #1
335        assignedPersonInstance = new AssignedPerson(person: Person.get(4),
336                                                                                        task: Task.get(1),
337                                                                                        estimatedHour: 1,
338                                                                                        estimatedMinute: 20)
339        BootStrapSaveAndTest(assignedPersonInstance)
340
341        //AssignedPerson #2
342        assignedPersonInstance = new AssignedPerson(person: Person.get(5),
343                                                                                        task: Task.get(1),
344                                                                                        estimatedHour: 3,
345                                                                                        estimatedMinute: 30)
346        BootStrapSaveAndTest(assignedPersonInstance)
347
348//Site
349        def siteInstance
350
351        siteInstance = new Site(name: "Creek Mill")
352        BootStrapSaveAndTest(siteInstance)
353
354        siteInstance = new Site(name: "Jasper Street Depot")
355        BootStrapSaveAndTest(siteInstance)
356
357//Asset
358        def assetInstance
359
360        assetInstance = new Asset(name: "RockCrusher1")
361        BootStrapSaveAndTest(assetInstance)
362
363
364//InventoryStore
365        def inventoryStoreInstance
366
367        inventoryStoreInstance = new InventoryStore(site: Site.get(1), name: "Store #1")
368        BootStrapSaveAndTest(inventoryStoreInstance)
369
370        inventoryStoreInstance = new InventoryStore(site: Site.get(2), name: "Store #2")
371        BootStrapSaveAndTest(inventoryStoreInstance)
372
373//StoreLocation
374        def storeLocation
375       
376        storeLocation = new StoreLocation(inventoryStore: InventoryStore.get(1), bin: "A1-2")
377        BootStrapSaveAndTest(storeLocation)
378
379        storeLocation = new StoreLocation(inventoryStore: InventoryStore.get(1), bin: "C55")
380        BootStrapSaveAndTest(storeLocation)
381
382//UnitOfMeasure
383        def unitOfMeasureInstance
384
385        //UnitOfMeasure #1
386        unitOfMeasureInstance = new UnitOfMeasure(name: "each")
387        BootStrapSaveAndTest(unitOfMeasureInstance)
388
389        //UnitOfMeasure #2
390        unitOfMeasureInstance = new UnitOfMeasure(name: "meter(s)")
391        BootStrapSaveAndTest(unitOfMeasureInstance)
392
393        //UnitOfMeasure #3
394        unitOfMeasureInstance = new UnitOfMeasure(name: "box(es)")
395        BootStrapSaveAndTest(unitOfMeasureInstance)
396
397        //UnitOfMeasure #4
398        unitOfMeasureInstance = new UnitOfMeasure(name: "litre(s)")
399        BootStrapSaveAndTest(unitOfMeasureInstance)
400
401        //UnitOfMeasure #5
402        unitOfMeasureInstance = new UnitOfMeasure(name: "kilogram(s)")
403        BootStrapSaveAndTest(unitOfMeasureInstance)
404
405//InventoryGroup
406        def inventoryGroupInstance
407
408        //InventoryGroup #1
409        inventoryGroupInstance = new InventoryGroup(name: "Misc")
410        BootStrapSaveAndTest(inventoryGroupInstance)
411
412        //InventoryGroup #2
413        inventoryGroupInstance = new InventoryGroup(name: "Electrical")
414        BootStrapSaveAndTest(inventoryGroupInstance)
415
416        //InventoryGroup #3
417        inventoryGroupInstance = new InventoryGroup(name: "Mechanical")
418        BootStrapSaveAndTest(inventoryGroupInstance)
419
420        //InventoryGroup #4
421        inventoryGroupInstance = new InventoryGroup(name: "Production")
422        BootStrapSaveAndTest(inventoryGroupInstance)
423
424//InventoryType
425        def inventoryTypeInstance
426
427        inventoryTypeInstance = new InventoryType(name: "Consumable")
428        BootStrapSaveAndTest(inventoryTypeInstance)
429
430        inventoryTypeInstance = new InventoryType(name: "Repairable")
431        BootStrapSaveAndTest(inventoryTypeInstance)
432
433//InventoryItem
434        def inventoryItemInstance
435
436        //InventoryItem #1
437        inventoryItemInstance = new InventoryItem(inventoryGroup: InventoryGroup.get(1),
438                                                                                    inventoryType: InventoryType.get(1),
439                                                                                    unitOfMeasure: UnitOfMeasure.get(2),
440                                                                                    name: "J-Rope",
441                                                                                    description: "Twine wound J-Rope",
442                                                                                    reorderPoint: 0)
443        BootStrapSaveAndTest(inventoryItemInstance)
444
445        //InventoryItem #2
446        inventoryItemInstance = new InventoryItem(inventoryGroup: InventoryGroup.get(1),
447                                                                                    inventoryType: InventoryType.get(1),
448                                                                                    unitOfMeasure: UnitOfMeasure.get(2),
449                                                                                    name: "L-Rope",
450                                                                                    description: "Twine wound L-Rope",
451                                                                                    alternateItems: InventoryItem.get(1),
452                                                                                    reorderPoint: 0)
453        BootStrapSaveAndTest(inventoryItemInstance)
454
455        //InventoryItem #3
456        inventoryItemInstance = new InventoryItem(inventoryGroup: InventoryGroup.get(3),
457                                                                                    inventoryType: InventoryType.get(1),
458                                                                                    unitOfMeasure: UnitOfMeasure.get(1),
459                                                                                    name: "2305-2RS",
460                                                                                    description: "Bearing 25x62x24mm double row self aligning ball",
461                                                                                    reorderPoint: 2)
462        BootStrapSaveAndTest(inventoryItemInstance)
463
464        //InventoryItem #4
465        inventoryItemInstance = new InventoryItem(inventoryGroup: InventoryGroup.get(2),
466                                                                                    inventoryType: InventoryType.get(1),
467                                                                                    unitOfMeasure: UnitOfMeasure.get(1),
468                                                                                    name: "L1592-K10",
469                                                                                    description: "10kW contactor",
470                                                                                    reorderPoint: 0)
471        BootStrapSaveAndTest(inventoryItemInstance)
472
473        //InventoryItem #5
474        inventoryItemInstance = new InventoryItem(inventoryGroup: InventoryGroup.get(3),
475                                                                                    inventoryType: InventoryType.get(1),
476                                                                                    unitOfMeasure: UnitOfMeasure.get(1),
477                                                                                    name: "6205-ZZ",
478                                                                                    description: "Bearing 25x52x15mm single row ball shielded",
479                                                                                    reorderPoint: 2)
480        BootStrapSaveAndTest(inventoryItemInstance)
481
482//StoredItem
483        def storedItemInstance
484
485        //StoredItem #1
486        storedItemInstance = new StoredItem(inventoryItem: InventoryItem.get(1),
487                                                                            storeLocation: StoreLocation.get(1),
488                                                                            quantity: 8)
489        BootStrapSaveAndTest(storedItemInstance)
490
491        //StoredItem #2
492        storedItemInstance = new StoredItem(inventoryItem: InventoryItem.get(1),
493                                                                            storeLocation: StoreLocation.get(2),
494                                                                            quantity: 4)
495        BootStrapSaveAndTest(storedItemInstance)
496
497        //StoredItem #3
498        storedItemInstance = new StoredItem(inventoryItem: InventoryItem.get(2),
499                                                                            storeLocation: StoreLocation.get(1),
500                                                                            quantity: 2)
501        BootStrapSaveAndTest(storedItemInstance)
502
503        //StoredItem #4
504        storedItemInstance = new StoredItem(inventoryItem: InventoryItem.get(3),
505                                                                            storeLocation: StoreLocation.get(1),
506                                                                            quantity: 2)
507        BootStrapSaveAndTest(storedItemInstance)
508
509        //StoredItem #5
510        storedItemInstance = new StoredItem(inventoryItem: InventoryItem.get(4),
511                                                                            storeLocation: StoreLocation.get(1),
512                                                                            quantity: 30)
513        BootStrapSaveAndTest(storedItemInstance)
514
515//Finally did it all work.       
516        if(BootStrapDemoDataSuccessful) {
517            println "BootStrapping demo data...successful."
518        }
519        else println "BootStrapping demo data...failed."
520    }
521
522//Call this function instead of .save()
523    void BootStrapSaveAndTest(object) {
524        if(!object.save()) {
525            BootStrapDemoDataSuccessful = false
526            println "'${object}' failed to save!"
527            println object.errors
528
529        }
530    } 
531}
Note: See TracBrowser for help on using the repository browser.