source: trunk/grails-app/conf/Config.groovy @ 537

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

Base data is now created during bootstrap in all environments.
Add stdout log appender to test environment.
Add CreateDataServiceTests.

File size: 21.3 KB
RevLine 
[55]1// locations to search for config files that get merged into the main config
2// config files can either be Java properties files or ConfigSlurper scripts
3
4// grails.config.locations = [ "classpath:${appName}-config.properties",
5//                             "classpath:${appName}-config.groovy",
6//                             "file:${userHome}/.grails/${appName}-config.properties",
7//                             "file:${userHome}/.grails/${appName}-config.groovy"]
8
9// if(System.properties["${appName}.config.location"]) {
10//    grails.config.locations << "file:" + System.properties["${appName}.config.location"]
11// }
12grails.mime.file.extensions = true // enables the parsing of file extensions from URLs into the request format
13grails.mime.types = [ html: ['text/html','application/xhtml+xml'],
14                      xml: ['text/xml', 'application/xml'],
15                      text: 'text-plain',
16                      js: 'text/javascript',
17                      rss: 'application/rss+xml',
18                      atom: 'application/atom+xml',
19                      css: 'text/css',
20                      csv: 'text/csv',
[165]21                      pdf: 'application/pdf',
22                      rtf: 'application/rtf',
23                      excel: 'application/vnd.ms-excel',
24                      ods: 'application/vnd.oasis.opendocument.spreadsheet',
[55]25                      all: '*/*',
26                      json: ['application/json','text/json'],
27                      form: 'application/x-www-form-urlencoded',
28                      multipartForm: 'multipart/form-data'
29                    ]
30// The default codec used to encode data with ${}
31grails.views.default.codec="none" // none, html, base64
32grails.views.gsp.encoding="UTF-8"
33grails.converters.encoding="UTF-8"
34
[449]35// enable Sitemesh preprocessing of GSP pages
36grails.views.gsp.sitemesh.preprocess = true
37// scaffolding templates configuration
38grails.scaffolding.templates.domainSuffix = 'Instance'
39
40// Set to false to use the new Grails 1.2 JSONBuilder in the render method
41grails.json.legacy.builder=false
42
[55]43// enabled native2ascii conversion of i18n properties files
44grails.enable.native2ascii = true
45
[449]46// whether to install the java.util.logging bridge for sl4j. Disable fo AppEngine!
47grails.logging.jul.usebridge = true
48// packages to include in Spring bean scanning
49grails.spring.bean.packages = []
50
51
[197]52/**
[200]53 * Log4j configuration.
54 * Causing this file to reload (e.g. edit+save) may break the appLog destination
55 * and further logs will be written to files or directories like "[:]".
[197]56 * For more info see http://logging.apache.org/log4j/1.2/manual.html
57 * For log levels see http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/Level.html
58 * Basic log levels are ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF
59 */
[200]60// Pickup the Tomcat/Catalina logDirectory else use the current dir.
61def catalinaBase = System.properties.getProperty('catalina.base')
62def logDirectory = catalinaBase ? "${catalinaBase}/logs" : '.'
[197]63
64log4j = {
65    appenders {
66        // Use if we want to prevent creation of a stacktrace.log file.
67        'null' name:'stacktrace'
68
69        // Use this if we want to modify the default appender called 'stdout'.
70        console name:'stdout', layout:pattern(conversionPattern: '[%t] %-5p %c{2} %x - %m%n')
71
72        // Custom log file.
73        rollingFile name:"appLog",
74                        file:"${logDirectory}/${appName}.log".toString(),
[358]75                        maxFileSize:'300kB',
[480]76                        maxBackupIndex:1,
[197]77                        layout:pattern(conversionPattern: '%d{[EEE, dd-MMM-yyyy @ HH:mm:ss.SSS]} [%t] %-5p %c %x - %m%n')
[55]78    }
[197]79
[449]80    // This is for the built-in stuff and from the default Grails-1.2.1 config.
[197]81    error 'org.codehaus.groovy.grails.web.servlet',  //  controllers
82            'org.codehaus.groovy.grails.web.pages', //  GSP
83            'org.codehaus.groovy.grails.web.sitemesh', //  layouts
84            'org.codehaus.groovy.grails.web.mapping.filter', // URL mapping
85            'org.codehaus.groovy.grails.web.mapping', // URL mapping
86            'org.codehaus.groovy.grails.commons', // core / classloading
87            'org.codehaus.groovy.grails.plugins', // plugins
88            'org.codehaus.groovy.grails.orm.hibernate', // hibernate integration
89            'org.springframework',
[449]90            'org.hibernate',
91            'net.sf.ehcache.hibernate'
[197]92
93    warn   'org.mortbay.log' // Jetty
94
95    error "grails.app" // Set the default log level for our app code.
96    info "grails.app.bootstrap" // Set the log level per type and per type.class
[291]97    error "grails.app.service.AuthService"
[197]98    error "grails.app.service.NavigationService"
[199]99    error "grails.app.service.com.zeddware.grails.plugins.filterpane.FilterService"
[200]100
101    // Move anything that should behave differently into this section.
102    switch(environment) {
103        case 'development':
[480]104            // Configure the root logger to output to stdout and appLog appenders.
105            root {
106                error 'stdout','appLog'
107                additivity = true
108            }
[481]109            //debug "org.hibernate.SQL"
[200]110            debug "grails.app.service"
111            debug "grails.app.controller"
112            break
113        case 'test':
[480]114            // Configure the root logger to only output to appLog appender.
115            root {
[508]116                error 'stdout','appLog'
[480]117                additivity = true
118            }
[200]119            debug "grails.app.service"
120            debug "grails.app.controller"
121            break
122        case 'production':
[480]123            // Configure the root logger to only output to appLog appender.
124            root {
125                error 'appLog'
126                additivity = true
127            }
[200]128            warn "grails.app.service"
129            warn "grails.app.controller"
[455]130            debug "grails.app.service.AssetCsvService"
131            debug "grails.app.service.PersonCsvService"
132            debug "grails.app.service.InventoryCsvService"
[458]133            debug "grails.app.service.AssetTreeService" /// @todo: remove after testing.
[200]134            break
135    }
[55]136}
137
[197]138/**
139 * Environment specific configuration.
140 */
141environments {
142
143    production {
144        grails.serverURL = "http://www.changeme.com" // Set serverURL stem for creating absolute links.
[55]145    }
146
[197]147    development {
148        grails.serverURL = "http://localhost:8080/${appName}" // Set serverURL stem for creating absolute links.
149    }
[55]150
[197]151    test {
152        grails.serverURL = "http://localhost:8080/${appName}" // Set serverURL stem for creating absolute links.
153    }
154
155} // end environments
156
[199]157/**
158 * Navigation plugin menu.
159 * The top level titles are taken from i18n message bundles.
160 * Subitems i18n message bundles are not currently resolving with this plugin.
161 */
[139]162navigation.nav = [
163    [order:10, controller:'appCore', title:'home', action:'start',
164        subItems: [
165            [order:10, controller:'appCore', title:'Start', action:'start', isVisible: { true }],
[149]166            [order:20, controller:'appCore', title:'Manager', action:'manager', isVisible: { authenticateService.ifAnyGranted('ROLE_Manager,ROLE_AppAdmin') }],
[139]167            [order:30, controller:'appCore', title:'Admin', action:'appAdmin', isVisible: { authenticateService.ifAllGranted('ROLE_AppAdmin') }],
168            [order:90, controller:'appCore', title:'Timeout', action:'changeSessionTimeout', isVisible: { params.action == 'changeSessionTimeout' }],
169            [order:91, controller:'appCore', title:'Password', action:'changePassword', isVisible: { params.action == 'changePassword' }],
170        ]
171    ],
172    [order:20, controller:'taskDetailed', title:'tasks', action:'search',
173        subItems: [
[215]174            [order:10, controller:'taskDetailed', title:'Search', action:'search', isVisible: { true }],
175            [order:11, controller:'taskDetailed', title:'Calendar', action:'searchCalendar', isVisible: { true }],
[418]176            [order:20, controller:'taskDetailed', title:'+Scheduled', action:'create', isVisible: { true }],
[433]177            [order:30, controller:'taskDetailed', title:'+Unsheduled', action:'createUnscheduled', isVisible: { true }],
178            [order:40, controller:'taskDetailed', title:'+Callout', action:'createImmediateCallout', isVisible: { true }],
179            [order:90, controller:'taskDetailed', title:'Show', action:'show', id:'nav', isVisible: { params.action == 'show' }],
180            [order:91, controller:'taskDetailed', title:'Edit', action:'edit', id:'nav', isVisible: { params.action == 'edit' }]
[139]181        ]
182    ],
183    [order:30, controller:'inventoryItemDetailed', title:'inventory', action:'search',
184        subItems: [
185            [order:10, controller:'inventoryItemDetailed', title:'Search', action:'search', isVisible: { true }],
186            [order:20, controller:'inventoryItemDetailed', title:'Create', action:'create', isVisible: { true }],
187            [order:90, controller:'inventoryItemDetailed', title:'Show', action:'show', isVisible: { params.action == 'show' }],
188            [order:91, controller:'inventoryItemDetailed', title:'Edit', action:'edit', isVisible: { params.action == 'edit' }]
189        ]
190    ],
[306]191    [order:40, controller:'assetDetailed', title:'assets', action:'search',
[139]192        subItems: [
[306]193            [order:10, controller:'assetDetailed', title:'Search', action:'search', isVisible: { true }],
[139]194            [order:20, controller:'assetDetailed', title:'Create', action:'create', isVisible: { true }],
195            [order:90, controller:'assetDetailed', title:'Show', action:'show', isVisible: { params.action == 'show' }],
[353]196            [order:91, controller:'assetDetailed', title:'Edit', action:'edit', isVisible: { params.action == 'edit' }],
197            [order:99, controller:'assetSubItemDetailed', title:'Sub Items', action:'search', isVisible: { true }]
[139]198        ]
199    ]
200]
[58]201
[199]202/**
203 * Navigation plugin alternate menu.
[367]204 * The alternate menu top level titles are not displayed anywhere.
[199]205 * Subitems i18n message bundles are not currently resolving with this plugin.
206 */
[147]207navigation.navAlt = [
208    [order:10, controller:'person', title:'person', action:'list',
209        subItems: [
210            [order:10, controller:'person', title:'Person List', action:'list', isVisible: { true }],
211            [order:20, controller:'person', title:'Create', action:'create', isVisible: { true }],
212            [order:90, controller:'person', title:'Show', action:'show', isVisible: { params.action == 'show' }],
213            [order:91, controller:'person', title:'Edit', action:'edit', isVisible: { params.action == 'edit' }]
214        ]
215    ],
[367]216    [order:20, controller:'taskProcedureDetailed', title:'taskProcedure', action:'list',
[147]217        subItems: [
218            [order:10, controller:'taskProcedureDetailed', title:'Task Procedure List', action:'list', isVisible: { true }],
219            [order:20, controller:'taskProcedureDetailed', title:'Create', action:'create', isVisible: { true }],
220            [order:90, controller:'taskProcedureDetailed', title:'Show', action:'show', isVisible: { params.action == 'show' }],
221            [order:91, controller:'taskProcedureDetailed', title:'Edit', action:'edit', isVisible: { params.action == 'edit' }]
222        ]
[367]223    ],
224    [order:30, controller:'assetSubItemDetailed', title:'assetSubItem', action:'search',
225        subItems: [
226            [order:10, controller:'assetSubItemDetailed', title:'Sub Item Search', action:'search', isVisible: { true }],
227            [order:20, controller:'assetSubItemDetailed', title:'Create', action:'create', isVisible: { true }],
228            [order:90, controller:'assetSubItemDetailed', title:'Show', action:'show', isVisible: { params.action == 'show' }],
229            [order:91, controller:'assetSubItemDetailed', title:'Edit', action:'edit', isVisible: { params.action == 'edit' }]
230        ]
231    ],
232    [order:40, controller:'maintenancePolicyDetailed', title:'maintenancePolicy', action:'list',
233        subItems: [
234            [order:10, controller:'maintenancePolicyDetailed', title:'Maintenance Policy List', action:'list', isVisible: { true }],
235            [order:20, controller:'maintenancePolicyDetailed', title:'Create', action:'create', isVisible: { true }],
236            [order:90, controller:'maintenancePolicyDetailed', title:'Show', action:'show', isVisible: { params.action == 'show' }],
237            [order:91, controller:'maintenancePolicyDetailed', title:'Edit', action:'edit', isVisible: { params.action == 'edit' }]
238        ]
[374]239    ],
240    [order:50, controller:'supplierDetailed', title:'supplier', action:'list',
241        subItems: [
242            [order:10, controller:'supplierDetailed', title:'Supplier List', action:'list', isVisible: { true }],
243            [order:20, controller:'supplierDetailed', title:'Create', action:'create', isVisible: { true }],
244            [order:90, controller:'supplierDetailed', title:'Show', action:'show', isVisible: { params.action == 'show' }],
245            [order:91, controller:'supplierDetailed', title:'Edit', action:'edit', isVisible: { params.action == 'edit' }]
246        ]
247    ],
248    [order:60, controller:'manufacturerDetailed', title:'manufacturer', action:'list',
249        subItems: [
250            [order:10, controller:'manufacturerDetailed', title:'Manufacturer List', action:'list', isVisible: { true }],
251            [order:20, controller:'manufacturerDetailed', title:'Create', action:'create', isVisible: { true }],
252            [order:90, controller:'manufacturerDetailed', title:'Show', action:'show', isVisible: { params.action == 'show' }],
253            [order:91, controller:'manufacturerDetailed', title:'Edit', action:'edit', isVisible: { params.action == 'edit' }]
254        ]
[377]255    ],
256    [order:70, controller:'inventoryStoreDetailed', title:'inventoryStore', action:'list',
257        subItems: [
258            [order:10, controller:'inventoryStoreDetailed', title:'Inventory Store List', action:'list', isVisible: { true }],
259            [order:20, controller:'inventoryStoreDetailed', title:'Create', action:'create', isVisible: { true }],
260            [order:90, controller:'inventoryStoreDetailed', title:'Show', action:'show', isVisible: { params.action == 'show' }],
261            [order:91, controller:'inventoryStoreDetailed', title:'Edit', action:'edit', isVisible: { params.action == 'edit' }]
262        ]
263    ],
264    [order:80, controller:'inventoryLocationDetailed', title:'inventoryLocation', action:'list',
265        subItems: [
266            [order:10, controller:'inventoryLocationDetailed', title:'Inventory Location List', action:'list', isVisible: { true }],
267            [order:20, controller:'inventoryLocationDetailed', title:'Create', action:'create', isVisible: { true }],
268            [order:90, controller:'inventoryLocationDetailed', title:'Show', action:'show', isVisible: { params.action == 'show' }],
269            [order:91, controller:'inventoryLocationDetailed', title:'Edit', action:'edit', isVisible: { params.action == 'edit' }]
270        ]
[380]271    ],
272    [order:90, controller:'inventoryGroupDetailed', title:'inventoryGroup', action:'list',
273        subItems: [
274            [order:10, controller:'inventoryGroupDetailed', title:'Inventory Group List', action:'list', isVisible: { true }],
275            [order:20, controller:'inventoryGroupDetailed', title:'Create', action:'create', isVisible: { true }],
276            [order:90, controller:'inventoryGroupDetailed', title:'Show', action:'show', isVisible: { params.action == 'show' }],
277            [order:91, controller:'inventoryGroupDetailed', title:'Edit', action:'edit', isVisible: { params.action == 'edit' }]
278        ]
[383]279    ],
280    [order:100, controller:'manufacturerTypeDetailed', title:'manufacturerType', action:'list',
281        subItems: [
282            [order:10, controller:'manufacturerTypeDetailed', title:'Manufacturer Type List', action:'list', isVisible: { true }],
283            [order:20, controller:'manufacturerTypeDetailed', title:'Create', action:'create', isVisible: { true }],
284            [order:90, controller:'manufacturerTypeDetailed', title:'Show', action:'show', isVisible: { params.action == 'show' }],
285            [order:91, controller:'manufacturerTypeDetailed', title:'Edit', action:'edit', isVisible: { params.action == 'edit' }]
286        ]
287    ],
288    [order:110, controller:'supplierTypeDetailed', title:'supplierType', action:'list',
289        subItems: [
290            [order:10, controller:'supplierTypeDetailed', title:'Supplier Type List', action:'list', isVisible: { true }],
291            [order:20, controller:'supplierTypeDetailed', title:'Create', action:'create', isVisible: { true }],
292            [order:90, controller:'supplierTypeDetailed', title:'Show', action:'show', isVisible: { params.action == 'show' }],
293            [order:91, controller:'supplierTypeDetailed', title:'Edit', action:'edit', isVisible: { params.action == 'edit' }]
294        ]
[385]295    ],
[386]296    [order:120, controller:'siteDetailed', title:'site', action:'list',
[385]297        subItems: [
298            [order:10, controller:'siteDetailed', title:'Site List', action:'list', isVisible: { true }],
299            [order:20, controller:'siteDetailed', title:'Create', action:'create', isVisible: { true }],
300            [order:90, controller:'siteDetailed', title:'Show', action:'show', isVisible: { params.action == 'show' }],
301            [order:91, controller:'siteDetailed', title:'Edit', action:'edit', isVisible: { params.action == 'edit' }]
302        ]
303    ],
[386]304    [order:130, controller:'sectionDetailed', title:'section', action:'list',
[385]305        subItems: [
306            [order:10, controller:'sectionDetailed', title:'Section List', action:'list', isVisible: { true }],
307            [order:20, controller:'sectionDetailed', title:'Create', action:'create', isVisible: { true }],
308            [order:90, controller:'sectionDetailed', title:'Show', action:'show', isVisible: { params.action == 'show' }],
309            [order:91, controller:'sectionDetailed', title:'Edit', action:'edit', isVisible: { params.action == 'edit' }]
310        ]
[386]311    ],
[387]312    [order:140, controller:'extendedAttributeTypeDetailed', title:'extendedAttributeType', action:'list',
[386]313        subItems: [
314            [order:10, controller:'extendedAttributeTypeDetailed', title:'Attribute Type List', action:'list', isVisible: { true }],
315            [order:20, controller:'extendedAttributeTypeDetailed', title:'Create', action:'create', isVisible: { true }],
316            [order:90, controller:'extendedAttributeTypeDetailed', title:'Show', action:'show', isVisible: { params.action == 'show' }],
317            [order:91, controller:'extendedAttributeTypeDetailed', title:'Edit', action:'edit', isVisible: { params.action == 'edit' }]
318        ]
[412]319    ],
320    [order:150, controller:'departmentDetailed', title:'department', action:'list',
321        subItems: [
322            [order:10, controller:'departmentDetailed', title:'Department List', action:'list', isVisible: { true }],
323            [order:20, controller:'departmentDetailed', title:'Create', action:'create', isVisible: { true }],
324            [order:90, controller:'departmentDetailed', title:'Show', action:'show', isVisible: { params.action == 'show' }],
325            [order:91, controller:'departmentDetailed', title:'Edit', action:'edit', isVisible: { params.action == 'edit' }]
326        ]
[431]327    ],
328    [order:160, controller:'productionReferenceDetailed', title:'productionReference', action:'list',
329        subItems: [
330            [order:10, controller:'productionReferenceDetailed', title:'Production Reference List', action:'list', isVisible: { true }],
331            [order:20, controller:'productionReferenceDetailed', title:'Create', action:'create', isVisible: { true }],
332            [order:90, controller:'productionReferenceDetailed', title:'Show', action:'show', isVisible: { params.action == 'show' }],
333            [order:91, controller:'productionReferenceDetailed', title:'Edit', action:'edit', isVisible: { params.action == 'edit' }]
334        ]
[440]335    ],
336    [order:170, controller:'costCodeDetailed', title:'costCode', action:'list',
337        subItems: [
338            [order:10, controller:'costCodeDetailed', title:'Cost Code List', action:'list', isVisible: { true }],
339            [order:20, controller:'costCodeDetailed', title:'Create', action:'create', isVisible: { true }],
340            [order:90, controller:'costCodeDetailed', title:'Show', action:'show', isVisible: { params.action == 'show' }],
341            [order:91, controller:'costCodeDetailed', title:'Edit', action:'edit', isVisible: { params.action == 'edit' }]
342        ]
[471]343    ],
344    [order:180, controller:'personGroupDetailed', title:'personGroup', action:'list',
345        subItems: [
346            [order:10, controller:'personGroupDetailed', title:'Person Group List', action:'list', isVisible: { true }],
347            [order:20, controller:'personGroupDetailed', title:'Create', action:'create', isVisible: { true }],
348            [order:90, controller:'personGroupDetailed', title:'Show', action:'show', isVisible: { params.action == 'show' }],
349            [order:91, controller:'personGroupDetailed', title:'Edit', action:'edit', isVisible: { params.action == 'edit' }]
350        ]
351    ],
352    [order:190, controller:'personGroupTypeDetailed', title:'personGroupType', action:'list',
353        subItems: [
354            [order:10, controller:'personGroupTypeDetailed', title:'Person Group Type List', action:'list', isVisible: { true }],
355            [order:20, controller:'personGroupTypeDetailed', title:'Create', action:'create', isVisible: { true }],
356            [order:90, controller:'personGroupTypeDetailed', title:'Show', action:'show', isVisible: { params.action == 'show' }],
357            [order:91, controller:'personGroupTypeDetailed', title:'Edit', action:'edit', isVisible: { params.action == 'edit' }]
358        ]
[147]359    ]
360]
[199]361
362/**
363 * Some custom globals.
364 */
365taskRecurringScheduleJob.repeatInterval=10
Note: See TracBrowser for help on using the repository browser.