Transcript
Page 1: Oficina  groovy grails - infoway

@lucas_aquiles

Groovy e Grails

Page 2: Oficina  groovy grails - infoway

RoteiroGroovy

1. O que é Groovy?2. GroovyShell / Groovy Console3. O mundo de objetos do Groovy

a. sobrescrevendo operadoresb. Mixings

4. Sintaxe nativaa. Classes, atributosb. List, Maps, Rangesc. GStringsd. Clousures

5. Elvis Operator

Grails1. O framework2. Estrutura de um projeto Grails3. O Model

a. constraintsi. validatorii. valiando um objeto

b. relacionamentosi. hasManyii. belongsToiii. hasOne

c. static mappingd. GORM

i. findersii. criteria

4. o Controllera. scaffoldingb. actions, params, renders, redirect

5. Servicesa. integrando um service a um controller

6. Viewsa. gsp taglibb. templates

Page 3: Oficina  groovy grails - infoway

Groovy

O que é groovy?

● linguagem dinâmica que roda na VM do Java

● totalmente OO

● compatibilidade com as libs Java

● recursos do java5 são nativos○ annotatios, collections, enum static import

Page 4: Oficina  groovy grails - infoway

Groovy

é a alegria do desenvolvedor java!

Page 5: Oficina  groovy grails - infoway

Groovy

Quem programa em java é um dev Groovy?

Page 6: Oficina  groovy grails - infoway

Groovy

um código java

Page 7: Oficina  groovy grails - infoway

Groovy

um código groovy

Page 8: Oficina  groovy grails - infoway

Groovy

um código groovy do jeito groovy

Page 9: Oficina  groovy grails - infoway

Groovy

Console interativoGroovy shell Groovy Console

Page 10: Oficina  groovy grails - infoway

Groovy

Tudo é um objeto

3.times{ println "opa!"

}

Page 11: Oficina  groovy grails - infoway

Groovy

● Sobrescrevendo operadores○ plus○ minus

● Mixing○

Page 12: Oficina  groovy grails - infoway

Groovy

Sintaxe:● Classes:

○ tipagem dinâmica

○ get e set são injetados dinamicamente

○ return e ; em métodos é opcional

Page 13: Oficina  groovy grails - infoway

Groovy

● Lists○ def lista = [1,2,3]

● Maps○ def map = ['key':'value']

● Ranges○ def rang = 1...3

Page 14: Oficina  groovy grails - infoway

Groovy

Sintaxe● Datas

○ def hoje = new Date()

● GStrings○ permite interploar string s entre aspas duplas

■ "${var}"

● Closure○ são blocos de código que podem ser executados e

passados como parametros em funções

Page 15: Oficina  groovy grails - infoway

Groovy

Sintaxe

● Closure

○ possui uma variável interna chamada "it"

def c = { println it }

Page 16: Oficina  groovy grails - infoway

Groovy

Sintaxe

● Elvis Operator○ "?." colocado antes da chamada de um atributo da

classe

Page 17: Oficina  groovy grails - infoway

Grails

O Framework

Page 18: Oficina  groovy grails - infoway

Grails

O framework● CoC

● Baseado no projeto Rails e Django

● Fácil integração com bibliotecas java

● Encapsula frameworks como: spring ioc, hibernate, sitemash, scaffolding

Page 19: Oficina  groovy grails - infoway

Grails

E quando o erro vinha no java ....

Page 20: Oficina  groovy grails - infoway

Grails

Instalação e configuração

○ define $GRAILS_HOME/bin na variável de ambiente

○ Run! grails run-app

Page 21: Oficina  groovy grails - infoway

Grails

O primeiro projeto

DataSource.groovyBuildConfig.groovyConfig.groovyURLMapping.groovy

web.xml

Page 22: Oficina  groovy grails - infoway

Grails

O primeiro projeto

DataSource.groovyBuildConfig.groovyConfig.groovyURLMapping.groovy

web.xml

Cadê meus DAOS?meus xml?

Page 23: Oficina  groovy grails - infoway

Grails

O Model

○ representa uma classe persistente no projeto grails○ são POGOS○ não é necessário mapear com annotations ou

arquivos xml

grails create-domain-class br.com.infowaypi.MinhaClasse

Page 24: Oficina  groovy grails - infoway

Grails

O Model○ constraints

■ valida a entrada de dados de um atributo da classe

■ nullable, blank, size, max, min■ validator: recebe uma validação específica

Page 25: Oficina  groovy grails - infoway

Grails

O Model○ validando objetos

● hasErrors() - verifica se existe algum erro de validação na classe seguido do validate() e do save()

● validate() - verifica as validações das constraints

Page 26: Oficina  groovy grails - infoway

Grails

O Model○ relacionamentos

■ hasManyteam hasMany players

■ belongsTo

player belongsTo team

■ hasOne

player hasOne teamem relacionamentos many to many é necessário que um dos lados deve assumir o belongsTo

Page 27: Oficina  groovy grails - infoway

Grails

O Model○ métodos injetados dinamicamente

● list()

● get(id)

● findAll()

● save()

● delete()

Page 28: Oficina  groovy grails - infoway

Grails

O Model○ finders dinâmicos

Page 29: Oficina  groovy grails - infoway

Grails

O Model● HQL: Hibernate Query Language

○ produto.findAll("from Produto where preco < :preco", [preco:1.99])

● max, min, sort, order

Page 30: Oficina  groovy grails - infoway

Grails

O Model● Comparadores

○ Like

■ produto.findAllByNomeLike('%vegan')

○ LessThan

■ produto.findAllByPrecoLessThan(1.99)

○ IsNotNull

■ produto.findAllByCategoriaIsNotNull()

○ NotEqual

■ produto.findAllByDescricaoNotEqual('carne')

Page 31: Oficina  groovy grails - infoway

Grails

O Model● Criteria

○ NomeDaClass.createCriteria()

def resultado = criteria.list(){ categoria{eq(2)} }

Page 32: Oficina  groovy grails - infoway

Grails

O Controller○ Responsável por receber uma requisição e executar

uma action

○ actions: são closures que vão receber requisições e executar uma ação

○ params: variável do tipo map que carrega informações com os parametros da requisição

Page 33: Oficina  groovy grails - infoway

Grails

O Controller○ render: responsável por enviar um tipo de resposta da requisição,

ex: uma view, um template, um texto

■ view, template, model, text, var

○ redirect: redireciona a requisição de uma action■ action, cotroller, uri, params

Page 34: Oficina  groovy grails - infoway

Grails

O Controller○ scaffolding: permite montar uma estrutura de CRUD para uma

classe de domínio

■ def scaffold = Produto;

grails create-controller

Page 35: Oficina  groovy grails - infoway

Grails

Services

○ services permitem centralizar uma lógica de negócio comum na aplição

○ um service é injetado dinamicamente em um controller seguindo a convenção: nameService

grails create-service serviceName

Page 36: Oficina  groovy grails - infoway

Grails

A View● arquivos *.gsp● baseado em taglibs semelhante as do jsp

■ evita misturar código de programação com marcação

■ <%= %>

Page 37: Oficina  groovy grails - infoway

Grails

A View● loops

○ <g:each in="${collectionName}" var="item"> </g:each>

○ if / else■ <g:if test="${item > 2}"> </g:if><g:else></g:else>

Page 38: Oficina  groovy grails - infoway

Grails

A View● templates

templates por padrão começam com _ (underscore) antes do nome do arquivo

ex: _templateName.gsp

<g:render template="templateName" var="${collection}" />


Recommended