source: trunk/grails-app/domain/dbnp/studycapturing/TemplateEntity.groovy @ 212

Last change on this file since 212 was 212, checked in by keesvb, 9 years ago

refactored template entity code into TemplateEntity?, added more template field types, updated BootStrap? with some more details on PPSH, changed code in study overview to get template field contents in a nicer way

File size: 2.6 KB
Line 
1package dbnp.studycapturing
2
3import dbnp.data.Term
4
5class TemplateEntity {
6
7        Map templateStringFields
8        Map templateIntegerFields
9        Map templateFloatFields
10        Map templateDoubleFields
11        Map templateDateFields
12        Map templateTermFields
13
14        static hasMany = [
15                templateStringFields: String, // stores both STRING and STRINGLIST items (latter should be checked against the list)
16                templateIntegerFields: int,
17                templateFloatFields: float,
18                templateDoubleFields: double,
19                templateDateFields: Date,
20                templateTermFields: Term
21        ]
22
23        static constraints = {
24        }
25
26        /**
27         * Find a template field by its name and return its value for this subject
28         * @param fieldName The name of the template subject field
29         * @return the value of the field (class depends on the field type)
30         * @throws NoSuchFieldException If the field is not found or the field type is not supported
31         */
32        def getFieldValue(String fieldName) {
33                TemplateFieldType fieldType = template.getSubjectFieldType(fieldName)
34                if (!fieldType) throw new NoSuchFieldException("Field name ${fieldName} not recognized")
35                switch(fieldType) {
36                        case [TemplateFieldType.STRING, TemplateFieldType.STRINGLIST]:
37                                return templateStringFields[fieldName]
38                        case TemplateFieldType.INTEGER:
39                                return templateIntegerFields[fieldName]
40                        case TemplateFieldType.DATE:
41                                return templateDateFields[fieldName]
42                        case TemplateFieldType.FLOAT:
43                                return templateFloatFields[fieldName]
44                        case TemplateFieldType.DOUBLE:
45                                return templateDoubleFields[fieldName]
46                        case TemplateFieldType.ONTOLOGYTERM:
47                                return templateTermFields[fieldName]
48                        default:
49                                throw new NoSuchFieldException("Field type ${fieldType} not recognized")
50                }
51        }
52
53        def setFieldValue(String fieldName, value) {
54                this.properties.each { println it}
55                if (this.properties.containsKey(fieldName)) {
56                        this[fieldName] = value
57                }
58                else if (templateStringFields.containsKey(fieldName) && value.class == String) {
59                        this.templateStringFields[fieldName] = value
60                }
61                else if (templateIntegerFields.containsKey(fieldName) && value.class == Integer) {
62                        this.templateIntegerFields[fieldName] = value
63                }
64                else if (templateFloatFields.containsKey(fieldName) && value.class == Float) {
65                        this.templateFloatFields[fieldName] = value
66                }
67                else if (templateDoubleFields.containsKey(fieldName) && value.class == Double) {
68                        this.templateDoubleFields[fieldName] = value
69                }
70                else if (templateDateFields.containsKey(fieldName) && value.class == Date) {
71                        this.templateDateFields[fieldName] = value
72                }
73                else if (templateTermFields.containsKey(fieldName) && value.class == Term) {
74                        this.templateTermFields[fieldName] = value
75                }
76                else {
77                        println "Field ${fieldName} not found"
78                }
79        }
80
81}
Note: See TracBrowser for help on using the repository browser.