Monday, April 14, 2008

NoFluffJustStuff JUG Events

I was just at nofluffjuststuff.com and I noticed this impressive list of Java User Group events coming up:

Apr. 15 - Omaha, NE - Eclipse Plugin Development at OJUG - Omaha Java Users Group
Apr. 21 - Durham, NC - Groovin Builds Gant Get Any Easier at Triangle Java Users Group
Apr. 24 - New York, NY - Give It a REST at New York Java Sig
Apr. 30 - Houston, TX - Design Patterns in Dynamic Languages at Houston Java Users Group
May. 14 - Dallas, TX - 10 Ways to Improve Your Code at JavaMUG
May. 15 - Salt Lake City, UT - Thorough Introduction to Groovy at Utah Java Users Group
Jun. 11 - Calgary, AB - Core Groovy at Calgary Java Users Group
Jun. 11 - Dallas, Texas - Grails - Agile Web 2.0 The Easy Way at JavaMUG

As the leader of a JUG (Capital Java User Group - Madison, WI) I appreciate all the support that the folks at NoFluffJustStuff provide to the Java community. As a Groovy / Grails developer, I also appreciate the way that they are helping to usher in the next generation of Java!

Thursday, April 10, 2008

Google App Engine - Vote for Groovy

If you haven't heard about the Google App Engine then you should check it out: http://code.google.com/appengine. If you have heard about it then you know that it initially only supports apps written in Python. Google does plan to support other languages and one of the first ones requested was Groovy! In fact the first issue on their issue list is "Add Java and Groovy support".

You can add your support by going to their issue list (http://code.google.com/p/googleappengine/issues/list) and giving that issue a star. You can also add a comment but it's the number of stars that moves an issue to the top of the list. Even though the Java/Groovy request is the first one entered (id = 1) it is currently ranking 5th in stars. Slightly behind Ruby and a good deal behind Perl. This is a great opportunity to be a squeaky wheel. So head on over to the list and give Groovy a star!

Tuesday, April 8, 2008

Programming Groovy has shipped!

I just got an email from the Pragmatic Bookstore announcing that my copy of Programming Groovy, by Venkat Subramaniam, has shipped! I have just about finished reading the PDF version but I am still looking forward to having the paper copy in my hands.
I'll try to post a review soon, but I'll give you the short version now:
It's a great book and if you have any interest in Groovy you should buy it right away!

Thursday, April 3, 2008

Groovy and Grails at ApacheCon

If you've been watching the mailing lists you probably already saw this, but if not: A couple of very Groovy guys, Paul King and Andres Almiray, have submitted presentations for ApacheCon US 2008. To support these proposed sessions and help spread some Groovy goodness, register on the ApacheCon website: http://apachecon.com/html/login.html

You can find more info and a list of proposed sessions in this Nabble thread:

http://www.nabble.com/Groovy-at-ApacheCon-US-2008-to16450918.html


Wednesday, April 2, 2008

Searchable Plugin: Just use it!

Warning: If you are one of the clever folks who has already discovered the searchable plugin then there's nothing new for you here. You might want to move along to Glen Smith's latest post about hit highlighting with Searchable. If you haven't looked at Searchable yet, you need to. So, either go directly to grails.org/Searchable+Plugin or read on if you need more convincing.

I've been working with Grails for over a year, all the while hearing great things about the Searchable plugin. So far, I have only had the need for simple searches so I just never bothered to look at Searchable. That was really dumb! Like, "why bother learning how to use a hammer, this rock is working fine".


So, just the other day, I had a search that was going from two potential fields to three or four. So, I decided to take a look at the Searchable plugin and see how "hard" it would be to get it integrated. Well, as with most things in the Groovy / Grails world, I had it up an running almost before I had finished reading the wiki page. It is so easy and so powerful that I can't see myself building any kind of search without it.

Here's a simple scenario for an example: We have a Company class that has half a dozen fields that users might want to search on and they want the search form to be at the top of the list page.

First we install the plugin like so:

> grails install-plugin searchable

Then add the following line to Company.groovy:
    static searchable = true
It doesn't matter where you add this line to your Groovy class, but I like to put all static references at the top.

Next we'll add a search action to our controller:


def search = {
def companyList
if (params.query)
companyList = Company.search(params.query).results
else
companyList = Company.list()
render(view:'list', model:[companyList : companyList])
}
Just like GORM adds list(), find(), save(), etc. to our domain class, Searchable added search(), which takes a query string and optionally a map where you can add options like max, offset, sort, etc. It returns a searchResult which contains a results property which is an ArrayList. So, our companyList can be assigned either our search results or the result of a call to list().
There are other methods added to our domain and many more things that can be done with Searchable. You can read more about it at: grails.org/Searchable+Plugin+-+Searching

Finally we add a search bar to our list.gsp:

< div class="nav">
< g:form action="search" method="post">
Search: < input type="text" name="query">
< input value="Search" type="submit">
< /g:form>
< /div>


Now our users can search for companies by any of the properties using one or more search words and the result will show up in our standard list page. Searchable also supports complex queries which you can read all about at grails.org/Searchable+Plugin+-+Searching#SearchablePlugin-Searching-StringQueries

There's more that we could do here such as pagination, but I'll leave that as an exercise for the reader. How hard could it be?