source: trunk/grails-app/controllers/AssetDetailedController.groovy @ 124

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

Detail controller and views for Asset, AssetExtendedAttribute?, PlannedMaintenance?, MaintenanceAction?, RecurringSchedule?, SystemSection?.
Some minor work on Task controller and views.
Change PlannedMaintenance? relationship, adjust ERD, Bootstrap and Domain classes to suite.

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