import grails.util.GrailsUtil class BootStrap { //Required to be right here for Acegi plugin. def authenticateService Boolean BootStrapDemoDataSuccessful = true def init = { servletContext -> println "**** BootStrap GrailsUtil.environment = ${GrailsUtil.environment}" switch (GrailsUtil.environment) { case "development": bootStrapDemoData() break case "test": break case "production": bootStrapDemoData() break } } def destroy = { } //Insert some demo/startup data. void bootStrapDemoData() { println "BootStrapping demo data..." //TypeOfPersonGroup def personGroupTypeInstance personGroupTypeInstance = new PersonGroupType(name:"Department") BootStrapSaveAndTest(personGroupTypeInstance) personGroupTypeInstance = new PersonGroupType(name:"Contractor") BootStrapSaveAndTest(personGroupTypeInstance) personGroupTypeInstance = new PersonGroupType(name:"ProjectTeam") BootStrapSaveAndTest(personGroupTypeInstance) //PersonGroup def personGroupInstance personGroupInstance = new PersonGroup(personGroupType:PersonGroupType.findByName("Department"), name:"Electrical") BootStrapSaveAndTest(personGroupInstance) personGroupInstance = new PersonGroup(personGroupType:PersonGroupType.findByName("Department"), name:"Mechanical") BootStrapSaveAndTest(personGroupInstance) personGroupInstance = new PersonGroup(personGroupType:PersonGroupType.findByName("Department"), name:"Production") BootStrapSaveAndTest(personGroupInstance) personGroupInstance = new PersonGroup(personGroupType:PersonGroupType.get(2), name:"Kewl AirCon Guys") BootStrapSaveAndTest(personGroupInstance) personGroupInstance = new PersonGroup(personGroupType:PersonGroupType.get(3), name:"gnuMims") BootStrapSaveAndTest(personGroupInstance) //Authority def authInstance authInstance = new Authority(description:"Application Admin, not required for daily use! Grants full admin access to the application.", authority:"ROLE_AppAdmin") BootStrapSaveAndTest(authInstance) authInstance = new Authority(description:"Business manager, grants full management access.", authority:"ROLE_Manager") BootStrapSaveAndTest(authInstance) authInstance = new Authority(description:"Application User, all application users need this base role to allow login.", authority:"ROLE_AppUser") BootStrapSaveAndTest(authInstance) //Person def passClearText = "pass" def passwordEncoded = authenticateService.encodePassword(passClearText) def personInstance //Person #1 personInstance = new Person(loginName:"admin", firstName:"Admin", lastName:"Powers", pass:passClearText, password:passwordEncoded, email:"admin@example.com") BootStrapSaveAndTest(personInstance) personInstance.addToAuthorities(Authority.get(1)) personInstance.addToAuthorities(Authority.get(2)) personInstance.addToAuthorities(Authority.get(3)) personInstance.addToPersonGroups(PersonGroup.findByName("gnuMims")) //Person #2 personInstance = new Person(loginName:"manager", firstName:"Meca", lastName:"Manager", pass:passClearText, password:passwordEncoded, email:"manager@example.com") BootStrapSaveAndTest(personInstance) personInstance.addToAuthorities(Authority.get(2)) personInstance.addToAuthorities(Authority.get(3)) personInstance.addToPersonGroups(PersonGroup.findByName("gnuMims")) //Person #3 personInstance = new Person(loginName:"user", firstName:"Demo", lastName:"User", pass:passClearText, password:passwordEncoded, email:"user@example.com") BootStrapSaveAndTest(personInstance) personInstance.addToAuthorities(Authority.get(3)) personInstance.addToPersonGroups(PersonGroup.findByName("Electrical")) //Person #4 personInstance = new Person(loginName:"craig", firstName:"Craig", lastName:"SuperSparky", pass:passClearText, password:passwordEncoded, email:"user@example.com") BootStrapSaveAndTest(personInstance) personInstance.addToAuthorities(Authority.get(3)) personInstance.addToPersonGroups(PersonGroup.findByName("Electrical")) //Person #5 personInstance = new Person(loginName:"john", firstName:"John", lastName:"SuperFitter", pass:passClearText, password:passwordEncoded, email:"user@example.com") BootStrapSaveAndTest(personInstance) personInstance.addToAuthorities(Authority.get(3)) personInstance.addToPersonGroups(PersonGroup.findByName("Mechanical")) //Person #6 personInstance = new Person(loginName:"mann", firstName:"Production", lastName:"Mann", pass:passClearText, password:passwordEncoded, email:"user@example.com") BootStrapSaveAndTest(personInstance) personInstance.addToAuthorities(Authority.get(3)) personInstance.addToPersonGroups(PersonGroup.findByName("Production")) //TaskGroup def taskGroupInstance taskGroupInstance = new TaskGroup(name:"Engineering Activites", description:"Engineering daily activities") BootStrapSaveAndTest(taskGroupInstance) taskGroupInstance = new TaskGroup(name:"Production Activites", description:"Production daily activities") BootStrapSaveAndTest(taskGroupInstance) taskGroupInstance = new TaskGroup(name:"New Projects", description:" ") BootStrapSaveAndTest(taskGroupInstance) //TaskStatus def taskStatusInstance taskStatusInstance = new TaskStatus(name:"Not Started") BootStrapSaveAndTest(taskStatusInstance) taskStatusInstance = new TaskStatus(name:"In Progress") BootStrapSaveAndTest(taskStatusInstance) taskStatusInstance = new TaskStatus(name:"Completed") BootStrapSaveAndTest(taskStatusInstance) //TaskPriority def taskPriorityInstance taskPriorityInstance = new TaskPriority(name:"Low") BootStrapSaveAndTest(taskPriorityInstance) taskPriorityInstance = new TaskPriority(name:"Normal") BootStrapSaveAndTest(taskPriorityInstance) taskPriorityInstance = new TaskPriority(name:"High") BootStrapSaveAndTest(taskPriorityInstance) taskPriorityInstance = new TaskPriority(name:"Immediate") BootStrapSaveAndTest(taskPriorityInstance) //TaskType def taskTypeInstance taskTypeInstance = new TaskType(name:"Unscheduled Breakin") BootStrapSaveAndTest(taskTypeInstance) taskTypeInstance = new TaskType(name:"Planned Maintenance") BootStrapSaveAndTest(taskTypeInstance) taskTypeInstance = new TaskType(name:"Project") BootStrapSaveAndTest(taskTypeInstance) taskTypeInstance = new TaskType(name:"Turnaround") BootStrapSaveAndTest(taskTypeInstance) taskTypeInstance = new TaskType(name:"Production Run") BootStrapSaveAndTest(taskTypeInstance) //Task def taskInstance //Task #1 taskInstance = new Task(taskGroup:TaskGroup.findByName("Engineering Activites"), taskStatus:TaskStatus.findByName("Not Started"), taskPriority:TaskPriority.get(2), taskType:TaskType.get(1), leadPerson:Person.get(3), description:"Check specific level sensor", comment:"Has been noted as problematic, try recallibrating") BootStrapSaveAndTest(taskInstance) //Task #2 taskInstance = new Task(taskGroup:TaskGroup.findByName("Engineering Activites"), taskStatus:TaskStatus.findByName("Not Started"), taskPriority:TaskPriority.get(2), taskType:TaskType.get(1), leadPerson:Person.get(5), description:"Some follow-up work", comment:"Some help required", parentTask: Task.get(1)) BootStrapSaveAndTest(taskInstance) //Task #3 taskInstance = new Task(taskGroup:TaskGroup.findByName("Engineering Activites"), taskStatus:TaskStatus.findByName("Not Started"), taskPriority:TaskPriority.get(2), taskType:TaskType.get(1), leadPerson:Person.get(5), description:"A Sub Task can be created by setting the Parent Task value", comment:"Some help required", parentTask: Task.get(1)) BootStrapSaveAndTest(taskInstance) //Task #4 taskInstance = new Task(taskGroup:TaskGroup.findByName("Engineering Activites"), taskStatus:TaskStatus.findByName("Not Started"), taskPriority:TaskPriority.get(2), taskType:TaskType.get(1), leadPerson:Person.get(4), description:"Replace sensor at next opportunity.", comment:"Nothing else has worked.", parentTask: Task.get(1)) BootStrapSaveAndTest(taskInstance) //Task #5 taskInstance = new Task(taskGroup:TaskGroup.findByName("Production Activites"), taskStatus:TaskStatus.findByName("Not Started"), taskPriority:TaskPriority.get(2), taskType:TaskType.get(5), leadPerson:Person.get(6), description:"Production Report", comment:"Production report for specific production run or shift") BootStrapSaveAndTest(taskInstance) //Task #6 taskInstance = new Task(taskGroup:TaskGroup.findByName("New Projects"), taskStatus:TaskStatus.findByName("Not Started"), taskPriority:TaskPriority.get(2), taskType:TaskType.get(3), leadPerson:Person.get(1), description:"Make killer CMMS app", comment:"Use Grails and get a move on!") BootStrapSaveAndTest(taskInstance) //EntryType def entryTypeInstance entryTypeInstance = new EntryType(name:"Fault") BootStrapSaveAndTest(entryTypeInstance) entryTypeInstance = new EntryType(name:"WorkDone") BootStrapSaveAndTest(entryTypeInstance) entryTypeInstance = new EntryType(name:"Production Note") BootStrapSaveAndTest(entryTypeInstance) entryTypeInstance = new EntryType(name:"Work Request") BootStrapSaveAndTest(entryTypeInstance) //Entry def entryInstance //Entry #1 entryInstance = new Entry(enteredBy: Person.get(6), task: Task.get(1), entryType: EntryType.findByName("Fault"), comment: "This level sensor is causing us trouble.", durationMinute: 20) BootStrapSaveAndTest(entryInstance) //Entry #2 entryInstance = new Entry(enteredBy: Person.get(4), task: Task.get(1), entryType: EntryType.findByName("WorkDone"), comment: "Cleaned sensor, see how it goes.", durationMinute: 30) BootStrapSaveAndTest(entryInstance) //Entry #3 entryInstance = new Entry(enteredBy: Person.get(4), task: Task.get(1), entryType: EntryType.findByName("WorkDone"), comment: "Checked up on it later and sensor is dropping out intermittently, created subTask to replace sensor.", durationMinute: 20) BootStrapSaveAndTest(entryInstance) //ModificationType def taskModificationTypeInstance taskModificationTypeInstance = new TaskModificationType(name:"Created").save() taskModificationTypeInstance = new TaskModificationType(name:"Completed").save() taskModificationTypeInstance = new TaskModificationType(name:"Closed").save() taskModificationTypeInstance = new TaskModificationType(name:"Altered").save() taskModificationTypeInstance = new TaskModificationType(name:"TargetDateModified").save() taskModificationTypeInstance = new TaskModificationType(name:"ScheduledDateModified").save() taskModificationTypeInstance = new TaskModificationType(name:"DescriptionModified").save() taskModificationTypeInstance = new TaskModificationType(name:"AssignedToModified").save() taskModificationTypeInstance = new TaskModificationType(name:"NameModified").save() //AssignedPerson def assignedPersonInstance //AssignedPerson #1 assignedPersonInstance = new AssignedPerson(person: Person.get(4), task: Task.get(1), estimatedHour: 1, estimatedMinute: 20) BootStrapSaveAndTest(assignedPersonInstance) //AssignedPerson #2 assignedPersonInstance = new AssignedPerson(person: Person.get(5), task: Task.get(1), estimatedHour: 3, estimatedMinute: 30) BootStrapSaveAndTest(assignedPersonInstance) //Site def siteInstance siteInstance = new Site(name: "Commercial Site") BootStrapSaveAndTest(siteInstance) //Asset def assetInstance assetInstance = new Asset(name: "RockCrusher1") BootStrapSaveAndTest(assetInstance) //InventoryStore def inventoryStoreInstance = new InventoryStore(site: Site.get(1), name: "Store #1") BootStrapSaveAndTest(inventoryStoreInstance) //StoreLocation def storeLocation = new StoreLocation(inventoryStore: InventoryStore.get(1), bin: "A1-2") BootStrapSaveAndTest(storeLocation) //UnitOfMeasure def unitOfMeasureInstance unitOfMeasureInstance = new UnitOfMeasure(name: "each") BootStrapSaveAndTest(unitOfMeasureInstance) unitOfMeasureInstance = new UnitOfMeasure(name: "meter(s)") BootStrapSaveAndTest(unitOfMeasureInstance) unitOfMeasureInstance = new UnitOfMeasure(name: "box(es)") BootStrapSaveAndTest(unitOfMeasureInstance) unitOfMeasureInstance = new UnitOfMeasure(name: "litre(s)") BootStrapSaveAndTest(unitOfMeasureInstance) unitOfMeasureInstance = new UnitOfMeasure(name: "kilogram(s)") BootStrapSaveAndTest(unitOfMeasureInstance) //InventoryGroup def inventoryGroupInstance inventoryGroupInstance = new InventoryGroup(name: "Misc") BootStrapSaveAndTest(inventoryGroupInstance) //InventoryType def inventoryTypeInstance inventoryTypeInstance = new InventoryType(name: "Consumable") BootStrapSaveAndTest(inventoryTypeInstance) inventoryTypeInstance = new InventoryType(name: "Repairable") BootStrapSaveAndTest(inventoryTypeInstance) //InventoryItem def inventoryItemInstance inventoryItemInstance = new InventoryItem(inventoryGroup: InventoryGroup.get(1), inventoryType: InventoryType.get(1), unitOfMeasure: UnitOfMeasure.get(1), name: "1051 Bearing", reorderPoint: 0) BootStrapSaveAndTest(inventoryItemInstance) //StoredItem def storedItemInstance storedItemInstance = new StoredItem(inventoryItem: InventoryItem.get(1), storeLocation: StoreLocation.get(1), quantity: 8) BootStrapSaveAndTest(storedItemInstance) //Finally did it all work. if(BootStrapDemoDataSuccessful) { println "BootStrapping demo data...successful." } else println "BootStrapping demo data...failed." } //Call this function instead of .save() void BootStrapSaveAndTest(object) { if(!object.save()) { BootStrapDemoDataSuccessful = false println "'${object}' failed to save!" println object.errors } } }