source: trunk/grails-app/controllers/dbnp/studycapturing/PersonController.groovy @ 496

Last change on this file since 496 was 496, checked in by duh, 14 years ago
  • set svn keyword expansion
  • Property svn:keywords set to Date Author Rev
File size: 6.5 KB
Line 
1package dbnp.studycapturing
2/**
3 * 888       888 888    888 8888888888 8888888b.  8888888888
4 * 888   o   888 888    888 888        888   Y88b 888
5 * 888  d8b  888 888    888 888        888    888 888
6 * 888 d888b 888 8888888888 8888888    888   d88P 8888888
7 * 888d88888b888 888    888 888        8888888P"  888
8 * 88888P Y88888 888    888 888        888 T88b   888
9 * 8888P   Y8888 888    888 888        888  T88b  888
10 * 888P     Y888 888    888 8888888888 888   T88b 8888888888
11 *
12 * 8888888 .d8888b.     88888888888 888    888 8888888888
13 *   888  d88P  Y88b        888     888    888 888
14 *   888  Y88b.             888     888    888 888
15 *   888   "Y888b.          888     8888888888 8888888
16 *   888      "Y88b.        888     888    888 888
17 *   888        "888        888     888    888 888
18 *   888  Y88b  d88P        888     888    888 888
19 * 8888888 "Y8888P"         888     888    888 8888888888
20 *
21 *   888888        d8888 888     888     d8888 8888888b.   .d88888b.   .d8888b.
22 *     "88b       d88888 888     888    d88888 888  "Y88b d88P" "Y88b d88P  Y88b
23 *      888      d88P888 888     888   d88P888 888    888 888     888 888    888
24 *      888     d88P 888 Y88b   d88P  d88P 888 888    888 888     888 888
25 *      888    d88P  888  Y88b d88P  d88P  888 888    888 888     888 888
26 *      888   d88P   888   Y88o88P  d88P   888 888    888 888     888 888    888
27 *      88P  d8888888888    Y888P  d8888888888 888  .d88P Y88b. .d88P Y88b  d88P
28 *      888 d88P     888     Y8P  d88P     888 8888888P"   "Y88888P"   "Y8888P"
29 *    .d88P
30 *  .d88P"
31 * 888P"
32 *
33 *  .d8888b.  888  .d8888b.  888  .d8888b.  888
34 * d88P  Y88b 888 d88P  Y88b 888 d88P  Y88b 888
35 *      .d88P 888      .d88P 888      .d88P 888
36 *    .d88P"  888    .d88P"  888    .d88P"  888
37 *    888"    888    888"    888    888"    888
38 *    888     Y8P    888     Y8P    888     Y8P
39 *             "              "              "
40 *    888     888    888     888    888     888
41 *
42 *
43 * TODO: add PROPER class and method documentation, just like have
44 *       agreed upon hundreds of times!!!!
45 */
46class PersonController {
47
48    static allowedMethods = [save: "POST", update: "POST", delete: "POST"]
49    def possibleGenders = [ 'Male', 'Female' ]
50
51    def index = {
52        redirect(action: "list", params: params)
53    }
54
55    def list = {
56        params.max = Math.min(params.max ? params.int('max') : 10, 100)
57        [personInstanceList: Person.list(params), personInstanceTotal: Person.count()]
58    }
59
60    def create = {
61        def personInstance = new Person()
62        personInstance.properties = params
63        return [personInstance: personInstance, possibleGenders:possibleGenders]
64    }
65
66    def save = {
67        def personInstance = new Person(params)
68        if (personInstance.save(flush: true)) {
69            flash.message = "${message(code: 'default.created.message', args: [message(code: 'person.label', default: 'Person'), ( personInstance.firstName ? personInstance.firstName : "" ) + " " + ( personInstance.prefix ? personInstance.prefix : "" ) + " " + ( personInstance.lastName ? personInstance.lastName : "" )])}"
70            redirect(action: "show", id: personInstance.id)
71        }
72        else {
73            render(view: "create", model: [personInstance: personInstance])
74        }
75    }
76
77    def show = {
78        def personInstance = Person.get(params.id)
79        if (!personInstance) {
80            flash.message = "${message(code: 'default.not.found.message', args: [message(code: 'person.label', default: 'Person'), params.id])}"
81            redirect(action: "list")
82        }
83        else {
84            [personInstance: personInstance]
85        }
86    }
87
88    def edit = {
89        def personInstance = Person.get(params.id)
90        if (!personInstance) {
91            flash.message = "${message(code: 'default.not.found.message', args: [message(code: 'person.label', default: 'Person'), params.id])}"
92            redirect(action: "list")
93        }
94        else {
95            return [personInstance: personInstance,possibleGenders:possibleGenders]
96        }
97    }
98
99    def update = {
100        def personInstance = Person.get(params.id)
101        if (personInstance) {
102            if (params.version) {
103                def version = params.version.toLong()
104                if (personInstance.version > version) {
105                   
106                    personInstance.errors.rejectValue("version", "default.optimistic.locking.failure", [message(code: 'person.label', default: 'Person')] as Object[], "Another user has updated this Person while you were editing")
107                    render(view: "edit", model: [personInstance: personInstance])
108                    return
109                }
110            }
111            personInstance.properties = params
112            if (!personInstance.hasErrors() && personInstance.save(flush: true)) {
113                flash.message = "${message(code: 'default.updated.message', args: [message(code: 'person.label', default: 'Person'), ( personInstance.firstName ? personInstance.firstName : "" ) + " " + ( personInstance.prefix ? personInstance.prefix : "" ) + " " + ( personInstance.lastName ? personInstance.lastName : "" )])}"
114                redirect(action: "show", id: personInstance.id)
115            }
116            else {
117                render(view: "edit", model: [personInstance: personInstance])
118            }
119        }
120        else {
121            flash.message = "${message(code: 'default.not.found.message', args: [message(code: 'person.label', default: 'Person'), params.id])}"
122            redirect(action: "list")
123        }
124    }
125
126    def delete = {
127        def personInstance = Person.get(params.id)
128
129        if (personInstance) {
130            def personName = ( personInstance.firstName ? personInstance.firstName : "" ) + " " + ( personInstance.prefix ? personInstance.prefix : "" ) + " " + ( personInstance.lastName ? personInstance.lastName : "" );
131            try {
132                personInstance.delete(flush: true)
133                flash.message = "${message(code: 'default.deleted.message', args: [message(code: 'person.label', default: 'Person'), personName])}"
134                redirect(action: "list")
135            }
136            catch (org.springframework.dao.DataIntegrityViolationException e) {
137                flash.message = "${message(code: 'default.not.deleted.message', args: [message(code: 'person.label', default: 'Person'), personName])}"
138                redirect(action: "show", id: params.id)
139            }
140        }
141        else {
142            flash.message = "${message(code: 'default.not.found.message', args: [message(code: 'person.label', default: 'Person'), params.id])}"
143            redirect(action: "list")
144        }
145    }
146}
Note: See TracBrowser for help on using the repository browser.