2. Roteiro
Groovy Grails
1. O que é Groovy? 1. O framework
2. GroovyShell / Groovy Console 2. Estrutura de um projeto Grails
3. O mundo de objetos do Groovy 3. O Model
a. sobrescrevendo operadores a. constraints
b. Mixings i. validator
4. Sintaxe nativa ii. valiando um objeto
a. Classes, atributos b. relacionamentos
b. List, Maps, Ranges i. hasMany
c. GStrings ii. belongsTo
d. Clousures iii. hasOne
5. Elvis Operator c. static mapping
d. GORM
i. finders
ii. criteria
4. o Controller
a. scaffolding
b. actions, params, renders, redirect
5. Services
a. integrando um service a um controller
6. Views
a. gsp taglib
b. templates
3. 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
14. 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
18. 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
22. Grails
Cadê meus DAOS?
O primeiro projeto
meus xml?
DataSource.groovy
BuildConfig.groovy
Config.groovy
URLMapping.groovy
web.xml
23. 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
24. 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
25. 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
26. Grails
O Model
○ relacionamentos
■ hasMany
team hasMany players
■ belongsTo
player belongsTo team
■ hasOne
player hasOne team
em relacionamentos many to many é necessário que um dos lados deve
assumir o belongsTo
27. Grails
O Model
○ métodos injetados dinamicamente
● list()
● get(id)
● findAll()
● save()
● delete()
29. Grails
O Model
● HQL: Hibernate Query Language
○ produto.findAll("from Produto where
preco < :preco", [preco:1.99])
● max, min, sort, order
30. Grails
O Model
● Comparadores
○ Like
■ produto.findAllByNomeLike('%vegan')
○ LessThan
■ produto.findAllByPrecoLessThan(1.99)
○ IsNotNull
■ produto.findAllByCategoriaIsNotNull()
○ NotEqual
■ produto.findAllByDescricaoNotEqual('carne')
31. Grails
O Model
● Criteria
○ NomeDaClass.createCriteria()
def resultado = criteria.list(){
categoria{eq(2)}
}
32. 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
33. 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
34. Grails
O Controller
○ scaffolding: permite montar uma estrutura de CRUD para uma
classe de domínio
■ def scaffold = Produto;
grails create-controller
35. 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
36. Grails
A View
● arquivos *.gsp
● baseado em taglibs semelhante as do jsp
■ evita misturar código de programação com
marcação
■ <%= %>
38. 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}" />