Oficina groovy grails - infoway

953 views

Published on

Oficina de Groovy e Grails apresentada na Infoway - e-health company

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
953
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
21
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Oficina groovy grails - infoway

  1. 1. Groovy e Grails @lucas_aquiles
  2. 2. RoteiroGroovy Grails1. O que é Groovy? 1. O framework2. GroovyShell / Groovy Console 2. Estrutura de um projeto Grails3. O mundo de objetos do Groovy 3. O Model a. sobrescrevendo operadores a. constraints b. Mixings i. validator4. Sintaxe nativa ii. valiando um objeto a. Classes, atributos b. relacionamentos b. List, Maps, Ranges i. hasMany c. GStrings ii. belongsTo d. Clousures iii. hasOne5. 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. 3. GroovyO 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
  4. 4. Groovyé a alegria do desenvolvedor java!
  5. 5. GroovyQuem programa em java é um dev Groovy?
  6. 6. Groovyum código java
  7. 7. Groovyum código groovy
  8. 8. Groovyum código groovy do jeito groovy
  9. 9. GroovyConsole interativo Groovy shell Groovy Console
  10. 10. GroovyTudo é um objeto 3.times{ println "opa!" }
  11. 11. Groovy● Sobrescrevendo operadores ○ plus ○ minus● Mixing ○
  12. 12. GroovySintaxe:● Classes: ○ tipagem dinâmica ○ get e set são injetados dinamicamente ○ return e ; em métodos é opcional
  13. 13. Groovy● Lists ○ def lista = [1,2,3]● Maps ○ def map = [key:value]● Ranges ○ def rang = 1...3
  14. 14. GroovySintaxe● 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
  15. 15. GroovySintaxe● Closure ○ possui uma variável interna chamada "it" def c = { println it }
  16. 16. GroovySintaxe● Elvis Operator ○ "?." colocado antes da chamada de um atributo da classe
  17. 17. GrailsO Framework
  18. 18. GrailsO framework ● CoC ● Baseado no projeto Rails e Django ● Fácil integração com bibliotecas java ● Encapsula frameworks como: spring ioc, hibernate, sitemash, scaffolding
  19. 19. GrailsE quando o erro vinha no java ....
  20. 20. GrailsInstalação e configuração ○ define $GRAILS_HOME/bin na variável de ambiente ○ Run! grails run-app
  21. 21. GrailsO primeiro projetoDataSource.groovyBuildConfig.groovyConfig.groovyURLMapping.groovy web.xml
  22. 22. GrailsCadê meus DAOS? O primeiro projetomeus xml? DataSource.groovy BuildConfig.groovy Config.groovy URLMapping.groovy web.xml
  23. 23. GrailsO 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. 24. GrailsO 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. 25. GrailsO 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. 26. GrailsO Model ○ relacionamentos ■ hasMany team hasMany players ■ belongsTo player belongsTo team ■ hasOne player hasOne teamem relacionamentos many to many é necessário que um dos lados deveassumir o belongsTo
  27. 27. GrailsO Model ○ métodos injetados dinamicamente ● list() ● get(id) ● findAll() ● save() ● delete()
  28. 28. GrailsO Model ○ finders dinâmicos
  29. 29. GrailsO Model ● HQL: Hibernate Query Language ○ produto.findAll("from Produto where preco < :preco", [preco:1.99]) ● max, min, sort, order
  30. 30. GrailsO Model ● Comparadores ○ Like ■ produto.findAllByNomeLike(%vegan) ○ LessThan ■ produto.findAllByPrecoLessThan(1.99) ○ IsNotNull ■ produto.findAllByCategoriaIsNotNull() ○ NotEqual ■ produto.findAllByDescricaoNotEqual(carne)
  31. 31. GrailsO Model ● Criteria ○ NomeDaClass.createCriteria() def resultado = criteria.list(){ categoria{eq(2)} }
  32. 32. GrailsO 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. 33. GrailsO 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. 34. GrailsO Controller ○ scaffolding: permite montar uma estrutura de CRUD para uma classe de domínio ■ def scaffold = Produto;grails create-controller
  35. 35. GrailsServices ○ 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. 36. GrailsA View ● arquivos *.gsp ● baseado em taglibs semelhante as do jsp ■ evita misturar código de programação com marcação ■ <%= %>
  37. 37. GrailsA View ● loops ○ <g:each in="${collectionName}" var="item"> </g:each> ○ if / else ■ <g:if test="${item > 2}"> </g:if><g:else></g:else>
  38. 38. GrailsA View ● templates templates por padrão começam com _ (underscore) antes do nome do arquivo ex: _templateName.gsp <g:render template="templateName" var="${collection}" />

×