tag:blogger.com,1999:blog-52952963066586482902024-03-13T00:04:51.755-07:00UjormThe Ujorm (original name was UJO Framework) is an open source Java small library which provides non-traditional objects based on the key‑value architecture to open up new exciting opportunities for writing efficient code.
The Ujorm have got special ORM module designed for rapid Java development with great performance and a small footprint. The key features are type safe queries, relation mapping by Java code, no entity states, and a memory overloading protection cache.PPonechttp://www.blogger.com/profile/01001091420530572076noreply@blogger.comBlogger35125tag:blogger.com,1999:blog-5295296306658648290.post-78954906913133409982023-06-07T23:43:00.004-07:002023-06-07T23:47:53.064-07:00New ORM Framework for Kotlin<p> </p><p><br /></p><p>An article about a Kotlin API for ORMs was published on <a href="https://dzone.com/articles/new-orm-framework-for-kotlin">DZone</a>.</p><p>See a sample of the SELECT statement:</p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhmpQc4lRCfBoL8zN12f2XUTgfj03lRqGxox9TN1ybQiW-qL-YCXRF-Wqr2DQpY9XPA7iXebY_gZ3Jwt2mG68mh6h7i-Q1sPkr3s4ITii7TZ2MsvsbcbYbAY78rfxbq02zh1J4OzJTUMeGsJlGmwp71N7EsOqfbN2pUSnHUIDLEn3VWVlNyljdlLHYA" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="367" data-original-width="699" height="260" src="https://blogger.googleusercontent.com/img/a/AVvXsEhmpQc4lRCfBoL8zN12f2XUTgfj03lRqGxox9TN1ybQiW-qL-YCXRF-Wqr2DQpY9XPA7iXebY_gZ3Jwt2mG68mh6h7i-Q1sPkr3s4ITii7TZ2MsvsbcbYbAY78rfxbq02zh1J4OzJTUMeGsJlGmwp71N7EsOqfbN2pUSnHUIDLEn3VWVlNyljdlLHYA=w495-h260" width="495" /></a></div><p><br /></p><p><b>Links: </b></p><p></p><ul style="text-align: left;"><li>The full article on <a href="https://dzone.com/articles/new-orm-framework-for-kotlin">DZone</a>.</li><li>The source code on a <a href="https://github.com/pponec/ujormKt">GitHub</a>.</li></ul><p></p><p><br /></p>Ponechttp://www.blogger.com/profile/08356229927918860793noreply@blogger.com0tag:blogger.com,1999:blog-5295296306658648290.post-60492894691891703202022-02-19T08:59:00.004-08:002022-02-19T08:59:27.934-08:00Home home page for a Ujorm WEB module.<p> </p><p>The Ujorm module for creating HTML pages using pure Java code has its own homepage:</p><p><a href="https://ujorm.org/www/web/index.html">https://ujorm.org/www/web/index.html</a> <br /></p>Ponechttp://www.blogger.com/profile/08356229927918860793noreply@blogger.com0tag:blogger.com,1999:blog-5295296306658648290.post-28371470224972433702021-07-06T12:06:00.001-07:002021-07-06T23:34:01.815-07:00Ujorm for Kotlin?<p> </p><p>A very early prototype of the <code>Kotlin</code> library for modelling filters using a domain object meta-model.
Assembled filters work on common POJO objects.
The solution was inspired by the <a href="https://pponec.github.io/ujorm/www/index.html" rel="nofollow">Ujorm</a> key-value framework, but this code is completely new.
Topical areas of use are:</p>
<ul><li>dynamic validations</li><li>alerting</li><li>modelling conditions for ORM</li></ul><p>See more information: <a href="https://github.com/pponec/ujormKt">https://github.com/pponec/ujormKt</a></p><p><br /></p><div class="separator" style="clear: both; text-align: center;"><a href="https://raw.githubusercontent.com/pponec/ujormKt/main/docs/Ujorm.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="390" data-original-width="800" height="312" src="https://raw.githubusercontent.com/pponec/ujormKt/main/docs/Ujorm.png" width="640" /></a></div><br /><p><br /></p>Ponechttp://www.blogger.com/profile/08356229927918860793noreply@blogger.com0tag:blogger.com,1999:blog-5295296306658648290.post-12717086807957342512021-06-21T08:31:00.004-07:002021-06-21T08:41:10.156-07:00A mini Java web application with a size about 5 MB.<p></p><p>I managed to build a web application with a size of only 5.18 MB.<br />The application contains only a short HTML form with support for simple AJAX events. The project is built on the <a href="https://javalin.io/">Javalin</a> framework and a web module from the <a href="https://github.com/pponec/ujorm">Ujorm</a> framework.<br /><br /><br />The source code is freely available on GitHub:<br /><a href="https://github.com/pponec/demo-ajax/tree/javalin">https://github.com/pponec/demo-ajax/tree/javalin</a><br /></p>Ponechttp://www.blogger.com/profile/08356229927918860793noreply@blogger.com0tag:blogger.com,1999:blog-5295296306658648290.post-91904275027706587642021-05-25T12:25:00.003-07:002021-05-25T12:25:40.055-07:00Java HTML Report in a Few Lines of Code<p> I’d like to show you a simple table HTML report created with only <strong>thirteen</strong>
lines of source code, written in a single command line using the Java
programming language. Let’s pretend the data provision service already
exists.<br /><br /></p><p>See the full articles on DZone: </p><ul style="text-align: left;"><li><a href="https://dzone.com/articles/java-html-report-in-a-few-lines-of-code" target="_blank">Part 1</a></li><li><a href="https://dzone.com/articles/java-html-report-in-a-few-lines-of-code-continued" target="_blank">Part 2</a></li></ul><p><span style="color: #999999;"><br /><i>Screenshot:</i></span><br /></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRv888lOiZsiPTgaI5l8g0AulnqUuAMSHixrw79wTYUA4myl9tNRJHDLWjoTPqgT724l_mRXO1pRm8JUTquWhA5n2WKDHWG4YeU61f7XFE0fg3PR8DWgMPjBdm5V9m9SVd-7QlGgQZXX4/s720/screenshot-1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="296" data-original-width="720" height="261" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRv888lOiZsiPTgaI5l8g0AulnqUuAMSHixrw79wTYUA4myl9tNRJHDLWjoTPqgT724l_mRXO1pRm8JUTquWhA5n2WKDHWG4YeU61f7XFE0fg3PR8DWgMPjBdm5V9m9SVd-7QlGgQZXX4/w635-h261/screenshot-1.png" width="635" /></a></div><p></p><br /><p><br /></p>Ponechttp://www.blogger.com/profile/08356229927918860793noreply@blogger.com0tag:blogger.com,1999:blog-5295296306658648290.post-7747091946194629042021-04-26T02:03:00.001-07:002021-04-26T02:03:44.541-07:00A Simple AJAX Website in Java<p>During the Covid New Year of 2020, I created a simple prototype website using AJAX, with the goal of moving Java developers away from JavaScript and ideally also text-based HTML templates. I made my original solution a little more general, moved certain parts into the Ujorm framework, and am presenting the result here for your further inspiration.</p><p> </p><p>See the full article: <a href="https://dzone.com/articles/a-simple-ajax-website-in-java">https://dzone.com/articles/a-simple-ajax-website-in-java</a> <br /><br /></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFdTaeTyVdA0bnTjlhOcR_WxEO3plR3Myqk_G1nFFfZcsDPV2kkgqXBT_gLLtHm1Bh29UMNMkTRdgfFQLu3dfHci-7X9PXAMk7P2t-U78X1g4Jlf8z0G6-N5xp5qkRosGLDya3OWtkC0o/s619/ajax-form.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="503" data-original-width="619" height="386" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiFdTaeTyVdA0bnTjlhOcR_WxEO3plR3Myqk_G1nFFfZcsDPV2kkgqXBT_gLLtHm1Bh29UMNMkTRdgfFQLu3dfHci-7X9PXAMk7P2t-U78X1g4Jlf8z0G6-N5xp5qkRosGLDya3OWtkC0o/w475-h386/ajax-form.png" width="475" /></a></div><br />Ponechttp://www.blogger.com/profile/08356229927918860793noreply@blogger.com0tag:blogger.com,1999:blog-5295296306658648290.post-1496007723695264452019-05-13T12:35:00.001-07:002019-05-13T12:39:01.614-07:00The Story of Ujorm Framework<div dir="ltr" style="text-align: left;" trbidi="on">
<span style="color: #999999;"><i>How much time can Ujorm Framewrok save and why was it created in
the first place? The following article addresses more than these
questions.</i></span><br />
<br />
<i></i><br />
Somewhere back in 2008, I had an opportunity to participate in
development of an interesting transport reservations system written in
Java. The frontend was built on <a href="https://en.wikipedia.org/wiki/RichFaces" rel="nofollow">RichFaces</a>, a former component framework for Sun Microsystems' <a href="https://en.wikipedia.org/wiki/JavaServer_Faces" rel="nofollow">JavaServer Faces</a>, a <b>business logic</b> was placed into service classes managed by <a href="https://en.wikipedia.org/wiki/Spring_Framework" rel="nofollow">Spring</a> framework, persistent layer was built on <a href="https://cs.wikipedia.org/wiki/Hibernate" rel="nofollow">Hibernate</a> ORM framework.<br />
<a href="https://github.com/pponec/ujorm/blob/fa886d94d1612a15a48e53b7e44d4e249cb1ac60/docs/www/articles/StoryOfUjormFramework-en.md">See the full article on Github ...</a><br />
<br />
<br />
<br />
<br />
<br /></div>
Ponechttp://www.blogger.com/profile/08356229927918860793noreply@blogger.com0tag:blogger.com,1999:blog-5295296306658648290.post-19911262771025721892018-12-12T10:42:00.004-08:002018-12-12T10:43:23.905-08:00How to Effectively Work With a Relational Database Using Java JDBC<div dir="ltr" style="text-align: left;" trbidi="on">
Spring Tool isn’t right for you, try the JdbcBuilder class from the UjoTools project ...<br />
<br />
The full atricle:<br />
<a href="https://dzone.com/articles/how-to-effectively-work-with-a-relational-database">https://dzone.com/articles/how-to-effectively-work-with-a-relational-database</a></div>
Ponechttp://www.blogger.com/profile/08356229927918860793noreply@blogger.com0tag:blogger.com,1999:blog-5295296306658648290.post-82664023217703292542015-02-18T15:27:00.002-08:002015-02-18T15:27:35.167-08:00Repository changes<div dir="ltr" style="text-align: left;" trbidi="on">
For the latest sources use the Mercurial statement:
<pre>
hg clone <a href="http://hg.code.sf.net/p/ujoframework/code" target="_blank">http://hg.code.sf.net/p/<wbr></wbr>ujoframework/code</a> ujorm </pre></div>
Ponechttp://www.blogger.com/profile/08356229927918860793noreply@blogger.com0tag:blogger.com,1999:blog-5295296306658648290.post-13355631374324205012014-04-27T00:42:00.003-07:002014-04-29T09:49:05.089-07:00Key-value Coding in Java<div dir="ltr" style="text-align: left;" trbidi="on">
I would like to introduce a guide to the <b>key-value</b> architecture of domain objects where their attributes are provided using objects called Keys only. The Key-value approach simplifies and accelerates the development of
applications. Practical use is demonstrated in the Demo-Hotels project linked at the end of the <a href="http://ujorm.org/sample/key-value.html">original article</a>. The chapter list follows:<br />
<ul style="text-align: left;">
<li>Writing and reading values</li>
<li>Restoring default values</li>
<li>Shallow copy of an object</li>
<li>Validation attributes when writing</li>
<li>Composite Keys</li>
<li>Criterion as a condition model</li>
<li>Criterion for filtering collection</li>
<li>Collection sorting</li>
<li>Serialization of Keys</li>
<li>Import from CSV format</li>
</ul>
<div style="text-align: left;">
<br />
Short examples are based on the Ujorm library.</div>
<div style="text-align: left;">
<br /></div>
<img alt="key-value-model" src="http://ujorm.org/sample/image-key-value/key-value-model.png" height="120" style="margin: 15px 80px; vertical-align: top;" width="355" /><br />
<div style="text-align: left;">
<br /></div>
<div style="text-align: left;">
<div style="text-align: left;">
Link to the original article:<br />
<a href="http://ujorm.org/sample/key-value.html">http://ujorm.org/sample/key-value.html</a></div>
</div>
</div>
Ponechttp://www.blogger.com/profile/08356229927918860793noreply@blogger.com0tag:blogger.com,1999:blog-5295296306658648290.post-80613153862715025492014-03-11T12:59:00.004-07:002014-03-11T15:04:04.120-07:00Ujorm version 1.44<div dir="ltr" style="text-align: left;" trbidi="on">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">there is available a new version Ujorm in Maven repositories with a long-awaited support for creating hierarchical queries for a database relations to itself. Previously it was necessary to use a native SQL commands, however it can be modeled using Ujorm key type by an extended <a href="http://ujorm.org/javadoc/org/ujorm/Key.html#alias%28java.lang.String%29">alias name</a> for relation now. The next example shows a query for all Customers with a surename </span><span style="background-color: transparent; color: #ba2121; font-family: Verdana; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">"Brown"</span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> and grandparent called </span><span style="background-color: transparent; color: #ba2121; font-family: Verdana; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">"Smith":</span><br />
<br />
<div dir="ltr" style="line-height: 1.35; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #555555; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> </span><span style="background-color: transparent; color: #555555; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;">Criterion</span><span style="background-color: transparent; color: #666666; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"><</span><span style="background-color: transparent; color: #555555; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Customer</span><span style="background-color: transparent; color: #666666; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">></span><span style="background-color: transparent; color: #555555; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> crn1</span><span style="background-color: transparent; color: #666666; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">,</span><span style="background-color: transparent; color: #555555; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> crn2</span><span style="background-color: transparent; color: #666666; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">,</span><span style="background-color: transparent; color: #555555; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> crn3</span><span style="background-color: transparent; color: #666666; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">;</span></div>
<div dir="ltr" style="line-height: 1.35; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #555555; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> crn1 </span><span style="background-color: transparent; color: #666666; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">=</span><span style="background-color: transparent; color: #555555; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> Customer</span><span style="background-color: transparent; color: #666666; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">.</span><span style="background-color: transparent; color: #7d9029; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">PARENT</span><span style="background-color: transparent; color: #666666; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">.</span><span style="background-color: transparent; color: #7d9029; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">alias</span><span style="background-color: transparent; color: #666666; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">(</span><span style="background-color: transparent; color: #ba2121; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">"parent1"</span><span style="background-color: transparent; color: #666666; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">)</span></div>
<div dir="ltr" style="line-height: 1.35; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #555555; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> </span><span style="background-color: transparent; color: #666666; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">.</span><span style="background-color: transparent; color: #7d9029; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">add</span><span style="background-color: transparent; color: #666666; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">(</span><span style="background-color: transparent; color: #555555; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Customer</span><span style="background-color: transparent; color: #666666; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">.</span><span style="background-color: transparent; color: #7d9029; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">PARENT</span><span style="background-color: transparent; color: #666666; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">).</span><span style="background-color: transparent; color: #7d9029; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">alias</span><span style="background-color: transparent; color: #666666; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">(</span><span style="background-color: transparent; color: #ba2121; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">"parent2"</span><span style="background-color: transparent; color: #666666; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">)</span></div>
<div dir="ltr" style="line-height: 1.35; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #555555; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> </span><span style="background-color: transparent; color: #666666; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">.</span><span style="background-color: transparent; color: #7d9029; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">add</span><span style="background-color: transparent; color: #666666; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">(</span><span style="background-color: transparent; color: #555555; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Customer</span><span style="background-color: transparent; color: #666666; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">.</span><span style="background-color: transparent; color: #7d9029; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">SURENAME</span><span style="background-color: transparent; color: #666666; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">).</span><span style="background-color: transparent; color: #7d9029; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">whereEq</span><span style="background-color: transparent; color: #666666; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">(</span><span style="background-color: transparent; color: #ba2121; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">"Smith"</span><span style="background-color: transparent; color: #666666; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">);</span></div>
<div dir="ltr" style="line-height: 1.35; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #555555; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> crn2 </span><span style="background-color: transparent; color: #666666; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">=</span><span style="background-color: transparent; color: #555555; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> Customer</span><span style="background-color: transparent; color: #666666; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">.</span><span style="background-color: transparent; color: #7d9029; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">SURENAME</span><span style="background-color: transparent; color: #666666; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">.</span><span style="background-color: transparent; color: #7d9029; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">whereEq</span><span style="background-color: transparent; color: #666666; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">(</span><span style="background-color: transparent; color: #ba2121; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">"Brown"</span><span style="background-color: transparent; color: #666666; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">);</span></div>
<div dir="ltr" style="line-height: 1.35; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #555555; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> crn3 </span><span style="background-color: transparent; color: #666666; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">=</span><span style="background-color: transparent; color: #555555; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> crn1</span><span style="background-color: transparent; color: #666666; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">.</span><span style="background-color: transparent; color: #7d9029; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">and</span><span style="background-color: transparent; color: #666666; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">(</span><span style="background-color: transparent; color: #555555; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">crn2</span><span style="background-color: transparent; color: #666666; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">);</span></div>
<br />
<div dir="ltr" style="line-height: 1.35; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: #555555; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> </span><span style="background-color: transparent; color: #555555; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;">Customer</span><span style="background-color: transparent; color: #555555; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> customer </span><span style="background-color: transparent; color: #666666; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">=</span><span style="background-color: transparent; color: #555555; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> session</span><span style="background-color: transparent; color: #666666; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">.</span><span style="background-color: transparent; color: #7d9029; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">createQuery</span><span style="background-color: transparent; color: #666666; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">(</span><span style="background-color: transparent; color: #555555; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">crn3</span><span style="background-color: transparent; color: #666666; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">).</span><span style="background-color: transparent; color: #7d9029; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">uniqueResult</span><span style="background-color: transparent; color: #666666; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">();</span></div>
<span style="background-color: transparent; color: #555555; font-family: Verdana; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">aliases can be used </span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">also </span>in some cases where one entity contains multiple keys to the same entity, an example may be two relations Person.</span><span style="background-color: transparent; color: #38761d; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">MOTHER, </span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Person.</span><span style="background-color: transparent; color: #38761d; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">FATHER.</span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> </span></div>
<br />
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Other features of the Ujorm series 1.4x:</span></div>
<ul style="margin-bottom: 0pt; margin-top: 0pt;">
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">XML configuration of an ORM meta-model can be validated using a </span><a href="http://ujorm.org/ujorm-1.43.xsd" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline;">XSD file</span></a><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">and there is available a new module (ujo-xsd) to generate XSD files accoridng an UJO class</span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">ORM supports </span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;">native DB sequences</span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> using the class </span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;">NativeDbSequencer</span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">ORM lazy loading can be enabled (optionally by a parameter) on the </span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;">closed </span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">session too, for the case an action opens a new DB connection for a necessary short time only</span></div>
</li>
<li dir="ltr" style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">there was removed the interfaces Property, which has been deprecated since version 1.30 and should be replaced by a new interface Key (including related methods)</span></div>
</li>
</ul>
<br />
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br />
<div dir="ltr" style="line-height: 1.15; margin-bottom: 0pt; margin-top: 0pt;">
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">more detailed description is in the </span><a href="http://ujorm.org/javadoc/changes.txt" style="text-decoration: none;"><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline;">release</span></a><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> notes.</span></div>
</div>
Ponechttp://www.blogger.com/profile/08356229927918860793noreply@blogger.com0tag:blogger.com,1999:blog-5295296306658648290.post-32699790026578277332013-10-01T13:35:00.002-07:002013-10-01T13:42:39.408-07:00The CRUD application for Ujorm and Wicket<div dir="ltr" style="text-align: left;" trbidi="on">
The java library <b>Ujorm</b> was <a href="http://www.theserverside.com/discussions/thread.tss?thread_id=50604">introduced</a> in 2008 under the old name UJO Framework. Since then, five years have passed
and the source code has been modified many times but the basic idea - accessing
to the properties by constants called keys - remains.<br />
<br />
I would like to present a small web project for hotel booking to show an interesting features of the Ujorm library. Graphical interface is
rendered by the <b>Apache Wicket</b> framework.<br />
<br />
See the next screenshot of the form dialog including a source code:<br />
<br />
<div style="text-align: center;">
<img alt="hotelFormGui" height="263" src="http://ujorm.org/sample/image-hotels/hotelFormGui.png" width="400" />
</div>
<br />
<br />
<div style="text-align: center;">
<img alt="hotelFormCode" height="281" src="http://ujorm.org/sample/image-hotels/hotelFormCode.png" width="640" />
</div>
<br />
To be <a href="http://ujorm.org/sample/hotels.html">continued</a> ...
</div>
Ponechttp://www.blogger.com/profile/08356229927918860793noreply@blogger.com0tag:blogger.com,1999:blog-5295296306658648290.post-44834031868975419642013-01-20T03:40:00.001-08:002013-01-20T03:40:55.081-08:00Ujorm 1.32 released<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="post-body entry-content" id="post-body-8457406940177856725" itemprop="description articleBody">
<div dir="ltr" style="text-align: left;">
The new release of Ujorm framework is released with two major features:<br />
<ul style="text-align: left;">
<li>the new validators are available for checking a consistency of the input values.
The Ujorm validators have got a similar meaning for Ujo object how the
<a href="http://docs.jboss.org/hibernate/validator/5.0/reference/en-US/html_single/">Bean Validation (JSR 303)</a> implementation for the JavaBeans. For more information see the the <a href="http://ujorm.org/javadoc/org/ujorm/package-summary.html#validators">documentation</a> or a <a href="http://ujoframework.svn.sourceforge.net/viewvc/ujoframework/trunk/project-m2/ujo-core/src/test/java/org/ujorm/validator/ValidatorTest.java?revision=1617&view=markup">jUnit tests</a>.</li>
<li> the ORM supports reading a related database tables by the one SQL
request using an extended implementation of the Query object. More
information are described in <a href="http://ujorm.org/orm/tutorial/">ORM user guide</a>.</li>
</ul>
<div style="text-align: left;">
See a more information on the <a href="http://ujorm.org/javadoc/changes.txt">release notes page</a>. </div>
</div>
</div>
</div>
Ponechttp://www.blogger.com/profile/08356229927918860793noreply@blogger.com0tag:blogger.com,1999:blog-5295296306658648290.post-84574069401778567252012-12-11T15:35:00.001-08:002012-12-11T15:35:43.377-08:00Ujorm 1.31 released<div dir="ltr" style="text-align: left;" trbidi="on">
There is available a new release of Ujorm framework, the major changes are:<br />
<ul style="text-align: left;">
<li>database statements UPDATE or DELETE supports entity relations in the Criterion - including batch mode</li>
<li>SQL entity and column names can be "quoted" optionally in the real SQL statements, for more information see the method: MetaParams.setQuotedSqlNames()</li>
<li>the one critical bug is fixed for some cases of the lazy loading</li>
<li>explicitly defined Key name created using a factory is fixed now</li>
<li>there is available the new great <a href="http://ujorm.blogspot.cz/2012/12/getter-generator-for-netbeans.html">plugging to NetBeans IDE</a> to generate getters and setters easy for UJO - thanks to Martin Mahr</li>
</ul>
<div style="text-align: left;">
See a more information on the <a href="http://ujorm.org/javadoc/changes.txt">release notes page</a>. </div>
</div>
PPonechttp://www.blogger.com/profile/01001091420530572076noreply@blogger.com1tag:blogger.com,1999:blog-5295296306658648290.post-15305779042583981862012-12-11T15:12:00.000-08:002012-12-11T22:36:28.768-08:00Getter Generator for NetBeans<div dir="ltr" style="text-align: left;" trbidi="on">
I would like to introduce a new open-source plugin designed for NetBeans IDE 7.2 which is used for generating getters and setters of the UJO objects by its Keys. The source is ready to download on the <a href="https://sourceforge.net/projects/ujoframework">SourceForge repository</a> code include binaries. To illustrate see a few screenshots: <br />
<br />
1. Download a file type "nbm" from
SourceForge to a local directory and call the NB-plugin manager to
install the plugin:<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilUfj-7f0iRRs-NN671Nc67Wzrm9UO1TymsmpSApCBXEyDk5Yy3l5HWv7dqGKW_eON_xD3xj_ZoLYOLuRKQhiPr1GNm0w7DLhSrWbOM1nNdJ1Tjd41Nlx1j4GcKjLszMMTEVGsqsZTcDo/s1600/ujorm_03.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9fZBzmpltrkKQEc9xhLolmyh_lnIDI0CspXsZdrXsjqhMfXpJqfsl1Qf-bPtR5XONN3vJDXEgqa278pPDIyUjQJYp1xt41dFF5e0rlc0xb6RtnA98SEl3RUgZgrcH8Vs_-t0YKDvf6FU/s1600/ujorm_01.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="355" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9fZBzmpltrkKQEc9xhLolmyh_lnIDI0CspXsZdrXsjqhMfXpJqfsl1Qf-bPtR5XONN3vJDXEgqa278pPDIyUjQJYp1xt41dFF5e0rlc0xb6RtnA98SEl3RUgZgrcH8Vs_-t0YKDvf6FU/s400/ujorm_01.png" width="400" /></a></div>
<br />
<br />
2. The new plugin we can find in the context menu on the place, where we have actions for generate getters and setters for the ordinary JavaBeans:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_Bdcnv2a6O1tfTXHAsHe49wTwPEZGL5hx5Z0ChnxnpIjBDVpqo_lzDl5NAE2JKuZbUibgHPIIElzMsjZ9dIv-Cp2LfSW_ZG-DEPnJJWFXT9fIxl54RBaDWeRnJtmyJyFw2GVSD8csX_4/s1600/ujorm_02.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="210" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_Bdcnv2a6O1tfTXHAsHe49wTwPEZGL5hx5Z0ChnxnpIjBDVpqo_lzDl5NAE2JKuZbUibgHPIIElzMsjZ9dIv-Cp2LfSW_ZG-DEPnJJWFXT9fIxl54RBaDWeRnJtmyJyFw2GVSD8csX_4/s400/ujorm_02.png" width="400" /></a></div>
<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilUfj-7f0iRRs-NN671Nc67Wzrm9UO1TymsmpSApCBXEyDk5Yy3l5HWv7dqGKW_eON_xD3xj_ZoLYOLuRKQhiPr1GNm0w7DLhSrWbOM1nNdJ1Tjd41Nlx1j4GcKjLszMMTEVGsqsZTcDo/s1600/ujorm_03.png" style="margin-left: 1em; margin-right: 1em;"></a> <br />
<br />
3. The dialog lets as select a Keys to getters and setters. The last option below under the list enables to copy a JavaDoc from Keys to the methods.<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilUfj-7f0iRRs-NN671Nc67Wzrm9UO1TymsmpSApCBXEyDk5Yy3l5HWv7dqGKW_eON_xD3xj_ZoLYOLuRKQhiPr1GNm0w7DLhSrWbOM1nNdJ1Tjd41Nlx1j4GcKjLszMMTEVGsqsZTcDo/s1600/ujorm_03.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilUfj-7f0iRRs-NN671Nc67Wzrm9UO1TymsmpSApCBXEyDk5Yy3l5HWv7dqGKW_eON_xD3xj_ZoLYOLuRKQhiPr1GNm0w7DLhSrWbOM1nNdJ1Tjd41Nlx1j4GcKjLszMMTEVGsqsZTcDo/s1600/ujorm_03.png" /></a></div>
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilUfj-7f0iRRs-NN671Nc67Wzrm9UO1TymsmpSApCBXEyDk5Yy3l5HWv7dqGKW_eON_xD3xj_ZoLYOLuRKQhiPr1GNm0w7DLhSrWbOM1nNdJ1Tjd41Nlx1j4GcKjLszMMTEVGsqsZTcDo/s1600/ujorm_03.png" style="margin-left: 1em; margin-right: 1em;"><br /></a>
<br />
4. Result: The generated code will look similar to the following:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihOy1FcRjeetOBvqlq5r6CgesWXLBDdgYp3IZsDT7KBquc9S2wOcB_3qWf8dhYkjR7VEaLp1bltWdRAnPp6bckifrlt1g-TLNPZWGFXEJ1xzzWcU7yDU7bk1eorGxqJkCrxnc1xQFOpQM/s1600/ujorm_04.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihOy1FcRjeetOBvqlq5r6CgesWXLBDdgYp3IZsDT7KBquc9S2wOcB_3qWf8dhYkjR7VEaLp1bltWdRAnPp6bckifrlt1g-TLNPZWGFXEJ1xzzWcU7yDU7bk1eorGxqJkCrxnc1xQFOpQM/s1600/ujorm_04.png" /></a></div>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_Bdcnv2a6O1tfTXHAsHe49wTwPEZGL5hx5Z0ChnxnpIjBDVpqo_lzDl5NAE2JKuZbUibgHPIIElzMsjZ9dIv-Cp2LfSW_ZG-DEPnJJWFXT9fIxl54RBaDWeRnJtmyJyFw2GVSD8csX_4/s1600/ujorm_02.png" style="margin-left: 1em; margin-right: 1em;"><br /></a> <br />
For this plugin deserve our thanks to the author Martin Mahr.</div>
Ponechttp://www.blogger.com/profile/08356229927918860793noreply@blogger.com1tag:blogger.com,1999:blog-5295296306658648290.post-59792138924617657112012-11-27T13:34:00.000-08:002012-11-27T13:34:03.755-08:00Instructions for migration to Ujorm 1.30<div dir="ltr" style="text-align: left;" trbidi="on">
If you are considering migrating to Ujorm 1.30, I recommend to use three simple steps:<br />
<ol style="text-align: left;">
<li>upgrade Maven dependendecies to: groupId=org.ujorm + version=1.30</li>
<li>replace all texts "UjoProperty" for the targets "Key" in your project and </li>
<li>fix deprecated methods</li>
</ol>
<div style="text-align: left;">
<br />Optionally, you can use the KeyFactory class to create new keys instead of original static factory methods.</div>
</div>
Ponechttp://www.blogger.com/profile/08356229927918860793noreply@blogger.com0tag:blogger.com,1999:blog-5295296306658648290.post-38005122688627198372012-11-04T12:15:00.001-08:002012-11-04T12:16:30.018-08:00Module Ujo-Wicket dependency<div dir="ltr" style="text-align: left;" trbidi="on">
In the last release 1.30 I have found a small bug in dependency on the artifact ujo-wicket. Fortunately there is a simple solution using a small hack. See the next dependecies solution to fix it: <br />
<div style="text-align: left;">
<span style="font-family: "Courier New",Courier,monospace;"><span style="font-size: x-small;"><dependency></span></span></div>
<div style="text-align: left;">
<span style="font-family: "Courier New",Courier,monospace;"><span style="font-size: x-small;"> <groupId>org.ujorm</groupId></span></span></div>
<div style="text-align: left;">
<span style="font-family: "Courier New",Courier,monospace;"><span style="font-size: x-small;"> <artifactId><span style="color: #351c75;"><b>ujo-wicket</b></span></artifactId></span></span></div>
<div style="text-align: left;">
<span style="font-family: "Courier New",Courier,monospace;"><span style="font-size: x-small;"> <version>1.30</version></span></span></div>
<div style="text-align: left;">
<span style="font-family: "Courier New",Courier,monospace;"><span style="font-size: x-small;"> <exclusions></span></span></div>
<div style="text-align: left;">
<span style="font-family: "Courier New",Courier,monospace;"><span style="font-size: x-small;"> <exclusion></span></span></div>
<div style="text-align: left;">
<span style="font-family: "Courier New",Courier,monospace;"><span style="font-size: x-small;"> <groupId>org.ujorm</groupId></span></span></div>
<div style="text-align: left;">
<span style="font-family: "Courier New",Courier,monospace;"><span style="font-size: x-small;"> <artifactId><span style="color: #351c75;"><b>ujo-core</b></span></artifactId></span></span></div>
<div style="text-align: left;">
<span style="font-family: "Courier New",Courier,monospace;"><span style="font-size: x-small;"> </exclusion></span></span></div>
<div style="text-align: left;">
<span style="font-family: "Courier New",Courier,monospace;"><span style="font-size: x-small;"> </exclusions></span></span></div>
<div style="text-align: left;">
<span style="font-family: "Courier New",Courier,monospace;"><span style="font-size: x-small;"></dependency></span></span></div>
<div style="text-align: left;">
<span style="font-family: "Courier New",Courier,monospace;"><span style="font-size: x-small;"><dependency></span></span></div>
<div style="text-align: left;">
<span style="font-family: "Courier New",Courier,monospace;"><span style="font-size: x-small;"> <groupId>org.ujorm</groupId></span></span></div>
<div style="text-align: left;">
<span style="font-family: "Courier New",Courier,monospace;"><span style="font-size: x-small;"> <artifactId><span style="color: #351c75;"><b>ujo-core</b></span></artifactId></span></span></div>
<div style="text-align: left;">
<span style="font-family: "Courier New",Courier,monospace;"><span style="font-size: x-small;"> <version>1.30</version></span></span></div>
<div style="text-align: left;">
<span style="font-family: "Courier New",Courier,monospace;"><span style="font-size: x-small;"></dependency></span></span></div>
<div style="text-align: left;">
<br /></div>
</div>
Ponechttp://www.blogger.com/profile/08356229927918860793noreply@blogger.com0tag:blogger.com,1999:blog-5295296306658648290.post-17190589571206225252012-10-27T10:38:00.000-07:002012-10-27T10:39:37.335-07:00Ujorm 1.30 released<div dir="ltr" style="text-align: left;" trbidi="on">
<h2 dir="ltr" id="internal-source-marker_0.08725153823625509">
</h2>
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">After a long pause I would like to introduce a new version, </span><a href="http://ujorm.org/"><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline;">Ujorm</span></a><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> 1.30, with several important changes in the</span><a href="http://ujorm.org/javadoc/index.html"><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> </span><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline;">API</span></a><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> - in the first place I should mention that the original interface called UjoProperty was renamed to </span><a href="http://ujorm.org/javadoc/org/ujorm/Key.html"><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline;">Key.</span></a><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">
The original interface is kept as @Deprecated now, however, its
implementation classes remain. The reasons for the change are the
following: </span><br />
<ul style="margin-bottom: 0pt; margin-top: 0pt;">
<li style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">the
original interface name UjoProperty was a little confusing due his
immutable features and it was sometimes difficult to explain its
meaning. The new name reflects the parameter names of the common
interface java.util.Map.</span></li>
<li style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">the original name was too long and therefore the source code was difficult to read</span></li>
<li style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">several
new classes have been created recently and it was useful to make the
decision quickly. Particularly there are two new classes, KeyRing and
KeyFactory.</span></li>
</ul>
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">The new </span><a href="http://ujorm.org/javadoc/org/ujorm/core/KeyRing.html"><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline;">KeyRing</span></a><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> object is a </span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;">serializable</span><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">
collection of Keys. Know that any instance of the Key is not
serializable directly because it must have a unique instance in the
class-loader. Yet sometimes we need to serialize some Keys, and the
KeyRing can be the right solution. An example of this real use can be a
use with the </span><a href="http://wicket.apache.org/"><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline;">Wicket</span></a><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> framework.</span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">The second class is called </span><a href="http://ujorm.org/javadoc/org/ujorm/core/KeyFactory.html"><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline;">KeyFactory</span></a><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">
and is used to create new instances Keys. An advantage of the factory
is that it can also be used to create static Keys in an interface. The
factory can create the Key name according to its field name, optionally
the name can be converted to camel-case. Now there is no need to send
the key’s data type as a parameter when creating it because this
framework can obtain the value from the meta-model of the field when the
factory is locked (or when the getKeys() method is called for the first
time). Each Key contains a new attribute with its domain class now. An
example of the use:</span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br />
<span style="background-color: transparent; color: black; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">public class </span><span style="background-color: transparent; color: black; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;">Person</span><span style="background-color: transparent; color: black; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> extends </span><span style="background-color: transparent; color: black; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;">AbstractUjo</span><span style="background-color: transparent; color: black; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> {</span><br />
<span style="background-color: transparent; color: black; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> private static final KeyFactory f = newFactory(Person.class);</span><br />
<span style="background-color: transparent; color: black; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> </span><br />
<span style="background-color: transparent; color: black; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> public static final </span><span style="background-color: transparent; color: black; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;">Key</span><span style="background-color: transparent; color: black; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"><Person,String > NAME = f.newKey();</span><br />
<span style="background-color: transparent; color: black; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> public static final </span><span style="background-color: transparent; color: black; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;">Key</span><span style="background-color: transparent; color: black; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"><Person,Boolean> MALE = f.newKey();</span><br />
<span style="background-color: transparent; color: black; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> public static final </span><span style="background-color: transparent; color: black; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;">Key</span><span style="background-color: transparent; color: black; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"><Person,Double > CASH = f.newKey();</span><br />
<span style="background-color: transparent; color: black; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> </span><br />
<span style="background-color: transparent; color: black; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> @Override public KeyList<?> readKeys() {</span><br />
<span style="background-color: transparent; color: black; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> return f.getKeys();</span><br />
<span style="background-color: transparent; color: black; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> }</span><br />
<span style="background-color: transparent; color: black; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">}</span><br />
<span style="background-color: transparent; color: black; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">The Ujorm framework offers a new, simplified key called</span><a href="http://ujorm.org/javadoc/org/ujorm/WeakKey.html"><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> </span><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline;">WeakKey</span></a><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">, which does not have a generic domain parameter. It can be</span><a href="http://ujorm.org/javadoc/org/ujorm/package-summary.html#weakKey"><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> </span><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline;">used</span></a><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">
instead of constants for working with Map, List objects, or for reading
parameters from the HttpRequest object, where it converts to the
desired data type. The instance is created using the </span><a href="http://ujorm.org/javadoc/org/ujorm/core/WeakKeyFactory.html"><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline;">WeakKeyFactory</span></a><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> class.</span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Ujorm can be connected with a Maven project using:</span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br />
<span style="background-color: transparent; color: black; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"><dependency></span><br />
<span style="background-color: transparent; color: black; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> <groupId>org.ujorm</groupId></span><br />
<span style="background-color: transparent; color: black; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> <artifactId>ujo-core</artifactId></span><br />
<span style="background-color: transparent; color: black; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> <version>1.30</version></span><br />
<span style="background-color: transparent; color: black; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></dependency></span><br />
<span style="background-color: transparent; color: black; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br />
<span style="background-color: transparent; color: black; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">in case of use of the ORM module use:</span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br />
<span style="background-color: transparent; color: black; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"><dependency></span><br />
<span style="background-color: transparent; color: black; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> <groupId>org.ujorm</groupId></span><br />
<span style="background-color: transparent; color: black; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> <artifactId>ujo-orm</artifactId></span><br />
<span style="background-color: transparent; color: black; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> <version>1.30</version></span><br />
<span style="background-color: transparent; color: black; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></dependency></span><br />
<span style="background-color: transparent; color: black; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br />
<span style="background-color: transparent; color: black; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">To use UJO objects in</span><a href="http://wicket.apache.org/"><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> </span><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline;">Wicket framework</span></a><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">,
an implementation of the KeyModel class is necessary. The KeyModel
class is similar to the standard implementation of a Wicket class called</span><a href="http://wicket.apache.org/apidocs/1.4/org/apache/wicket/model/PropertyModel.html"><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> </span><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline;">PropertyModel.</span></a><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> The class can be joined using the following depenency:</span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br />
<span style="background-color: transparent; color: black; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"><dependency></span><br />
<span style="background-color: transparent; color: black; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> <groupId>org.ujorm</groupId></span><br />
<span style="background-color: transparent; color: black; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> <artifactId>ujo-wicket/artifactId></span><br />
<span style="background-color: transparent; color: black; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> <version>1.30</version></span><br />
<span style="background-color: transparent; color: black; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></dependency></span><br />
<span style="background-color: transparent; color: black; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">The
Wicket-support module does not contain a wide range of services, yet I
am enclosing a simple example of creating a simple table for
inspiration:</span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br />
<span style="background-color: transparent; color: black; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">List<ICellPopulator> columns = </span><span style="background-color: transparent; color: black; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;">KeyPopulator</span><span style="background-color: transparent; color: black; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">.list</span><br />
<span style="background-color: transparent; color: black; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> ( Employee.ID</span><br />
<span style="background-color: transparent; color: black; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> , Employee.FIRSTNAME</span><br />
<span style="background-color: transparent; color: black; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> , Employee.LASTNAME</span><br />
<span style="background-color: transparent; color: black; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> , Employee.ADDRESS.add(Address.CITY)</span><br />
<span style="background-color: transparent; color: black; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> );</span><br />
<span style="background-color: transparent; color: black; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br />
<span style="background-color: transparent; color: black; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">final WebMarkupContainer table = new WebMarkupContainer("table");</span><br />
<span style="background-color: transparent; color: black; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">final </span><span style="background-color: transparent; color: black; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;">DataGridView</span><span style="background-color: transparent; color: black; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> grid = new </span><span style="background-color: transparent; color: black; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;">DataGridView</span><span style="background-color: transparent; color: black; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">("gridPanel", columns,</span><br />
<span style="background-color: transparent; color: black; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> new InnerPeopleProvicer());</span><br />
<span style="background-color: transparent; color: black; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">table.setOutputMarkupId(true);</span><br />
<span style="background-color: transparent; color: black; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">grid.setItemsPerPage(20);</span><br />
<span style="background-color: transparent; color: black; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">add(table);</span><br />
<span style="background-color: transparent; color: black; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">table.add(grid);</span><br />
<span style="background-color: transparent; color: black; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">add(new </span><span style="background-color: transparent; color: black; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: bold; text-decoration: none; vertical-align: baseline;">AjaxPagingNavigator</span><span style="background-color: transparent; color: black; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">("tableNavigator", grid));</span><br />
<span style="background-color: transparent; color: black; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br />
<span style="background-color: transparent; color: black; font-family: 'Courier New'; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">I
apologize for significant API changes to all users of the Ujorm
framework, however, all the chages are necessary for further development
of this library.</span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span><br />
<span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">Further information can be found in:</span><br />
<ul style="margin-bottom: 0pt; margin-top: 0pt;">
<li style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><a href="http://ujorm.org/javadoc/org/ujorm/package-summary.html#UJO"><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline;">Ujorm-Core </span></a><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">documentation</span><a href="http://ujorm.org/javadoc/org/ujorm/package-summary.html#UJO"><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> </span><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline;"></span></a></li>
<li style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><a href="http://ujorm.org/orm/tutorial/"><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline;">Ujorm </span></a><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">documentation</span><a href="http://ujorm.org/orm/tutorial/"><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> </span><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline;"></span></a></li>
<li style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;">ORM-home</span><a href="http://ujorm.org/"><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"> </span><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline;">page</span></a></li>
<li style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; list-style-type: disc; text-decoration: none; vertical-align: baseline;"><a href="http://ujorm.org/javadoc/changes.txt"><span style="background-color: transparent; color: #1155cc; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: underline; vertical-align: baseline;">description of changes</span></a><span style="background-color: transparent; color: black; font-family: Arial; font-size: 15px; font-style: normal; font-variant: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"></span></li>
</ul>
</div>
Ponechttp://www.blogger.com/profile/08356229927918860793noreply@blogger.com0tag:blogger.com,1999:blog-5295296306658648290.post-72800390260999358802011-11-06T22:37:00.000-08:002011-11-07T12:03:07.412-08:00Ujorm 1.21 releasedThe release notes:<br /><ul><li>Java 7.0 is supported now</li><li>native SQL query can be used in the run-time on demanding requirements</li><li>direct support for the Slf4J Logger framework</li><li>slightly extended API for an easier use</li><li>new special interface to store binary content to a BLOB</li><li>new abstract class (OrmTableSynchronized) is available for the safe use in a multi-thread environment</li><li>many other extensions is implemented and</li><li>small bug fixing for some dialects and some minor other bugs are fixed</li></ul><br />More information can be found on the <a href="http://ujoframework.org/javadoc/changes.txt">Release notes</a>.<div><br /></div>Ponechttp://www.blogger.com/profile/08356229927918860793noreply@blogger.com0tag:blogger.com,1999:blog-5295296306658648290.post-64765954369360135152011-06-14T09:58:00.000-07:002011-07-11T11:54:58.764-07:00Ujorm 1.20 releasedThe release notes:<br />
<ul><li>the project have changed a domain to the new: <a href="http://ujorm.org/">http://ujorm.org/</a></li>
<li>batch features are implemented for the SQL statements INSERT and UPDATE</li>
<li> there is possible to require only selected columns on the SELECT statement for better performance</li>
<li>the SELECT statement supports the key word: DISTINCT </li>
<li>each table can be marked to a READ-ONLY by a new parameter in the annotation @Table</li>
<li>the documentation <a href="http://ujorm.org/orm/tutorial/">Ujorm User Guide</a> is extended and new samples are done</li>
<li>new reverential projects are published on the <a href="http://ujorm.org/#reference">home page</a> </li>
</ul><div>More information can be found on the <a href="http://ujoframework.org/javadoc/changes.txt">Release notes</a>.</div>PPonechttp://www.blogger.com/profile/01001091420530572076noreply@blogger.com0tag:blogger.com,1999:blog-5295296306658648290.post-13458039199513558322011-02-06T22:18:00.000-08:002011-02-08T10:00:49.678-08:00Ujorm 1.10 releasedThe release notes:<br />
<ul><li><a href="http://ujoframework.org/javadoc/org/ujoframework/orm/dialect/MSSqlDialect.html">dialect</a> for the database MS-SQL is implemented thanks to Tomas Hampl from company <a href="http://www.effectiva.cz/">Effectiva</a></li>
<li>new <a href="http://ujoframework.org/javadoc/org/ujoframework/criterion/Criterion.html#forSql%28org.ujoframework.UjoProperty,%20java.lang.String%29">Native Criterion</a> is implemented with an SQL expression to use on Ujorm query</li>
<li>new annotation <a href="http://ujoframework.org/javadoc/org/ujoframework/orm/annot/Comment.html">@Comment</a> can be used to describe database tables or columns</li>
<li>documentation <a href="http://ujoframework.org/orm/tutorial/">Ujorm User Guide</a> is extended</li>
<li>new <a href="http://ujoframework.org/orm/tutorial/#Performance_6233224483458395_1_4940767214421822">performance test</a> with the database H2 is published</li>
<li>no major bug was discovered</li>
</ul><div>More information can be found on the <a href="http://ujoframework.org/javadoc/changes.txt">Release notes</a>.</div>PPonechttp://www.blogger.com/profile/01001091420530572076noreply@blogger.com0tag:blogger.com,1999:blog-5295296306658648290.post-892360236126781702010-10-20T09:51:00.000-07:002010-11-01T10:01:27.262-07:00Ujorm 1.00 releasedI would like to announce that the ORM framework <a href="http://ujorm.com/">Ujorm 1.00</a> has been released. The open-source framework was designed for the rapid Java development based on a relation database and the framework provides a type-safe API for database queries so the most of typing errors are detected before running the application. Developer can take an advantage of a code-completion in their favorite IDE at coding time.<br />
<br />
The Ujorm has implemented a lot of changes that have been designed on the desire of developers of real applications in the last year. Important features include:<br />
<ul><li>session and transaction management by the Spring framework</li>
<li>optimized performance and extended API</li>
<li>new documentation</li>
<li>positive <a href="http://ujoframework.blogspot.com/2010/10/ujorm-development-interview.html">feedback</a> from the production deployment</li>
</ul><br />
A development of several new projects based on Ujorm is on the way. The message from the developers added: "We have gained a good experience with the Ujorm and we plan other projects with it!"<br />
<br />
Related links:<br />
<ul><li><a href="http://ujoframework.blogspot.com/2010/10/ujorm-development-interview.html">Interview </a>about the Ujorm based development</li>
<li>Ujorm <a href="http://ujoframework.org/orm/tutorial/">User Guide</a></li>
<li><a href="http://ujorm.com/">Home page</a></li>
</ul>PPonechttp://www.blogger.com/profile/01001091420530572076noreply@blogger.com0tag:blogger.com,1999:blog-5295296306658648290.post-72817543819535736902010-10-18T10:22:00.000-07:002010-10-27T23:03:33.531-07:00The Ujorm development InterviewThe <a href="http://ujorm.com/">Ujorm</a> ORM framework has been installed on a production environment. I mediate to you an interview about the experience in developing and deploying an application built on Ujorm with the consent of the company's technical director.<br />
<br />
<div style="color: #a64d79;">Q: Hallo Radek, can you say a few words about yourself?</div>A: Hi, my name is Radek Majer, and I am Technical Director at <a href="http://www.effectiva.cz/">Effectiva Solutions s.r.o.</a>, which deals mainly in software development. My hobby is playing ice hockey.<br />
<br />
<div style="color: #a64d79;">Q: Can you introduce your application eCall based on Ujorm?</div>A: The <a href="http://www.effectiva.cz/en/ecall">eCall</a> is a complete software for advanced call center, thus it is not just a single application. The heart of the solution certainly is an aplication communicatingwith a PBX (Private branch exchange?) based on Ujorm. The purpose of this application is critical, system run depends on it, frequently constantly 24/7 and that is why is called the heart.<br />
<br />
<div style="color: #a64d79;">Q: What was your role in the project?</div>A: I am responsible, among others, for appropriate use of technology, not only in our company but also in other realised projects. Developers mostly prefer interesting or popular tools againstthe effective ones. It is necessary toprovide give them some latitude, but on the other hand, insist on a pragmatic solution.<br />
<br />
<div style="color: #a64d79;">Q: Why did you used Ujorm in place of a standard ORM framework?</div>A: I haveoften heard complaints of Hibernate from developers. Development in this ORM was far from effective development despite of all amenities offered by Hibernate. First of all, we looked at the problem of bad use, but we collectively came to the conclusion that the whole framework is just too complicated and on a large project is overly expensive for maintenance of stable ORM layer. Therefore, we searched for a simple alternative, and after considering all candidates we have chosen Ujorm.<br />
<br />
<div style="color: #a64d79;">Q: How many database tables does this application use?</div>A: Dozens. However, the number of records this application is dealing with is much more interesting. Imagine 50 operators who are using the application in real time. For processing the statistics are converted millions of records.<br />
<br />
<div style="color: #a64d79;">Q: Can you make publish any statistics in a real application workloads?</div>A: Exact numbers are not available, but the real need have shown even higher than primary estimates. We have not forced down any delays at the ORM layer. Ujorm deals with stress excelently.<br />
<br />
<div style="color: #a64d79;">Q: What problems have you solved using Ujorm?</div>A: The need the UJO use as Business ObjectsEveryone is now accustomed to use the POJO and UJO are just different. However, the benefits of the UJO architecture this initial reluctance have fully overcame.<br />
<br />
<div style="color: #a64d79;">Q: Has Ujorm brought any benefits to your project?</div>A: Yes, I have to say that the benefit is not only faster development, but especially much better maintainability of the product further into the future.<br />
<br />
<div style="color: #a64d79;">Q: Will you use the Ujorm into your new projects?</div>A: Yes, we have no particular reason to go back to Hibernate.<br />
<br />
<div style="color: #a64d79;">Q: What would you say to developers who are considering about using the Ujorm?</div>A: Think :)<br />
<div style="color: #a64d79;">Q: Thank you for the interview.</div>PPonechttp://www.blogger.com/profile/01001091420530572076noreply@blogger.com0tag:blogger.com,1999:blog-5295296306658648290.post-61650995016484542572010-08-08T10:46:00.000-07:002010-08-08T10:49:44.100-07:00jWorksheet domainThe jWorkSheet is available on a new domain: <a href="http://jworksheet.ponec.net/">http://jworksheet.ponec.net/</a> . In case you have a problem with the Lite version of jWorkSheet, modify you local JNLP file by the new content:<br />
<br />
<code><br />
<?xml version="1.0" encoding="utf-8"?> <br />
<jnlp <br />
spec="1.0+" <br />
codebase="http://jworksheet.ponec.net/" <br />
href="file.jnlp"> <br />
<information> <br />
<title>JWorkSheet</title> <br />
<vendor>Pavel Ponec</vendor> <br />
<homepage href="."/> <br />
<description>...</description> <br />
<description kind="short">...</description> <br />
<icon href="logo.png"/><br />
<icon kind="splash" href="logo.png"/> <br />
<offline-allowed/> <br />
</information><br />
<security><br />
<all-permissions/> <br />
</security><br />
<resources> <br />
<j2se version="1.5+" max-heap-size="32m"/> <br />
<jar href="jWorkSheet.jar"/><br />
<jar href="lib/UJO.jar" /><br />
</resources> <br />
<application-desc <br />
main-class="net.ponec.jworksheet.gui.JWorkSheet"> <br />
<argument></argument><br />
</application-desc> <br />
</jnlp> </code><br />
<br />
The JNLP file can be found on the Windows XP in directory:<br />
C:\Program Files\jWorkSheet\file.jnlp<br />
<br />
The small bug will be fixed in the next release, probably in September.PPonechttp://www.blogger.com/profile/01001091420530572076noreply@blogger.com0tag:blogger.com,1999:blog-5295296306658648290.post-57568607614316633072010-03-17T11:11:00.000-07:002010-03-17T15:06:23.000-07:00Ujorm 0.93 released<h2></h2>The open-source ORM framework <a href="http://ujorm.com/">Ujorm</a> 0.93 for rapid Java development based on a relation database has been released. The framework provides a type-safe API for database queries so the most of typing errors are detected before running the application. Developer can take an advantage of a code-completion in their favorite IDE at coding time.<br />
<br />
New features:<br />
<ul><li>incremental database update by meta-model using DDL statements</li>
<li>LIMIT and OFFSET are supported</li>
<li>database indexes are created by the meta-model, added support for unique, non-unique indexes including the composed one</li>
<li>checking of SQL keywords</li>
<li>more enhancements inspired by the real needs of developers of commercial application</li>
</ul><br />
<span class="medium_text" id="b392"><span style="background-color: white;">Release of version 1.0 is scheduled for autumn 2010, in this version is planned</span></span>:<br />
<ul><li><span class="medium_text" id="ugv9"><span style="background-color: white;">controlling the session and transactions by the Spring <span class="medium_text" id="hzm6"><span style="background-color: white;">Framework </span></span></span></span></li>
<li><span class="medium_text"><span style="background-color: white;"><span class="medium_text"><span style="background-color: white;"><span class="medium_text" id="ed5w"><span style="background-color: white;">s</span><span style="background-color: white;">upport for calling database stored procedures</span></span></span></span></span></span></li>
<li><span class="medium_text" id="r103"><span style="background-color: white;"><span class="medium_text" id="c:_i">completing Wiki documentation</span></span></span></li>
</ul><br />
Related links:<br />
<ul><li><a href="http://ujorm.com/">Home page</a></li>
<li><a href="http://ujoframework.svn.sourceforge.net/viewvc/ujoframework/trunk/samples/ujorm/src/main/java/org/SampleORM.java?view=markup">Tutorial</a></li>
<li><a href="http://ujoframework.org/dokuwiki/doku.php">Wiki</a></li>
</ul>PPonechttp://www.blogger.com/profile/01001091420530572076noreply@blogger.com2