Your SlideShare is downloading. ×
Florian adler   minute project
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Florian adler minute project

1,149
views

Published on

Published in: Technology

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,149
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
12
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide
  • You have the function and its output
  • Transcript

    • 1. MinuteProject reverse-engineering short storiesFlorian Adler Riga 7/6/12
    • 2. About meFrench, living in BelgiumJava dev, founder of minuteprojectWorking @ECFormer navy officer dropped in IT minefield at Y2K
    • 3. 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
    • 4. OverviewMinuteProject is a:• Code generator• OpenSource Apache v2 licence• 4000+ downloads• Reverse-engineering tool – RDBMS – WSDL
    • 5. 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
    • 6. 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
    • 7. 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
    • 8. When to use it?• Legacy model upgrades to new tech• Work from scratch: – Development tool – Iterative methodology• Your own model as your technology tutorial
    • 9. 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
    • 10. Demo 1 – JPA2http://minuteproject.blogspot.be/2012/05/rigajug-demo-1-jpa2.html
    • 11. Demo 1 - explanations• Start from scratch• Generate from the console & command line• Review artifacts• Write a unit test
    • 12. Customisation• Art of enrichment• Art of reverse-analysis• Configure model/targetConfiguration optionsIndividual (fine grain)Global (declarative conventions)http://minuteproject.wikispaces.com/Convention
    • 13. Demo 2 – JPA2http://minuteproject.blogspot.be/2012/05/rigajug-demo-2-jpa2.html
    • 14. Demo 2 - explanations• Start from scratch• Generate from the console & command line• Review artifacts• Write a unit test• Secure modified code
    • 15. 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
    • 16. Demo 3 - RESTArchitecture blocks CXF S P R DAO I N JPA2 Ghttp://minuteproject.blogspot.be/2012/05/rigajug-demo-rest-cxf.html
    • 17. Demo 3 - explanations• Start from scratch• Artifacts review: – CXF track – Spring config – Backend DAO – JPA2 – Maven projects• Deploy and test on Tomcat• Test URL
    • 18. SDD – Statement Driven Dev.• Sometimes statements are just enough• Model is secondary• You just need: – Statement ex: query – I/O
    • 19. 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
    • 20. 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 ?
    • 21. 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>
    • 22. 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>
    • 23. Demo 4 SDD is WYSIWYG what you STATE is what you gethttp://minuteproject.blogspot.be/2012/05/rigajug-demo-rest-sdd.html
    • 24. 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
    • 25. Demo 5 – OpenXava AppMinuteProject generates:• OpenXava project artifacts• Build and deploy scripthttp://minuteproject.blogspot.be/2012/05/rigajug-demo-instant-openxava-app.html
    • 26. Extend MinuteProjectArtifacts can be generated at multiple levels:• Field• Entities (table,view)• Package• Model• Application
    • 27. Extend MinuteProject• Add a track• Add template metadata• Add template (velocity)• Add library• Add plugin• Artifact cross-reference
    • 28. Success stories• Belgium Finance Ministry• European Commission• In Latvia
    • 29. FAQ
    • 30. Contact• Twitter @minuteproject• Googlegroup minuteproject• Mail minuteproject@gmail.com

    ×