Tuesday, 12 February 2013


HI THIS TOUTORIAL WILL HELP FULL FOR STARTUP IN GRAILS CREATED BY NAVEENRAJU

Demo1:MVC Dynamic Finders For Author,Book

Step1:create domain class Book

Book.groovy

package dynamicfinders
class Book {


String titleDate releaseDate    
String toSting(){
return "title"
}
}



Step2:create domain class Author

Author.groovy

package dynamicfinders
class Author {


String name    static constraints = {    }}



Step3:create Controller AuthorController

AuthorController.groovy

package dynamicfinders
class AuthorController {
    static scaffold=Author}



Step4:create Controller BookController

BookController.groovy

package dynamicfinders
class BookController {
    static scaffold=Book


def booksearch={
def query = Book.where {
   title == "Java"
}
def book = Book.findByTitle("BillGen")

Book bart = query.find()
//render(book)
def book1 = Book.findByTitleLike("Java%")
def books = Book.findAllByTitleLikeAndReleaseDateGreaterThan( "%Java%", new Date() - 30)
[book:book,book1:book1,books:books,bart:bart]
}

}


Step5:create view booksearch

in path:

dynamicfinders/grails-app/views/book/booksearch.gsp


booksearch.gsp


<html>
<body>

<h1> Book1 ${book}</h1>
<h1>Book2 ${book1}</h1>
<h1>Book3 ${book2}</h1>
<h1>Book4 ${book3}</h1>
<h1>Book5${book4}</h1>
<h1>Book6${books}</h1>
<h2>Book7${bart}</h2>
</body>
</html>

O/p:














Demo2:Dynamic Scaffolding to MVC Patterns

step1: create domain class  Reports


Reports.groovy


package mvcdemo

class Reports {


String repotName
String unit
String owner

    static constraints = {
    }
}


step2: create  controller ReportsController

ReportsController.groovy

package mvcdemo

class ReportsController {
static scaffold=Reports}

step3: Go to terminal and type 

             grails generate-all   mvxdemo.reports

                       OR

          grails generate-all *

step4: then go to ReportController.groovy 

             code is auto Generated

package mvcdemo
import org.springframework.dao.DataIntegrityViolationException
class ReportsController {
    static allowedMethods = [save: "POST", update: "POST", delete: "POST"]
    def index() {
        redirect(action: "list", params: params)
    }
    def list(Integer max) {
        params.max = Math.min(max ?: 10, 100)
        [reportsInstanceList: Reports.list(params), reportsInstanceTotal: Reports.count()]
    }
    def create() {
        [reportsInstance: new Reports(params)]
    }
    def save() {
        def reportsInstance = new Reports(params)
        if (!reportsInstance.save(flush: true)) {
            render(view: "create", model: [reportsInstance: reportsInstance])
            return
        }
        flash.message = message(code: 'default.created.message', args: [message(code: 'reports.label', default: 'Reports'), reportsInstance.id])
        redirect(action: "show", id: reportsInstance.id)
    }
    def show(Long id) {
        def reportsInstance = Reports.get(id)
        if (!reportsInstance) {
            flash.message = message(code: 'default.not.found.message', args: [message(code: 'reports.label', default: 'Reports'), id])
            redirect(action: "list")
            return
        }
        [reportsInstance: reportsInstance]
    }


    def edit(Long id) {
        def reportsInstance = Reports.get(id)
        if (!reportsInstance) {
            flash.message = message(code: 'default.not.found.message', args: [message(code: 'reports.label', default: 'Reports'), id])
            redirect(action: "list")
            return
        }
        [reportsInstance: reportsInstance]
    }
    def update(Long id, Long version) {
        def reportsInstance = Reports.get(id)
        if (!reportsInstance) {
            flash.message = message(code: 'default.not.found.message', args: [message(code: 'reports.label', default: 'Reports'), id])
            redirect(action: "list")
            return
        }
        if (version != null) {
            if (reportsInstance.version > version) {
                reportsInstance.errors.rejectValue("version", "default.optimistic.locking.failure",
                          [message(code: 'reports.label', default: 'Reports')] as Object[],
                          "Another user has updated this Reports while you were editing")
                render(view: "edit", model: [reportsInstance: reportsInstance])
                return
            }
        }
        reportsInstance.properties = params
        if (!reportsInstance.save(flush: true)) {
            render(view: "edit", model: [reportsInstance: reportsInstance])
            return
        }
        flash.message = message(code: 'default.updated.message', args: [message(code: 'reports.label', default: 'Reports'), reportsInstance.id])
        redirect(action: "show", id: reportsInstance.id)
    }
    def delete(Long id) {
        def reportsInstance = Reports.get(id)
        if (!reportsInstance) {
            flash.message = message(code: 'default.not.found.message', args: [message(code: 'reports.label', default: 'Reports'), id])
            redirect(action: "list")
            return
        }
        try {
            reportsInstance.delete(flush: true)
            flash.message = message(code: 'default.deleted.message', args: [message(code: 'reports.label', default: 'Reports'), id])
            redirect(action: "list")
        }
        catch (DataIntegrityViolationException e) {
            flash.message = message(code: 'default.not.deleted.message', args: [message(code: 'reports.label', default: 'Reports'), id])
            redirect(action: "show", id: id)
        }
    }
}

step5: views it will create folioing  gsp files








step6: run this Application o/p will be same  like scaffolding



Demo3: Creating Our own Table Names in my sql db

Step1: Create domainClass Person


Person.groovy


package tablecoloumns
class Person {


String firstName
    //Address address
static mapping = { table 'people'
        firstName column: 'First_Name'
id coloumn:'person_id'
       // address column: 'Person_Address_Id'
    }

    static constraints = {
    }
}

Step2: Create Controller Person

PersonController.groovy


package tablecoloumns
class PersonController {
    static scaffold=Person

    }


Step3: Create Controller Person

dataSource {    pooled = true    driverClassName = "com.mysql.jdbc.Driver"    username = "root"    password = ""}hibernate {    cache.use_second_level_cache = true    cache.use_query_cache = false    cache.region.factory_class = 'net.sf.ehcache.hibernate.EhCacheRegionFactory'}// environment specific settingsenvironments {    development {        dataSource {            dbCreate = "create-drop" // one of 'create', 'create-drop', 'update', 'validate', ''            url = "jdbc:mysql://localhost/Relation1"        }    }    test {        dataSource {            dbCreate = "update"            url = "jdbc:mysql://localhost/Relation1"        }    }    production {        dataSource {            dbCreate = "update"            url = "jdbc:mysql://localhost/Relation1"            pooled = true            properties {               maxActive = -1               minEvictableIdleTimeMillis=1800000               timeBetweenEvictionRunsMillis=1800000               numTestsPerEvictionRun=3               testOnBorrow=true               testWhileIdle=true               testOnReturn=true               validationQuery="SELECT 1"            }        }    }}

Step4: Create Controller Person



grails.servlet.version = "2.5" // Change depending on target container compliance (2.5 or 3.0)grails.project.class.dir = "target/classes"grails.project.test.class.dir = "target/test-classes"grails.project.test.reports.dir = "target/test-reports"grails.project.target.level = 1.6grails.project.source.level = 1.6//grails.project.war.file = "target/${appName}-${appVersion}.war"
grails.project.dependency.resolution = {    // inherit Grails' default dependencies    inherits("global") {        // specify dependency exclusions here; for example, uncomment this to disable ehcache:        // excludes 'ehcache'    }    log "error" // log level of Ivy resolver, either 'error', 'warn', 'info', 'debug' or 'verbose'    checksums true // Whether to verify checksums on resolve
    repositories {        inherits true // Whether to inherit repository definitions from plugins
        grailsPlugins()        grailsHome()        grailsCentral()
        mavenLocal()        mavenCentral()
        // uncomment these (or add new ones) to enable remote dependency resolution from public Maven repositories        //mavenRepo "http://snapshots.repository.codehaus.org"        //mavenRepo "http://repository.codehaus.org"        //mavenRepo "http://download.java.net/maven/2/"        //mavenRepo "http://repository.jboss.com/maven2/"    }    dependencies {        // specify dependencies here under either 'build', 'compile', 'runtime', 'test' or 'provided' scopes eg.
         runtime 'mysql:mysql-connector-java:5.1.20'    }
    plugins {        runtime ":hibernate:$grailsVersion"        runtime ":jquery:1.7.2"        runtime ":resources:1.1.6"
        // Uncomment these (or add new ones) to enable additional resources capabilities        //runtime ":zipped-resources:1.0"        //runtime ":cached-resources:1.0"        //runtime ":yui-minify-resources:0.1.4"
        build ":tomcat:$grailsVersion"
        runtime ":database-migration:1.1"
        compile ':cache:1.0.0'    }}


Step5: Create Database table 

create schema Relation1

use schema

Step6: Create Database table 

grails run-app










No comments:

Post a Comment