Changeset 2209


Ignore:
Timestamp:
Apr 5, 2012, 5:14:23 PM (5 years ago)
Author:
work@…
Message:
  • improved api service
File:
1 edited

Legend:

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

    r2207 r2209  
    1919import dbnp.authentication.SecUser
    2020import grails.converters.JSON
     21import org.dbnp.gdt.TemplateEntity
    2122
    2223class ApiService implements Serializable {
     24    // inject the module communication service
     25    def moduleCommunicationService
     26
    2327    // the shared secret used to validate api calls
    2428    static final String API_SECRET = "th!s_sH0uld^Pr0bab7y_m0v3_t%_th3_uSeR_d0Ma!n_ins7ead!"
     29
     30    // transactional
    2531    static transactional = false
    2632
    27     def moduleCommunicationService
     33    // hasMany keys to ignore when flattening domain data
     34    static ignoreHasManyKeys = [
     35            "systemFields",
     36            "templateBooleanFields",
     37            "templateDateFields",
     38            "templateDoubleFields",
     39            "templateExtendableStringListFields",
     40            "templateFileFields",
     41            "templateLongFields",
     42            "templateModuleFields",
     43            "templateTermFields",
     44            "templateRelTimeFields",
     45            "templateStringFields",
     46            "templateStringListFields",
     47            "templateTemplateFields",
     48            "templateTextFields"
     49    ]
    2850
    2951    /**
     
    89111            // add subject field values
    90112            fields.each { field ->
     113                // get a camelCased version of the field name
     114                def name = field.name.split(" ").collect {it[0].toUpperCase() + it.substring(1)}.join('')
     115                    name = name[0].toLowerCase() + name.substring(1)
     116
     117                // get the value for this field
    91118                def value = it.getFieldValue( field.name )
    92119
     120                // add value
    93121                if (value.hasProperty('name')) {
    94                     item[ field.name ] = value.name
     122                    item[ name ] = value.name
    95123                } else {
    96                     item[ field.name ] = value
     124                    item[ name ] = value
    97125                }
    98126            }
    99127
     128            // list hasMany sizes
     129            it.properties.hasMany.each { hasManyItem ->
     130                if (!ignoreHasManyKeys.contains(hasManyItem.key)) {
     131                    // add count for this hasMany item
     132                    item[ hasManyItem.key ] = it[ hasManyItem.key ].size()
     133                }
     134            }
     135
     136            // add item to resultset
    100137            items[ items.size() ] = item
    101138        }
Note: See TracChangeset for help on using the changeset viewer.