<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;DU4HSXc6fSp7ImA9WhBbEUo.&quot;"><id>tag:blogger.com,1999:blog-2231293399010893563</id><updated>2013-05-10T02:25:38.915-07:00</updated><category term="GIS" /><category term="Spring Roo and GIS" /><category term="Spring Roo JQuery" /><category term="GWT conversion" /><category term="Flex conversion" /><category term="Sping Roo addon for Neo4j" /><category term="Simulation" /><category term="jQuery frameworks" /><category term="Document Manger" /><category term="RIA" /><category term="Spring Roo mobile" /><category term="Advanced Rendering" /><category term="MongoDB" /><category term="Roo geospatial" /><category term="Database composition" /><category term="Spring Roo" /><category term="JQuery" /><category term="Productivity" /><category term="Column Sorting" /><category term="Query-by-Example" /><category term="Roo JQuery" /><category term="jqPlot" /><category term="Wijmo UI" /><category term="jQuery Theme Roller" /><category term="DSL" /><category term="Play framework" /><category term="One million documents showcase" /><category term="Spring Roo practices" /><category term="Roo  JQuery" /><category term="Spring Roo and jQuery" /><category term="Spring Roo marketing" /><category term="Blob issue" /><category term="Online games" /><category term="YouTube Spring Roo Tutorials" /><category term="Spring Roo Synergy" /><category term="Big Data" /><category term="Spring Roo deployment" /><category term="MongDB-QBE" /><category term="Jose Delgado Spring Roo" /><category term="Social networks" /><category term="JSF conversion" /><category term="Spring Data for Neo4j" /><category term="Spring Data and GIS" /><category term="Spring Roo and Big Data" /><category term="Education" /><category term="3D Web apps" /><category term="jQuery Roo addon" /><category term="Roo" /><category term="Twitter" /><category term="Alice" /><category term="Spring Roo charts" /><category term="Kendo UI" /><category term="Web MVC Menu" /><category term="Graph-base engine recommender" /><category term="jQuery and Spring Roo development" /><category term="jQuery UI" /><category term="Ajax" /><category term="Spring Roo RIA" /><category term="Gremlin" /><category term="Data Grid for Big Data" /><category term="graph db" /><category term="Spring Data" /><category term="Neo4j" /><category term="Spring Roo colum sorting" /><category term="JSON" /><category term="QBE" /><category term="Multimedia databases" /><category term="Java UI development" /><category term="Mobile" /><category term="Roo RIA" /><category term="Spring Data MongoDB" /><category term="Spring Roo grids" /><category term="Multiple database configuration" /><category term="Smarthphone" /><category term="Spring Data Neo4j" /><category term="wijmo" /><category term="Spring Roo beyond crud" /><category term="Spring Roo live demos" /><category term="Java" /><category term="Web 2.0" /><category term="Multiple field incremental search" /><category term="Virtual Worlds" /><category term="Cross Store" /><category term="UI for Big Data" /><category term="two database access configuratin" /><category term="jqGrid" /><category term="Spirng Roo customization" /><category term="Sping Roo addon" /><category term="NOSQL" /><category term="Spring MVC" /><category term="Jose Delgado" /><category term="3D" /><category term="TreeView" /><category term="Java Web" /><category term="DataDoc" /><category term="Spring framework" /><category term="RAD" /><title>Journey into Web Development</title><subtitle type="html">&lt;center&gt;&lt;b&gt;The finest collection of Spring Framework/Spring Roo showcases in the Java Enterprise World&lt;/b&gt;&lt;/center&gt;</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://pragmatikroo.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://pragmatikroo.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/2231293399010893563/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Findings</name><uri>http://www.blogger.com/profile/04256525103036208551</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://1.bp.blogspot.com/-cYdAR4HAT2w/TWqT4chjlPI/AAAAAAAAACQ/DlVKYiRZoA8/s220/Rooie.JPG" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>46</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/JourneyIntoWebDevelopment" /><feedburner:info uri="journeyintowebdevelopment" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;C08DR3k7eyp7ImA9WhNbE00.&quot;"><id>tag:blogger.com,1999:blog-2231293399010893563.post-9201054589325981048</id><published>2012-08-15T22:29:00.000-07:00</published><updated>2013-01-15T19:04:36.703-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-01-15T19:04:36.703-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Spring Roo" /><category scheme="http://www.blogger.com/atom/ns#" term="GIS" /><category scheme="http://www.blogger.com/atom/ns#" term="NOSQL" /><category scheme="http://www.blogger.com/atom/ns#" term="Advanced Rendering" /><category scheme="http://www.blogger.com/atom/ns#" term="3D Web apps" /><title>Spring Roo: Advanced Rendering</title><content type="html">&lt;b&gt;Intro&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-MEquZEmGVXo/UCyDZpPnCtI/AAAAAAAAAnY/t4nGleKbDY0/s1600/MWN3D2.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="233" src="http://2.bp.blogspot.com/-MEquZEmGVXo/UCyDZpPnCtI/AAAAAAAAAnY/t4nGleKbDY0/s400/MWN3D2.png" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Multipurpose World Navigator 3D (MWN3D)&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;b&gt;MWN3D &lt;/b&gt;is a customization of&amp;nbsp; the web application described at &lt;a href="http://pragmatikroo.blogspot.com/2012/08/a-multipurpose-world-navigator-mwn.html" target="_blank"&gt;http://pragmatikroo.blogspot.com/2012/08/a-multipurpose-world-navigator-mwn.html&lt;/a&gt;. Where instead of&amp;nbsp; loading the database repository with an specific content; the original rendering system has been replaced.&lt;br /&gt;
&lt;br /&gt;
The original MWN uses flat maps systems like Goggle Maps for bringing the geographic system context.&amp;nbsp; In the 3D version, the flat maps system has been substituted with an animated 3D World in rotation.&lt;br /&gt;
&lt;br /&gt;
Basically, I am leveraging the great&amp;nbsp; rendering capabilities of&amp;nbsp; current browsers. Current&amp;nbsp; browsers are using HTML5 canvas and WebGL for implementing outstanding Web 2.0&amp;nbsp; applications.&lt;br /&gt;
&lt;br /&gt;
The functionality of&amp;nbsp; the&amp;nbsp; application is pretty much the same as its ancestor. The User locates Continents/Countries/Cities by selecting them in the treeview component on the side. MWN3D marks the selected object in the World in motion.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Potential Uses and Applicability&lt;/b&gt;&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;Global awareness systems&lt;/li&gt;
&lt;li&gt;Global monitoring systems &lt;/li&gt;
&lt;li&gt;Command and control systems&lt;/li&gt;
&lt;li&gt;Games based on geography context&lt;/li&gt;
&lt;/ol&gt;
&lt;br /&gt;
Next&amp;nbsp; a video clip of&amp;nbsp; the application is shown.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Video Gallery&lt;/b&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;object width="320" height="266" class="BLOG_video_class" id="BLOG_video-ec2ba36f21acfde7" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"&gt;&lt;param name="movie" value="//www.youtube.com/get_player"&gt;
&lt;param name="bgcolor" value="#FFFFFF"&gt;
&lt;param name="allowfullscreen" value="true"&gt;
&lt;param name="flashvars" value="flvurl=http://redirector.googlevideo.com/videoplayback?id%3Dec2ba36f21acfde7%26itag%3D5%26source%3Dblogger%26app%3Dblogger%26cmo%3Dsensitive_content%253Dyes%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1371317576%26sparams%3Did,itag,source,ip,ipbits,expire%26signature%3D6E7E15ADEF8D0A1A5FF73E326617CD1E1D0834D3.3EE6ED76ABFF43D4FB8E232EB9F5DECA81D4C910%26key%3Dck2&amp;amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3Dec2ba36f21acfde7%26offsetms%3D5000%26itag%3Dw160%26sigh%3DUlIrh_1dEmh8C9xD6CepZERrmK4&amp;amp;autoplay=0&amp;amp;ps=blogger"&gt;
&lt;embed src="//www.youtube.com/get_player" type="application/x-shockwave-flash"
width="320" height="266" bgcolor="#FFFFFF"
flashvars="flvurl=http://redirector.googlevideo.com/videoplayback?id%3Dec2ba36f21acfde7%26itag%3D5%26source%3Dblogger%26app%3Dblogger%26cmo%3Dsensitive_content%253Dyes%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1371317576%26sparams%3Did,itag,source,ip,ipbits,expire%26signature%3D6E7E15ADEF8D0A1A5FF73E326617CD1E1D0834D3.3EE6ED76ABFF43D4FB8E232EB9F5DECA81D4C910%26key%3Dck2&amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3Dec2ba36f21acfde7%26offsetms%3D5000%26itag%3Dw160%26sigh%3DUlIrh_1dEmh8C9xD6CepZERrmK4&amp;autoplay=0&amp;ps=blogger"
allowFullScreen="true" /&gt;&lt;/object&gt;
&lt;/div&gt;
&lt;center&gt;
&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/center&gt;
&lt;center&gt;
&lt;b&gt;Continents: red cubes, Countries: yellow cylinders and Cities: green spheres&lt;/b&gt;&lt;/center&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Conclusion&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Aligning best-of-breed technologies like Spring(Framework+Roo) with current advanced rendering capabilities of the browsers open the implementation of&amp;nbsp; very interactive and real-time applications.&lt;br /&gt;
MWN3D uses the exceptional Three.js library for creating the 3D capabilities shown.&lt;br /&gt;
&lt;br /&gt;
B. and 3D Roogards&lt;br /&gt;
jD &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/JourneyIntoWebDevelopment/~4/vFw_FoG7fbY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pragmatikroo.blogspot.com/feeds/9201054589325981048/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2231293399010893563&amp;postID=9201054589325981048&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2231293399010893563/posts/default/9201054589325981048?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2231293399010893563/posts/default/9201054589325981048?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/JourneyIntoWebDevelopment/~3/vFw_FoG7fbY/spring-roo-advanced-rendering.html" title="Spring Roo: Advanced Rendering" /><author><name>Findings</name><uri>http://www.blogger.com/profile/04256525103036208551</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://1.bp.blogspot.com/-cYdAR4HAT2w/TWqT4chjlPI/AAAAAAAAACQ/DlVKYiRZoA8/s220/Rooie.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-MEquZEmGVXo/UCyDZpPnCtI/AAAAAAAAAnY/t4nGleKbDY0/s72-c/MWN3D2.png" height="72" width="72" /><thr:total>0</thr:total><georss:featurename>United States</georss:featurename><georss:point>36.87962060502676 -111.4453125</georss:point><georss:box>11.357586105026758 -152.7539065 62.40165510502676 -70.1367185</georss:box><feedburner:origLink>http://pragmatikroo.blogspot.com/2012/08/spring-roo-advanced-rendering.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUUBRH8yeSp7ImA9WhJXEUQ.&quot;"><id>tag:blogger.com,1999:blog-2231293399010893563.post-7123509768531228796</id><published>2012-08-04T22:40:00.002-07:00</published><updated>2012-08-05T13:07:35.191-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-08-05T13:07:35.191-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="MongoDB" /><category scheme="http://www.blogger.com/atom/ns#" term="Spring Data and GIS" /><category scheme="http://www.blogger.com/atom/ns#" term="JQuery" /><category scheme="http://www.blogger.com/atom/ns#" term="GIS" /><category scheme="http://www.blogger.com/atom/ns#" term="TreeView" /><category scheme="http://www.blogger.com/atom/ns#" term="Spring Roo and GIS" /><title>A Multipurpose World Navigator (MWN)</title><content type="html">&lt;b&gt;Intro&lt;/b&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-Z1oFebkzroo/UB6DCDKYW8I/AAAAAAAAAm4/E2cLcUr-rJg/s1600/world.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="222" src="http://1.bp.blogspot.com/-Z1oFebkzroo/UB6DCDKYW8I/AAAAAAAAAm4/E2cLcUr-rJg/s400/world.png" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;MWN root level&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;b&gt;MWN&amp;nbsp; &lt;/b&gt;is a foundational prototype for implementing geography-context information systems.&lt;br /&gt;
It has an ample applicability across many areas of human activity.&lt;br /&gt;
&lt;br /&gt;
MWN is a Java web&amp;nbsp; application that uses a top-down approach for navigating the Continents, Countries and Cities of the World.&amp;nbsp; It implements a treeview component that is populated on demand
as the User visits a node. By selecting a Continent/Country/City node the application renders the correspondent&amp;nbsp; geo-referenced&amp;nbsp; map.&lt;br /&gt;
&lt;br /&gt;
Precisely, this is this geographic context able to be customized for serving multiple purposes.&lt;br /&gt;
Areas of applicability are:&lt;br /&gt;
&lt;ol style="margin-left: 200px;"&gt;
&lt;li&gt;Education&lt;/li&gt;
&lt;li&gt;Tourism &lt;/li&gt;
&lt;li&gt;Sales&lt;/li&gt;
&lt;li&gt;Planning&lt;/li&gt;
&lt;/ol&gt;
Just to mention a few.&lt;br /&gt;
&lt;br /&gt;
In &lt;b&gt;Education, &lt;/b&gt;would be a great tool for teaching kids about World concepts. The hierarchical structure of&amp;nbsp; MWN&amp;nbsp; would help them to visualize and understand the notions of&amp;nbsp; Continents, Countries and Cities.&amp;nbsp; MWN loaded with the appropriated data would be a great assistant for teaching and learning different World cultures. MWN great interactivity would help to keep students focused. This is a web application that can be deployed to a large number of&amp;nbsp; Users. It has an excellent&amp;nbsp; cost-effective escalation and is affordable to pretty much any education budget.&lt;br /&gt;
&lt;br /&gt;
In &lt;b&gt;Toursim&lt;/b&gt;, would be a great marketing tool by showing maps, images and facts for vacation destinations. MWN uses MongoDB document database and can be extend to handle any multimedia object.&lt;br /&gt;
&lt;br /&gt;
In &lt;b&gt;Sales&lt;/b&gt;, MWN could be loaded&amp;nbsp; with real-time data from any corporation branch&amp;nbsp; and provide sales status aggregated to different levels:&amp;nbsp; Office, City, State, Country, etc. by virtue of the top-down structure. MWN can be extended with any custom analytics for supporting any&amp;nbsp; business practice.&lt;br /&gt;
&lt;br /&gt;
In &lt;b&gt;Planning&lt;/b&gt;, loaded with demographics data MWN would be a great discovery tool for assisting the planning tasks.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;MWN Technology Profile&lt;/b&gt;&lt;br /&gt;
&lt;ul style="margin-left: 200px;"&gt;
&lt;li&gt;Front-end&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;&amp;nbsp;jQuery and jQuery components &lt;/li&gt;
&lt;li&gt;Google Maps&lt;/li&gt;
&lt;li&gt;JavaScript ( almost nothing)&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;Back-end&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;Spring Framework&lt;/li&gt;
&lt;li&gt;MongoDB&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;&amp;nbsp;Development environment and RAD tools&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;STS&lt;/li&gt;
&lt;li&gt;Spring Roo&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
Next, I am showing screens shoots of MWN in action.&lt;br /&gt;
&lt;b&gt;&amp;nbsp;&lt;/b&gt;
&lt;br /&gt;
&lt;b&gt;Gallery&lt;/b&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;table border="1" style="width: 100%;"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://1.bp.blogspot.com/-iIdwd3Ry4T8/UB36_3ySNLI/AAAAAAAAAk4/Ngxdf6f9n_U/s1600/AfricaNode.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="179" src="http://1.bp.blogspot.com/-iIdwd3Ry4T8/UB36_3ySNLI/AAAAAAAAAk4/Ngxdf6f9n_U/s320/AfricaNode.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-F34GrBKaq18/UB37AKJ7bjI/AAAAAAAAAlA/G5c0gXBSJBs/s1600/AntarcticaNode.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="180" src="http://2.bp.blogspot.com/-F34GrBKaq18/UB37AKJ7bjI/AAAAAAAAAlA/G5c0gXBSJBs/s320/AntarcticaNode.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-smwr8rTCfek/UB37ARXasfI/AAAAAAAAAlI/RxGpq1Z4KBw/s1600/AsiaNode.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="177" src="http://3.bp.blogspot.com/-smwr8rTCfek/UB37ARXasfI/AAAAAAAAAlI/RxGpq1Z4KBw/s320/AsiaNode.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;&lt;a href="http://1.bp.blogspot.com/-UzPA-MurGZA/UB37AxrlsrI/AAAAAAAAAlQ/JU0mMjdV82A/s1600/EuropeNode.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="180" src="http://1.bp.blogspot.com/-UzPA-MurGZA/UB37AxrlsrI/AAAAAAAAAlQ/JU0mMjdV82A/s320/EuropeNode.png" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-zUnRLBKyAQg/UB37BAOU8fI/AAAAAAAAAlY/r9ddf-8JNUY/s1600/NorthAmericaNode.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="179" src="http://4.bp.blogspot.com/-zUnRLBKyAQg/UB37BAOU8fI/AAAAAAAAAlY/r9ddf-8JNUY/s320/NorthAmericaNode.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;&lt;a href="http://4.bp.blogspot.com/-jy7IqZic3Go/UB37Bh0Rm9I/AAAAAAAAAlg/FMFq8BdHgNM/s1600/OceaniaNode.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="177" src="http://4.bp.blogspot.com/-jy7IqZic3Go/UB37Bh0Rm9I/AAAAAAAAAlg/FMFq8BdHgNM/s320/OceaniaNode.png" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-9rbPrZXuzro/UB37B0sIaII/AAAAAAAAAlo/fX0cQ858psM/s1600/SouthAmericaNode.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="180" src="http://2.bp.blogspot.com/-9rbPrZXuzro/UB37B0sIaII/AAAAAAAAAlo/fX0cQ858psM/s320/SouthAmericaNode.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;&lt;a href="http://1.bp.blogspot.com/-ObR8IT2qHxo/UB37dh1O4oI/AAAAAAAAAlw/ixzp1XNQbTE/s1600/BrazilNode.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="180" src="http://1.bp.blogspot.com/-ObR8IT2qHxo/UB37dh1O4oI/AAAAAAAAAlw/ixzp1XNQbTE/s320/BrazilNode.png" width="320" /&gt;&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-zx9nRXae2sA/UB37d5f7CTI/AAAAAAAAAl4/UERbBAobbkc/s1600/FranceNode.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="184" src="http://4.bp.blogspot.com/-zx9nRXae2sA/UB37d5f7CTI/AAAAAAAAAl4/UERbBAobbkc/s320/FranceNode.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;td&gt;&lt;a href="http://1.bp.blogspot.com/-sqihoHFVMPo/UB37eJr1lKI/AAAAAAAAAmA/zgeegs1SCxc/s1600/GuadalajaraNode.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="180" src="http://1.bp.blogspot.com/-sqihoHFVMPo/UB37eJr1lKI/AAAAAAAAAmA/zgeegs1SCxc/s320/GuadalajaraNode.png" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://4.bp.blogspot.com/-jgnEb7uIRe8/UB37egZ7YLI/AAAAAAAAAmI/hqVAOYVtcbM/s1600/SidneyNode.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="180" src="http://4.bp.blogspot.com/-jgnEb7uIRe8/UB37egZ7YLI/AAAAAAAAAmI/hqVAOYVtcbM/s320/SidneyNode.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;b&gt;Conclusion&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;MWN is a foundational web app that can easily be customized to support uses-cases that requires a geographic-context.&lt;br /&gt;
MWN technology&amp;nbsp; used is flexible and be extended/customized on the front/back end.&lt;br /&gt;
&lt;br /&gt;
B. and geographic-context Roogards&lt;br /&gt;
jD&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/JourneyIntoWebDevelopment/~4/FKhX7ZoUAEQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pragmatikroo.blogspot.com/feeds/7123509768531228796/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2231293399010893563&amp;postID=7123509768531228796&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2231293399010893563/posts/default/7123509768531228796?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2231293399010893563/posts/default/7123509768531228796?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/JourneyIntoWebDevelopment/~3/FKhX7ZoUAEQ/a-multipurpose-world-navigator-mwn.html" title="A Multipurpose World Navigator (MWN)" /><author><name>Findings</name><uri>http://www.blogger.com/profile/04256525103036208551</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://1.bp.blogspot.com/-cYdAR4HAT2w/TWqT4chjlPI/AAAAAAAAACQ/DlVKYiRZoA8/s220/Rooie.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-Z1oFebkzroo/UB6DCDKYW8I/AAAAAAAAAm4/E2cLcUr-rJg/s72-c/world.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://pragmatikroo.blogspot.com/2012/08/a-multipurpose-world-navigator-mwn.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DU4ARXs9eCp7ImA9WhBRF0w.&quot;"><id>tag:blogger.com,1999:blog-2231293399010893563.post-2791392588985850981</id><published>2012-07-16T14:59:00.001-07:00</published><updated>2013-03-07T21:45:44.560-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-03-07T21:45:44.560-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="JSF conversion" /><category scheme="http://www.blogger.com/atom/ns#" term="JQuery" /><category scheme="http://www.blogger.com/atom/ns#" term="Java Web" /><category scheme="http://www.blogger.com/atom/ns#" term="Flex conversion" /><category scheme="http://www.blogger.com/atom/ns#" term="RIA" /><category scheme="http://www.blogger.com/atom/ns#" term="Wijmo UI" /><category scheme="http://www.blogger.com/atom/ns#" term="jQuery UI" /><category scheme="http://www.blogger.com/atom/ns#" term="jqPlot" /><category scheme="http://www.blogger.com/atom/ns#" term="Web 2.0" /><category scheme="http://www.blogger.com/atom/ns#" term="GWT conversion" /><category scheme="http://www.blogger.com/atom/ns#" term="Kendo UI" /><title>Spring Roo: The war is over... jQuery won. How to adjust to the new reality</title><content type="html">&lt;style&gt;
   table td  {
            text-align: center;
         }
&lt;/style&gt;

&lt;b&gt;Intro&lt;/b&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-aRwOM7mwGrg/UAM5iiJ3ZgI/AAAAAAAAAkg/VoKARN0ddvg/s1600/qrcode.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-aRwOM7mwGrg/UAM5iiJ3ZgI/AAAAAAAAAkg/VoKARN0ddvg/s1600/qrcode.png" /&gt;&lt;/a&gt;&lt;/div&gt;
This is&amp;nbsp; a two purpose mini-article...&lt;br /&gt;
&lt;br /&gt;
Purpose #1. To provide evidence that jQuery is the &lt;b&gt;defacto &lt;/b&gt;RIA technology for pretty much all platforms.&amp;nbsp; Particularly on the ecosystem where I work, Java and Java Web&amp;nbsp; has turned the major well known established UI players in to legacy&amp;nbsp; options.&lt;br /&gt;
&lt;br /&gt;
Let's review the following table. The table is a compilation of&amp;nbsp; the # jobs in the&amp;nbsp; US IT market as today (7-15-12).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;center&gt;
&lt;table border="1"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th&gt;&amp;nbsp;UI Technology&lt;/th&gt;
&lt;th&gt;Total posted jobs&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;jQuery alone&lt;/td&gt;
&lt;td&gt;4880&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;JSP alone&lt;/td&gt;
&lt;td&gt;3025&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;With Java &lt;/td&gt;
&lt;td&gt;1970&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;With .NET&lt;/td&gt;
&lt;td&gt;1623&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;jQuery Mobile alone&lt;/td&gt;
&lt;td&gt;1114&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Flex alone&lt;/td&gt;
&lt;td&gt;1074
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;With PHP&lt;/td&gt;
&lt;td&gt;993&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;JSF alone
&lt;/td&gt;
&lt;td&gt;908
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;With Spring&lt;/td&gt;
&lt;td&gt;821&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Dojo alone&lt;/td&gt;
&lt;td&gt;546

&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GWT alone&lt;/td&gt;
&lt;td&gt;476
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Y-UI alone&lt;/td&gt;
&lt;td&gt;325
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;With Python&lt;/td&gt;
&lt;td&gt;310
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;With Lamp&lt;/td&gt;
&lt;td&gt;270
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ext-JS alone&lt;/td&gt;
&lt;td&gt;228
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sencha alone 
&lt;/td&gt;
&lt;td&gt;191
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Phonegap alone&lt;/td&gt;
&lt;td&gt;104&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/center&gt;
&lt;br /&gt;
&lt;br /&gt;
The thing is... jQuery is at the top; which is totally consistent to other indicators like:&amp;nbsp; great activity in the jQuery development community, books, blogs&amp;nbsp; and # tweets, etc.&lt;br /&gt;
&lt;br /&gt;
Next, I will show you what I have done for getting ready my framework-of-choice: the Spring Framework,&amp;nbsp; to work with jQuery.&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: center;"&gt;
&lt;b&gt;My list of articles on jQuery and Spring Roo&lt;/b&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;table border="1"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th&gt;Date&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;th&gt;Link&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Feb 13 2011&lt;/td&gt;
&lt;td&gt;Seminal article announcing that nowadays is a fact. jQuery got the heart and minds of&amp;nbsp; web developers&amp;nbsp; on all platforms&lt;/td&gt;
&lt;td&gt;&lt;a href="http://pragmatikroo.blogspot.com/2011/02/jsp-is-dead-long-live-jquery.html" target="_blank"&gt;JSP is dead long live jQuery&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mar 11 2011&lt;/td&gt;
&lt;td&gt;Experimenting with jQuery Mobile and Spring Roo in a non-invasive way. &lt;/td&gt;
&lt;td&gt;&lt;a href="http://pragmatikroo.blogspot.com/2011/03/spring-roo-goes-mobile.html" target="_blank"&gt;Spring Roo goes Mobile&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mar 17&lt;br /&gt;
2011&lt;/td&gt;
&lt;td&gt;A more formal PoC for using jQuery mobile and Spring Roo. This is time using a 300K employees database for performance verification.&lt;/td&gt;
&lt;td&gt;&lt;a href="http://pragmatikroo.blogspot.com/2011/03/jquery-mobile-and-java-in-spot-light.html" target="_blank"&gt;jQuery and Java in the spot light&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;May 27 2011&lt;/td&gt;
&lt;td&gt;Using plain Spring Web MVC and jQuery for emulating GWT look and feel.&lt;/td&gt;
&lt;td&gt;&lt;a href="http://pragmatikroo.blogspot.com/2011/05/spring-roo-jquery-web-mvc-view.html" target="_blank"&gt;Spring Roo: jQuery Web MVC View Composition&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Oct 28 2011&lt;/td&gt;
&lt;td&gt;This is an effort for moving WEB MVC-to-jQuery addon from PoC to full development project.&lt;/td&gt;
&lt;td&gt;&lt;a href="http://pragmatikroo.blogspot.com/2011/10/spring-roo-towards-lightweight-non.html" target="_blank"&gt;Spring Roo: Towards a lightweight, non-invasive WEB MVC-jQuery addons-lightweight-non.html&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Oct 30 2011&lt;/td&gt;
&lt;td&gt;Article shows how easy your web app can benefit from multiple themes available in jQuery UI&lt;/td&gt;
&lt;td&gt;&lt;a href="http://pragmatikroo.blogspot.com/2011/10/spring-roo-pick-your-theme-for.html" target="_blank"&gt;Spring Roo: Pick your theme for Halloween&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Nov 5 2011&lt;/td&gt;
&lt;td&gt;Article describes the project formalization for implementing an add-on for turning a WEB MVC app into a jQuery based.&lt;/td&gt;
&lt;td&gt;&lt;a href="http://pragmatikroo.blogspot.com/2011/11/codename-synergy.html" target="_blank"&gt;CodeName: SYNERGY&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Nov 24 2011&lt;/td&gt;
&lt;td&gt;Synergy was extended using other best-of-breed jQuery components libraries. &lt;/td&gt;
&lt;td&gt;&lt;a href="http://pragmatikroo.blogspot.com/2011/11/spring-roo-totally-embracing-jquery.html" target="_blank"&gt;Spring Roo: Totally Embracing the jQuery World&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Nov 12 2011&lt;/td&gt;
&lt;td&gt;SYNERGY brought a great number of programming opportunities for automatically creating the boiler plate code and perform behavior based on datatype.&lt;/td&gt;
&lt;td&gt;&lt;a href="http://pragmatikroo.blogspot.com/2011/11/spring-roo-synergy-automatic-datatype.html" target="_blank"&gt;Spring Roo: Synergy Automatic Datatype-Control Mapping&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Dec 3 2011&lt;/td&gt;
&lt;td&gt;Another jQuery library added to Synergy&lt;/td&gt;
&lt;td&gt;&lt;a href="http://pragmatikroo.blogspot.com/2011/12/synergy-unlimited-ria.html" target="_blank"&gt;Synergy: Unlimited RIA&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Jun 5 2012&lt;/td&gt;
&lt;td&gt;jQuery charting library used here in the context for&amp;nbsp; Spring Integration&lt;/td&gt;
&lt;td&gt;&lt;a href="http://pragmatikroo.blogspot.com/2012/06/spring-roo-visual-eip.html" target="_blank"&gt;Spring Roo: Visual Eip&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Jun 29 2012&lt;/td&gt;
&lt;td&gt;jQuery Ajax is used for all the client-server side communication. Spring Roo generated code leveraged in a non-invasive way. Personally this is the the web app that I liked the most to implement(so far).&lt;/td&gt;
&lt;td&gt;&lt;a href="http://pragmatikroo.blogspot.com/2012/06/geospatial-perspective.html" target="_blank"&gt;MongoDB Geospatial Perspective Version 1.1&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Jul 12 2012&lt;/td&gt;
&lt;td&gt;jQuery Ajax handles in very interactive way the retrieval of one or many documents based on QBE criteria. The repository is loaded with 1000,000 documents for performance verification.&lt;/td&gt;
&lt;td&gt;&lt;a href="http://pragmatikroo.blogspot.com/2012/07/spring-roo-anatomy-of-functional-data.html" target="_blank"&gt;Spring Roo: Anatomy of a Functional Data Grid&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Conclusion&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Conclusion: jQuery alone or co-exiting with other UI technologies has 
won the minds and hearts of the development community on all platforms.&lt;b&gt; &lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
Purpose #2&lt;br /&gt;
I am starting an&amp;nbsp; R&amp;amp;D project called Hallelujah. Hallelujah is a tactical work on automatically turn or assist the conversion to jQuery&amp;nbsp; of&amp;nbsp; legacy applications based on JSF, Flex and GWT.&lt;br /&gt;
&lt;br /&gt;
Let me know what you think about the Hallelujah initiative. Do you think is worthy?&lt;br /&gt;
&lt;br /&gt;
B. Roogards&lt;br /&gt;
jD &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/JourneyIntoWebDevelopment/~4/vrWHeT-zzMs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pragmatikroo.blogspot.com/feeds/2791392588985850981/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2231293399010893563&amp;postID=2791392588985850981&amp;isPopup=true" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2231293399010893563/posts/default/2791392588985850981?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2231293399010893563/posts/default/2791392588985850981?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/JourneyIntoWebDevelopment/~3/vrWHeT-zzMs/spring-roo-war-is-over-jquery-won-how.html" title="Spring Roo: The war is over... jQuery won. How to adjust to the new reality" /><author><name>Findings</name><uri>http://www.blogger.com/profile/04256525103036208551</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://1.bp.blogspot.com/-cYdAR4HAT2w/TWqT4chjlPI/AAAAAAAAACQ/DlVKYiRZoA8/s220/Rooie.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-aRwOM7mwGrg/UAM5iiJ3ZgI/AAAAAAAAAkg/VoKARN0ddvg/s72-c/qrcode.png" height="72" width="72" /><thr:total>4</thr:total><feedburner:origLink>http://pragmatikroo.blogspot.com/2012/07/spring-roo-war-is-over-jquery-won-how.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEIDQHk6fSp7ImA9WhJREUU.&quot;"><id>tag:blogger.com,1999:blog-2231293399010893563.post-298180146229210147</id><published>2012-07-12T18:25:00.000-07:00</published><updated>2012-07-13T06:36:11.715-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-07-13T06:36:11.715-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Spring Roo" /><category scheme="http://www.blogger.com/atom/ns#" term="Jose Delgado" /><category scheme="http://www.blogger.com/atom/ns#" term="Multiple field incremental search" /><category scheme="http://www.blogger.com/atom/ns#" term="Data Grid for Big Data" /><category scheme="http://www.blogger.com/atom/ns#" term="Big Data" /><category scheme="http://www.blogger.com/atom/ns#" term="Column Sorting" /><category scheme="http://www.blogger.com/atom/ns#" term="UI for Big Data" /><category scheme="http://www.blogger.com/atom/ns#" term="QBE" /><title>Spring Roo: Anatomy of  a Functional Data Grid</title><content type="html">&lt;b&gt;Intro&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-Bb4G52PcVAs/T_9zMmn6pSI/AAAAAAAAAjw/EIy4vs1k00c/s1600/ColumnsMain.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="400" src="http://4.bp.blogspot.com/-Bb4G52PcVAs/T_9zMmn6pSI/AAAAAAAAAjw/EIy4vs1k00c/s400/ColumnsMain.png" width="373" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Big Data Grid (&lt;b&gt;1000,000&lt;/b&gt;! documents)&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&amp;nbsp;a) Multiple fields QBE&amp;nbsp; incremental search sensible data types &amp;nbsp; &lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
b) Multiple headers column sort &lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
c) Elapsed query&amp;nbsp; time indicator&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
d) Number of records retrieved indicator&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
I am still working in the MongoDB, Spring (Data+Roo) subject. Developing -sexy, hopefully- showcases for my consulting work. I decided to implement more functionality on top my previous QBE showcase. The referred show case is here &lt;a href="http://pragmatikroo.blogspot.com/2012/07/spring-roo-query-by-example.html" target="_blank"&gt;http://pragmatikroo.blogspot.com/2012/07/spring-roo-query-by-example.html&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;In this iteration, I added &lt;b&gt;Column Sorting (CS) &lt;/b&gt;across all the field in the UI. This is not the first time doing CS for Roo. The previous incarnation was reported here &lt;a href="http://pragmatikroo.blogspot.com/2011/02/spring-roo-web-mvc-column-sorting.html" target="_blank"&gt;http://pragmatikroo.blogspot.com/2011/02/spring-roo-web-mvc-column-sorting.html&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Following, this is brief description of&amp;nbsp; the UI. The&amp;nbsp; QBE fields on the top are data type sensitive and allowing incremental search on each of them. The column headers are toggled buttons enabling ascending/descending sorting on the correspondent clicked header.&lt;br /&gt;
&lt;br /&gt;
Next I am showing some moments of&amp;nbsp; the UI in action...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Gallery&amp;nbsp;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-uans8xdeJwM/T_9zNJ6nD4I/AAAAAAAAAj4/9gjMhkintZ8/s1600/ColumnsOne.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="335" src="http://1.bp.blogspot.com/-uans8xdeJwM/T_9zNJ6nD4I/AAAAAAAAAj4/9gjMhkintZ8/s400/ColumnsOne.png" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Fig above, shows a incremental searches in two fields and sorted by first name.&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-r1lEPIv05p0/T_9zNvDo3eI/AAAAAAAAAkA/vfh4rL_QrBs/s1600/ColumnsThree.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="346" src="http://3.bp.blogspot.com/-r1lEPIv05p0/T_9zNvDo3eI/AAAAAAAAAkA/vfh4rL_QrBs/s400/ColumnsThree.png" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Previous result set sorted by birthday descending&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-YuFOfQ9FlHQ/T_9zOC11DsI/AAAAAAAAAkI/R0u7U_67eHY/s1600/ColumnsTwo.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="341" src="http://4.bp.blogspot.com/-YuFOfQ9FlHQ/T_9zOC11DsI/AAAAAAAAAkI/R0u7U_67eHY/s400/ColumnsTwo.png" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Now ascending&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Conclusions&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
The data grid UI resulted of the experienced is very efficient narrowing down in group of&amp;nbsp; documents.
 Not to mention that the database holdings are one-million documents 
(1000,000) BIG DATA member. &lt;br /&gt;
Just adding exporting capabilities perform some&amp;nbsp; QA work on it... &lt;br /&gt;
This is almost a product!!!&lt;br /&gt;
&lt;br /&gt;
B. &amp;amp; humongous Roogards&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/JourneyIntoWebDevelopment/~4/V8sZa2yx4-E" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pragmatikroo.blogspot.com/feeds/298180146229210147/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2231293399010893563&amp;postID=298180146229210147&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2231293399010893563/posts/default/298180146229210147?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2231293399010893563/posts/default/298180146229210147?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/JourneyIntoWebDevelopment/~3/V8sZa2yx4-E/spring-roo-anatomy-of-functional-data.html" title="Spring Roo: Anatomy of  a Functional Data Grid" /><author><name>Findings</name><uri>http://www.blogger.com/profile/04256525103036208551</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://1.bp.blogspot.com/-cYdAR4HAT2w/TWqT4chjlPI/AAAAAAAAACQ/DlVKYiRZoA8/s220/Rooie.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-Bb4G52PcVAs/T_9zMmn6pSI/AAAAAAAAAjw/EIy4vs1k00c/s72-c/ColumnsMain.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://pragmatikroo.blogspot.com/2012/07/spring-roo-anatomy-of-functional-data.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0YNRngyeip7ImA9WhJSFkQ.&quot;"><id>tag:blogger.com,1999:blog-2231293399010893563.post-2280175042979832699</id><published>2012-07-06T07:36:00.001-07:00</published><updated>2012-07-07T15:13:17.692-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-07-07T15:13:17.692-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="One million documents showcase" /><category scheme="http://www.blogger.com/atom/ns#" term="MongDB-QBE" /><category scheme="http://www.blogger.com/atom/ns#" term="Query-by-Example" /><title>Spring Roo: Query-By-Example</title><content type="html">&lt;b&gt;Intro&lt;/b&gt;&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-xFz1eXprMio/T_bm3KczyQI/AAAAAAAAAis/SpX_qkhe7fc/s1600/OneMillionViewOne.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="144" src="http://2.bp.blogspot.com/-xFz1eXprMio/T_bm3KczyQI/AAAAAAAAAis/SpX_qkhe7fc/s320/OneMillionViewOne.png" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Grid View populated with &lt;u&gt;1000,000 documents&lt;/u&gt;!&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
A little bit of context first...&lt;br /&gt;
This is a&amp;nbsp; mini-article; part of the &lt;a href="http://pragmatikroo.blogspot.com/2012/06/developing-mongodb-perspectives-using.html" target="_blank"&gt;Developing MongoDB Perspectives using Spring Roo&lt;/a&gt; suite. It is the one dedicated to &lt;i&gt;traditional &lt;/i&gt;or &lt;i&gt;typical &lt;/i&gt;web enterprise requirement for databases. &lt;br /&gt;
&lt;br /&gt;
Some of these requirements are:&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;Smoothly navigate a grid with thousand of records&lt;/li&gt;
&lt;li&gt;Enable column sorting&lt;/li&gt;
&lt;li&gt;Incremental search&lt;/li&gt;
&lt;li&gt;Master-detail&amp;nbsp;&lt;/li&gt;
&lt;li&gt;File uploads&lt;/li&gt;
&lt;/ol&gt;
I wanted to try with MongoDB the experience for fulling such requirements. For such purpose, I created a use case &amp;nbsp; that includes a grid UI and a document database with&amp;nbsp; &lt;b&gt;one-million- records (1000,000)&lt;/b&gt;.&lt;br /&gt;
&lt;br /&gt;
Now, Imagine you need to retrieve one particular document from the database. May be you need to retrieve only the ones that are &lt;i&gt;active &lt;/i&gt;or all the &lt;i&gt;males &lt;/i&gt;which where &lt;i&gt;hired&amp;nbsp; &lt;/i&gt;in a particular date range.&lt;br /&gt;
&lt;br /&gt;
In addition, you have to enable it in a user-friendly manner, with a intuitive UI that any User can work with.&lt;br /&gt;
&lt;br /&gt;
I believe an efficient way to accomplish it is by using Query-by-Example or QBE.&lt;br /&gt;
&lt;br /&gt;
Next, in the gallery section I am showing screen shots about&amp;nbsp; MongoDB-QBE in action:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Gallery&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Lets warm up MongoDB-QBE retrieving all the employees whose first name starts with&amp;nbsp; an "M"... Fig #1, shows it.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-Cbgk4l6iTd8/T_bv3A9Y7qI/AAAAAAAAAjI/HKS2DVrNMec/s1600/MSearched.png" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="166" src="http://4.bp.blogspot.com/-Cbgk4l6iTd8/T_bv3A9Y7qI/AAAAAAAAAjI/HKS2DVrNMec/s200/MSearched.png" width="200" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Fig. #1 First name lookup View&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-YRx6yL6VfyI/T_bxlV45yDI/AAAAAAAAAjQ/LpLTOEjauqk/s1600/MaSearched.png" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="166" src="http://4.bp.blogspot.com/-YRx6yL6VfyI/T_bxlV45yDI/AAAAAAAAAjQ/LpLTOEjauqk/s200/MaSearched.png" width="200" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Fig.#2 Incremental seach view&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Narrow down a little bit more adding&amp;nbsp; an "a" or "Ma". Resulted record set&amp;nbsp; shown in fig # 2. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-hWn9FI5vrzA/T_byKe7YwwI/AAAAAAAAAjc/CxCCnez0hC0/s1600/MaFemalesSearched.png" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="163" src="http://1.bp.blogspot.com/-hWn9FI5vrzA/T_byKe7YwwI/AAAAAAAAAjc/CxCCnez0hC0/s200/MaFemalesSearched.png" width="200" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Fig.# 3 Two fields conjunction view &lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-BFIBbthTTOA/T_byyzWWKsI/AAAAAAAAAjk/jC8ra5SeJwM/s1600/JDSearched.png" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="92" src="http://3.bp.blogspot.com/-BFIBbthTTOA/T_byyzWWKsI/AAAAAAAAAjk/jC8ra5SeJwM/s200/JDSearched.png" width="200" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Fig. #4 I retrieved myself too! (Eating my dog food, Yuck!)&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now, you are&amp;nbsp; interested on females only, from the previous search, as shown in fig. #3. Fig. # 4 is self explanatory.&amp;nbsp;&amp;nbsp; Views include total records retrieved and actual query times. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Conclusion&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
I am surprised with the preliminary retrieving times got. They are pretty good out of the bat for a million documents db; without any optimization effort.&lt;br /&gt;
&lt;br /&gt;
I think... I believe... the RDBMS establishment will face a humongous challenge pretty-pretty soon. You know what I mean, right?&lt;br /&gt;
&lt;br /&gt;
Attribution notice: I used data coming the employees db for creating the 1000,000 repository referred in this article. &amp;nbsp; Employees db @ &lt;a href="http://dev.mysql.com/doc/employee/en/employees-license.html" target="_blank"&gt;http://dev.mysql.com/doc/employee/en/employees-license.html&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
B. Roogards&lt;br /&gt;
jD&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/JourneyIntoWebDevelopment/~4/vPiAIfMXFsA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pragmatikroo.blogspot.com/feeds/2280175042979832699/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2231293399010893563&amp;postID=2280175042979832699&amp;isPopup=true" title="5 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2231293399010893563/posts/default/2280175042979832699?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2231293399010893563/posts/default/2280175042979832699?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/JourneyIntoWebDevelopment/~3/vPiAIfMXFsA/spring-roo-query-by-example.html" title="Spring Roo: Query-By-Example" /><author><name>Findings</name><uri>http://www.blogger.com/profile/04256525103036208551</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://1.bp.blogspot.com/-cYdAR4HAT2w/TWqT4chjlPI/AAAAAAAAACQ/DlVKYiRZoA8/s220/Rooie.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-xFz1eXprMio/T_bm3KczyQI/AAAAAAAAAis/SpX_qkhe7fc/s72-c/OneMillionViewOne.png" height="72" width="72" /><thr:total>5</thr:total><feedburner:origLink>http://pragmatikroo.blogspot.com/2012/07/spring-roo-query-by-example.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEEMSXs-fCp7ImA9WhJSE08.&quot;"><id>tag:blogger.com,1999:blog-2231293399010893563.post-957601198733312583</id><published>2012-06-29T21:03:00.000-07:00</published><updated>2012-07-03T07:44:48.554-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-07-03T07:44:48.554-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="MongoDB" /><category scheme="http://www.blogger.com/atom/ns#" term="RAD" /><category scheme="http://www.blogger.com/atom/ns#" term="Big Data" /><category scheme="http://www.blogger.com/atom/ns#" term="Roo geospatial" /><category scheme="http://www.blogger.com/atom/ns#" term="Spring Data MongoDB" /><title>MongoDB Geospatial Perspective Version 1.1</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-nUY6ftOQ2ZQ/T-6KIinMerI/AAAAAAAAAeI/Yfi_D2bK1g4/s1600/MexicoView.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-mnfNg1iP0Io/T_IWt10PEBI/AAAAAAAAAh0/rdNthYFNAtY/s1600/MexicoViewBoxed.png" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="164" src="http://3.bp.blogspot.com/-mnfNg1iP0Io/T_IWt10PEBI/AAAAAAAAAh0/rdNthYFNAtY/s200/MexicoViewBoxed.png" width="200" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Fig.# 1Boxed-area retrieval enabled version 1.1&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-eLyeNVFt7ko/T_IWxHLndPI/AAAAAAAAAh8/RicoSL2Egb0/s1600/MexicoView.png" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="164" src="http://1.bp.blogspot.com/-eLyeNVFt7ko/T_IWxHLndPI/AAAAAAAAAh8/RicoSL2Egb0/s200/MexicoView.png" width="200" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Fig. # 2 Circled-area retrieval since 1.0 &lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Intro&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="background-color: #f6b26b;"&gt;News&lt;/span&gt;. Version 1.1 includes boxed-area retrieval capabilities and quick Country look up enabled.&lt;br /&gt;
&lt;br /&gt;
This is the Perspective for the characterization of&amp;nbsp; relevant geo-spatial MongoDB capabilities. This Spring Roo implemented web app. shown utilizes a&amp;nbsp; MongoDB collection with more than 10k geo-located World cities.&lt;br /&gt;
&lt;br /&gt;
On top of&amp;nbsp; the automatically source code created by Spring Roo, I implemented an&amp;nbsp; incremental look-up control for quickly find the required city. Then after, the selected city is depicted on a map. MongoDB geo-spatial superior query capabilities are used for retrieving all cities in a circle around the found original city.&lt;br /&gt;
&lt;br /&gt;
Next some images are shown with the Perspective in action...&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Gallery&lt;/b&gt;&lt;br /&gt;
&lt;div style="text-align: right;"&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;div style="text-align: left;"&gt;
&lt;/div&gt;
&lt;div style="text-align: right;"&gt;
&lt;/div&gt;
&lt;table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-tK_hI_4CDRU/T_IfVdc1cPI/AAAAAAAAAiY/66nu2algGhc/s1600/CitiesSelectionGridInAction.png" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="161" src="http://3.bp.blogspot.com/-tK_hI_4CDRU/T_IfVdc1cPI/AAAAAAAAAiY/66nu2algGhc/s200/CitiesSelectionGridInAction.png" width="200" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Fig. #1 Country look up in action!&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-5y2PgWbYKUw/T_IgDazqwoI/AAAAAAAAAig/sb8XuTE9jIw/s1600/CitiesCSelectionGridInAction.png" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="91" src="http://4.bp.blogspot.com/-5y2PgWbYKUw/T_IgDazqwoI/AAAAAAAAAig/sb8XuTE9jIw/s200/CitiesCSelectionGridInAction.png" width="200" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Fig. #2 City look up in action!&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-wLILtGGKcyQ/T-6DvtCQ4JI/AAAAAAAAAdg/_yphYlbFMk4/s1600/DynamicRetrievalCitiesAreaBased.png" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="151" src="http://4.bp.blogspot.com/-wLILtGGKcyQ/T-6DvtCQ4JI/AAAAAAAAAdg/_yphYlbFMk4/s200/DynamicRetrievalCitiesAreaBased.png" width="200" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Fig. #4 Dynamic Cities Retrieval Area based&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-mT1G_IGMwaU/T-6CmijElNI/AAAAAAAAAdY/jdK_pEVHS_g/s1600/SelectedCityMapView.png" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="152" src="http://2.bp.blogspot.com/-mT1G_IGMwaU/T-6CmijElNI/AAAAAAAAAdY/jdK_pEVHS_g/s200/SelectedCityMapView.png" width="200" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Fig. #3 Selected City View&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-Q0vERyPKrq0/T-6Fiq49duI/AAAAAAAAAdo/i2pMEa18l4M/s1600/ValenciaView.png" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="151" src="http://1.bp.blogspot.com/-Q0vERyPKrq0/T-6Fiq49duI/AAAAAAAAAdo/i2pMEa18l4M/s200/ValenciaView.png" width="200" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Fig# 5. View centered on Valencia, Spain&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-6dOSKGSVvRQ/T-6Hi9KQgCI/AAAAAAAAAdw/F912InrFc70/s1600/PhiladelpiaView.png" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="153" src="http://1.bp.blogspot.com/-6dOSKGSVvRQ/T-6Hi9KQgCI/AAAAAAAAAdw/F912InrFc70/s200/PhiladelpiaView.png" width="200" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Fig.#6 View centered on Philadelphia, USA&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; text-align: right;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-CHva8zDsTAE/T-6JgoII-pI/AAAAAAAAAeA/twNztoopUaI/s1600/PhoenixView.png" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="158" src="http://2.bp.blogspot.com/-CHva8zDsTAE/T-6JgoII-pI/AAAAAAAAAeA/twNztoopUaI/s200/PhoenixView.png" width="200" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Fig#. 8 View centered PHX, USA&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; text-align: left;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-odmR5BPDZtw/T-6I2QMhpEI/AAAAAAAAAd4/zAztVuthe7I/s1600/germanyView.png" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="152" src="http://3.bp.blogspot.com/-odmR5BPDZtw/T-6I2QMhpEI/AAAAAAAAAd4/zAztVuthe7I/s200/germanyView.png" width="200" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Fig#.7 View centered on Berlin, Germany&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Conclusion&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
I am very-very pleased with all the learned experiences gathered by implementing this Perspective.&lt;br /&gt;
&lt;br /&gt;
It is the kind-of&amp;nbsp; showcase great for stressing the server and client side, memory allocation/de-allocation&amp;nbsp; and User interactivity.&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;&lt;b&gt;MongoDB is&amp;nbsp; humongous effective, humongous powerful and a humongous fun NoSQL DB to work with.&amp;nbsp;&lt;/b&gt;&lt;/u&gt; &lt;br /&gt;
&lt;br /&gt;
Smoothy navigating grids with ten-of-thousands of&amp;nbsp; records -documents in MongoDB world-, flashy look-up components and real-time retrieving data&amp;nbsp; for rendering images are truly real-world Java Enterprise requirements.&lt;br /&gt;
&lt;br /&gt;
If&amp;nbsp; I tell you how long did it take me to implement this puppy... You won't believe me.&lt;br /&gt;
&lt;br /&gt;
Well... I think... I believe... Spring Roo is a fantastic RAD application tool. What you think?&lt;br /&gt;
&lt;br /&gt;
BTW don't miss the other MongoDB Perspectives.&lt;br /&gt;
&lt;br /&gt;
B. and Geo-spatial Roogards&lt;br /&gt;
jD &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/JourneyIntoWebDevelopment/~4/V9HdJQa4NCA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pragmatikroo.blogspot.com/feeds/957601198733312583/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2231293399010893563&amp;postID=957601198733312583&amp;isPopup=true" title="5 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2231293399010893563/posts/default/957601198733312583?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2231293399010893563/posts/default/957601198733312583?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/JourneyIntoWebDevelopment/~3/V9HdJQa4NCA/geospatial-perspective.html" title="MongoDB Geospatial Perspective Version 1.1" /><author><name>Findings</name><uri>http://www.blogger.com/profile/04256525103036208551</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://1.bp.blogspot.com/-cYdAR4HAT2w/TWqT4chjlPI/AAAAAAAAACQ/DlVKYiRZoA8/s220/Rooie.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-mnfNg1iP0Io/T_IWt10PEBI/AAAAAAAAAh0/rdNthYFNAtY/s72-c/MexicoViewBoxed.png" height="72" width="72" /><thr:total>5</thr:total><feedburner:origLink>http://pragmatikroo.blogspot.com/2012/06/geospatial-perspective.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUEAQHs5cSp7ImA9WhJREko.&quot;"><id>tag:blogger.com,1999:blog-2231293399010893563.post-4277674752294248645</id><published>2012-06-29T12:20:00.000-07:00</published><updated>2012-07-14T06:47:21.529-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-07-14T06:47:21.529-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="MongoDB" /><category scheme="http://www.blogger.com/atom/ns#" term="Spring Roo and Big Data" /><category scheme="http://www.blogger.com/atom/ns#" term="Big Data" /><category scheme="http://www.blogger.com/atom/ns#" term="Spring Data" /><category scheme="http://www.blogger.com/atom/ns#" term="Spring Data MongoDB" /><title>Developing MongoDB Perspectives using Spring Roo</title><content type="html">&lt;b&gt;Global Intro&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; This is a multifaceted article that introduces a variety of showcases&amp;nbsp; using MongoDB. MongoDB is NoSQL document database and the featured technology for this suite of&amp;nbsp; articles. I am using MongoDB, altogether with&amp;nbsp; the correspondent Spring Data&amp;nbsp; and Spring Roo.&lt;br /&gt;
&lt;br /&gt;
Bottom line,&amp;nbsp; I would like to investigate strategies for releasing&amp;nbsp; real-world Java Enterprise applications on&amp;nbsp; a very short time-to-market&amp;nbsp; using Spring ROO rapid-application-development&amp;nbsp; capabilities.&lt;br /&gt;
&lt;br /&gt;
I am not interested in implementing CRUD or tinker-toy kind-of&amp;nbsp; web apps. I want to implement showcases that really addresses real-world development expectations.&lt;br /&gt;
&lt;br /&gt;
For this purpose, I am introducing this notion of &amp;nbsp; a "&lt;b&gt;Perspective&lt;/b&gt;",&amp;nbsp; to emphasize a relevant MongoDB feature connected with a typical real-world web development requirement. So, the purpose of&amp;nbsp; is to extended what is created by Spring Roo for including the requirement.&lt;br /&gt;
&lt;br /&gt;
Each Perspective is&amp;nbsp; having their own&amp;nbsp; article, where I am describing the details of it. This is an incremental approach that would allow me to release each&amp;nbsp; show case independently.&lt;br /&gt;
&lt;br /&gt;
Next I will show the Perspective list and its link.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;center&gt;&lt;b&gt;Perspectives Gallery&lt;/b&gt;&lt;/center&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;table border="1"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th&gt;Perspective Name&lt;/th&gt;
&lt;th&gt;Summary&lt;/th&gt;
&lt;th&gt;Link&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Geo-spatial&lt;/td&gt;
&lt;td&gt;Showcase that uses a MondbDB collection with more than 10k geo-located World cities. It implements a fast incremental search for&amp;nbsp; city selection. The found city is rendered on a map. The UI provides controls for dynamically retrieve more than 10,000 World cities around a circular area on different radius lengths. &lt;span style="color: red;"&gt;Update &lt;/span&gt;version 1.1 added fast incremental Country location and boxed area cities retrieval.&lt;/td&gt;
&lt;td&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://3.bp.blogspot.com/-2VMYZdswi6A/T-5uYhLfwAI/AAAAAAAAAc4/zl2hsKmYxps/s1600/geospatialGallery.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-2VMYZdswi6A/T-5uYhLfwAI/AAAAAAAAAc4/zl2hsKmYxps/s1600/geospatialGallery.png" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;a href="http://pragmatikroo.blogspot.com/2012/06/geospatial-perspective.html" target="_blank"&gt;Mongo Geospatial Prespective&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Traditional DB Use Case I&lt;/td&gt;
&lt;td&gt;Using a 300k documents -previously known as records- the show case render basic operations on a grid. This results are relevant since show up the details about loading a collection with legacy data.&amp;nbsp; Grid navigation performance is measured.&lt;/td&gt;
&lt;td&gt;TBD&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Traditional DB Use Case II
&lt;/td&gt;
&lt;td&gt;The previous use case was scaled to &lt;b&gt;one million (1000,000) documents&lt;/b&gt;. A Query-by-Example UI is implementing for testing Human interaction with BIG DATAGRID CRUD operations. &lt;/td&gt;
&lt;td&gt;&lt;a href="http://pragmatikroo.blogspot.com/2012/07/spring-roo-query-by-example.html" target="_blank"&gt;http://pragmatikroo.blogspot.com/2012/07/spring-roo-query-by-example.html&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Anatomy of a Functional Data Grid
Intro
&lt;/td&gt;
&lt;td&gt;This is an R&amp;amp;D effort for implementing a functional real-world data grid off the CRUD code generate from Spring Roo. The web application is part of collection of showcases generating experiences on using MongoDB and Spring(Data+Roo). This particular showcase uses a one-million &lt;b&gt;(1,000,000) documents&lt;/b&gt; MongoDB repository. &lt;/td&gt;
&lt;td&gt;&lt;a href="http://pragmatikroo.blogspot.com/2012/07/spring-roo-anatomy-of-functional-data.html" target="_blank"&gt;http://pragmatikroo.blogspot.com/2012/07/spring-roo-anatomy-of-functional-data.html&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Multimedia Document Manager
&lt;/td&gt;
&lt;td&gt;This Perspective leverages previous incarnations of&amp;nbsp; document managers presented in the site. GridFS is used for handing BIG DATA approach.&lt;/td&gt;
&lt;td&gt;TBD&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Map-Reduce
&lt;/td&gt;
&lt;td&gt;TBD
&lt;/td&gt;
&lt;td&gt;TBD&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Conclusions&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
This a moving target so right now I referred the Reader to the&amp;nbsp; specific conclusion at the end of each Perspective.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/JourneyIntoWebDevelopment/~4/Fwjsc2UKG1o" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pragmatikroo.blogspot.com/feeds/4277674752294248645/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2231293399010893563&amp;postID=4277674752294248645&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2231293399010893563/posts/default/4277674752294248645?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2231293399010893563/posts/default/4277674752294248645?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/JourneyIntoWebDevelopment/~3/Fwjsc2UKG1o/developing-mongodb-perspectives-using.html" title="Developing MongoDB Perspectives using Spring Roo" /><author><name>Findings</name><uri>http://www.blogger.com/profile/04256525103036208551</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://1.bp.blogspot.com/-cYdAR4HAT2w/TWqT4chjlPI/AAAAAAAAACQ/DlVKYiRZoA8/s220/Rooie.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-2VMYZdswi6A/T-5uYhLfwAI/AAAAAAAAAc4/zl2hsKmYxps/s72-c/geospatialGallery.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://pragmatikroo.blogspot.com/2012/06/developing-mongodb-perspectives-using.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEMAQHk6eCp7ImA9WhJTEk0.&quot;"><id>tag:blogger.com,1999:blog-2231293399010893563.post-5069972365269162152</id><published>2012-06-19T22:44:00.001-07:00</published><updated>2012-06-20T08:34:01.710-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-06-20T08:34:01.710-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Spring Roo" /><category scheme="http://www.blogger.com/atom/ns#" term="MongoDB" /><category scheme="http://www.blogger.com/atom/ns#" term="Spring Data" /><category scheme="http://www.blogger.com/atom/ns#" term="DataDoc" /><title>Spring Roo going forward...</title><content type="html">&lt;b&gt;Intro&lt;/b&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; This is a thread name in the Spring Roo Forum...&lt;br /&gt;
&lt;br /&gt;
As many of my blog posts, this one started by colleague Developers questions, interested in SR.&lt;br /&gt;
In other to get the whole context the about it; the Reader is referred to the actual thread located at &lt;a href="http://forum.springsource.org/showthread.php?127143-Spring-Roo-going-forward" target="_blank"&gt;http://forum.springsource.org/showthread.php?127143-Spring-Roo-going-forward&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
The thread is quite interesting and gave me the opportunity of making my points on what is needed for "going forward" with SR. BTW.&amp;nbsp; I post in the forum with the username delgad9.&lt;br /&gt;
&lt;br /&gt;
At one point, I made my proposals and the exchange with my fellow Developer stopped.&amp;nbsp; However another exchange started -motivated by the same Forum thread- behind the scene.&lt;br /&gt;
&lt;br /&gt;
Basically, the value of this second exchange; it&amp;nbsp; is the recognition of&amp;nbsp; the baseline of&amp;nbsp; real-world requirements that a Java Web Developer is expecting from SR for&amp;nbsp; considering it a successful development tool.&lt;br /&gt;
&lt;br /&gt;
I can't tell you "the laundry list" that was poured on me. Literally the kitchen sink of real-world requirements was thrown on this developer. I went through the list and I realize that I have done quite a few already; cool:). However, I got nervous about a particular requirement; that happens I never tried before. Not standalone and not with SR.&amp;nbsp; The requirement is to use SR together with MongoDB.&lt;br /&gt;
&lt;br /&gt;
Well, here I am after not really long time -literally few hours, introducing&amp;nbsp; a pure-breed-state-of-art-java-web-app-based-on-SR-and-MongoDB. &lt;br /&gt;
&lt;br /&gt;
Right now the app is using the Web MVC look and feel. However is totally CRUD functional* and is loaded with Mongo database with more than 300,000 records. Just to make sure the the grids are rendering with good performance. The&amp;nbsp; expectation/requirement is to dress the app up with a full-blown jQuery RIA UI. I think, I can handle this part of the referred list by leveraging the experience provided by creating the&amp;nbsp; Synergy add-on. For information about Synergy @ &lt;a href="http://pragmatikroo.blogspot.com/2011/11/spring-roo-totally-embracing-jquery.html" target="_blank"&gt;http://pragmatikroo.blogspot.com/2011/11/spring-roo-totally-embracing-jquery.html&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Gallery&lt;/b&gt;&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-tlvlXnKwVDE/T-FgGzpyDpI/AAAAAAAAAcY/1Tbgi6Q6XLc/s1600/MongoListView.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="118" src="http://2.bp.blogspot.com/-tlvlXnKwVDE/T-FgGzpyDpI/AAAAAAAAAcY/1Tbgi6Q6XLc/s320/MongoListView.png" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;MongoDB List View&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-oNrCj21mJRA/T-FgHbOcdLI/AAAAAAAAAcg/99SvWLpbJAc/s1600/mongoadminconsole.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="290" src="http://2.bp.blogspot.com/-oNrCj21mJRA/T-FgHbOcdLI/AAAAAAAAAcg/99SvWLpbJAc/s320/mongoadminconsole.png" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Mongo Admin Console&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;b&gt;Conclusion&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
This new project re-validates my believes about SR and really might show EVERYBODY watching WHAT IS REALLY MISSING.&amp;nbsp; Did you get it?&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;i&gt;&lt;u&gt;On the other hand; I invite my fellow Java Web Developers interested in the "SR going forward wave"&amp;nbsp; to write to me your comments and ideas on how to make SR more successful. &lt;/u&gt;&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Thank you and B. Roogards&lt;br /&gt;
jD&lt;br /&gt;
*Obviously, the app hasn't passed any QA effort at this point. It is just a foundational prototype for a potential second stage down the road.&lt;img src="http://feeds.feedburner.com/~r/JourneyIntoWebDevelopment/~4/N8YtEV2dCPY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pragmatikroo.blogspot.com/feeds/5069972365269162152/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2231293399010893563&amp;postID=5069972365269162152&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2231293399010893563/posts/default/5069972365269162152?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2231293399010893563/posts/default/5069972365269162152?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/JourneyIntoWebDevelopment/~3/N8YtEV2dCPY/spring-roo-going-forward.html" title="Spring Roo going forward..." /><author><name>Findings</name><uri>http://www.blogger.com/profile/04256525103036208551</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://1.bp.blogspot.com/-cYdAR4HAT2w/TWqT4chjlPI/AAAAAAAAACQ/DlVKYiRZoA8/s220/Rooie.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-tlvlXnKwVDE/T-FgGzpyDpI/AAAAAAAAAcY/1Tbgi6Q6XLc/s72-c/MongoListView.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://pragmatikroo.blogspot.com/2012/06/spring-roo-going-forward.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEMGQ3o6cCp7ImA9WhVbGU8.&quot;"><id>tag:blogger.com,1999:blog-2231293399010893563.post-7325304703719370922</id><published>2012-06-05T00:08:00.001-07:00</published><updated>2012-06-05T13:00:22.418-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-06-05T13:00:22.418-07:00</app:edited><title>Spring Roo: Visual Eip</title><content type="html">&lt;b&gt;Intro&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-zgIA9G8Wno4/T81Bon5QNVI/AAAAAAAAAZ0/P5ejEx90YNQ/s1600/TestBed.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="246" src="http://4.bp.blogspot.com/-zgIA9G8Wno4/T81Bon5QNVI/AAAAAAAAAZ0/P5ejEx90YNQ/s320/TestBed.png" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Fig #1. Show case EIP test bed.&lt;/td&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
Humans are visual animals...&lt;br /&gt;
This is why the possibility of creating a visual context for solutions for the Java Enterprise Ecosystem is&amp;nbsp; special important to me. In this blog, I&amp;nbsp; would like to introduce a solution for visualizing the dynamics&amp;nbsp; of&amp;nbsp; a Enterprise Integration Pattern (EIP) using Spring Integration and Spring Roo.&lt;br /&gt;
&lt;br /&gt;
Typically the examples and tutorials about EIP,&amp;nbsp; shown results&amp;nbsp; as a bunch of&amp;nbsp; logging outputs on console screens. Many times is this&amp;nbsp; really complicated to understand. On the other hand, by visualizing the interactions through the a EIP workflow you can really have a grasp of the components functionality and its purpose.&lt;br /&gt;
&lt;br /&gt;
The workflow shown above, fig #1, has an intentionally connection with a physical domain. It uses notions taken from Electrical Engineering and Electronics. I am using an Spring Integration EIP workflow for going through the dynamics of&amp;nbsp; generating-transforming-charting mathematical functions. The referred&amp;nbsp; mathematical functions are used as messages payloads flowing through the integration solution.&lt;br /&gt;
&lt;br /&gt;
The description of the integration is pretty simple:&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;A "signal generator" is enabled using an inbound-channel-adapter Spring Integration component. The solution is capable of remotely switching several functions&amp;nbsp; using a Spring Roo Web app.&lt;/li&gt;
&lt;li&gt;The signal generator is channeled with a publish-subscribe-channel component to a battery of transformers endpoints.&lt;/li&gt;
&lt;li&gt;Each transformer endpoint applies a&amp;nbsp; real-time linear math operation coming from the generator.&lt;/li&gt;
&lt;li&gt;A battery of service-activator components collect the transformed signals.&lt;/li&gt;
&lt;li&gt;Finally the web tier consolidates all the output signals and prepare them for JSON serialization.&lt;/li&gt;
&lt;li&gt;The Spring Roo UI renders a chart with all the signals coming out from the integration.&amp;nbsp;&lt;/li&gt;
&lt;/ol&gt;
The functions used as payload messages are the following:&lt;br /&gt;
&lt;br /&gt;
&lt;div style="margin-left: 200px;"&gt;
&lt;ol&gt;
&lt;li&gt;y = x&lt;/li&gt;
&lt;li&gt;y = x * x &lt;/li&gt;
&lt;li&gt;y = x * x * x&lt;/li&gt;
&lt;li&gt;y = sin( x )&lt;/li&gt;
&lt;li&gt;y = cos( x )&lt;/li&gt;
&lt;li&gt;y = sign( x )&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
The operations applied by the transformation components are:&lt;br /&gt;
&lt;div style="margin-left: 200px;"&gt;
&lt;ol&gt;
&lt;li&gt;Identity:&amp;nbsp; x = x&lt;/li&gt;
&lt;li&gt;Reflection: x = -x&lt;/li&gt;
&lt;li&gt;Doubled:&amp;nbsp; x = 2 * x&lt;/li&gt;
&lt;li&gt;Divided by 2: x = x/2 &lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
Following I'll show some screen shoots coming from the actual application. &lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Gallery&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: left;"&gt;
&lt;u&gt;&lt;i&gt;Sample signals coming out from the signal generator&lt;/i&gt;&lt;/u&gt;&lt;/div&gt;
&lt;table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-UhZI0gfLorQ/T82efd_X_hI/AAAAAAAAAaA/VzbmjmF8j-0/s1600/UiOne.png" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="134" src="http://3.bp.blogspot.com/-UhZI0gfLorQ/T82efd_X_hI/AAAAAAAAAaA/VzbmjmF8j-0/s200/UiOne.png" width="200" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Fig #2. Signal generator functions.&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-0dm9eZ5hxPc/T82ekijL3XI/AAAAAAAAAaI/FWHBj7FxLmE/s1600/UiCinco.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="131" src="http://4.bp.blogspot.com/-0dm9eZ5hxPc/T82ekijL3XI/AAAAAAAAAaI/FWHBj7FxLmE/s200/UiCinco.png" width="200" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Fig #3. Sample of&amp;nbsp; signal generator function: Sin( X ).&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-7ZsKaNzgQ2A/T82elxpu4II/AAAAAAAAAao/UA6PC-BM8zo/s1600/UiSiete.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="124" src="http://1.bp.blogspot.com/-7ZsKaNzgQ2A/T82elxpu4II/AAAAAAAAAao/UA6PC-BM8zo/s200/UiSiete.png" width="200" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Fig #4. Sample of signal generator function: Sign( X).&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-8MBtETqpxKQ/T82emRy9_8I/AAAAAAAAAaw/GFcx5FXJhhY/s1600/UiTres.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="133" src="http://2.bp.blogspot.com/-8MBtETqpxKQ/T82emRy9_8I/AAAAAAAAAaw/GFcx5FXJhhY/s200/UiTres.png" width="200" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;div style="text-align: left;"&gt;
Fig #5. Sample of signal generator function: X^2&lt;i&gt;&amp;nbsp;&lt;/i&gt;&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style="text-align: left;"&gt;
&lt;u&gt;&lt;i&gt;Pristine sample signals together with their reflected counterpart.&lt;/i&gt;&lt;/u&gt;&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-DItQlGqxDQk/T84m_uJrATI/AAAAAAAAAa8/NqNHrFMQB9Q/s1600/UiDiez.png" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="130" src="http://4.bp.blogspot.com/-DItQlGqxDQk/T84m_uJrATI/AAAAAAAAAa8/NqNHrFMQB9Q/s200/UiDiez.png" width="200" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Fig #6.&amp;nbsp; Original sin( x ) signal&amp;nbsp; and its reflection&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: right; margin-left: 1em; text-align: right;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-F9Jmy4csXXA/T84nAXoX3EI/AAAAAAAAAbE/8KF65Cad-KU/s1600/UiNueve.png" imageanchor="1" style="clear: right; margin-bottom: 1em; margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="131" src="http://2.bp.blogspot.com/-F9Jmy4csXXA/T84nAXoX3EI/AAAAAAAAAbE/8KF65Cad-KU/s200/UiNueve.png" width="200" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Fig #7.&amp;nbsp; Original cox( x ) signal&amp;nbsp; and its reflection&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-aitc4TXO8W8/T84nAtVepLI/AAAAAAAAAbM/AHgXVcePmfM/s1600/UiOcho.png" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="132" src="http://2.bp.blogspot.com/-aitc4TXO8W8/T84nAtVepLI/AAAAAAAAAbM/AHgXVcePmfM/s200/UiOcho.png" width="200" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Fig #8.&amp;nbsp; Original x^2&amp;nbsp; signal&amp;nbsp; and its reflection&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;&lt;u&gt;Original and all transformed signals rendered in the same chart&lt;/u&gt;&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-EI9d8nKX1cs/T85ixqMV4pI/AAAAAAAAAbY/ENJuefm60aQ/s1600/UiDoce.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="255" src="http://3.bp.blogspot.com/-EI9d8nKX1cs/T85ixqMV4pI/AAAAAAAAAbY/ENJuefm60aQ/s400/UiDoce.png" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Fig #9. All signum( x ) signals fanned out for charting together&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-yMWLStv_GqU/T85iyGwn98I/AAAAAAAAAbg/6CNgpy2x66c/s1600/UiOnce.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="260" src="http://2.bp.blogspot.com/-yMWLStv_GqU/T85iyGwn98I/AAAAAAAAAbg/6CNgpy2x66c/s400/UiOnce.png" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Fig #10. All sin( x ) signals fanned out for charting together&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-h-PQDBp2wts/T85iyfE89pI/AAAAAAAAAbo/co5ynt29XYI/s1600/UiTrece.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="260" src="http://4.bp.blogspot.com/-h-PQDBp2wts/T85iyfE89pI/AAAAAAAAAbo/co5ynt29XYI/s400/UiTrece.png" width="400" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Fig #11. All x^3 signals fanned out for charting together&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Conclusion&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
This&amp;nbsp; blog introduces a visual integration workflow for showing the behavior of&amp;nbsp; components in the Spring Integration framework. It uses simple mathematical functions as payload messages for transversing a transformational workflow.&lt;br /&gt;
&amp;nbsp;Currently an ad-hoc consolidation mechanism is used for combining&amp;nbsp; all the signals in the web tier prior to being responded and charted in the client UI. I believe this work should be better done by using the aggregator component; that I plan it&amp;nbsp; to use in a next iteration.&lt;br /&gt;
&lt;br /&gt;
Last but not least. The charts shown were easily created by using a powerful Javascript&amp;nbsp; library based on jQuery named jqPlot. I like the fact that jqPlot integrates very easy with Spring Roo.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;img src="http://feeds.feedburner.com/~r/JourneyIntoWebDevelopment/~4/JiwjFk5KARQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pragmatikroo.blogspot.com/feeds/7325304703719370922/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2231293399010893563&amp;postID=7325304703719370922&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2231293399010893563/posts/default/7325304703719370922?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2231293399010893563/posts/default/7325304703719370922?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/JourneyIntoWebDevelopment/~3/JiwjFk5KARQ/spring-roo-visual-eip.html" title="Spring Roo: Visual Eip" /><author><name>Findings</name><uri>http://www.blogger.com/profile/04256525103036208551</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://1.bp.blogspot.com/-cYdAR4HAT2w/TWqT4chjlPI/AAAAAAAAACQ/DlVKYiRZoA8/s220/Rooie.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-zgIA9G8Wno4/T81Bon5QNVI/AAAAAAAAAZ0/P5ejEx90YNQ/s72-c/TestBed.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://pragmatikroo.blogspot.com/2012/06/spring-roo-visual-eip.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUUHSH4-cSp7ImA9WhVVGUk.&quot;"><id>tag:blogger.com,1999:blog-2231293399010893563.post-5478542256100867647</id><published>2012-05-12T23:59:00.000-07:00</published><updated>2012-05-13T15:13:59.059-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-05-13T15:13:59.059-07:00</app:edited><title>Spring Roo: XML DetoX</title><content type="html">&lt;b&gt;Intro&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; I've been long enough working with the Java Programming language and web development to see the raise and fall of several technologies around it.&lt;br /&gt;
&lt;br /&gt;
I've been&amp;nbsp; in the raise and fall of Corba, the raise and fall of&amp;nbsp; EJB 1.0 to EJB 2.1. There are other technologies that have experienced same phenomenon too, but I would like to focus on what&amp;nbsp; I believe we are experiencing&amp;nbsp; right now: the fall&amp;nbsp; in the web container and application server arena of XML for configuration metadata.&lt;br /&gt;
&lt;br /&gt;
Raise and fall are only rhetorical descriptions of&amp;nbsp; different technology moments. A technology raised when at one point&amp;nbsp; became very hot and&amp;nbsp; got the attention of&amp;nbsp; the development community in a very intense way. The fall happened when&amp;nbsp; the technology is replaced, because it has shown several drawbacks that questioned its practice in first place.&lt;br /&gt;
&lt;br /&gt;
Prior to version 2.5,&amp;nbsp; XML was de facto&amp;nbsp; and de jure the only way for configuring a web application inside a web container with the Spring Framework. Same practice occurred with other popular Open Source technologies like Hibernate and J2EE.&lt;br /&gt;
&lt;br /&gt;
To stay aligned with the trends and&amp;nbsp; by using the new features enabled in the Spring Framework 3.X, I decided to replace the Spring Roo typical XML based Web MVC configuration for a XML-free based on Java configuration only. The cornerstone of the Java configuration is the @Configuration annotation introduced in version 3.0.&lt;br /&gt;
&lt;br /&gt;
Next, I show a mini plan that I used for converting an XML Spring Roo Web MVC web app into a XML-free configuration:&amp;nbsp; &lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;&amp;nbsp;Modify pom.xml file for including Servlet 3.0 api&lt;/li&gt;
&lt;li&gt;&amp;nbsp;Remove all filters and servlets in web.xml and rewrite them as @Bean methods&amp;nbsp; in @Configuration qualified class extended with WebMvcConfigurerAdapter.&lt;/li&gt;
&lt;li&gt;Replace all the functionality in webmvc-config.xml and applicationContext.xml&lt;/li&gt;
&lt;li&gt;Enable an entityManagerFactory bean XML-free so we can remove the persistence.xml file.&lt;/li&gt;
&lt;/ol&gt;
&lt;b&gt;Gallery&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style="margin-left: 40px;"&gt;
&amp;lt;?xml version="1.0"?&amp;gt;&lt;br /&gt;
&amp;lt;web-app xmlns="http://java.sun.com/xml/ns/javaee"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xsi:schemaLocation="http://java.sun.com/xml/ns/javaee web-app_3_0.xsd"&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; version="3.0"&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;
&amp;lt;/web-app&amp;gt;&lt;/div&gt;

&lt;center&gt;Fig 1. This is the actual content left of web.xml file, after moving the configuration to a Java-annotation based*.&lt;/center&gt;&lt;center&gt;&amp;nbsp;&lt;/center&gt;

&lt;b&gt;Conclusion&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
The standard practice for using XML for describing metadata for web applications configuration is quickly being replaced by annotations. Annotations has proven being&amp;nbsp; more effective&amp;nbsp; than XML for metadata descriptions.&amp;nbsp; XML ended to be extremely verbose and tedious. This blog article reports the steps used for reimplementing the typical Spring Roo Web MVC configuration -based on XML- with an equivalent based on annotations.&amp;nbsp; Enabled this configuration is fundamental for my next Spring Roo RnD work. &lt;br /&gt;
&lt;br /&gt;
B. Roogards&lt;br /&gt;
jD&lt;br /&gt;
&lt;br /&gt;
*You can remove this file too.&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/JourneyIntoWebDevelopment/~4/1Xgi_ZUbpNU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pragmatikroo.blogspot.com/feeds/5478542256100867647/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2231293399010893563&amp;postID=5478542256100867647&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2231293399010893563/posts/default/5478542256100867647?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2231293399010893563/posts/default/5478542256100867647?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/JourneyIntoWebDevelopment/~3/1Xgi_ZUbpNU/xml-detox.html" title="Spring Roo: XML DetoX" /><author><name>Findings</name><uri>http://www.blogger.com/profile/04256525103036208551</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://1.bp.blogspot.com/-cYdAR4HAT2w/TWqT4chjlPI/AAAAAAAAACQ/DlVKYiRZoA8/s220/Rooie.JPG" /></author><thr:total>0</thr:total><feedburner:origLink>http://pragmatikroo.blogspot.com/2012/05/xml-detox.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0AFR3k8cSp7ImA9WhVVEE0.&quot;"><id>tag:blogger.com,1999:blog-2231293399010893563.post-8309306909703532849</id><published>2012-05-02T17:22:00.000-07:00</published><updated>2012-05-02T17:41:56.779-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-05-02T17:41:56.779-07:00</app:edited><title>Spring Roo: Instrument This</title><content type="html">&lt;b&gt;Intro&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Java Web Development is hard...&lt;br /&gt;
Ideally you have to meet or exceed User's expectations, finish on time or sooner, create performant and reusable applications and help or make sure that your project budget doesn't get overruned.&lt;br /&gt;
&lt;br /&gt;
As a Java developer, I've tried&amp;nbsp; to live with these standards. I believe mostly to the effectiveness of the Java Programming language, I've been able to deliver Java Web applications or contribute to them in that way.&lt;br /&gt;
&lt;br /&gt;
Sometimes I've been involved&amp;nbsp; in fixing&amp;nbsp; projects&amp;nbsp; with deficiencies; e.g.&amp;nbsp; they are slow, throwing fatal exceptions, starving memory to the point of&amp;nbsp; resource exhaustion just to mention a few. And the thing is no one in the office knows how this happened. &lt;br /&gt;
&lt;br /&gt;
These projects are fascinating, indeed. You have to deal with thousands of&amp;nbsp; lines of code, that most of the time are undocumented, I don't think documentation would help at this point anyway. &lt;br /&gt;
&lt;br /&gt;
One of&amp;nbsp; the tools that always-always has helped me out on finding the culprit issue(s) is Java VisualVM (VVM). This is an awesome monitoring-profiling-debugging -to mention a some of it uses- tool. that is currently included in JDK 1.6. distribution!.&lt;br /&gt;
&lt;br /&gt;
As mentioned before, there are many facets about VVM.&amp;nbsp; Here, I want to bring to the Reader attention how easy is to use it -for monitoring purposes- on top of the&amp;nbsp; automatic CRUD code generated by Spring Roo. &lt;br /&gt;
&lt;br /&gt;
I'll use the well known Petclinic sample to show it.&lt;br /&gt;
&lt;br /&gt;
Let's say, that we are interested in knowing real time number of&amp;nbsp; records of a particular table in a Spring Roo Web app. In case of the Petclinic web app, we would like to know how many pets, vets, owner and visits are in the database. For the Pets entity just modify the code as shown.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: x-small;"&gt;package com.springsource.petclinic.web;&lt;br /&gt;&lt;br /&gt;@RequestMapping("/pets")&lt;br /&gt;@Controller&lt;br /&gt;@RooWebScaffold(path = "pets", formBackingObject = Pet.class)&lt;br /&gt;@RooWebFinder&lt;br /&gt;public class PetController {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public long getTotalOfPets(){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; return Pet.countPets();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Proceed the same way with the other entities. Next, stick the following declarative code into webmvc-config.xml file.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: x-small;"&gt;&amp;nbsp; &amp;lt;bean id="jmxViewer" class="org.springframework.jmx.export.MBeanExporter"&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;property name="beans"&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;map&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;entry key="bean:name=petControllerView" value-ref="petController"/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;entry key="bean:name=ownerControllerView" value-ref="ownerController"/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;entry key="bean:name=vetControllerView" value-ref="vetController"/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;entry key="bean:name=vistControllerView" value-ref="visitController"/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/map&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/property&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/bean&lt;/span&gt;&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Deploy the web app to tc Server using STS ide. Lunch the petclinic app and VVM. &lt;br /&gt;
&lt;br /&gt;
The screen in the gallery section is showing the # of records of the referred entities using VVM.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Gallery&lt;/b&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="http://2.bp.blogspot.com/-gYXdMw6eFcg/T6HOiUNU7MI/AAAAAAAAAZo/WFq2POzrOX0/s1600/vvm.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="193" src="http://2.bp.blogspot.com/-gYXdMw6eFcg/T6HOiUNU7MI/AAAAAAAAAZo/WFq2POzrOX0/s320/vvm.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;b&gt;Conclusion&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
This basic tutorial just scratches the surfaces of&amp;nbsp; the critical multifaceted topic of&amp;nbsp; Instrumentation. I promise to come back with more cases -of course with Spring Roo- in the near future.&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/JourneyIntoWebDevelopment/~4/5vxrHfUQIRc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pragmatikroo.blogspot.com/feeds/8309306909703532849/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2231293399010893563&amp;postID=8309306909703532849&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2231293399010893563/posts/default/8309306909703532849?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2231293399010893563/posts/default/8309306909703532849?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/JourneyIntoWebDevelopment/~3/5vxrHfUQIRc/spring-roo-instrument-this.html" title="Spring Roo: Instrument This" /><author><name>Findings</name><uri>http://www.blogger.com/profile/04256525103036208551</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://1.bp.blogspot.com/-cYdAR4HAT2w/TWqT4chjlPI/AAAAAAAAACQ/DlVKYiRZoA8/s220/Rooie.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-gYXdMw6eFcg/T6HOiUNU7MI/AAAAAAAAAZo/WFq2POzrOX0/s72-c/vvm.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://pragmatikroo.blogspot.com/2012/05/spring-roo-instrument-this.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkYCR3g_fCp7ImA9WhVQEEs.&quot;"><id>tag:blogger.com,1999:blog-2231293399010893563.post-5152694643078707324</id><published>2012-03-26T21:02:00.001-07:00</published><updated>2012-03-29T15:29:26.644-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-03-29T15:29:26.644-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Database composition" /><category scheme="http://www.blogger.com/atom/ns#" term="two database access configuratin" /><title>Database  Composition Web Apps</title><content type="html">&lt;b&gt;Intro&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
It started as most of my blog articles... with a question posted in the Spring Roo Forum. I like resolving questions coming from developer colleagues posted in the forum, since they represent&amp;nbsp; &lt;u&gt;real world&lt;/u&gt; development issues or problems to solve. Most of&amp;nbsp; the time they are very-very interesting to solve.&lt;br /&gt;
&lt;br /&gt;
I've been trying to &lt;b&gt;differentiate &lt;/b&gt;myself from other blog writers interested in Spring Roo in targeting problems &lt;u&gt;without &lt;/u&gt;or hard to find solution(s). The purpose is to complement the majority of&amp;nbsp; "getting started", "basic blog/tutorials" and&amp;nbsp; "books" currently available&amp;nbsp; with intermediate and advanced topics about it.&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;
This time the question posted is on&lt;b&gt; how to reverse engineer 2 mysql databases?&lt;/b&gt;. As the Roo developer knows, the tool comes with DBRE.&amp;nbsp; DBRE is a very convenient&amp;nbsp; DB reverse engineer tool. As it is incarnated it only supports the reverse engineering of one database&amp;nbsp; per web app. Which&amp;nbsp; is useful for the majority of&amp;nbsp; possible reverse engineering projects. With very exceptional situations when more than one db is required for being reversed at the same time. This is when this article pretends to be helpful.&lt;br /&gt;
&lt;br /&gt;
When I thought a little more about it; I believe the question is more valuable, if it is &lt;b&gt;positioned &lt;/b&gt;as on&amp;nbsp; how to do database-composition-web-apps using Spring Roo. I mean, the creation of&amp;nbsp; a web app,&amp;nbsp; using one or more databases.&lt;br /&gt;
&lt;br /&gt;
As this blog is showing it possible to create the referred applications by following these steps:&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;&amp;nbsp;Create two Roo projects and reverse a db per project.&lt;/li&gt;
&lt;li&gt;&amp;nbsp;Merge  relevant content: copy the entities files for one to the other. You can create a third project for merging them too.&lt;/li&gt;
&lt;li&gt;&amp;nbsp;Use my Two-Databases-Configuration* for accessing both dbs in the merged project. &amp;nbsp;&lt;b&gt;&amp;nbsp; &lt;/b&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;b&gt;&amp;nbsp;&lt;/b&gt;Instead of&amp;nbsp; reverse engineering&amp;nbsp; hypothetical databases -since not needing to be explained, this step is&amp;nbsp; straight&amp;nbsp; forward and well documented in the Spring Roo User Manual- I decided to skip it and use two sample projects coming with the Spring Roo distribution.&lt;br /&gt;
&lt;br /&gt;
In other words, I database-composed&amp;nbsp; Wedding with Vote samples projects using the steps shown above. &lt;i&gt;The final composed app does not make any sense at all&lt;/i&gt;!! but it is&amp;nbsp; totally&amp;nbsp; functional. It just for the purpose of&amp;nbsp; implementing the show case.&lt;br /&gt;
&lt;br /&gt;
Next, I show the Reader an screen shot from this very &lt;i&gt;&lt;b&gt;special &lt;/b&gt;&lt;/i&gt;Roo web app.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Gallery&lt;/b&gt;&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-IX_PaTcdF6Y/T3E7YhnV46I/AAAAAAAAAZg/L6e6YBF6Yi0/s1600/DbCompositionWebApp.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="123" src="http://2.bp.blogspot.com/-IX_PaTcdF6Y/T3E7YhnV46I/AAAAAAAAAZg/L6e6YBF6Yi0/s320/DbCompositionWebApp.png" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;View shows the final menu of the db composed web app&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Conclusion&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
This blog shows how to do database composition web applications using Spring Roo. It uses baseline only features of&amp;nbsp; the tool for accomplishing it.&lt;br /&gt;
&lt;br /&gt;
B. Roogards&lt;br /&gt;
jD&lt;br /&gt;
&lt;br /&gt;
*This is the link of&amp;nbsp; my referred article:&lt;a href="http://viralpatel.net/blogs/2011/01/spring-roo-two-database-configuration.html"&gt;Spring Roo: Two Databases Configuration&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/JourneyIntoWebDevelopment/~4/froaOF8N92s" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pragmatikroo.blogspot.com/feeds/5152694643078707324/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2231293399010893563&amp;postID=5152694643078707324&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2231293399010893563/posts/default/5152694643078707324?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2231293399010893563/posts/default/5152694643078707324?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/JourneyIntoWebDevelopment/~3/froaOF8N92s/database-compostion-web-app.html" title="Database  Composition Web Apps" /><author><name>Findings</name><uri>http://www.blogger.com/profile/04256525103036208551</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://1.bp.blogspot.com/-cYdAR4HAT2w/TWqT4chjlPI/AAAAAAAAACQ/DlVKYiRZoA8/s220/Rooie.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-IX_PaTcdF6Y/T3E7YhnV46I/AAAAAAAAAZg/L6e6YBF6Yi0/s72-c/DbCompositionWebApp.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://pragmatikroo.blogspot.com/2012/03/database-compostion-web-app.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DU4CRXw7fip7ImA9WhVTE00.&quot;"><id>tag:blogger.com,1999:blog-2231293399010893563.post-2814887311918096153</id><published>2012-02-25T11:55:00.000-07:00</published><updated>2012-02-26T18:59:24.206-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-26T18:59:24.206-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Neo4j" /><category scheme="http://www.blogger.com/atom/ns#" term="graph db" /><category scheme="http://www.blogger.com/atom/ns#" term="Cross Store" /><category scheme="http://www.blogger.com/atom/ns#" term="Blob issue" /><title>Fixing SQL with NOSQL</title><content type="html">&lt;b&gt;Intro&lt;/b&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp; There are some colleagues developers out there, struggling trying to make their legacy sql dbms to handle the way they want/need blob objects. For some reason blobs -which basically is just an array of bytes- are particularly complicated to work with on very popular-well-known- dbms. This issue got my attention and I wanted to do something about. Instead of dealing with it directly,&amp;nbsp; I want to give it a twist of&amp;nbsp; differentiation with&amp;nbsp; a "&lt;u&gt;work around&lt;/u&gt;" kind of solution.&amp;nbsp; Besides, I don't know what else I could try in addition of&amp;nbsp; the what the mentioned folks&amp;nbsp; have unsuccessfully &amp;nbsp; tried already and there are multiple SQL products showing the same issue. I want a generic solution that can be applied across to all SQL dbms.&lt;br /&gt;
&lt;br /&gt;
All right, this is my solution: To use an associated&amp;nbsp; NOSQL db for storing blob objects. In other words, to approach the legacy SQL blob issue with a &lt;b&gt;CROSS STORE&lt;/b&gt; solution!.&lt;br /&gt;
&lt;br /&gt;
The notion of cross storing a database is simple:&amp;nbsp; to partially save fields of a schema in multiple repositories. But for the application and more importantly the business it is the same unified database.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; There is a visionary NOSQL product that fits perfectly for implementing my approach: this product is Neo4j working in conjunction with Spring Data.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Neo4j provides an elegant -almost magic- way for enabling cross storing between a SQL product and a NOSQL db. In this case Neo4j Graph Database.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp; I would like to mention of what I consider few benefits of this&amp;nbsp; approach:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Generic. I can be applied to any legacy based application regardless the product name&lt;/li&gt;
&lt;li&gt;Extremely lightweight and none invasive&lt;/li&gt;
&lt;li&gt;Prepares legacy db for supporting social-media requirements&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; On the rest of the blog I will show some snapshots of a PoC for validating my point. I am using my Spring Roo Document Manager application referred at &lt;a href="http://pragmatikroo.blogspot.com/2011/10/spring-roo-document-manager-based-on.html" target="_blank"&gt;http://pragmatikroo.blogspot.com/2011/10/spring-roo-document-manager-based-on.html&lt;/a&gt; as a foundation for this cross storing implementation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Gallery&lt;/b&gt;&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-HHRqnB7cYtc/T0kiwVoMNII/AAAAAAAAAYw/W0dF0cUiGm0/s1600/DevelopersView.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="320" src="http://2.bp.blogspot.com/-HHRqnB7cYtc/T0kiwVoMNII/AAAAAAAAAYw/W0dF0cUiGm0/s320/DevelopersView.png" width="277" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Spring Roo Script&lt;/td&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-c4DRgZCdxhY/T0kjD2BXqmI/AAAAAAAAAZI/xEDK4ZGyybE/s1600/SQLView.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="118" src="http://3.bp.blogspot.com/-c4DRgZCdxhY/T0kjD2BXqmI/AAAAAAAAAZI/xEDK4ZGyybE/s320/SQLView.png" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Populated SQL DB View&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-W8EK47sWYXw/T0kjC215YmI/AAAAAAAAAY4/1mODnPNyhS0/s1600/ListView.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="163" src="http://1.bp.blogspot.com/-W8EK47sWYXw/T0kjC215YmI/AAAAAAAAAY4/1mODnPNyhS0/s320/ListView.png" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Populated List View&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-BOAmSrbPRm0/T0kjDFPwP7I/AAAAAAAAAZA/KR6-osWnBro/s1600/NOSQLView.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="320" src="http://3.bp.blogspot.com/-BOAmSrbPRm0/T0kjDFPwP7I/AAAAAAAAAZA/KR6-osWnBro/s320/NOSQLView.png" width="267" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;NOSQL view by Awesome! Neoclipse tool&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-0TuiwgK4-Ug/T0kjEdpcEQI/AAAAAAAAAZQ/zJD0hAKGJqo/s1600/ShowView.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="133" src="http://4.bp.blogspot.com/-0TuiwgK4-Ug/T0kjEdpcEQI/AAAAAAAAAZQ/zJD0hAKGJqo/s320/ShowView.png" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;Show View&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;b&gt;Conclusion&lt;/b&gt;&lt;br /&gt;
This&amp;nbsp; blog provides an approach for solving the weakness that some SQL implementation have for handling data-type BLOB objects using a cross store solution. &lt;br /&gt;
OK, what you think?,&amp;nbsp; I am interested in your opinion about this blog, so feedback is always welcome!&lt;br /&gt;
&lt;br /&gt;
B. Roogards&lt;br /&gt;
jD&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/JourneyIntoWebDevelopment/~4/ZBBUx5C1uXE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pragmatikroo.blogspot.com/feeds/2814887311918096153/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2231293399010893563&amp;postID=2814887311918096153&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2231293399010893563/posts/default/2814887311918096153?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2231293399010893563/posts/default/2814887311918096153?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/JourneyIntoWebDevelopment/~3/ZBBUx5C1uXE/fixing-sql-with-nosql.html" title="Fixing SQL with NOSQL" /><author><name>Findings</name><uri>http://www.blogger.com/profile/04256525103036208551</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://1.bp.blogspot.com/-cYdAR4HAT2w/TWqT4chjlPI/AAAAAAAAACQ/DlVKYiRZoA8/s220/Rooie.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-HHRqnB7cYtc/T0kiwVoMNII/AAAAAAAAAYw/W0dF0cUiGm0/s72-c/DevelopersView.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://pragmatikroo.blogspot.com/2012/02/fixing-sql-with-nosql.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0ANQ34_fCp7ImA9WhRUFE0.&quot;"><id>tag:blogger.com,1999:blog-2231293399010893563.post-1476462075638476704</id><published>2012-01-23T11:37:00.011-07:00</published><updated>2012-01-24T03:43:12.044-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-24T03:43:12.044-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Spring Roo charts" /><category scheme="http://www.blogger.com/atom/ns#" term="Spring Roo RIA" /><category scheme="http://www.blogger.com/atom/ns#" term="Spring Roo grids" /><category scheme="http://www.blogger.com/atom/ns#" term="Jose Delgado Spring Roo" /><title>Pivoting Tables using JPA</title><content type="html">&lt;style&gt;
 .center{ text-align: center ;}
&lt;/style&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-BGLs3vBjdeM/Tx2SbE8LPZI/AAAAAAAAAYc/Rso8dimI2ys/s1600/GnCMain.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="180" width="320" src="http://3.bp.blogspot.com/-BGLs3vBjdeM/Tx2SbE8LPZI/AAAAAAAAAYc/Rso8dimI2ys/s320/GnCMain.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;center&gt;Grid &amp; Charts Main View&lt;/center&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Intro&lt;/b&gt;&lt;br /&gt;
&lt;p&gt;I decided to implement &lt;b&gt;Grid &amp; Charts by jD&lt;/b&gt; (GnC) as a show case for the Spring Roo Flex add-on a year ago. I wanted to create a web application showing the magnificent RIA capabilities provided by the Flex technology  working in conjunction with a leader Java Web technology framework: the Spring framework and its RAD tool; Spring Roo.&lt;br /&gt;
&lt;/p&gt;&lt;p&gt;Grids and Charts are UI elements used on web apps with very high data rendering and presentation  richness expectation. Examples of such web apps are: Sales and marketing dashboards, Stocks market and reporting to mention only a few. GnC uses public data provided by the United Nations Statistics Division (UNSD); that implements dynamic views for the following Country indexes:&lt;/p&gt;&lt;table style="margin-left:100px;" border="1"&gt;&lt;tr&gt;&lt;th class="center"&gt;Global Economic Index&lt;/th&gt;&lt;th&gt;# Records in table&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;GDP at current prices (per capita)- US dollars&lt;/td&gt;&lt;td class="center"&gt;8712&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;GDP growth (annual %)&lt;/td&gt;&lt;td class="center"&gt;8418&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Public expenditure on education as % of GDP&lt;/td&gt;&lt;td class="center"&gt;1138&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Inflation, GDP deflator (annual %)&lt;/td&gt;&lt;td class="center"&gt;8071&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Cash surplus/deficit (% of GDP)&lt;/td&gt;&lt;td class="center"&gt;1633&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Military expenditure (% of GDP)&lt;/td&gt;&lt;td class="center"&gt;3494&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Exports of goods and services (% of GDP)&lt;/td&gt;&lt;td class="center"&gt;7786&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Imports of goods and services (% of GDP)&lt;/td&gt;&lt;td class="center"&gt;7616&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Carbon dioxide emissions (CO2, kg CO2 per $1 GDP) &lt;/td&gt;&lt;td class="center"&gt;691&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;&lt;br /&gt;
&lt;p&gt;The Reader can visit GnC at &lt;a href="http://75.127.101.146/gnc/gnc-debug/gnc.html"&gt;link here&lt;/a&gt;. Click on the Analytics button on the per-year index page for rendering pivot table view.&lt;/p&gt;&lt;br /&gt;
&lt;b&gt;Pivoting tables. Implementation details&lt;/b&gt;&lt;br /&gt;
&lt;p&gt;I added an &lt;i&gt;Analytics &lt;/i&gt;View to GnC web app. Basically I wanted to render a Counties vs. Year navigational grid view for a particular index. In order to provide the referred view, I have to &lt;b&gt;pivot &lt;i&gt;&lt;/i&gt;&lt;/b&gt;the table since the original structure is like this: &lt;/p&gt;&lt;p style="margin-left:100px;"&gt;CREATE TABLE IF NOT EXISTS `gdp` (&lt;br /&gt;
`id` bigint(20) NOT NULL AUTO_INCREMENT,&lt;br /&gt;
`Country` varchar(30) DEFAULT NULL,&lt;br /&gt;
`Year` varchar(30) DEFAULT NULL,&lt;br /&gt;
`Item` varchar(30) DEFAULT NULL,&lt;br /&gt;
`Value` float DEFAULT NULL,&lt;br /&gt;
`version` int(11) DEFAULT NULL,&lt;br /&gt;
PRIMARY KEY (`id`)&lt;br /&gt;
) ENGINE=InnoDB DEFAULT CHARSET=latin1;&lt;br /&gt;
&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;JPA does not provide a method for pivoting tables directly. However it provides all the elements for easily and quickly pivot them. Following I am showing the steps for creating a pivoted table using JPA:&lt;/p&gt;&lt;br /&gt;
&lt;ul style="margin-left:100px;margin-top:-30px;"&gt;&lt;li&gt;Created a class that generates SQL code for aggregating and index per year and grouped by country. Below a generated sql statement is show as an example.&lt;/li&gt;
&lt;li&gt;Populated of entities on execution of point referred before&lt;/li&gt;
&lt;li&gt;Returned pivoted result set based on page parameters&lt;/li&gt;
&lt;/ul&gt;&lt;p style="margin-left:100px;"&gt;select id, country,&lt;br /&gt;
sum( if(year='1970',round(value,2), null)) as  'y1970',&lt;br /&gt;
sum( if(year='1971',round(value,2), null)) as  'y1971',&lt;br /&gt;
sum( if(year='1972',round(value,2), null)) as  'y1972',&lt;br /&gt;
sum( if(year='1973',round(value,2), null)) as  'y1973',&lt;br /&gt;
sum( if(year='1974',round(value,2), null)) as  'y1974',&lt;br /&gt;
sum( if(year='1975',round(value,2), null)) as  'y1975',&lt;br /&gt;
sum( if(year='1976',round(value,2), null)) as  'y1976',&lt;br /&gt;
sum( if(year='1977',round(value,2), null)) as  'y1977',&lt;br /&gt;
sum( if(year='1978',round(value,2), null)) as  'y1978',&lt;br /&gt;
sum( if(year='1979',round(value,2), null)) as  'y1979',&lt;br /&gt;
sum( if(year='1980',round(value,2), null)) as  'y1980',&lt;br /&gt;
sum( if(year='1981',round(value,2), null)) as  'y1981',&lt;br /&gt;
sum( if(year='1982',round(value,2), null)) as  'y1982',&lt;br /&gt;
sum( if(year='1983',round(value,2), null)) as  'y1983',&lt;br /&gt;
sum( if(year='1984',round(value,2), null)) as  'y1984',&lt;br /&gt;
sum( if(year='1985',round(value,2), null)) as  'y1985',&lt;br /&gt;
sum( if(year='1986',round(value,2), null)) as  'y1986',&lt;br /&gt;
sum( if(year='1987',round(value,2), null)) as  'y1987',&lt;br /&gt;
sum( if(year='1988',round(value,2), null)) as  'y1988',&lt;br /&gt;
sum( if(year='1989',round(value,2), null)) as  'y1989',&lt;br /&gt;
sum( if(year='1990',round(value,2), null)) as  'y1990',&lt;br /&gt;
sum( if(year='1991',round(value,2), null)) as  'y1991',&lt;br /&gt;
sum( if(year='1992',round(value,2), null)) as  'y1992',&lt;br /&gt;
sum( if(year='1993',round(value,2), null)) as  'y1993',&lt;br /&gt;
sum( if(year='1994',round(value,2), null)) as  'y1994',&lt;br /&gt;
sum( if(year='1995',round(value,2), null)) as  'y1995',&lt;br /&gt;
sum( if(year='1996',round(value,2), null)) as  'y1996',&lt;br /&gt;
sum( if(year='1997',round(value,2), null)) as  'y1997',&lt;br /&gt;
sum( if(year='1998',round(value,2), null)) as  'y1998',&lt;br /&gt;
sum( if(year='1999',round(value,2), null)) as  'y1999',&lt;br /&gt;
sum( if(year='2000',round(value,2), null)) as  'y2000',&lt;br /&gt;
sum( if(year='2001',round(value,2), null)) as  'y2001',&lt;br /&gt;
sum( if(year='2002',round(value,2), null)) as  'y2002',&lt;br /&gt;
sum( if(year='2003',round(value,2), null)) as  'y2003',&lt;br /&gt;
sum( if(year='2004',round(value,2), null)) as  'y2004',&lt;br /&gt;
sum( if(year='2005',round(value,2), null)) as  'y2005',&lt;br /&gt;
sum( if(year='2006',round(value,2), null)) as  'y2006',&lt;br /&gt;
sum( if(year='2007',round(value,2), null)) as  'y2007',&lt;br /&gt;
sum( if(year='2008',round(value,2), null)) as  'y2008'&lt;br /&gt;
from gdp group by country&lt;br /&gt;
order by country&lt;br /&gt;
&lt;/p&gt;&lt;center&gt;Automatic generated code for pivoting the GDP table&lt;/center&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-scJfjn237sU/Tx2vaPYDTmI/AAAAAAAAAYo/UuHJHkdsLxM/s1600/Pivoted.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="194" width="320" src="http://3.bp.blogspot.com/-scJfjn237sU/Tx2vaPYDTmI/AAAAAAAAAYo/UuHJHkdsLxM/s320/Pivoted.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;center&gt;GNP View (Pivoted GNP table)&lt;/center&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Conclusion&lt;/b&gt;&lt;br /&gt;
&lt;p&gt;This blog shows an implementation for pivot tables using JPA. I am leaving for a another time the creation of the pivoted entities classes programatically. Right now I entered them manually.  I have the intention of recreating GnC replacing Flex with jQuery in the near future. So, stated tuned to this blog in cases of interested on the topic&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Thank you for reading&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/JourneyIntoWebDevelopment/~4/InFn7JOO1CY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pragmatikroo.blogspot.com/feeds/1476462075638476704/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2231293399010893563&amp;postID=1476462075638476704&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2231293399010893563/posts/default/1476462075638476704?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2231293399010893563/posts/default/1476462075638476704?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/JourneyIntoWebDevelopment/~3/InFn7JOO1CY/pivoting-tables-using-jpa.html" title="&lt;center&gt;Pivoting Tables using JPA&lt;/center&gt;" /><author><name>Findings</name><uri>http://www.blogger.com/profile/04256525103036208551</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://1.bp.blogspot.com/-cYdAR4HAT2w/TWqT4chjlPI/AAAAAAAAACQ/DlVKYiRZoA8/s220/Rooie.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-BGLs3vBjdeM/Tx2SbE8LPZI/AAAAAAAAAYc/Rso8dimI2ys/s72-c/GnCMain.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://pragmatikroo.blogspot.com/2012/01/pivoting-tables-using-jpa.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C04NQnszcSp7ImA9WhRVGEg.&quot;"><id>tag:blogger.com,1999:blog-2231293399010893563.post-9172668513490400564</id><published>2012-01-12T16:00:00.005-07:00</published><updated>2012-01-17T18:59:53.589-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-17T18:59:53.589-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Spring Roo" /><category scheme="http://www.blogger.com/atom/ns#" term="Play framework" /><title>The Play Framework: First Impressions</title><content type="html">&lt;b&gt;Intro&lt;/b&gt;&lt;br /&gt;
&lt;p&gt;Recently the Play framework (PF) has been mentioned in the Spring Roo forum as a better web development framework/tool to Spring/Spring Roo. So, I decided to do some &lt;b&gt;"Findings work"&lt;/b&gt; looking to learn what PF is bringing to the Java Web Development table.&lt;/p&gt;&lt;b&gt;Initial Discoveries&lt;/b&gt;&lt;br /&gt;
&lt;p&gt;From the architectural point of view PF is just another incarnation of the MVC pattern. PF is Java framework but it seems that it uses Scala as well -which by the way, is another Java programming derivative too- specialized  on Web development targeting RESTful architectures.&lt;/p&gt;&lt;p&gt;PF considers itself as a "clean alternative to bloated enterprise Java stack" and brings its own implementations for replacing traditional J2EE and JEE web apis. A very important differentiator is that PF is not using The Java Servlet API. PF instead implements is own web server container.&lt;/p&gt;&lt;p&gt;I wanted to review the jar files used PF and downloaded it. The following group of jars files a part of PF distribution:.&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-WyNo-dkOEC0/Twrf-ABlg4I/AAAAAAAAAYQ/xDGEh2asHGY/s1600/playlib.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="144" width="320" src="http://2.bp.blogspot.com/-WyNo-dkOEC0/Twrf-ABlg4I/AAAAAAAAAYQ/xDGEh2asHGY/s320/playlib.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;The Reader can see that basically PF is using pretty much the same jars that other &lt;i&gt;bloated &lt;/i&gt;Java based MVC are using. An interesting point is that fact that the "geronimo-servlet_2.5_spec-1.2.jar" -which is the servlet framework- is included in the directory, since PF allow to deploy to regular Java web servers.&lt;/p&gt;&lt;p&gt;The RESTful approach does not allow keeping state on the server side. So the session state is kept using an encrypted cookie on the client side. There are situations when the state must be stored on the server side for those cases, PF uses memcached framework, an open source object caching system&lt;/p&gt;&lt;b&gt;Tools and Development Cycle&lt;/b&gt;&lt;br /&gt;
&lt;p&gt;PF uses a Python based shell for development. Nothing more than a text editor is required for entering code. The shell provides typical commands for creating, executing, deploying, etc&lt;/p&gt;&lt;p&gt;After creating a new app -which requires just one command line- the new application is ready for deploying and executing. The developer enters code using the mentioned editor and the PF web server automatically complies the new code. The changes done appears almost instantly reflected by refreshing the page under development.&lt;/p&gt;&lt;b&gt;Server-Side Development&lt;/b&gt;&lt;br /&gt;
&lt;p&gt;PF pretty much uses popular Java persistence APIs, like JPA and Hibernate. It includes is own module for supporting CRUD type of implementations.&lt;/p&gt;&lt;b&gt;Client-Side Development&lt;/b&gt;&lt;br /&gt;
&lt;p&gt;PF has totally embrace jQuery as a driving force on the client side, together with JSON. These two pieces of technology offer a modern, lightweight, Web 2.0, RIA effective web development&lt;/p&gt;&lt;b&gt;Preliminary Conclusions&lt;/b&gt;&lt;br /&gt;
&lt;p&gt;These are a lot of  features of PF that I like;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;It brings is a refreshing pragmatic approach to the Java Web Development&lt;/li&gt;
&lt;li&gt;Embraces RESTful approach as main stage technology&lt;/li&gt;
&lt;li&gt;Elegant and simple client side development 100% jQuery. I am very glad that finally someone in the Java Web frameworks/tools development world is leveraging jQuery. I noticed that jQuery would have a tremendous impact on UI development, regardless the platform. I wrote about it and published a blog here &lt;a href="http://pragmatikroo.blogspot.com/2011/02/jsp-is-dead-long-live-jquery.html"&gt;Jsp is Dead. Long live jQuery&lt;/a&gt;. At the same time, I did R&amp;D that culminated on the creation of SYNERGY: an add-on for enabling jQuery into WEB MVC for  Spring Roo. For more info on Syngery please visit here &lt;a href="http://pragmatikroo.blogspot.com/2011/11/synergy-effective-java-web-development.html"&gt;Synergy: An Effective Java Web Development Approach &lt;/a&gt;&lt;/li&gt;
&lt;li&gt;The interactivity and instant feedback writing code is very effective and fun&lt;/li&gt;
&lt;/ul&gt;&lt;/p&gt;&lt;p&gt;But the Devil is in the details. There are bunch of things that I would like to investigate on PF, before closing on final conclusions.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;PF uses Reflection a lot. Inherently heavy weight Reflection, could be a performance issue for enterprise web apps.&lt;/li&gt;
&lt;li&gt;Keeping the state on the client size, open issues that need to be investigated on performance and security to mention a few only.&lt;/li&gt;
&lt;li&gt;PF depends totally on Developer "muscle" and a "text editor" for entering code. This could be an issue for some developers so used to  fancy IDEs.&lt;/li&gt;
&lt;li&gt;Deployment and performance on typical  web server or J2EE/JEE app server requires characterization.&lt;/li&gt;
&lt;li&gt;I think PF brings innovation to the Java Web Development not because implements MVC again, but because allows a very interactive way of web development.&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;p&gt;The Play Framework!... Simple but not Simpler. I believe is for Real!&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/JourneyIntoWebDevelopment/~4/N2eeSxaShiI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pragmatikroo.blogspot.com/feeds/9172668513490400564/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2231293399010893563&amp;postID=9172668513490400564&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2231293399010893563/posts/default/9172668513490400564?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2231293399010893563/posts/default/9172668513490400564?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/JourneyIntoWebDevelopment/~3/N2eeSxaShiI/play-framework-first-impressions.html" title="The Play Framework: First Impressions" /><author><name>Findings</name><uri>http://www.blogger.com/profile/04256525103036208551</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://1.bp.blogspot.com/-cYdAR4HAT2w/TWqT4chjlPI/AAAAAAAAACQ/DlVKYiRZoA8/s220/Rooie.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-WyNo-dkOEC0/Twrf-ABlg4I/AAAAAAAAAYQ/xDGEh2asHGY/s72-c/playlib.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://pragmatikroo.blogspot.com/2012/01/play-framework-first-impressions.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A08FSXg4fyp7ImA9WhJWEkg.&quot;"><id>tag:blogger.com,1999:blog-2231293399010893563.post-8092144544969592265</id><published>2011-12-13T10:01:00.008-07:00</published><updated>2012-08-17T20:16:58.637-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-08-17T20:16:58.637-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="YouTube Spring Roo Tutorials" /><category scheme="http://www.blogger.com/atom/ns#" term="Spring Roo beyond crud" /><category scheme="http://www.blogger.com/atom/ns#" term="Spring Roo live demos" /><title>Beyond CRUD: jD Spring Roo Articles, Videos and Live Demos</title><content type="html">&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-iovIRTmsRW4/TueHxieKa-I/AAAAAAAAAYE/tAjaOBioOXI/s1600/arizonaforOther.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img border="0" height="226" src="http://2.bp.blogspot.com/-iovIRTmsRW4/TueHxieKa-I/AAAAAAAAAYE/tAjaOBioOXI/s320/arizonaforOther.png" width="320" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;span style="font-size: large;"&gt;New links included as 5/5/2012!&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;ul style="margin-left: 80px;"&gt;
&lt;li&gt;&lt;a href="http://viralpatel.net/blogs/2011/02/spring-roo-customizing-web-mvc-ui-forms.html"&gt;Customizing Web MVC UI Forms&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&amp;nbsp;How to implement Master/Detail Forms&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://viralpatel.net/blogs/2011/01/spring-roo-implement-masterdetail-forms.html"&gt;Viral Patel&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://cloudcomputingresourcecenter.com/how-to-implement-master-detail-forms-using-spring-roo"&gt;Cloud Computing Resource Center&lt;/a&gt;c &lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;&amp;nbsp;Saving/Retreving BLOB object in Spring Roo aka. FileUpload&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://viralpatel.net/blogs/2011/02/spring-roo-save-read-blob-object-spring-roo-tutorial.html"&gt;Viral Patel&lt;/a&gt;&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;Two Databases Configuration&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;&amp;nbsp;&lt;a href="http://viralpatel.net/blogs/2011/01/spring-roo-two-database-configuration.html"&gt;Viral Patel&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://jboss.resourcezen.com/spring-roo-two-databases-configuration"&gt;JBoss Resource Center&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/JourneyIntoWebDevelopment/~4/zilqOZt4frc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pragmatikroo.blogspot.com/feeds/8092144544969592265/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2231293399010893563&amp;postID=8092144544969592265&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2231293399010893563/posts/default/8092144544969592265?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2231293399010893563/posts/default/8092144544969592265?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/JourneyIntoWebDevelopment/~3/zilqOZt4frc/other-jd-spring-roo-articles-and-live.html" title="Beyond CRUD: jD Spring Roo Articles, Videos and Live Demos" /><author><name>Findings</name><uri>http://www.blogger.com/profile/04256525103036208551</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://1.bp.blogspot.com/-cYdAR4HAT2w/TWqT4chjlPI/AAAAAAAAACQ/DlVKYiRZoA8/s220/Rooie.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-iovIRTmsRW4/TueHxieKa-I/AAAAAAAAAYE/tAjaOBioOXI/s72-c/arizonaforOther.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://pragmatikroo.blogspot.com/2011/12/other-jd-spring-roo-articles-and-live.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEIDQHs9cCp7ImA9WhRQEEs.&quot;"><id>tag:blogger.com,1999:blog-2231293399010893563.post-6944972692090552431</id><published>2011-12-03T15:01:00.000-07:00</published><updated>2011-12-04T22:22:51.568-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-04T22:22:51.568-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Spring Roo and jQuery" /><category scheme="http://www.blogger.com/atom/ns#" term="wijmo" /><category scheme="http://www.blogger.com/atom/ns#" term="jQuery frameworks" /><title>Synergy: Unlimited RIA</title><content type="html">&lt;b&gt;Intro&lt;/b&gt;&lt;br /&gt;
&lt;p&gt;Built using Spring Roo great foundation. Synergy -currently under development- is the add-on that turns a Roo WEB MVC app into a RIA jQuery based. Synergy is lightweight, totally non-invasive and integrates with many of the most relevant jQuery frameworks available these days.&lt;/p&gt;&lt;p&gt;Precisely, this blog reports the integration -into SR- of another really-great jQuery-based widgets library: &lt;i&gt;Wijmo for the Web&lt;/i&gt;. Visit Wijmo website at &lt;a href="http://wijmo.com"&gt;Wijmo here&lt;/a&gt;. Wijmo is a complete kit of over 30 UI widgets with everything from interactive menus to rich charts. Wijmo operates with two type of licenses based on the product-type. Again for details on it, visit their website.&lt;/p&gt;&lt;p&gt;I think, Wijmo is really an outstanding product. It is an elegant and concise widget library that uses the latest and greatest of jQuery technology.&lt;/p&gt;&lt;p&gt;Now with Wijmo in its "belt", this the list of jQuery libraries and frameworks that Synergy integrates with:&lt;/p&gt;&lt;ul style="margin-left: 100px;"&gt;&lt;li&gt;Wijmo for the Web&lt;/li&gt;
&lt;li&gt;Kendo UI&lt;/li&gt;
&lt;li&gt;jQuery UI&lt;/li&gt;
&lt;li&gt;jqGrid&lt;/li&gt;
&lt;li&gt;jQuery Mobile&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Next, I am showing screen shots of Pet clinic web app using Synergy-Wijmo on different browsers. I think you are going to like them:&lt;/p&gt;&lt;b&gt;Gallery&lt;/b&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-aTonomej9os/TtqQduLCNJI/AAAAAAAAAUM/C4Wz6XNinPM/s1600/opera.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="308" width="320" src="http://1.bp.blogspot.com/-aTonomej9os/TtqQduLCNJI/AAAAAAAAAUM/C4Wz6XNinPM/s320/opera.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;center&gt;Synergy on Opera&lt;/center&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-cwKq5DY8cew/TtqQk7mBV6I/AAAAAAAAAUY/fdRwY0entfM/s1600/chome.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="312" width="320" src="http://1.bp.blogspot.com/-cwKq5DY8cew/TtqQk7mBV6I/AAAAAAAAAUY/fdRwY0entfM/s320/chome.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;center&gt;Synergy on Chrome&lt;/center&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-XkTMjS33XGQ/TtqQ0zmZc3I/AAAAAAAAAUk/JFO1wHWZNUA/s1600/IE.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="312" width="320" src="http://1.bp.blogspot.com/-XkTMjS33XGQ/TtqQ0zmZc3I/AAAAAAAAAUk/JFO1wHWZNUA/s320/IE.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;center&gt;Synergy on IE9&lt;/center&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-ams7v1rchMc/TtqQ9arqtbI/AAAAAAAAAUw/ZQREi3DXqTc/s1600/firefox.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="313" width="320" src="http://4.bp.blogspot.com/-ams7v1rchMc/TtqQ9arqtbI/AAAAAAAAAUw/ZQREi3DXqTc/s320/firefox.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;center&gt;Synergy on FireFox&lt;/center&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-38v3L2SGmEM/TtqRBykiFBI/AAAAAAAAAU8/VSlETUWs9gQ/s1600/safari.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="315" width="320" src="http://2.bp.blogspot.com/-38v3L2SGmEM/TtqRBykiFBI/AAAAAAAAAU8/VSlETUWs9gQ/s320/safari.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;center&gt;Synergy on Safari&lt;/center&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Conclusion&lt;/b&gt;&lt;br /&gt;
&lt;p&gt;I can't believe it... every time I finish something on jQuery and raise my head. There is something new that gets my attention and want/need to integrate it to SR. All right, just line them up. I am going for all!&lt;/p&gt;&lt;br /&gt;
B. Unlimited jQuery-RIA Roograds&lt;br /&gt;
jD&lt;img src="http://feeds.feedburner.com/~r/JourneyIntoWebDevelopment/~4/02Z7lSrd58A" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pragmatikroo.blogspot.com/feeds/6944972692090552431/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2231293399010893563&amp;postID=6944972692090552431&amp;isPopup=true" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2231293399010893563/posts/default/6944972692090552431?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2231293399010893563/posts/default/6944972692090552431?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/JourneyIntoWebDevelopment/~3/02Z7lSrd58A/synergy-unlimited-ria.html" title="Synergy: Unlimited RIA" /><author><name>Findings</name><uri>http://www.blogger.com/profile/04256525103036208551</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://1.bp.blogspot.com/-cYdAR4HAT2w/TWqT4chjlPI/AAAAAAAAACQ/DlVKYiRZoA8/s220/Rooie.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-aTonomej9os/TtqQduLCNJI/AAAAAAAAAUM/C4Wz6XNinPM/s72-c/opera.png" height="72" width="72" /><thr:total>4</thr:total><feedburner:origLink>http://pragmatikroo.blogspot.com/2011/12/synergy-unlimited-ria.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUUMSXk_eSp7ImA9WhRRE0w.&quot;"><id>tag:blogger.com,1999:blog-2231293399010893563.post-4799849222442866919</id><published>2011-11-24T22:46:00.000-07:00</published><updated>2011-11-26T07:21:28.741-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-26T07:21:28.741-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="JQuery" /><category scheme="http://www.blogger.com/atom/ns#" term="Sping Roo addon" /><category scheme="http://www.blogger.com/atom/ns#" term="jQuery Roo addon" /><category scheme="http://www.blogger.com/atom/ns#" term="jQuery and Spring Roo development" /><category scheme="http://www.blogger.com/atom/ns#" term="Kendo UI" /><title>Spring Roo: Totally Embracing the jQuery World</title><content type="html">&lt;b&gt;Intro&lt;/b&gt;&lt;br /&gt;
&lt;p&gt;A good way of verifying how popular is anything these days... the same is for a rock star or a technology. It is to look the number of tweets the topic is getting per unit of time. The rate at what jQuery is getting tweets is impressive!. This is just a reflex of how successfully jQuery has conquered the heart and minds of the web development community. I mean the web development community across many platforms.&lt;/p&gt;&lt;p&gt;While working on the integration of jqGrid -a powerful jQuery grid component- into &lt;b&gt;Synergy&lt;/b&gt; -Synergy is a Spring Roo add-on for turning Spring Roo WEB MVC into RIA jQuery based-, I wanted to verify whether or not my implementation/programming decisions made so far, would allow to smoothly  integrate other jQuery components or libraries, down the road.&lt;/p&gt;&lt;p&gt;This is when, Kendo UI got my attention. Kendo is not just one jQuery component... it is a complete framework that includes a very-very nice suite of widgets. Kendo UI is &lt;b&gt;a commercial product&lt;/b&gt; that comes with a license agreement. For more information visit Kendo UI website at &lt;a href="http://www.kendoui.com/"&gt;Kendo UI&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;It was easy to retrofit my previous integrations to work with Kendo UI. Next is the list of jQuery libraries/components, Synergy integrates with:&lt;/p&gt;&lt;br /&gt;
&lt;ul style="margin-left: 100px;"&gt;&lt;li&gt;Kendo UI&lt;/li&gt;
&lt;li&gt;jQuery UI&lt;/li&gt;
&lt;li&gt;jqGrid&lt;/li&gt;
&lt;li&gt;jQuery Mobile&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;p&gt;Screen shoots of a Spring Roo web app using the Kendo UI integration are shown below:&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Gallery&lt;/b&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-Qd4Ek_b6TUA/Ts-eoc7_o2I/AAAAAAAAAUA/x85_ZShdQ5s/s1600/VertOne.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="217" width="320" src="http://2.bp.blogspot.com/-Qd4Ek_b6TUA/Ts-eoc7_o2I/AAAAAAAAAUA/x85_ZShdQ5s/s320/VertOne.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;center&gt;Kendo UI menu-accordion in action&lt;/center&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-tN9rH0W3Mqk/Ts8Ykx1Bh1I/AAAAAAAAATc/rHLm6Tybvac/s1600/VertTwo.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="270" width="320" src="http://2.bp.blogspot.com/-tN9rH0W3Mqk/Ts8Ykx1Bh1I/AAAAAAAAATc/rHLm6Tybvac/s320/VertTwo.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;center&gt;Kendo UI grid in action&lt;/center&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-f2AU3RG6yOU/Ts8YoARLypI/AAAAAAAAATo/6PoVWTsztvU/s1600/VertThree.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="198" width="320" src="http://1.bp.blogspot.com/-f2AU3RG6yOU/Ts8YoARLypI/AAAAAAAAATo/6PoVWTsztvU/s320/VertThree.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;center&gt;Kendo UI menu-according and grid in action&lt;/center&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-L6VeAstuO2Y/Ts8Ysg2G6oI/AAAAAAAAAT0/QmAET4arLmQ/s1600/HorzOne.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="278" width="320" src="http://2.bp.blogspot.com/-L6VeAstuO2Y/Ts8Ysg2G6oI/AAAAAAAAAT0/QmAET4arLmQ/s320/HorzOne.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;center&gt;Switching to horizontal menus is a "one-liner" with Synergy and Kendo UI&lt;/center&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Conclusion&lt;/b&gt;&lt;br /&gt;
&lt;p&gt;Straightforward, lightweight, non-invasive, sexy, performant, cost-effective, easy-to-maintain. This all is &lt;b&gt;Synergy&lt;/b&gt;, the Spring Roo addon for turning WEB MVC jsp(x)-based web apps into jQuery-RIA based.&lt;/p&gt;&lt;p&gt;Syngery... way to go.&lt;/p&gt;&lt;br /&gt;
Roogards&lt;br /&gt;
jD&lt;img src="http://feeds.feedburner.com/~r/JourneyIntoWebDevelopment/~4/VfmVIt-pGRs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pragmatikroo.blogspot.com/feeds/4799849222442866919/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2231293399010893563&amp;postID=4799849222442866919&amp;isPopup=true" title="5 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2231293399010893563/posts/default/4799849222442866919?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2231293399010893563/posts/default/4799849222442866919?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/JourneyIntoWebDevelopment/~3/VfmVIt-pGRs/spring-roo-totally-embracing-jquery.html" title="Spring Roo: Totally Embracing the jQuery World" /><author><name>Findings</name><uri>http://www.blogger.com/profile/04256525103036208551</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://1.bp.blogspot.com/-cYdAR4HAT2w/TWqT4chjlPI/AAAAAAAAACQ/DlVKYiRZoA8/s220/Rooie.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-Qd4Ek_b6TUA/Ts-eoc7_o2I/AAAAAAAAAUA/x85_ZShdQ5s/s72-c/VertOne.png" height="72" width="72" /><thr:total>5</thr:total><feedburner:origLink>http://pragmatikroo.blogspot.com/2011/11/spring-roo-totally-embracing-jquery.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkcGSXgzeyp7ImA9WhRSFEQ.&quot;"><id>tag:blogger.com,1999:blog-2231293399010893563.post-493511478748296110</id><published>2011-11-16T09:21:00.000-07:00</published><updated>2011-11-16T17:33:48.683-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-16T17:33:48.683-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Spring Roo deployment" /><category scheme="http://www.blogger.com/atom/ns#" term="Spring Roo practices" /><category scheme="http://www.blogger.com/atom/ns#" term="Spring Roo mobile" /><title>Spring Roo: Synergy Mobile</title><content type="html">&lt;b&gt;Intro&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;I just want to make the point that with &lt;i&gt;Synergy &lt;b&gt;&lt;/b&gt;&lt;/i&gt;-the Spring Roo (in the works) add-on for generating RIA web applications for WEB-MVC- you can do Mobile web applications too.&lt;/p&gt;&lt;p&gt;Inclusive you can deploy the same middle/back-end tiers for serving all kind of different devices. This approach saves money in development, saves money in maintenance and saves money in production!.&lt;/p&gt;&lt;p&gt;More information on Synergy mobile on following links&lt;p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://pragmatikroo.blogspot.com/2011/03/jquery-mobile-and-java-in-spot-light.html"&gt;jQuery and Java in the spot light&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://pragmatikroo.blogspot.com/2011/03/small-screens-big-business.html"&gt;Small screens. Big Business&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://pragmatikroo.blogspot.com/2011/03/spring-roo-goes-mobile.html"&gt;Spring Roo goes Mobile&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://pragmatikroo.blogspot.com/2011/04/spring-roodynamic-clients-multiple.html"&gt;Spring Roo: Dynamic Clients-Multiple Screens Development&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;b&gt;Gallery&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-wTR8eq9y1gc/TsPi0rXOIVI/AAAAAAAAATE/kqmFEcgoWMQ/s1600/promo.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="281" width="320" src="http://2.bp.blogspot.com/-wTR8eq9y1gc/TsPi0rXOIVI/AAAAAAAAATE/kqmFEcgoWMQ/s320/promo.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Conclusion&lt;/b&gt;&lt;br /&gt;
&lt;p&gt;Before deploying to Cloud Foundry you need the application completed. Right?. You can get it really fast and nice with Synergy&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
B. Roogards&lt;br /&gt;
jD&lt;img src="http://feeds.feedburner.com/~r/JourneyIntoWebDevelopment/~4/u2Mo2-fL-Jk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pragmatikroo.blogspot.com/feeds/493511478748296110/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2231293399010893563&amp;postID=493511478748296110&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2231293399010893563/posts/default/493511478748296110?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2231293399010893563/posts/default/493511478748296110?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/JourneyIntoWebDevelopment/~3/u2Mo2-fL-Jk/spring-roo-synergy-mobile.html" title="Spring Roo: Synergy Mobile" /><author><name>Findings</name><uri>http://www.blogger.com/profile/04256525103036208551</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://1.bp.blogspot.com/-cYdAR4HAT2w/TWqT4chjlPI/AAAAAAAAACQ/DlVKYiRZoA8/s220/Rooie.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-wTR8eq9y1gc/TsPi0rXOIVI/AAAAAAAAATE/kqmFEcgoWMQ/s72-c/promo.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://pragmatikroo.blogspot.com/2011/11/spring-roo-synergy-mobile.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkUDR345fCp7ImA9WhRSEkQ.&quot;"><id>tag:blogger.com,1999:blog-2231293399010893563.post-8728295754112606435</id><published>2011-11-14T11:11:00.000-07:00</published><updated>2011-11-14T11:11:16.024-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-14T11:11:16.024-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="jQuery and Spring Roo development" /><title>Synergy: An Effective Java Web Development Approach</title><content type="html">&lt;b&gt;Intro&lt;/b&gt;&lt;br /&gt;
&lt;p&gt;Synergy is a Spring Roo add-on -in the works- that will allow to convert typical WEB-MVC app into RIA-jQuery based automatically.&lt;p&gt;&lt;p&gt;The Reader interested in knowing more about Synergy can visit the following links&lt;p&gt;&lt;ul style="margin-left:140px;"&gt;&lt;li&gt;&lt;a href="http://pragmatikroo.blogspot.com/2011/02/jsp-is-dead-long-live-jquery.html"&gt;Jsp is dead long live jQuery&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://pragmatikroo.blogspot.com/2011/10/spring-roo-towards-lightweight-non.html"&gt;Towards a lightweight, non-invasive WEB MVC-jQuery addon &lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://pragmatikroo.blogspot.com/2011/10/spring-roo-pick-your-theme-for.html"&gt;Pick your theme for Halloween&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://pragmatikroo.blogspot.com/2011/11/spring-roo-synergy-automatic-datatype.html"&gt;Synergy Automatic Datatype-Control Mapping&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;p&gt;This time, I worked on cosmetics stuff and I have screen shots to share with you:&lt;/p&gt;&lt;b&gt;Gallery&lt;/b&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-cbkUSUo49wk/TsFY9GM-0bI/AAAAAAAAASU/ysQm7rss2dI/s1600/CosmeticsOne.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="286" width="320" src="http://2.bp.blogspot.com/-cbkUSUo49wk/TsFY9GM-0bI/AAAAAAAAASU/ysQm7rss2dI/s320/CosmeticsOne.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-oqwRgi3H9H4/TsFZBgDMOlI/AAAAAAAAASg/3uDkBJS_Loc/s1600/CosmeticsTwo.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="267" width="320" src="http://2.bp.blogspot.com/-oqwRgi3H9H4/TsFZBgDMOlI/AAAAAAAAASg/3uDkBJS_Loc/s320/CosmeticsTwo.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-7s75dRXQJHs/TsFZGDMmvXI/AAAAAAAAASs/uiWh3kQS2Os/s1600/CosmeticsThree.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="278" width="320" src="http://2.bp.blogspot.com/-7s75dRXQJHs/TsFZGDMmvXI/AAAAAAAAASs/uiWh3kQS2Os/s320/CosmeticsThree.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;b&gt;Big Announcement&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;p&gt;I think, I could have the first cut of Synergy in New Years Eve -2011 of course. You might be interested on using Synergy. I addition of creating a 100% functional web application using the Best-of-Breed on the Java technology on the server-side and jQuery in the client-side. You can learn tons of stuff by studying the code as well and-and deploy it to CLOUD Foundry if you want!. So, if interested send me a message using the comments section. It will work with Spring Roo version 1.1.5.RELEASE. &lt;/p&gt;&lt;b&gt;&lt;p&gt;I bet you... You don't want to miss out this opportunity&lt;/p&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
B. Roogards&lt;br /&gt;
jD&lt;img src="http://feeds.feedburner.com/~r/JourneyIntoWebDevelopment/~4/o9RmG_x6FwI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pragmatikroo.blogspot.com/feeds/8728295754112606435/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2231293399010893563&amp;postID=8728295754112606435&amp;isPopup=true" title="7 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2231293399010893563/posts/default/8728295754112606435?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2231293399010893563/posts/default/8728295754112606435?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/JourneyIntoWebDevelopment/~3/o9RmG_x6FwI/synergy-effective-java-web-development.html" title="Synergy: An Effective Java Web Development Approach" /><author><name>Findings</name><uri>http://www.blogger.com/profile/04256525103036208551</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://1.bp.blogspot.com/-cYdAR4HAT2w/TWqT4chjlPI/AAAAAAAAACQ/DlVKYiRZoA8/s220/Rooie.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/-cbkUSUo49wk/TsFY9GM-0bI/AAAAAAAAASU/ysQm7rss2dI/s72-c/CosmeticsOne.png" height="72" width="72" /><thr:total>7</thr:total><feedburner:origLink>http://pragmatikroo.blogspot.com/2011/11/synergy-effective-java-web-development.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CU8NRX89cCp7ImA9WhRSEU0.&quot;"><id>tag:blogger.com,1999:blog-2231293399010893563.post-1077708280297876015</id><published>2011-11-12T00:06:00.000-07:00</published><updated>2011-11-12T06:18:14.168-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-12T06:18:14.168-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="JQuery" /><category scheme="http://www.blogger.com/atom/ns#" term="Spring Roo Synergy" /><category scheme="http://www.blogger.com/atom/ns#" term="Roo RIA" /><title>Spring Roo: Synergy Automatic Datatype-Control Mapping</title><content type="html">&lt;b&gt;Intro&lt;/b&gt;&lt;br /&gt;
&lt;p&gt;This is just a brief post for showing the automatic datatype-control mapping built in Synergy. Synergy is the codename of a Web MVC-to-jQuery Spring Roo addon, that will allow to convert a "traditional" jspx web app into a RIA jQuery based automatically.&lt;/p&gt;&lt;p&gt;Synergy integrates a great-great open source jQuery grid component: The jQuery Grid plugin with Spring Roo. Both are best-of-breed technologies with great potential of delivering rich and high performance applications in the Java Web development ecosystem.&lt;p&gt;&lt;p&gt;Next, I will show you screen shots of the Synergy mapping capabilities for mapping datatypes. e.g. String, Boolean, Date, enums, etc. to HTML controls e.g. text, checkbox, datepicker jQuery control, selects and so. Likewise, I show you the wired-up of the grid control with the validation back end. Which is based on JSR 303. All of it is done automatic by Synergy.&lt;/p&gt;&lt;b&gt;Gallery&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-qYxfn77awY0/Tr4Pt0HvERI/AAAAAAAAARw/siUkIYoeHrY/s1600/syneryOne.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="232" width="320" src="http://3.bp.blogspot.com/-qYxfn77awY0/Tr4Pt0HvERI/AAAAAAAAARw/siUkIYoeHrY/s320/syneryOne.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div  style="margin-left:40px;"&gt;&lt;ul&gt;&lt;li&gt;1) Tabbed Menu&lt;/li&gt;
&lt;li&gt;2) Automatic HTML rendering controls based associated datatype&lt;/li&gt;
&lt;li&gt;3) Native Navigation jQuery Grid Pluging component&lt;/li&gt;
&lt;li&gt;4) jQuery Theme Roller&lt;/li&gt;
&lt;li&gt;5) One-to-Many relationship via links&lt;/li&gt;
&lt;li&gt;6) Native jQuery Grid Pluging pager&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-hMOiKO5cyHY/Tr4Px21-KDI/AAAAAAAAAR8/6fP1Uw2TW6s/s1600/syneryTwo.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="230" width="320" src="http://2.bp.blogspot.com/-hMOiKO5cyHY/Tr4Px21-KDI/AAAAAAAAAR8/6fP1Uw2TW6s/s320/syneryTwo.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div  style="margin-left:40px;"&gt;&lt;ul&gt;&lt;li&gt;1) CRUD using modal views&lt;/li&gt;
&lt;li&gt;2) CRUD automatic HTML rendering controls based associated data types&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-xAQ1bSKrrlI/Tr4P2xtIE4I/AAAAAAAAASI/05ylHKNOL2Q/s1600/syneryThree.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="209" width="320" src="http://4.bp.blogspot.com/-xAQ1bSKrrlI/Tr4P2xtIE4I/AAAAAAAAASI/05ylHKNOL2Q/s320/syneryThree.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;div  style="margin-left:40px;"&gt;&lt;ul&gt;&lt;li&gt;1) JSR 303 server-side validation integrated&lt;/li&gt;
&lt;li&gt;2) Datepicker control automatically rendered based on associated date types&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;&lt;b&gt;Conclusion&lt;/b&gt;&lt;br /&gt;
&lt;p&gt;Ok... I just have time for grabbing more pizza and reload my 2 liters Mounting Dew jar.&lt;br /&gt;
&lt;/p&gt;&lt;br /&gt;
Hasta la Roograds!&lt;br /&gt;
jD&lt;img src="http://feeds.feedburner.com/~r/JourneyIntoWebDevelopment/~4/JoUGo_eJGsA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pragmatikroo.blogspot.com/feeds/1077708280297876015/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2231293399010893563&amp;postID=1077708280297876015&amp;isPopup=true" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2231293399010893563/posts/default/1077708280297876015?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2231293399010893563/posts/default/1077708280297876015?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/JourneyIntoWebDevelopment/~3/JoUGo_eJGsA/spring-roo-synergy-automatic-datatype.html" title="Spring Roo: Synergy Automatic Datatype-Control Mapping" /><author><name>Findings</name><uri>http://www.blogger.com/profile/04256525103036208551</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://1.bp.blogspot.com/-cYdAR4HAT2w/TWqT4chjlPI/AAAAAAAAACQ/DlVKYiRZoA8/s220/Rooie.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-qYxfn77awY0/Tr4Pt0HvERI/AAAAAAAAARw/siUkIYoeHrY/s72-c/syneryOne.png" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://pragmatikroo.blogspot.com/2011/11/spring-roo-synergy-automatic-datatype.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkUNQH08cCp7ImA9WhRTGUk.&quot;"><id>tag:blogger.com,1999:blog-2231293399010893563.post-2265999475505619383</id><published>2011-11-09T22:52:00.000-07:00</published><updated>2011-11-10T11:04:51.378-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-10T11:04:51.378-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Spring Roo" /><category scheme="http://www.blogger.com/atom/ns#" term="Spring Roo marketing" /><title>What is in the Spring Roo Developer's Mind</title><content type="html">&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-uLbpuFJ9JNs/TrvMtyBubBI/AAAAAAAAARY/d2Z99xQjSko/s1600/MindOne.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="210" width="320" src="http://3.bp.blogspot.com/-uLbpuFJ9JNs/TrvMtyBubBI/AAAAAAAAARY/d2Z99xQjSko/s320/MindOne.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;b&gt;Intro&lt;/b&gt;&lt;br /&gt;
&lt;p&gt;Basically, I am inferring what is Spring Roo developers mind by the Google searches that hit my blog-articles. Obviously this is just a fragment of the what developers working with SR "Google" everyday. However, I believe has considerable value because shows specific topics or areas of interest of the community.&lt;/p&gt;&lt;p&gt;I started working with SR - at that time on version 1.1.0.M1- on May 2010. By the end of the year I was able to  deploy two mid-size web applications. My first SR is&lt;b&gt; World Almanac by jD&lt;/b&gt;. World Almanac is an example of Spring framework WEB MVC touring experience  involving many of the technologies included with Spring Roo and implementing many of the typical requirements in real world production web app. It is main purpose is to build a complete web app starting it from scratch. I wanted to know  what is involved in turning the CRUD source code delivered by Roo  into a production site.&lt;/p&gt;&lt;p&gt;My second Roo web app is &lt;b&gt;Grid-and-Charts&lt;/b&gt;. I wanted to experience the Flex add-on. This one was little problematic due the lack of continuity on the production of referred add-on at time. However I was able to manage its completion  and deployment. The Reader can visit both live-demos at:&lt;/p&gt;&lt;center&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://pragmatikroo.org//worldAlmanac/"&gt;World Almanac by jD&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://pragmatikroo.org/gnc/gnc-debug/gnc.html"&gt;Grid and Charts by jD&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/center&gt;&lt;br /&gt;
&lt;p&gt;At the same time, I registered and participated on different Spring Roo community forums. I realized that many of the issues asking for help by the community are the ones I had to solved while implementing World Almanac and Grid-N-Charts.&lt;/p&gt;&lt;p&gt;Some examples of the questions I am referring to are: How to's for implementing  1) Master/Detail view, 2) How to change menus, 3) How to implement file-upload, 4) How to do column sorting, 5) How to use jQuery with Spring and others.&lt;br /&gt;
&lt;/p&gt;&lt;p&gt;With source code and experiences for publishing a book on real world java web development using Spring Roo. I stared making technical posts regularly. I posted my first four (4) articles on someone else blog site; since I didn't have one.&lt;br /&gt;
&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Based on the # number of page views these articles are done pretty well and helped a lot of Spring Roo developers out there. These are the stats up to today&lt;/p&gt;&lt;table border="1"&gt;&lt;tr&gt; &lt;th&gt; Article Name&lt;/th&gt;&lt;th&gt;Published Date&lt;/th&gt;&lt;th&gt;# of Pagevies&lt;/th&gt; &lt;/tr&gt;
&lt;tr&gt;  &lt;td&gt;Spring Roo: Customizing Web MVC UI Forms&lt;/td&gt;  &lt;td&gt;&lt;center&gt;2/7/2011&lt;/center&gt;&lt;/td&gt;  &lt;td&gt;&lt;center&gt;11,259&lt;/center&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;  &lt;td&gt;Spring Roo: Saving/Retreving BLOB object&lt;/td&gt;  &lt;td&gt;&lt;center&gt;2/1/2011&lt;/center&gt;&lt;/td&gt;  &lt;td&gt;&lt;center&gt;7,606&lt;/center&gt;&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;How to implement Master/Detail forms using Spring Roo&lt;/td&gt;  &lt;td&gt;&lt;center&gt;1/31/2011&lt;/center&gt;&lt;/td&gt; &lt;td&gt;&lt;center&gt;6,560&lt;/center&gt;&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;Spring Roo: Two Databases Configuration&lt;/td&gt;  &lt;td&gt;&lt;center&gt;1/27/2011&lt;/center&gt;&lt;/td&gt;  &lt;td&gt;&lt;center&gt;5,964&lt;/center&gt;&lt;/td&gt; &lt;/tr&gt;
&lt;/table border="1"&gt;&lt;p&gt;I created my own blog HERE. &lt;i&gt;&lt;b&gt;Thank you very much to Google&lt;/b&gt;&lt;/i&gt;. The screen shoot below,  shows the interests of the SR community based on the articles reviewd.&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-LtOv6p-hK38/TrvcZTM1VHI/AAAAAAAAARk/mm7cWYbRt54/s1600/MindTwo.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="214" width="320" src="http://4.bp.blogspot.com/-LtOv6p-hK38/TrvcZTM1VHI/AAAAAAAAARk/mm7cWYbRt54/s320/MindTwo.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;center&gt;Straight from the source. What is Spring Roo community interests!&lt;/center&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Conclusion&lt;/b&gt;&lt;br /&gt;
&lt;p&gt;I have published 29 articles on Spring Roo so far. All they touches some relevant aspect of this great development tool. I believe, I have enough material for 3 books on the following topic:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Spring Roo WEB MVC. Turn your Scaffold CRUD app into a production app&lt;/li&gt;
&lt;li&gt;Spring Roo jQuery Mobile web development&lt;/li&gt;
&lt;li&gt;Spring Roo jQuery RIA web development with WEB MVC-to-jQuery addon&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;I have already in-roaded NOSQL -specially Neo4j- and Social Network that will be next&lt;/p&gt;&lt;br /&gt;
B. Roogards&lt;br /&gt;
jD&lt;img src="http://feeds.feedburner.com/~r/JourneyIntoWebDevelopment/~4/I40uR5GddYM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pragmatikroo.blogspot.com/feeds/2265999475505619383/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2231293399010893563&amp;postID=2265999475505619383&amp;isPopup=true" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2231293399010893563/posts/default/2265999475505619383?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2231293399010893563/posts/default/2265999475505619383?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/JourneyIntoWebDevelopment/~3/I40uR5GddYM/what-is-in-spring-roo-developers-mind.html" title="What is in the Spring Roo Developer's Mind" /><author><name>Findings</name><uri>http://www.blogger.com/profile/04256525103036208551</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://1.bp.blogspot.com/-cYdAR4HAT2w/TWqT4chjlPI/AAAAAAAAACQ/DlVKYiRZoA8/s220/Rooie.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-uLbpuFJ9JNs/TrvMtyBubBI/AAAAAAAAARY/d2Z99xQjSko/s72-c/MindOne.png" height="72" width="72" /><thr:total>1</thr:total><feedburner:origLink>http://pragmatikroo.blogspot.com/2011/11/what-is-in-spring-roo-developers-mind.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0IBQ38zcCp7ImA9WhRTFk0.&quot;"><id>tag:blogger.com,1999:blog-2231293399010893563.post-2545947766727969763</id><published>2011-11-05T16:28:00.000-07:00</published><updated>2011-11-06T11:52:32.188-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-06T11:52:32.188-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Spring Roo" /><category scheme="http://www.blogger.com/atom/ns#" term="JQuery" /><category scheme="http://www.blogger.com/atom/ns#" term="Java UI development" /><category scheme="http://www.blogger.com/atom/ns#" term="Spring MVC" /><title>CodeName: SYNERGY</title><content type="html">&lt;b&gt;Intro&lt;/b&gt;&lt;br /&gt;
&lt;i&gt;SYNERGY&lt;/i&gt;&lt;br /&gt;
n., pl., -gies.&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;The interaction of two or more agents or forces so that their combined effect is greater than the sum of their individual effects.&lt;/li&gt;
&lt;li&gt;Synergy is created when things work in concert together to create an outcome that is in some way of more value than the total of what the individual inputs is.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;[From Greek sunergiā, cooperation, from sunergos, working together.]&lt;/p&gt;&lt;p&gt;I could not find a better concept/word that describes the result delivered  for using jQuery and Spring Roo together. This is a tremendous web development proposition; where you have two of the best-of-breed technologies collaborating with their strengths: jQuery in the client-side; Spring Roo in the server-side.&lt;/p&gt;&lt;p&gt;In other to leverage this great potentials; we just need a rendezvous point. Precisely this is where "SYNERGY" -the Web MVC-to-jQuery add-on- appears in the picture.&lt;/p&gt;&lt;p&gt;The Reader is referred to &lt;a href="http://pragmatikroo.blogspot.com/2011/10/spring-roo-towards-lightweight-non.html"&gt;spring-roo-towards-lightweight-non.html&lt;/a&gt; and &lt;a href="http://pragmatikroo.blogspot.com/2011/02/jsp-is-dead-long-live-jquery.html"&gt;jsp-is-dead-long-live-jquery.html&lt;/a&gt; for more information about this project.&lt;/p&gt;&lt;p&gt;I've been moving on implementing the road map of Synergy. This is milestone#2 and there are the deliverable:&lt;/p&gt;&lt;center&gt;Milestone #2&lt;/center&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Automatic grid-view generation&lt;/li&gt;
&lt;li&gt;CRUD-capable grid-view type&lt;/li&gt;
&lt;li&gt;Client-side validation&lt;/li&gt;
&lt;li&gt;Server-side using standard Spring Roo native JSR 303 validation&lt;/li&gt;
&lt;/ul&gt;&lt;center&gt;Features to implement in next milestones&lt;/center&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;In-grid multicolumn search&lt;/li&gt;
&lt;li&gt;In-grid multicolumn sort&lt;/li&gt;
&lt;li&gt;In-grid autocomplete&lt;/li&gt;
&lt;li&gt;Add-on implementaion&lt;/li&gt;
&lt;li&gt;All levels QA &lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;b&gt;Gallery&lt;/b&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-ptnUxf1dirM/TraUPUflXGI/AAAAAAAAAQg/RILQrNiz-RI/s1600/milestone%25232One.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="242" width="320" src="http://3.bp.blogspot.com/-ptnUxf1dirM/TraUPUflXGI/AAAAAAAAAQg/RILQrNiz-RI/s320/milestone%25232One.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-_E0bfyRsdD8/TraUW-ew11I/AAAAAAAAAQs/Zrg3hOqhzGY/s1600/milestone%25232Two.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="241" width="320" src="http://4.bp.blogspot.com/-_E0bfyRsdD8/TraUW-ew11I/AAAAAAAAAQs/Zrg3hOqhzGY/s320/milestone%25232Two.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-Pq5hTRPfU_8/TraUymZnFvI/AAAAAAAAAQ4/u4CPp5S-EII/s1600/milestone%25232Three.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="243" width="320" src="http://2.bp.blogspot.com/-Pq5hTRPfU_8/TraUymZnFvI/AAAAAAAAAQ4/u4CPp5S-EII/s320/milestone%25232Three.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Conclusion&lt;/b&gt;&lt;br /&gt;
&lt;p&gt;jQuery and jQuery components integration into Spring Roo has been remarkable non-invasive and lightweight so far. This is very-very good, since maintaining the add-on source code and keeping up to date would be very-very cost-effective. The prototype implementing the Petclinic sample uses a database with 100K records per table is showing pretty good performance. I will continue next phase of implementation NOW.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;
&lt;b&gt;IMPORTANT: If you want to be part of the WEB MVC-to-jQuery add-on development and have access to it. Post a message using the comment section.&lt;/b&gt;&lt;/p&gt;Have a Roonergetic Roogards&lt;/p&gt;jD&lt;img src="http://feeds.feedburner.com/~r/JourneyIntoWebDevelopment/~4/Mz2Lhog26VI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pragmatikroo.blogspot.com/feeds/2545947766727969763/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2231293399010893563&amp;postID=2545947766727969763&amp;isPopup=true" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2231293399010893563/posts/default/2545947766727969763?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2231293399010893563/posts/default/2545947766727969763?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/JourneyIntoWebDevelopment/~3/Mz2Lhog26VI/codename-synergy.html" title="&lt;center&gt;CodeName: SYNERGY&lt;/center&gt;" /><author><name>Findings</name><uri>http://www.blogger.com/profile/04256525103036208551</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://1.bp.blogspot.com/-cYdAR4HAT2w/TWqT4chjlPI/AAAAAAAAACQ/DlVKYiRZoA8/s220/Rooie.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-ptnUxf1dirM/TraUPUflXGI/AAAAAAAAAQg/RILQrNiz-RI/s72-c/milestone%25232One.png" height="72" width="72" /><thr:total>4</thr:total><feedburner:origLink>http://pragmatikroo.blogspot.com/2011/11/codename-synergy.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C04DRHs7fCp7ImA9WhRTEUw.&quot;"><id>tag:blogger.com,1999:blog-2231293399010893563.post-9178184770439890087</id><published>2011-10-30T23:15:00.000-07:00</published><updated>2011-10-31T18:46:15.504-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-31T18:46:15.504-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Spring Roo" /><category scheme="http://www.blogger.com/atom/ns#" term="Spirng Roo customization" /><category scheme="http://www.blogger.com/atom/ns#" term="jQuery Theme Roller" /><title>Spring Roo: Pick your theme for Halloween</title><content type="html">&lt;b&gt;Intro&lt;/b&gt;&lt;br /&gt;
&lt;p&gt;Frankly, I had a different Roo topic for a Halloween 2011 post...&lt;/p&gt;&lt;p&gt;I ran out of time for it; but I found a great replacement and is totally consistent with my most recent post about my WEB-MVC to jQuery add-on. The Reader can find more information about it by clicking on the following links:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://pragmatikroo.blogspot.com/2011/02/jsp-is-dead-long-live-jquery.html"&gt;JSP is dead long live jQuery&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://pragmatikroo.blogspot.com/2011/10/spring-roo-towards-lightweight-non.html"&gt;Spring Roo: Towards a lightweight, non-invasive WEB MVC-jQuery addon&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Since, I already have jQuery library in my Spring Roo project, thanks to my POC addon. I can easily include any of the multiple jQuery resources available out there. Yes, and guess what?, every day are &lt;i&gt;more&lt;/i&gt;-and-&lt;i&gt;more&lt;/i&gt;-and-&lt;i&gt;more!&lt;/i&gt;.&lt;/p&gt;&lt;p&gt;The resource, I am including is a jQuery Theme Roller switcher. A powerful but intuitive  component that allows a Spring Roo web application to choose from multiple predefined UI themes and instantly applied to the UI. Very Cool, right?. jQuery Theme Roller allows to create custom UI themes as well.&lt;/p&gt;&lt;p&gt;I installed the switcher on the addon's milestone #1 project -which uses Petclinic sample- and created screen shoots and I want to share with you in the gallery section below&lt;/p&gt;&lt;b&gt;Gallery&lt;/b&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-obg1R7cCfcQ/Tq43_5PcMSI/AAAAAAAAAPk/5rl0nVh4pi0/s1600/milestoneSix.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="134" width="320" src="http://4.bp.blogspot.com/-obg1R7cCfcQ/Tq43_5PcMSI/AAAAAAAAAPk/5rl0nVh4pi0/s320/milestoneSix.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;center&gt;&lt;br /&gt;
View to applied jQuery Roller switcher&lt;/center&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-De3xAHEl6KU/Tq44XOOQs_I/AAAAAAAAAPw/qUIsT7QFLnA/s1600/milestoneSeven.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="141" width="320" src="http://1.bp.blogspot.com/-De3xAHEl6KU/Tq44XOOQs_I/AAAAAAAAAPw/qUIsT7QFLnA/s320/milestoneSeven.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;center&gt;&lt;br /&gt;
Screen shoot shows the Theme Roller activated&lt;/center&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-X516ep84W4M/Tq44vAR9CZI/AAAAAAAAAP8/QkWPOShvkrw/s1600/milestoneEight.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="144" width="320" src="http://2.bp.blogspot.com/-X516ep84W4M/Tq44vAR9CZI/AAAAAAAAAP8/QkWPOShvkrw/s320/milestoneEight.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;center&gt;View instantly reflects the new UI lightness context working. Sweet!&lt;/center&gt;  &lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-k57IACOlmZs/Tq45btKVikI/AAAAAAAAAQI/s7as2czrMHM/s1600/milestoneNine.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="144" width="320" src="http://4.bp.blogspot.com/-k57IACOlmZs/Tq45btKVikI/AAAAAAAAAQI/s7as2czrMHM/s320/milestoneNine.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;center&gt; Another example of UI switched on-the-fly&lt;/center&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-nMlt3uUYsBs/Tq45ytxObNI/AAAAAAAAAQU/ykhBjzmP6Eo/s1600/milestoneTen.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="143" width="320" src="http://1.bp.blogspot.com/-nMlt3uUYsBs/Tq45ytxObNI/AAAAAAAAAQU/ykhBjzmP6Eo/s320/milestoneTen.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;center&gt; Another example of UI switched on-the-fly&lt;/center&gt;&lt;br /&gt;
&lt;b&gt;Conclusion&lt;/b&gt;&lt;br /&gt;
&lt;p&gt;Yes, I know what are you thinking right know... This is foundational for a Users Preferences Module for Spring Roo Web apps. I believe you are right!.&lt;/p&gt;&lt;p&gt;There is some clash between CSS stuff that I will take care down the road.&lt;/p&gt;&lt;br /&gt;
Treat or Trick?. Have a happy &lt;i&gt;Roolloween&lt;/i&gt;!  &lt;br /&gt;
&lt;p&gt;&lt;b&gt;IMPORTANT: If you want to be part of the WEB MVC-to-jQuery add-on development and have access to it. Post a message using the comment section.&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;
B. Roogards jD&lt;img src="http://feeds.feedburner.com/~r/JourneyIntoWebDevelopment/~4/Il8-agg7r_E" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pragmatikroo.blogspot.com/feeds/9178184770439890087/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2231293399010893563&amp;postID=9178184770439890087&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2231293399010893563/posts/default/9178184770439890087?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2231293399010893563/posts/default/9178184770439890087?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/JourneyIntoWebDevelopment/~3/Il8-agg7r_E/spring-roo-pick-your-theme-for.html" title="Spring Roo: Pick your theme for Halloween" /><author><name>Findings</name><uri>http://www.blogger.com/profile/04256525103036208551</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://1.bp.blogspot.com/-cYdAR4HAT2w/TWqT4chjlPI/AAAAAAAAACQ/DlVKYiRZoA8/s220/Rooie.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/-obg1R7cCfcQ/Tq43_5PcMSI/AAAAAAAAAPk/5rl0nVh4pi0/s72-c/milestoneSix.png" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://pragmatikroo.blogspot.com/2011/10/spring-roo-pick-your-theme-for.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0AHQXkzfCp7ImA9WhRTEE4.&quot;"><id>tag:blogger.com,1999:blog-2231293399010893563.post-2470654614431994266</id><published>2011-10-28T13:04:00.000-07:00</published><updated>2011-10-30T20:28:50.784-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-30T20:28:50.784-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="Spring Roo" /><category scheme="http://www.blogger.com/atom/ns#" term="JSON" /><category scheme="http://www.blogger.com/atom/ns#" term="JQuery" /><category scheme="http://www.blogger.com/atom/ns#" term="jqGrid" /><category scheme="http://www.blogger.com/atom/ns#" term="Sping Roo addon" /><category scheme="http://www.blogger.com/atom/ns#" term="Ajax" /><title>Spring Roo: Towards a lightweight, non-invasive WEB MVC-jQuery addon</title><content type="html">&lt;b&gt;Intro&lt;/b&gt;&lt;br /&gt;
&lt;p&gt;This mini-blog article reports the second milestone pursing the implementation of Spring Roo addon;  an add-on that would automatically turn a "traditional"  WEB MVC web application into a RIA jQuery based. The proof-of-concept PoC described in &lt;a href="http://pragmatikroo.blogspot.com/2011/02/jsp-is-dead-long-live-jquery.html"&gt;PoC link&lt;/a&gt;, has proven to be a solid foundation for keep building on top of it. Despite the fact that,  I need to find a replacement for an important jQuery component that unfortunately has stopped its development.&lt;/p&gt;&lt;p&gt;Succinctly, The PoC  allows the following features to any Spring Roo Web MVC app.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Installed jQuery libraries in an harmonious way with the other existent JavaScript libraries &lt;/li&gt;
&lt;li&gt;Introduced tabbed menus&lt;/li&gt;
&lt;li&gt;Introduced modal forms on certain views&lt;/li&gt;
&lt;li&gt;Implemented a functional add-on&lt;/li&gt;
&lt;li&gt;Addon creates working web apps&lt;/li&gt;
&lt;li&gt;Just a PoC not QA tested&lt;/li&gt;
&lt;/ul&gt;&lt;b&gt;Milestone #1&lt;/b&gt;&lt;br /&gt;
&lt;p&gt;On top of the PoC functionality, milestone #1, integrates a remarkable powerful grid component for replacing the WEB MVC grids scaffolded by Roo. The component is the jQuery Grid Plugin.&lt;/p&gt;&lt;p&gt;I used the Petclinic sample and the database used in the use case described in &lt;a href="http://pragmatikroo.blogspot.com/2011/05/spring-roo-performace-calibration.html"&gt;database holds more the 100k rows per table&lt;/a&gt; for creating the jqGrid implementation. The milestone results are the following&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Installed jqGrid libraries&lt;/li&gt;
&lt;li&gt;Installed a JSON library that allows a non-invasive programming approach&lt;/li&gt;
&lt;li&gt;Replaced the scafolled WEB MVC grid for jqGrids&lt;/li&gt;
&lt;li&gt;Enabled grid navigation&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;On the gallery section I am showing milestone #1 screen shots&lt;/p&gt;&lt;b&gt;Gallery&lt;/b&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-hdvGHZYa00Y/Tqr-ACKSeqI/AAAAAAAAAOo/49QgtPqXgK8/s1600/milestoneOne.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="142" width="320" src="http://3.bp.blogspot.com/-hdvGHZYa00Y/Tqr-ACKSeqI/AAAAAAAAAOo/49QgtPqXgK8/s320/milestoneOne.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;center&gt;Integrated jqGrid Petclinic "Vet" view&lt;/center&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-pKpj4ceeTgw/Tqr_XPPVSgI/AAAAAAAAAO0/h6gogRYRCW4/s1600/milestoneTwo.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="142" width="320" src="http://2.bp.blogspot.com/-pKpj4ceeTgw/Tqr_XPPVSgI/AAAAAAAAAO0/h6gogRYRCW4/s320/milestoneTwo.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;center&gt;Integrated jqGrid Petclinic "Owner" view&lt;/center&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-_8OVG-v9H4c/Tqr__Yp_IpI/AAAAAAAAAPA/RjsWMnYXmPM/s1600/milestoneThree.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="141" width="320" src="http://1.bp.blogspot.com/-_8OVG-v9H4c/Tqr__Yp_IpI/AAAAAAAAAPA/RjsWMnYXmPM/s320/milestoneThree.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;center&gt;Integrated jqGrid Petclinic "Visit" view&lt;/center&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-U3_-L1-WXxk/TqsBWWqZw4I/AAAAAAAAAPM/cApUz5Ih0tI/s1600/milestoneFour.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="138" width="320" src="http://4.bp.blogspot.com/-U3_-L1-WXxk/TqsBWWqZw4I/AAAAAAAAAPM/cApUz5Ih0tI/s320/milestoneFour.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;center&gt;Integrated jqGrid Petclinic "Pet" view&lt;/center&gt;&lt;br /&gt;
&lt;b&gt;Next Milestones&lt;/b&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;To implement: add, edit, delete and search record grid functionality&lt;/li&gt;
&lt;li&gt;To implement column sorting&lt;/li&gt;
&lt;li&gt;To implement incremental search and auto-completion&lt;/li&gt;
&lt;li&gt;To remove all non jQuery JavaScript libraries&lt;/li&gt;
&lt;li&gt;To include client/server side validation&lt;/li&gt;
&lt;li&gt;To incorporate blog Readers feedback. Assuming that I get it&lt;/li&gt;
&lt;li&gt;To QA submit &lt;/li&gt;
&lt;/ul&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-jeJLZSC8eJU/TqsIw_xuU2I/AAAAAAAAAPY/l1szAev9JmA/s1600/milestoneFive.png" imageanchor="1" style="margin-left:1em; margin-right:1em"&gt;&lt;img border="0" height="138" width="320" src="http://3.bp.blogspot.com/-jeJLZSC8eJU/TqsIw_xuU2I/AAAAAAAAAPY/l1szAev9JmA/s320/milestoneFive.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;center&gt;Next Milestone sneak peek functionality. IN PROGRESS...&lt;/center&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;b&gt;How to have access to these products&lt;/b&gt;&lt;br /&gt;
&lt;p&gt;Send me an email, if you are interested in participating in the WEB MVC to jQuery add-on development and have access to it. I will provide you with further info on it&lt;/p&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;Conclusion&lt;/b&gt;&lt;br /&gt;
&lt;p&gt;I showed up a major milestone in the WEB MVC to jQuery addon project. The milestone integrates an effective component for the replacement of the grids created by Roo scafolding. &lt;b&gt;Bottom line:&lt;/b&gt; You don't need heavy-weight-old-fashion approaches for creating a sexy-good-looking-powerful RIA app using Roo. &lt;i&gt;Did I make my point?&lt;/i&gt;&lt;/p&gt;&lt;br /&gt;
B. and RooIA Roogards&lt;br /&gt;
jD&lt;img src="http://feeds.feedburner.com/~r/JourneyIntoWebDevelopment/~4/SVJ2r34FldU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://pragmatikroo.blogspot.com/feeds/2470654614431994266/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=2231293399010893563&amp;postID=2470654614431994266&amp;isPopup=true" title="11 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2231293399010893563/posts/default/2470654614431994266?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2231293399010893563/posts/default/2470654614431994266?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/JourneyIntoWebDevelopment/~3/SVJ2r34FldU/spring-roo-towards-lightweight-non.html" title="Spring Roo: Towards a lightweight, non-invasive WEB MVC-jQuery addon" /><author><name>Findings</name><uri>http://www.blogger.com/profile/04256525103036208551</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="24" height="32" src="http://1.bp.blogspot.com/-cYdAR4HAT2w/TWqT4chjlPI/AAAAAAAAACQ/DlVKYiRZoA8/s220/Rooie.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/-hdvGHZYa00Y/Tqr-ACKSeqI/AAAAAAAAAOo/49QgtPqXgK8/s72-c/milestoneOne.png" height="72" width="72" /><thr:total>11</thr:total><feedburner:origLink>http://pragmatikroo.blogspot.com/2011/10/spring-roo-towards-lightweight-non.html</feedburner:origLink></entry></feed>
