Florian adler   minute project
Upcoming SlideShare
Loading in...5
×
 

Florian adler minute project

on

  • 1,281 views

 

Statistics

Views

Total Views
1,281
Views on SlideShare
1,222
Embed Views
59

Actions

Likes
0
Downloads
7
Comments
0

3 Embeds 59

http://www.jug.lv 49
http://www.tumblr.com 9
http://jug.lv 1

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • You have the function and its output

Florian adler   minute project Florian adler minute project Presentation Transcript

  • MinuteProject reverse-engineering short storiesFlorian Adler Riga 7/6/12
  • About meFrench, living in BelgiumJava dev, founder of minuteprojectWorking @ECFormer navy officer dropped in IT minefield at Y2K
  • Agenda• MinuteProject Overview Demo1 – simple JPA2 backend• Customisation Demo2 – model evolution JPA2• Integration technics Demo3 – REST app CXF/spring/jpa2• Statement Driven Development Demo4 – REST app with SDD• Goodies Demo5 – OpenXava app• Extend Minuteproject/ contribute?http://minuteproject.blogspot.be/2012/05/minuteproject-reverse-engineering-short.html
  • OverviewMinuteProject is a:• Code generator• OpenSource Apache v2 licence• 4000+ downloads• Reverse-engineering tool – RDBMS – WSDL
  • Target Techno Ecosystem REST REST JSF Vaadin CXF SpringMVC Primefaces JSF REST Spring configuration WS Primefaces Jersey DAO – ORM integration EJB – CDI – DAO DAO layer LayerUnder investigation JPA2 JPA (2/1) Hibernate iBatis First Release OpenXava FitNesse Mature JOOQ MinuteProject Tutorial Rails Roo GeneratorUnder development Grails Automated Business Benerator Logic Play Load model Enrich Generate
  • Techno Demos REST REST JSF Vaadin CXF SpringMVC Primefaces JSF REST Spring configuration WS Primefaces Jersey DAO – ORM integration EJB – CDI – DAO Layer DAO layerDEMOS JPA2 JPA2 Hibernate iBatis OpenXava FitNesse JOOQ MinuteProject Tutorial Rails Roo Generator Grails Automated Business Benerator Logic Play Load model Enrich Generate
  • Why MinuteProject?• Why code generation?• Do not reinvent the wheel – i.e. let the others do the framework/specs• Crystallize your knowledge• Go fast and customise• Reverse-Engineering is not a one shot process
  • When to use it?• Legacy model upgrades to new tech• Work from scratch: – Development tool – Iterative methodology• Your own model as your technology tutorial
  • MP generated Artifacts Operating Mechanism Target MP engine Technologies B Generates Target Technologies A Loads Uses DB model structure Applies templates MP main config Loads metadata Enriches model Target Technology A/B Database model Templates
  • Demo 1 – JPA2http://minuteproject.blogspot.be/2012/05/rigajug-demo-1-jpa2.html
  • Demo 1 - explanations• Start from scratch• Generate from the console & command line• Review artifacts• Write a unit test
  • Customisation• Art of enrichment• Art of reverse-analysis• Configure model/targetConfiguration optionsIndividual (fine grain)Global (declarative conventions)http://minuteproject.wikispaces.com/Convention
  • Demo 2 – JPA2http://minuteproject.blogspot.be/2012/05/rigajug-demo-2-jpa2.html
  • Demo 2 - explanations• Start from scratch• Generate from the console & command line• Review artifacts• Write a unit test• Secure modified code
  • Integration Technics2 standards• integration by extension• integration by overridingMP adds a new one• integration by alteration/mutation• 3 types of alteration – artifact level (exclude for next generation) – added section – updatable section
  • Demo 3 - RESTArchitecture blocks CXF S P R DAO I N JPA2 Ghttp://minuteproject.blogspot.be/2012/05/rigajug-demo-rest-cxf.html
  • Demo 3 - explanations• Start from scratch• Artifacts review: – CXF track – Spring config – Backend DAO – JPA2 – Maven projects• Deploy and test on Tomcat• Test URL
  • SDD – Statement Driven Dev.• Sometimes statements are just enough• Model is secondary• You just need: – Statement ex: query – I/O
  • SDD exampleStart from an SQL queryto deduce function and output select k.key_name, t.translation, t.date_finalization, l.code, l.description, tl.first_name, tl.last_name, tl.email from translation t, language l, user tl, translation_key k where t.language_id = l.idlanguage and tl.idUser = t.translator_id and k.id = t.key_id order by key_name
  • SDD exampleProvide some input select k.key_name, t.translation, t.date_finalization, l.code, l.description, tl.first_name, tl.last_name, tl.email from translation t, language l, user tl, translation_key k where t.language_id = l.idlanguage and tl.idUser = t.translator_id and k.id = t.key_id and k.key_name like ? and l.code like ? order by key_name limit ?
  • SDD - exampleFeed statement into Minuteproject <query name="get translation info"> <query-body> <value> <![CDATA[select k.key_name, t.translation, t.date_finalization, l.code, l.des cription, tl.first_name, tl.last_name, tl.email from translation t, language l, user tl, translation_key k where t.language_id = l.idlanguage and tl.idUser = t.translator_id and k.id = t.key_id and k.key_name like ? and l.code like ? order by key_name limit ?]]> </value> </query-body>
  • SDD - exampleFeed input into Minuteproject <query-params> <query-param name="key" is-mandatory="false" type="STRING" sample="test"/> <query-param name="code" is-mandatory="false" type="STRING" sample="FR"/> <query-param name="max" is-mandatory="false" type="INT" sample="10"/> </query-params>
  • Demo 4 SDD is WYSIWYG what you STATE is what you gethttp://minuteproject.blogspot.be/2012/05/rigajug-demo-rest-sdd.html
  • GoodiesWhy not have a JEE web app instantlyOpenXava app generation• Is a RAD Open Source JEE framework based on JPA2• Has front-end rendering annotation on entities• Is AJAX
  • Demo 5 – OpenXava AppMinuteProject generates:• OpenXava project artifacts• Build and deploy scripthttp://minuteproject.blogspot.be/2012/05/rigajug-demo-instant-openxava-app.html
  • Extend MinuteProjectArtifacts can be generated at multiple levels:• Field• Entities (table,view)• Package• Model• Application
  • Extend MinuteProject• Add a track• Add template metadata• Add template (velocity)• Add library• Add plugin• Artifact cross-reference
  • Success stories• Belgium Finance Ministry• European Commission• In Latvia
  • FAQ
  • Contact• Twitter @minuteproject• Googlegroup minuteproject• Mail minuteproject@gmail.com