22nd January 2008 - By Aaron
There is no specific method for NULLS FIRST (default is NULLS LAST), but you can still accomplish this through the expression api.
You can simply append some sql to the end of your ordering field expression and it will take care of it for you.
For example, if you are ordering by the name then this would put the nulls last (default):
query.addOrdering(builder.get("name"));
This code could be ammended into the following to put nulls first:
query.addOrdering(builder.get("name").postfixSQL("NULLS FIRST"));
It’s that easy.
Posted in Programming | No Comments »
17th August 2007 - By Aaron
Well the first question to ask is what unit do you want the difference in. This is one of the reasons many people stick to incremental date math instead of math returning an int.
Lets say you want to do a basic age calculation. How old is Joe? His birthday is 7/29/1981. Well you could subtract 1981 from today, then determine if he had a birthday this year, which could mean comparing everything up to the milliseconds. The problem is, such a calculation is not as accurate as it would seem. This style method fails to preserve the validity of the passing of leap years, leap seconds, etc. If you asked how many days old Joe is then your answer would be something like 365 * (current - 1981) + number of days this year - number of days between Jan 1 and July 29. Well you forgot a few leap days in there, at least 5.
Read the rest of this entry »
Posted in Computers, Programming | 4 Comments »
26th July 2007 - By Aaron
I have published a pet project of mine online recently. After looking at many different project hosting sites I resolved on google code. It seems to have a great interface and amount of space available.
The project is called JExel, and is a Java based expression language parser. It’s not complex to utilize, and can be the perfect plugin library for usage in your larger Java application. JExel parses string expressions to an object result. It comes with native boolean, math, string and date functionality.
A boolean expression utilization would look something like Expression.evaluateToBoolean("true AND false"); and, in this case, would return a new Boolean(false);.
Of course there are also included methods evaluateToDouble(String) and evaluateToString(String).
Additionally there is a plain evaluate(String) method that returns an Argument. You can then call getObject() on the resulting Argument and get the actual Object result.
You can expand on the included operators, and write your own to accomplish your own task. You can provide a Resolver which can resolve string variables found in the expression via your own needs. Say you had an expression like Expression.evaluateToDouble("path/to/variable + otherVariable");. This means if you provide a resolver then you can gain variable resolution relevant to your own project. Maybe path/to/variable is translated into “6″ and otherVariable is translated into “4″. Then the result would be 10.
Have fun! Start Exploring JExel
Posted in Computers, Programming | No Comments »
28th May 2007 - By Aaron
In your pom.xml you have the ability to turn on resource filtering that replaces variables in resource files with actual values. These are useful for things like ${pom.name} and ${pom.version}. Your pom.xml section would look something like this…
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</build>
And your properties file could contain something like these
# Build Time Information
APPLICATION.NAME=${pom.name}
APPLICATION.VERSION=${pom.version}
Read the rest of this entry »
Posted in Programming | 3 Comments »
22nd February 2006 - By Paradochs
Introduction
If you are one of those select few who have multiple stylesheets for their website, then this article is for you. On the other hand, whether you know CSS or not, this might be a good way for you to learn.
I know of 4 ways to change between styles dynamically in a page. They are listed below with some code examples.
Read the rest of this entry »
Posted in Programming | 1 Comment »