Ignore:
Timestamp:
Nov 4, 2009, 2:47:47 PM (14 years ago)
Author:
gav
Message:

Add support for taskModification audit/change log, the create and update modifications are complete.
Moved create and update of tasks to taskService.
Small Assset domain class adjustment to prevent blank asset name.
Removed "static scope = 'request'" from services since I don't believe it is required and it limits where the service may be used.

Location:
trunk/grails-app/services
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/grails-app/services/CreateDataService.groovy

    r177 r180  
    11/**
    22* Provides a data service to create base and demo data.
     3* Beware that most, if not all, base data is referenced by "Id" throughout the program.
     4* This allows changing the text of the 'name' property to something of the same meaning.
     5* But be sure to maintain the correct Id during creation, indicated by #1, #2 etc.
    36*/
    47class  CreateDataService {
    58
     9    boolean transactional = false
     10
    611    def authenticateService
    7     boolean transactional = false
     12    def taskService
    813
    914/*******************************************
     
    4045        createBaseManufacturerType()
    4146        // Tasks
     47        createBaseTaskGroups()
    4248        createBaseTaskStatus()
    4349        createBaseTaskPriorities()
    4450        createBaseTaskTypes()
     51        createBaseTaskModificationTypes()
    4552        createBaseEntryTypes()
    46         createBaseModificationTypes()
    4753        // Inventory
    4854        createBaseInventoryTypes()
     
    6672        createDemoManufacturers()
    6773        // Tasks
    68         createDemoTaskGroups() /// @todo: Perhaps this should be BaseData?
    6974        createDemoTasks()
    7075        createDemoEntries()
     
    383388*********************/
    384389
    385     def createDemoTaskGroups() {
     390    def createBaseTaskGroups() {
    386391        //TaskGroup
    387392        def taskGroupInstance
     
    454459    }
    455460
     461    def createBaseTaskModificationTypes() {
     462
     463        //ModificationType
     464        def taskModificationTypeInstance
     465        taskModificationTypeInstance = new TaskModificationType(name:"Created").save()  // #1
     466        taskModificationTypeInstance = new TaskModificationType(name:"Started").save()  // #2
     467        taskModificationTypeInstance = new TaskModificationType(name:"Modified").save()  // #3
     468        taskModificationTypeInstance = new TaskModificationType(name:"Completed").save()  // #4
     469        taskModificationTypeInstance = new TaskModificationType(name:"Reopened").save()  // #5
     470        taskModificationTypeInstance = new TaskModificationType(name:"Trashed").save()  // #6
     471        taskModificationTypeInstance = new TaskModificationType(name:"Restored").save()  // #7
     472        taskModificationTypeInstance = new TaskModificationType(name:"Approved").save()  // #8
     473        taskModificationTypeInstance = new TaskModificationType(name:"Renege approval").save()  // #9
     474    }
     475
    456476    def createDemoTasks() {
    457477
    458         //Task
    459         def taskInstance
     478        def taskResult
     479        def p = [:]
    460480
    461481        //Task #1
    462         taskInstance = new Task(taskGroup:TaskGroup.findByName("Engineering Activites"),
    463                  taskStatus:TaskStatus.findByName("Not Started"),
    464                  taskPriority:TaskPriority.get(2),
    465                  taskType:TaskType.get(1),
    466                  leadPerson:Person.get(2),
    467                  description:"Check specific level sensor",
    468                  comment:"Has been noted as problematic, try recalibrating.",
    469                 targetStartDate:new Date())
    470         saveAndTest(taskInstance)
     482        p = [taskGroup:TaskGroup.findByName("Engineering Activites"),
     483                taskStatus:TaskStatus.findByName("Not Started"),
     484                taskPriority:TaskPriority.get(2),
     485                taskType:TaskType.get(1),
     486                leadPerson:Person.get(2),
     487                description:"Check specific level sensor",
     488                comment:"Has been noted as problematic, try recalibrating.",
     489                targetStartDate:new Date()]
     490
     491        taskResult = taskService.create(p)
    471492
    472493        //Task #2
    473         taskInstance = new Task(taskGroup:TaskGroup.findByName("Engineering Activites"),
     494        p = [taskGroup:TaskGroup.findByName("Engineering Activites"),
    474495                taskStatus:TaskStatus.findByName("Not Started"),
    475496                taskPriority:TaskPriority.get(2),
     
    479500                comment:"Some help required",
    480501                targetStartDate:new Date()+1,
    481                 parentTask: Task.get(1))
    482         saveAndTest(taskInstance)
     502                parentTask: Task.get(1)]
     503
     504        taskResult = taskService.create(p)
    483505
    484506        //Task #3
    485         taskInstance = new Task(taskGroup:TaskGroup.findByName("Engineering Activites"),
     507        p = [taskGroup:TaskGroup.findByName("Engineering Activites"),
    486508                taskStatus:TaskStatus.findByName("Not Started"),
    487509                taskPriority:TaskPriority.get(2),
     
    491513                comment:"Some help required",
    492514                targetStartDate:new Date()-1,
    493                 parentTask: Task.get(1))
    494         saveAndTest(taskInstance)
     515                parentTask: Task.get(1)]
     516
     517        taskResult = taskService.create(p)
    495518
    496519        //Task #4
    497         taskInstance = new Task(taskGroup:TaskGroup.findByName("Engineering Activites"),
     520        p = [taskGroup:TaskGroup.findByName("Engineering Activites"),
    498521                 taskStatus:TaskStatus.findByName("Not Started"),
    499522                 taskPriority:TaskPriority.get(2),
     
    503526                 comment:"Nothing else has worked.",
    504527                targetStartDate:new Date()+7,
    505                 parentTask: Task.get(1))
    506         saveAndTest(taskInstance)
     528                parentTask: Task.get(1)]
     529
     530        taskResult = taskService.create(p)
    507531
    508532        //Task #5
    509         taskInstance = new Task(taskGroup:TaskGroup.findByName("Production Activites"),
     533        p = [taskGroup:TaskGroup.findByName("Production Activites"),
    510534                 taskStatus:TaskStatus.findByName("Not Started"),
    511535                 taskPriority:TaskPriority.get(2),
     
    514538                 description:"Production Report",
    515539                 comment:"Production report for specific production run or shift",
    516                 targetStartDate:new Date()-7)
    517         saveAndTest(taskInstance)
     540                targetStartDate:new Date()-7]
     541
     542        taskResult = taskService.create(p)
    518543
    519544        //Task #6
    520         taskInstance = new Task(taskGroup:TaskGroup.findByName("New Projects"),
     545        p = [taskGroup:TaskGroup.findByName("New Projects"),
    521546                 taskStatus:TaskStatus.findByName("Not Started"),
    522547                 taskPriority:TaskPriority.get(2),
     
    525550                 description:"Make killer CMMS app",
    526551                 comment:"Use Grails and get a move on!",
    527                 targetStartDate:new Date()-6)
    528         saveAndTest(taskInstance)
     552                targetStartDate:new Date()-6]
     553
     554        taskResult = taskService.create(p)
    529555    }
    530556
     
    575601                                                    durationMinute: 20)
    576602        saveAndTest(entryInstance)
    577     }
    578 
    579     def createBaseModificationTypes() {
    580 
    581         //ModificationType
    582         def taskModificationTypeInstance
    583         taskModificationTypeInstance = new TaskModificationType(name:"Created").save()
    584         taskModificationTypeInstance = new TaskModificationType(name:"Completed").save()
    585         taskModificationTypeInstance = new TaskModificationType(name:"Closed").save()
    586         taskModificationTypeInstance = new TaskModificationType(name:"Altered").save()
    587         taskModificationTypeInstance = new TaskModificationType(name:"TargetDateModified").save()
    588         taskModificationTypeInstance = new TaskModificationType(name:"ScheduledDateModified").save()
    589         taskModificationTypeInstance = new TaskModificationType(name:"DescriptionModified").save()
    590         taskModificationTypeInstance = new TaskModificationType(name:"AssignedToModified").save()
    591         taskModificationTypeInstance = new TaskModificationType(name:"NameModified").save()
    592603    }
    593604
  • trunk/grails-app/services/DateUtilService.groovy

    r137 r180  
    22
    33    boolean transactional = false
    4     static scope = "request"
    5        
    6         public static Date getToday() {
     4    //static scope = "request"
     5
     6    public static Date getToday() {
    77        return setMidnight(new Date())
    88    }
  • trunk/grails-app/services/TaskSearchService.groovy

    r165 r180  
    22
    33    boolean transactional = false
    4     static scope = "request"
    54
    65    def dateUtilService
  • trunk/grails-app/services/TaskService.groovy

    r143 r180  
    11class TaskService {
    22
    3     boolean transactional = true
    4     static scope = "request"
     3    boolean transactional = false
    54
    65    def dateUtilService
     6    def authenticateService
    77
    8     def taskDates(taskInstance, params) {
    9         println "yes"
    10     }
    11 }
     8    def create(params) {
     9        Task.withTransaction { status ->
     10            def result = [:]
     11            def taskInstance = new Task(params)
     12            result.taskInstance = taskInstance
     13
     14            // Get person in a safe way to avoid a null userDomain during bootstrap.
     15            def userDomain = authenticateService.userDomain()
     16            def person = userDomain ? Person.get(userDomain.id) : Person.get(1)
     17
     18            if(taskInstance.save()) {
     19                def taskModification = new TaskModification(person:person,
     20                                                        taskModificationType: TaskModificationType.get(1),
     21                                                        task: taskInstance)
     22
     23                if(!taskModification.save()) {
     24                    status.setRollbackOnly()
     25                    taskInstance.errors.rejectValue("taskModifications", "task.modifications.failedToSave")
     26                    result.error = true
     27                    return result
     28                }
     29
     30                return result
     31            }
     32            else {
     33                result.error = true
     34                return result
     35            }
     36
     37        } //end withTransaction
     38    } // end create()
     39
     40    def start() {
     41        //TaskModificationType.get(2)
     42    }  // end start()
     43
     44    def update(params) {
     45        Task.withTransaction { status ->
     46            def result = [:]
     47            result.taskInstance = Task.get(params.id)
     48            if(result.taskInstance) {
     49
     50                // Optimistic locking check.
     51                if(params.version) {
     52                    def version = params.version.toLong()
     53                    if(result.taskInstance.version > version) {
     54                        status.setRollbackOnly()
     55                        result.taskInstance.errors.rejectValue("version", "task.optimistic.locking.failure", "Another user has updated this Task while you were editing.")
     56                        result.error = true
     57                        return result
     58                    }
     59                }
     60
     61
     62                result.taskInstance.properties = params
     63
     64                if(result.taskInstance.save()) {
     65                    def taskModification = new TaskModification(person:Person.get(authenticateService.userDomain().id),
     66                                                            taskModificationType: TaskModificationType.get(3),
     67                                                            task: result.taskInstance)
     68                    if(taskModification.save()) {
     69                        // All went well.
     70                        return result
     71                    }
     72                    else {
     73                        status.setRollbackOnly()
     74                        result.taskInstance.errors.rejectValue("taskModifications", "task.modifications.failedToSave")
     75                        result.error = true
     76                        return result
     77                    }
     78                }
     79            }
     80            // Something failed.
     81            status.setRollbackOnly()
     82            result.error = true
     83            return result
     84
     85        } //end withTransaction
     86    }  // end update()
     87
     88    def complete() {
     89        //TaskModificationType.get(4)
     90    }  // end complete()
     91
     92    def reopen() {
     93        //TaskModificationType.get(5)
     94    }  // end reopen()
     95
     96    def trash() {
     97        //TaskModificationType.get(6)
     98    }  // end trash()
     99
     100    def restore() {
     101        //TaskModificationType.get(7)
     102    }  // end restore()
     103
     104    def approve() {
     105        //TaskModificationType.get(8)
     106    }  // end approve()
     107
     108    def renegeApproval() {
     109        //TaskModificationType.get(9)
     110    }  // end renegeApproval()
     111
     112} // end TaskService
Note: See TracChangeset for help on using the changeset viewer.