source: trunk/grails-app/controllers/TaskController.groovy @ 182

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

Resolve ticket #12 again.
Turn query cache on again since this did not resolve the problem.
Implement fix as per http://jira.codehaus.org/browse/GRAILS-5111, add flush:true to save.
Adjust templates to include above and remove home url.
Re-generate all non detailed views and controllers.
Manually add flush:true and remove home url to detailed views and controllers.

File size: 3.2 KB
RevLine 
[69]1import org.codehaus.groovy.grails.plugins.springsecurity.Secured
2
[96]3class TaskController extends BaseAppAdminController {
[66]4   
5    def index = { redirect(action:list,params:params) }
6
7    // the delete, save and update actions only accept POST requests
[85]8    static allowedMethods = [delete:'POST', save:'POST', update:'POST']
[66]9
10    def list = {
[96]11        params.max = Math.min( params.max ? params.max.toInteger() : 10,  100)
12        [ taskInstanceList: Task.list( params ), taskInstanceTotal: Task.count() ]
[66]13    }
[96]14
[66]15    def show = {
16        def taskInstance = Task.get( params.id )
17
18        if(!taskInstance) {
19            flash.message = "Task not found with id ${params.id}"
20            redirect(action:list)
21        }
22        else { return [ taskInstance : taskInstance ] }
23    }
[96]24
[66]25    def delete = {
26        def taskInstance = Task.get( params.id )
27        if(taskInstance) {
[96]28            try {
[178]29                taskInstance.delete(flush:true)
[96]30                flash.message = "Task ${params.id} deleted"
31                redirect(action:list)
32            }
33            catch(org.springframework.dao.DataIntegrityViolationException e) {
34                flash.message = "Task ${params.id} could not be deleted"
35                redirect(action:show,id:params.id)
36            }
[66]37        }
38        else {
39            flash.message = "Task not found with id ${params.id}"
40            redirect(action:list)
41        }
42    }
43
44    def edit = {
45        def taskInstance = Task.get( params.id )
46
47        if(!taskInstance) {
48            flash.message = "Task not found with id ${params.id}"
49            redirect(action:list)
50        }
51        else {
52            return [ taskInstance : taskInstance ]
53        }
54    }
55
56    def update = {
57        def taskInstance = Task.get( params.id )
58        if(taskInstance) {
[96]59            if(params.version) {
60                def version = params.version.toLong()
61                if(taskInstance.version > version) {
62                   
63                    taskInstance.errors.rejectValue("version", "task.optimistic.locking.failure", "Another user has updated this Task while you were editing.")
64                    render(view:'edit',model:[taskInstance:taskInstance])
65                    return
66                }
67            }
[66]68            taskInstance.properties = params
[178]69            if(!taskInstance.hasErrors() && taskInstance.save(flush: true)) {
[66]70                flash.message = "Task ${params.id} updated"
71                redirect(action:show,id:taskInstance.id)
72            }
73            else {
74                render(view:'edit',model:[taskInstance:taskInstance])
75            }
76        }
77        else {
78            flash.message = "Task not found with id ${params.id}"
[178]79            redirect(action:list)
[66]80        }
81    }
82
83    def create = {
84        def taskInstance = new Task()
85        taskInstance.properties = params
86        return ['taskInstance':taskInstance]
87    }
88
89    def save = {
90        def taskInstance = new Task(params)
[178]91        if(!taskInstance.hasErrors() && taskInstance.save(flush: true)) {
[66]92            flash.message = "Task ${taskInstance.id} created"
93            redirect(action:show,id:taskInstance.id)
94        }
95        else {
96            render(view:'create',model:[taskInstance:taskInstance])
97        }
98    }
99}
Note: See TracBrowser for help on using the repository browser.