Wednesday, November 4, 2015

DirectoryNavigator via Java

So looking into something, I discovered there has been an addition called a "DirectoryNavigator", it's supposed to make it easier to get to person docs in the NAB. I needed something like this, but in Java - the examples are in LotusScript, and I'm working in a bean. Those examples are "TBD". I did get it working, so I'm sharing. It looks like this came out in R8.

What you do is create a vector with the field names you want to retrieve, and you create a vector with what you want to look up (names). You check to see if there is a match, and if so, iterate through the resultset and get the items retrieved. Here is a snippet of the code (dir is the NAB):

            Vector<String> itV = new Vector<String>();
            itV.addElement("ShortName");
            itV.addElement("HTTPPassword");
            itV.addElement("FullName");

            Vector<String> nameV = new Vector<String>();
            nameV.addElement("Smith");

            System.out.println("before dirNav");
            // DirectoryNavigator dirNav = dir.l
            DirectoryNavigator dirNav = dir.lookupNames("$Users", nameV, itV, true);

            while (dirNav.isMatchLocated()) {
                System.out.println("found");
                // dirNav.findFirstName();
                System.out.println("The first value is: " + dirNav.getFirstItemValue());
                for (int i = 0; i < 5; i++) {
                    try {
                        System.out.println("Next value is: " + dirNav.getNextItemValue());
                    } catch (Exception divE) {
                        System.out.println("in catch");

                    }
                }
                dirNav.findNextMatch();
            }

 
Here is the print results. I've obscured the names, but we get the hierarchical names, and the common names.

10/28/2015 08:45:00 AM  HTTP JVM: starting
10/28/2015 08:45:00 AM  HTTP JVM: new start
10/28/2015 08:45:00 AM  HTTP JVM: before dirNav
10/28/2015 08:45:00 AM  HTTP JVM: found
10/28/2015 08:45:00 AM  HTTP JVM: The first value is: [lsmith]
10/28/2015 08:45:00 AM  HTTP JVM: Next value is: [(390ACEC884A01BFDF5FA36AE5E6B29B1)]
10/28/2015 08:45:00 AM  HTTP JVM: Next value is: [CN=RRRRRRRRR]
10/28/2015 08:45:00 AM  HTTP JVM: Next value is: []
10/28/2015 08:45:00 AM  HTTP JVM: Next value is: []
10/28/2015 08:45:00 AM  HTTP JVM: Next value is: []
10/28/2015 08:45:00 AM  HTTP JVM: found
10/28/2015 08:45:00 AM  HTTP JVM: The first value is: [RSmith, smithr]
10/28/2015 08:45:00 AM  HTTP JVM: Next value is: [(CBA717BC74064A8F7EC075DA95ACB8F6)]
10/28/2015 08:45:00 AM  HTTP JVM: Next value is: [CN=TTTTTTTTTTTT]
10/28/2015 08:45:00 AM  HTTP JVM: Next value is: []
10/28/2015 08:45:00 AM  HTTP JVM: Next value is: []
10/28/2015 08:45:00 AM  HTTP JVM: Next value is: []


 You can see I cheated and did hard coded 5 cycles - so when there is nothing to display, you get an empty array. 

This may be useful for someone.

Cheers,
Brian


PS: If whoever does the Notes help wants to use this, or have me do the rest of the methods, I'll volunteer. BM