/* * Copyright 2004-2005 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import org.codehaus.groovy.grails.scaffolding.* import grails.util.GrailsNameUtils /** * Gant script that generates a CRUD controller and matching views for a given domain class * * @author Graeme Rocher * * @since 0.4 */ includeTargets << grailsScript("_GrailsBootstrap") generateForName = null generateViews = true generateController = true target(generateForOne: "Generates controllers and views for only one domain class.") { depends(loadApp) def name = generateForName name = name.indexOf('.') > -1 ? name : GrailsNameUtils.getClassNameRepresentation(name) def domainClass = grailsApp.getDomainClass(name) if(!domainClass) { println "Domain class not found in grails-app/domain, trying hibernate mapped classes..." bootstrap() domainClass = grailsApp.getDomainClass(name) } if(domainClass) { generateForDomainClass(domainClass) event("StatusFinal", ["Finished generation for domain class ${domainClass.fullName}"]) } else { event("StatusFinal", ["No domain class found for name ${name}. Please try again and enter a valid domain class name"]) } } target(uberGenerate: "Generates controllers and views for all domain classes.") { depends(loadApp) def domainClasses = grailsApp.domainClasses if (!domainClasses) { println "No domain classes found in grails-app/domain, trying hibernate mapped classes..." bootstrap() domainClasses = grailsApp.domainClasses } if (domainClasses) { domainClasses.each { domainClass -> generateForDomainClass(domainClass) } event("StatusFinal", ["Finished generation for domain classes"]) } else { event("StatusFinal", ["No domain classes found"]) } } def generateForDomainClass(domainClass) { def templateGenerator = new DefaultGrailsTemplateGenerator(classLoader) if(generateViews) { event("StatusUpdate", ["Generating views for domain class ${domainClass.fullName}"]) templateGenerator.generateViews(domainClass, basedir) event("GenerateViewsEnd", [domainClass.fullName]) } if(generateController) { event("StatusUpdate", ["Generating controller for domain class ${domainClass.fullName}"]) templateGenerator.generateController(domainClass, basedir) event("GenerateControllerEnd", [domainClass.fullName]) } }