package org.openntf.domino.tests.xmage; import org.openntf.domino.ACLEntry; import org.openntf.domino.Database; import org.openntf.domino.DateTime; import org.openntf.domino.DbDirectory; import org.openntf.domino.Document; import org.openntf.domino.Name; import org.openntf.domino.Session; import org.openntf.domino.thread.DominoThread; import org.openntf.domino.utils.DominoUtils; import org.openntf.domino.utils.Factory; import org.openntf.domino.utils.Factory.SessionType; public enum DominoIteratorScratchTest { INSTANCE; private DominoIteratorScratchTest() { } /** * The main method. * * @param args * the arguments */ public static void main(final String[] args) { int delay = 500; DominoThread dt = new DominoThread(new Doer(), "Scratch Test"); DominoThread dt2 = new DominoThread(new Doer(), "Scratch Test2"); DominoThread dt3 = new DominoThread(new Doer(), "Scratch Test3"); DominoThread dt4 = new DominoThread(new Doer(), "Scratch Test4"); DominoThread dt5 = new DominoThread(new Doer(), "Scratch Test5"); DominoThread dt6 = new DominoThread(new Doer(), "Scratch Test6"); dt.start(); try { Thread.sleep(delay); } catch (InterruptedException e1) { DominoUtils.handleException(e1); } dt2.start(); try { Thread.sleep(delay); } catch (InterruptedException e1) { DominoUtils.handleException(e1); } dt3.start(); try { Thread.sleep(delay); } catch (InterruptedException e1) { DominoUtils.handleException(e1); } dt4.start(); try { Thread.sleep(delay); } catch (InterruptedException e1) { DominoUtils.handleException(e1); } dt5.start(); try { Thread.sleep(delay); } catch (InterruptedException e1) { DominoUtils.handleException(e1); } dt6.start(); } static class Doer implements Runnable { @Override public void run() { long start = System.nanoTime(); Session s = Factory.getSession(SessionType.CURRENT); if (s == null) { s = Factory.getSession(SessionType.TRUSTED); } String server = s.getServerName(); DbDirectory dbDirectory = s.getDbDirectory(server); int dateCount = 0; int nameCount = 0; int docCount = 0; System.out.println("Thread " + Thread.currentThread().getName() + " BEGINNING ITERATION of Databases"); int dbCount = 0; for (Database database : dbDirectory) { if (database != null) { if (!database.isOpen()) { database.open(); } DateTime toxic = database.getCreated(); if (toxic != null) dateCount++; for (ACLEntry entry : database.getACL()) { Name entryName = entry.getNameObject(); if (entryName != null) nameCount++; } // if (database.getAllDocuments().getCount() > 0) { for (Document doc : database.getAllDocuments()) { if (doc != null) docCount++; } // } } dbCount++; } System.out.println("ENDING ITERATION of Databases"); /* * System.out.println("Thread " + Thread.currentThread().getName() + " BEGINNING ITERATION of Templates"); int templateCount = * 0; for (Database template : dbDirectory.getTemplates()) { if (template != null) { if (!template.isOpen()) { template.open(); * } * * DateTime toxic = template.getCreated(); dateCount++; * * for (ACLEntry entry : template.getACL()) { Name entryName = entry.getNameObject(); nameCount++; } * * templateCount++; } } System.out.println("ENDING ITERATION of Templates"); */ System.out .println("Thread " + Thread.currentThread().getName() + " processed " + (dbCount /* + templateCount */) + " databases, " + docCount + " documents, " + nameCount + " names, and " + dateCount + " datetimes without recycling."); long elapsed = System.nanoTime() - start; System.out.println("Thread " + Thread.currentThread().getName() + " elapsed time: " + elapsed / 1000000 + "ms"); } } }