329 Lotus blogs updated hourly. Who will post next? Home | Downloads | Events | Jobs | Twitter | Bookmarks | Pods | Blogs | Search | myPL | About 
 
Latest 7 Posts
How I Got XPiNC Run-On-Server With SSO Working
Fri, May 17th 2013 132
Public Service Announcement - NotesIn9 is down.
Tue, May 7th 2013 324
My Latest Programming-Technique Improvements
Tue, Apr 23rd 2013 184
Java Traps and Misconceptions
Tue, Apr 23rd 2013 182
Fun With Old XML Features
Tue, Apr 2nd 2013 216
Release M1 of org.openntf.domino
Tue, Apr 2nd 2013 201
We Have The Technology: The org.openntf.domino API
Thu, Mar 21st 2013 201
Top 10
"Controller" Classes Have Been Helping Me Greatly
Wed, Dec 26th 2012 678
Putting Apache in Front of Domino
Sat, Dec 8th 2012 668
Programming Tips: Implied Booleans and the Ternary Operator
Tue, Dec 11th 2012 480
Moving From Ruby-in-XPages to Polyglot
Wed, Dec 12th 2012 470
More On "Controller" Classes
Mon, Jan 7th 2013 442
Quick-and-Dirty CKEditor Toolbar Setup for XPages
Tue, Sep 4th 2012 375
Faking Sortable View Data
Sun, Jul 22nd 2012 331
Building XPages servlets with FacesContext access
Thu, Sep 6th 2012 331
My Current Data-Source Musings
Mon, Nov 26th 2012 324
Public Service Announcement - NotesIn9 is down.
Tue, May 7th 2013 324


Putting java.util to Use
Jesse Gallagher    

I'm in the process of figuring out a good way to combine data from several sources into a single activity stream, which means that they should be categorized by date and then sorted by time. While that's a piece of cake with a single view, it gets hairy when you have several views, or perhaps several different types of sources entirely. Fortunately, abstract data types are here to help.

You're already using Lists and Maps, right? For this, I decided to use Maps and one of my personal favorites, the Set. If you're not familiar with them, Sets are like Lists, but only contain one of each element and don't (normally) guarantee any specific order - DocumentCollections are a type of Set (albeit not actually implementing the interface).

I created the categories by using a Map with the Date as the key and Sets of entries as the value. That would work well enough using HashMaps and HashSets, but they would require manual sorting in the XPage to display them in the right order. Fortunately, Java includes some more-specific types for this purpose: SortedMap and SortedSet. These are used the same way as normal Maps and Sets, but automatically maintain an order (based on either your own Comparator or the "natural" ordering based on the objects' compareTo(...) methods). Better still, the specific TreeMap and TreeSet implementation classes have methods to get at the keys and values, respectively, in descending order.

Once I had my collection objects picked out, all I had to do was start filling them in. I used stock Date objects for the Map's keys and wrote a compareTo(...) method for the entries I'm keeping in the Set. Then, on the containing activity stream class, I just had to write a "serializer" method to write out the current state of the objects into a List for access.

While I may change around the way I do this (I may end up putting the category headers inline so I just use one SortedSet for performance), it provides a pretty good example of when you can use some of Java's built-in classes to do some of the grunt work for you.



---------------------
http://frostillic.us/f.nsf/posts/A2487E23F8F1B4F685257A25004E157F
Jun 22, 2012
177 hits



Recent Blog Posts
132


How I Got XPiNC Run-On-Server With SSO Working
Fri, May 17th 2013 5:14p   Jesse Gallagher
Among the new features in Domino 9 is this little guy, found on the Launch pane of a database's properties when you set it to open an XPage: If you've ever used an XPiNC application before, you'll know this is a godsend, promising the vast performance benefits of running an app on a server combined with the "the users are stuck using the Notes client" benefits of XPiNC. I turned this on for a new app on one of my client's servers (let's say the server name is ClientName-2/ClientNa [read] Keywords: admin domino notes notes client policies sametime xpages application database desktop network properties server
324


Public Service Announcement - NotesIn9 is down.
Tue, May 7th 2013 11:16a   Jesse Gallagher
David Leedy has run into some trouble with NotesIn9.com being down and he asked if I could help him get the word out about it, which I'm more than happy to do:     Hi - Just wanted to drop a note out there about my NotesIn9.com website.  Currently it's redirecting to someplace else for some unknown reason.  I assume it's been php hacked but I don't know.   My Wordpress site is generously hosted by Chris Miller and I've sent him a note.  Though since he's in the middle of the [read] Keywords: xpages bug
184


My Latest Programming-Technique Improvements
Tue, Apr 23rd 2013 9:18a   Jesse Gallagher
Over the past couple weeks, I've been trying out some new things to make my code a bit cleaner and I've been having a good time of it, so I figured I'd write up a quick summary. Composed Method First and foremost, I've been trying out the Composed Method of programming. This is not a new idea - indeed, it's a pretty direct application of general refactoring - but the slight perspective change from "factor out reused code" to starting out with clean, small blocks has been a pleasan [read] Keywords: agent domino ibm lotusscript xpages application database eclipse java openntf
182


Java Traps and Misconceptions
Tue, Apr 23rd 2013 6:16a   Jesse Gallagher
I wrote a post over at the Social Biz UG site covering a number of traps and conceptual hurdles I frequently see people running into when it comes to Java: https://www.socialbizug.org/blogs/gidgerby/entry/java_traps_and_misconceptions?l ang=en_us [read] Keywords: java
216


Fun With Old XML Features
Tue, Apr 2nd 2013 11:18p   Jesse Gallagher
One of the side effects of working on the OpenNTF Domino API is that I saw every method in the interfaces, including ones that were either new to me or that I had forgotten about a long time ago. One of these is the "parseXML" method found on Items, RichTextItems, and EmbeddedObjects. This was added back in 5.0.3, I assume for some reason related to the mail template, like everything else added back then. Basically, it takes either the contents of a text item, the text of a rich text ite [read] Keywords: domino ibm notes rich text xpages java javascript openntf xml
201


Release M1 of org.openntf.domino
Tue, Apr 2nd 2013 9:17p   Jesse Gallagher
Yesterday, we released milestone 1 of our improved Domino API. This is our first tagged release meant for proper testing - all of the classes are implemented, many of the banner features are in there, and we've been using it in various real-world situations. I switched a couple of my side projects over - my portfolio site, the code for this blog (though I haven't deployed the template yet), and a couple personal game-related apps. That kind of testing is going to be crucial in getting us [read] Keywords: domino openntf
201


We Have The Technology: The org.openntf.domino API
Thu, Mar 21st 2013 7:13p   Anonymous
As Nathan and Tim posted earlier today, a number of us have been working recently on a pretty exciting new project: the org.openntf.domino API. This is a drop-in replacement/extension for the existing lotus.domino Java API that improves its stability and feature set in numerous ways. The way I see it, there are a couple main areas of improvement: Plain Old Bug Fixes doc.hasItem(null) crashes a Domino server. That's no good! We've fixed that, and we're going through and fixing other [read] Keywords: agent domino dxl lotus notes bug database java openntf server xml
250


A Mini-Vacation With Ruby and the Domino Data Service
Sat, Mar 2nd 2013 4:11p   Jesse Gallagher
Since I've been neck-deep in LotusScript and Java for the past couple weeks, I decided to take a bit of a sanity break today and play around with Ruby. Specifically, I wrote a skeletal wrapper for the Domino Data Service in the ExtLib and the first steps of a Rails app using it a bit. I don't expect this to actually be useful down the line, or even necessarily to get any more work put into it, but it was a fun diversion. The API takes the same general shape as the normal Domino API, exce [read] Keywords: domino lotusscript database java server




264


I Know Some Guys
Tue, Feb 26th 2013 12:09p   Jesse Gallagher
I've been a bit quiet lately, but that's mostly because I've been pretty busy lately. After my old company began closing down, I started going whole-hog in my consulting company, I Know Some Guys. Naturally, I can't go TOO much into it, but the general gist is "so far, so good." We have a couple clients so far and they've been keeping me busy indeed. A lot of that has involved classic Notes client and web development, but I guess that serves me right for snickering at people work [read] Keywords: domino notes notes client consulting database development
286


The Bean-Backed Table Design Pattern
Tue, Jan 22nd 2013 4:13p   Jesse Gallagher
First off, I don't like the name of this that I came up with, but it'll have to do. One of the design problems that comes up all the time in Notes/Domino development is the "arbitrary table" idea. In classic Notes, you could solve this with an embedded view, generated HTML (if you didn't want it to be good), or a fixed-size table with a bunch of hide-whens. With XPages, everything is much more flexible, but there's still the question of the actual implementation. The route I've bee [read] Keywords: domino notes xpages database development java




Created and Maintained by Yancy Lent - About - Blog Submission - Suggestions - Change Log - Blog Widget - Advertising - Mobile Edition