// Load server regions
LOGGER.logp(Level.CONFIG, CLASS_NAME, METHOD, "Loading server domains.");
NotesView serversView = db.getView(NCCONST.VIEWSERVERS);
serversView.refresh();
NotesViewNavigator svn = serversView.createViewNav();
NotesViewEntry sve = svn.getFirst();
while (null != sve) {
Vector<?> columnVals = sve.getColumnValues();
String domain = columnVals.elementAt(2).toString().toLowerCase();
if (!Strings.isNullOrEmpty(domain)) {
if (!domain.trim().startsWith(".")) {
domain = "." + domain.trim();
}
}
// This is a problem with the Notes Java API. When the
// server field for a given region has 1 element we get a
// String in the server column of the ViewEntry. When
// the server field has more than 1 element we get one
// ViewEntry for each server value, but the value
// returned in the getColumnValues Vector is a Vector
// with one element.
String server;
Object serverObject = columnVals.elementAt(0);
if (serverObject instanceof String) {
server = ((String) serverObject).toLowerCase();
} else if (serverObject instanceof Vector) {
Vector serverVector = (Vector) serverObject;
if (serverVector.size() == 0) {
LOGGER.logp(Level.CONFIG, CLASS_NAME, METHOD, "Empty server value");
continue;
}
server = ((String) serverVector.elementAt(0)).toLowerCase();
} else {
LOGGER.logp(Level.CONFIG, CLASS_NAME, METHOD,
"Unknown server value " + serverObject);
continue;
}
LOGGER.logp(Level.CONFIG, CLASS_NAME, METHOD,
"Server {0} is in domain {1}", new Object[] { server, domain });
serverDomainMap.put(server, domain);
NotesViewEntry tmpsve = svn.getNext();
sve.recycle();
sve = tmpsve;
}
svn.recycle();
serversView.recycle();