The 3rd edition is free, if you like the updated version, get the 4th edition A deeper understanding of Java can be found in Bruce Eckel's Thinking in Java.After all Domino Designer runs on Eclipse now Once you gotten deeper into Java, you want to make friends with Eclipse picking a nice tutorial or a video.You also find titles abolut HTML, Web Development and JavaScript.
However it is a good brushup on programming methodology and a lot of code inside Domino will benefit from more decomposition. There are 28 50min meetings which might seem too steep.
The course is free available for download via YouTube, iTunes or BitTorrent.
But how to get started? There are a number of resources that give you easy access:
You want to create some fancy components for your Notes client or a sharable extension library for XPages, Java it is. For a Notes developer there are a number of reasons why some Java knowledge is essential: LotusScript doesn't allow network access (and "cheating with COM objects" doesn't count), doesn't provide threads or, most important, access to a rich eco system of ready baked libraries. No longer considered sexy but battle hardened and mature. Java is the workhorse of corporate applications. Open your source pane and locate the view panel and the xp:this.facets. However when you have a column with a column total rendering might be different since XPages doesn't render the colspan attribute then. Short of rolling your own rendering using a repeat control, there is a fix consisting of 2 JavaScript functions (one for the server, one for the client and a little addition in the source code panel. While that won't sink the Titanic it is a little odd.
This effectively disables the column width settings for your view until you expand the category to show a full row of data resulting in some "screen jumping". When a category is rendered it sits on its own tablerow (tr) in a tabletag (td) that has a colspan attribute. However beautiy is in the eye of the beholder, so categorized views are used. I am not a fan of categorized views in web applications and have suggested alternative uses before. Introduced in R8.5 Never looked at it before. Update: I stand corrected (thx Carl): You can get access to custom data using byteArray = notesDocument.GetItemValueCustomDataBytes( itemName$, dataTypeNam$). All you need to get started can be downloaded including the source code. The Java code has no dependency on any Domino or Sametime classes.
Java -jar BuddyListReport.jar combine C:\export\ report.xslt. after you created a new stylesheet with a different layout or to report on different things). "combine" will combine the files and run the report "report" will only run the report (e.g. Best is to have all in the same directory together. You need a command combine|report, the directory (with an ending / ) and the name of the report file. To combine them and produce a report you use java -jar BuddyListReport.jar. Once you run the CMD file you end up with a directory full of BudyList.xml files. (The code is a hack, don't expect error handling). To get all my buddy lists I wrote a small agent that creates 2 files: one cmd file that will call the Epilio tool for every user and one XML file that allows to associate the file name to the user name. To save myself the hassle to program all this I just use a free tool from Epilio to extract the buddy list as XML (Sametime without Epilio is like Sushi without Wasabi - something is missing). The Sametime API allows to retrieve the buddy list. So the back door is closed, let's try the front door. This is a great testimony to Domino's flexibility but unfortunately neither the LotusScript nor Java API allows us to process this item type. Inspecting the item you will find the data type stated as "Arbitrary Data". A standard Notes form doesn't allow an item to have a "numeric looking" name. The buddy list is stored in an item with the name 8193. There is a view "Storage" with one document per user. So what to do? The buddy list is a piece of XML that gets stored in then vpuserinfo.nsf on your Sametime server. To my best knowledge that number isn't stored anywhere. Someone hight enough in your food chain wants to know how many users are in the Sametime buddy lists of your users.