Aaron Gadberry

Help – v. helped, help·ing, helps

Was this site helpful?
My Amazon.com Wishlist

Archive for the 'Programming' Category

Any programming tips, techniques, bug solutions, or work arounds.

Proposal: Automatic In-Browser Download Hash Checks

25th February 2013 - By Aaron Gadberry

A new series of attributes as part of the <a> tag to verify the authenticity of a downloadable file automatically by the browser.

e.g. <a href=”http://mirror.com/myFile.zip” md5=”f73ddb63ddaa96039dc53d34aa7d4f4f”>Download My File</a>

Upon downloading the file, the browser would automatically verify the authenticity of the file by generating the required hash and comparing it against the provided value.

Posted in Programming | No Comments »

Use NULLS FIRST in TOPLink Expression API Ordering

22nd January 2008 - By Aaron Gadberry

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):


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 »

Find the Difference Between two Java Dates (Calendars)

17th August 2007 - By Aaron Gadberry

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 »

JExel – Java Based Expression Language Parser

26th July 2007 - By Aaron Gadberry

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 | 2 Comments »

Inject Build Time (timestamp) Property Using Maven

28th May 2007 - By Aaron Gadberry

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 »