Instantiating an iReport Collection parameter from an Array in one line



While working with iReport, I wanted to test my report with a default Collection value for my Hibernate Query.

The HQL is something like this,


SELECT person.fullName as personName
FROM Person person
WHERE person.id in ($P{people})

“Data” from Star Trek, by: JD Hancock

The Person.id is a long.
The report parameter $P{people} is a Collection.

To add a default value for testing, I had to rediscover instantiating a Collection from an Array. I was trying to find Arrays.asList(), and the like, but couldn’t remember it at the time.

While searching for what I needed, I found a lot of forums where people would ask how to do instantiation of a Collection from an Array without looping.

If you already have an array (perhaps named ‘myArray’), you could do something like the following.

new ArrayList(Arrays.asList(myArray));

In my case, I didn’t have an array, yet. I also wanted to initialize the array, too. Initializing an array of objects is easy enough.

new Long[] {new Long(521), new Long(423)};

So, combining the two, my default parameter would get


new ArrayList(Arrays.asList(
new Long[] {new Long(521), new Long(423)}
));

Hopefully this will help someone who needs to just instantiate a collection from an array, or someone who needs to figure out how to add a default value for a collection in iReport.

If you enjoyed this post, make sure you subscribe to my RSS feed!

About Eric Holsinger

Eric Holsinger is a mobile app developer and hobbyist photographer. He lives near the coast in Southern Maine with with his wife and son.