Už jste někdy psali komparátor, který vám umožní seřadit kolekci podle tří položek (např. podle příjmení, jména a rodného čísla)? To je vždy chvíle, kdy vzpomínám na SQL a závidím uživatelům .NET jejich LINQ.
Teď jsem ovšem objevil program JoSQL SQL for Java Objects, který dělá přesně to samé. Nepoužívá k tomu ovšem změnu syntaxe jazyka jako C# (zaplaťpánbůh), ale přesto se s ním pracuje celkem příjemně.
Sestavíte JoSQL dotaz, přidáte kolekci objektů nad kterou chcete provádět operace a dostanete výsledek. Můžete použít přístup k proměnným (property) a vše je prováděno pomocí reflection API.
Query q = new Query ();
q.parse ("select * from Subject order by surname, firstname, birthNum");
QueryResults qr = q.execute (getAllPeople());
Podporuje distinct, order by, where, group by a další. Můžete také samozřejmě použít dotaz typu:
select * from Subject where postalAddress.city = 'Pilsen'
select distinct postalAddress.city from Subject
Myslím si, že se jedná o povedený nástroj pro chvíle, kdy není možné použít řazení v databázi (třeba proto, že data v databázi prostě nemáte). Pro příště už nebudu psát složitý komparátor pro řazení dle více položek, ale použiji JoSQL.