• Entries (RSS)
  • Comments (RSS)

JoSQL (SQL for Java Objects)

Posted by | Posted in Java | Posted on 30-06-2008

Tagged Under : ,

Recently I made a post on Language Integrated Query (LINQ) in C#. Since I like that feature very much I did a search for finding some similar libraries for Java. There is one project in sourceforge called JoSQL (http://josql.sourceforge.net/index.html) for querying collections using SQL syntax in Java. I would call JoSQL as LINQ alternative for Java. This JoSQL (SQL for Java Objects) is a small and powerful library which helps us to query Java collections. I just completed a small program for sorting a collection of object. Yes there are some Out of the Box sorting functions available in Collections. But still I used JoSQL for my sorting purpose.

Here is my first JoSQL program.

		// Create a list first
		ArrayList list = new ArrayList();
 
		// Add something to our collection
		list.add("1");
		list.add("3");
		list.add("5");
		list.add("4");
		list.add("2");
 
		// Just print it.
		System.out.println(list);
 
		// Create the query object.
		Query qry = new Query();
 
		// Our Java Object SQL for getting all the elements that are greater than
		// 2 and sorted based on the value
		qry.parse("SELECT * FROM java.lang.String WHERE toString > 2 ORDER BY toString ");
 
		// Get the query results.
		List results = qry.execute(list).getResults();
 
		// Now display the query results
		for(int index=0; index < results.size(); index++){
			System.out.println(results.get(index));
		}

I will give a small explanation for the above program. First I am creating an ArrayList and populating the collection with some values. Next I am querying on that collection. The query I used is “SELECT * FROM java.lang.String WHERE toString > 2 ORDER BY toString “. Here just like a normal SQL our JoSQL query also started with a SELECT, then the columns we want(In my case I want all the columns so I used *). Then I have mentioned java.lang.String as my FROM. This is because my Collection contains String objects. Then the WHERE clause. The WHERE clause condition in our case is ‘toString > 2’. Here toString is a method inside java.lang.String class. I wanted some column to apply my condition, so I thought I will use the toString method as my column name. Instead of toString method we can use any method we want. Then the ORDER BY clause. There also I used the toString methods as I did not find any other column to sort :-)

LINQ

Posted by | Posted in General | Posted on 29-06-2008

Tagged Under : ,

Yesterday while my roommate (Sunil P Thomas) and me were taking about technology and he showed me some piece of code. He is working on .NET. In fact he started in Java and later moved to .NET. He showed me a feature called LINQ (language integrated query) in C#. It was a really cool feature and I believe Java also should adopt this feature. This feature enables programmers to query on object collections just like how we query on databases. LINQ’s syntax is very similar to SQL syntax. For eg:

string[] names = { "Burke", "Connor", "Frank",
                       "Everett", "Albert", "George",
                       "Harris", "David" };

    IEnumerable query = from s in names
                               where s.Length == 5
                               orderby s
                               select s.ToUpper();

    foreach (string item in query)
      Console.WriteLine(item);

LINQ can also be applied on XML. What a really cool feature?