Sunday, January 25, 2009

JAU (Java Annotation Based Utilities) announcement

I am glad to announce a first stable beta ;-) of the JAU library (http://code.google.com/p/jau/). Version 0.6 implements the following methods using annotations (and works for POJOs):
  • equals
  • hashCode
  • toString
  • compareTo
  • copy/clone
  • toMap/fromMap (this one creates a java.util.Map with object properties as entries)
Here is a sample use case:

import com.googlecode.jau.*;

@JAUEquals
@JAUHashCode
@JAUToString
@JAUCompare
@JAUCopy
@JAUToMap
public class UserData implements Comparable, Cloneable {
private String firstName;
private String secondName;
private Date birthDate;
private String login;
private String[] rights = new String[] {"view"};
// constructor omitted

public boolean equals(Object obj) {
return JAU.equals(this, obj);
}

public int hashCode() {
return JAU.hashCode(this);
}

public String toString() {
return JAU.toString(this);
}

public int compareTo(Object obj) {
return JAU.compare(this, obj);
}

public UserData clone() throws CloneNotSupportedException {
UserData r = (UserData) super.clone(this);
JAU.copy(this, r);
return r;
}
}

For example, the output for

JAU.toString(new String[][] {{"a", "b"}, {"1", "2"}})

would be

 java.lang.String[][java.lang.String["a", "b"], java.lang.String["1", "2"]]

Thursday, November 27, 2008

Web-based Task, Time and Project Management Software Comparison

Task, Time and Project Management Software was always an important prerequisite for successful projects and not only in the software industry. Recently a lot of software was written using AJAX (guilty :-) making collaboration a lot easier. I have created a Google Table comparing 42 of them:

Task, Time and Project Management Software

Monday, October 13, 2008

Authentication for GWT based applications on Google App Engine

there is a way to use Java together with Google App Engine: GWT together with python-gwt-rpc. Although python-gwt-rpc has it's own means to allow authentication, there is also an easier way: just check in the Python code whether the user is authenticated and generate a login page or a page for hosting your GWT application.

...
from
google.appengine.api import users

class MyHandler(webapp.RequestHandler):
def get(self):
user
= users.get_current_user()
if user is None:
self.response.out.write('''Login page here...''')
else:
self.response.out.write('''GWT hosting page here...''')

here is how it looks in a live application