ShowTable of Contents
ACL
This button gets the names of the ACL entries for the current database.
var acl:NotesACL = database.getACL();
var acle:NotesACLEntry = acl.getFirstEntry();
requestScope.status = "ACL entries";
do {
requestScope.status += "\n" + acle.getName();} while ((acle = acl.getNextEntry(acle)) != null)
ACLActivityLog
This data binding for a multiline edit box displays the ACL log for the current database.
var entries = database.getACLActivityLog().iterator();
var list = "";
while (entries.hasNext()) {
list = list + entries.next() + "\n";
}
return list
Agents
This data binding for a multiline edit box displays the names of the shared agents in the current database.
var agents = database.getAgents().iterator();
var list = "";
while (agents.hasNext()) {
list = list + agents.next().getName() + "\n";
}
return list
AllDocuments
This computed field displays the number of documents in the current database.
return database.getAllDocuments().getCount().toFixed()
Categories
This default value for an edit box populates it with the current database categories.
var categories = database.getCategories();
if (categories.isEmpty()) {
categories = "No categories";
}
return categories
The edit box is bound to
requestScope.categories. If the user makes a change, the new value becomes the new database categories value.
database.setCategories(requestScope.categories)
Created
This computed field displays the number of days since the current database was created.
var t = database.getCreated();
var n = session.createDateTime("Today");
n.setNow();
return "Database created " + (n.timeDifference(t) / 86400).toFixed(0) + " days ago"
CurrentAccessLevel
This computed field displays the access level for the current database.
function convertAccessLevel() {
switch (database.getCurrentAccessLevel()) {
case NotesACL.LEVEL_DEPOSITOR : return "depositor";
case NotesACL.LEVEL_READER : return "reader";
case NotesACL.LEVEL_AUTHOR : return "author";
case NotesACL.LEVEL_EDITOR : return "editor";
case NotesACL.LEVEL_DESIGNER : return "designer";
case NotesACL.LEVEL_MANAGER : return "manager";
}
}
return "Your access level for this database is " + convertAccessLevel() + "."
DesignTemplateName
This computed field displays the name of the design template for the current database.
var title = database.getTitle();
var template = database.getDesignTemplateName();
if (template != "") {
return "Database \"" + title + "\" inherits its design from " + template;
} else {
return "Database \"" + title + "\" did not inherit its design from a template";
}
FileFormat
This button gets the titles and ODS versions of all the local databases.
var dir:NotesDbDirectory = session.getDbDirectory(null);
var db:NotesDatabase = dir.getFirstDatabase(NotesDbDirectory.DATABASE);
var msg = "Database titles and ODS versions";
while (db != null) {
db.open(); // Must open database
msg = msg + "\n" + db.getTitle() + " " + db.getFileFormat().toFixed();
db = dir.getNextDatabase();
}
requestScope.status = msg;
FileName
This computed field displays the title and file name of the current database.
return database.getTitle() + " (" + database.getFileName() + ")"
FilePath
This computed field displays the title and file path of the current database.
return database.getTitle() + " (" + database.getFilePath() + ")"
FolderReferencesEnabled
This button toggles whether folder references are enabled.
try {
if (database.getFolderReferencesEnabled()) {
database.setFolderReferencesEnabled(false);
requestScope.status = "Folder references disabled";
} else {
database.setFolderReferencesEnabled(true);
requestScope.status = "Folder references enabled";
}
} catch(e) {
requestScope.status =
"Make sure your database has ($FolderIno) and ($FolderIno) views"
}
Forms
This button gets the names of all the forms in the current database.
var forms = database.getForms().iterator();
requestScope.status = "Forms in current database";
while (forms.hasNext()) {
var form:NotesForm = forms.next();
requestScope.status += "\n" + form.getName();
}
FTIndexFrequency
This button toggles the frequency of updates to a full-text index.
if (database.isFTIndexed()) {
if (database.getFTIndexFrequency() == NotesDatabase.FTINDEX_DAILY) {
database.setFTIndexFrequency(NotesDatabase.FTINDEX_HOURLY);
requestScope.status = "Index frequency set to hourly";
} else if (database.getFTIndexFrequency() == NotesDatabase.FTINDEX_HOURLY) {
database.setFTIndexFrequency(NotesDatabase.FTINDEX_IMMEDIATE);
requestScope.status = "Index frequency set to immediate";
} else if (database.getFTIndexFrequency() == NotesDatabase.FTINDEX_IMMEDIATE) {
database.setFTIndexFrequency(NotesDatabase.FTINDEX_SCHEDULED);
requestScope.status = "Index frequency set to scheduled";
} else {
database.setFTIndexFrequency(NotesDatabase.FTINDEX_DAILY);
requestScope.status = "Index frequency set to daily";
}
} else {
requestScope.status = "Database not full-text indexed";
}
HttpURL
This button gets the Notes and HTTP URLs for the current database. The display varies depending on whether access is through Notes (the HTTP URL is blank) or HTTP protocols.
// Get URLs
var notesURL = database.getNotesURL();
var httpURL = database.getHttpURL();
// Assume local if http is blank and print info for notes
if (httpURL.length() == 0) {
requestScope.status = "NotesURL = " + notesURL + "\n" +
"HttpURL = None";
}
// If http exists print info for both assuming output to browser
else {
requestScope.status = "NotesURL = " + notesURL + "\n" +
"HttpURL = " + httpURL;
}
IsAllowOpenSoftDeleted
This button toggles whether soft deleted documents can be opened.
if (database.isAllowOpenSoftDeleted()) {
database.setAllowOpenSoftDeleted(false);
} else {
database.setAllowOpenSoftDeleted(true);
}
requestScope.status = "Soft deleted documents can be opened: " + database.isAllowOpenSoftDeleted();
IsClusterReplication
This button interrogates cluster replication for a database.
var server = "Acme2/Acme";
var dbname = "inv\\boltsetc";
var db:NotesDatabase = session.getDatabase(server, dbname);
requestScope.status = db.getTitle() + "\n";
if (db.isClusterReplication()) {
requestScope.status += "Cluster replication is on";
} else {
requestScope.status += "Cluster replication is off";
}
IsConfigurationDirectory
This button lists the titles of the current address books and whether they are configuration directories.
var books = session.getAddressBooks().iterator();
while (books.hasNext()) {
var book:NotesDatabase = books.next();
book.open();
if (book.isConfigurationDirectory()) {
requestScope.status += book.getTitle() + " is a configuration directory\n";
} else {
requestScope.status += book.getTitle() + " is not a configuration directory\n";
}
}
IsCurrentAccessPublicReader
This computed field displays the public reader access for the current database.
if (database.isCurrentAccessPublicReader()) {
return "You have public reader access"
} else {
return "You do not have public reader access"
}
IsCurrentAccessPublicReader
This computed field displays the public writer access for the current database.
if (database.isCurrentAccessPublicWriter()) {
return "You have public writer access"
} else {
return "You do not have public writer access"
}
IsDB2
This computed field indicates whether the current database is DB2.
if (database.isCurrentAccessPublicWriter()) {
return "You have public writer access"
} else {
return "You do not have public writer access"
}
IsDelayUpdates
This button sets immediate updates before saving documents in the current database.
database.setDelayUpdates(false);
var dc:NotesDocumentCollection = database.getAllDocuments();
var doc:NotesDocument = dc.getFirstDocument();
while (doc != null) {
doc.replaceItemValue("owner", session.getEffectiveUserName());
doc.save();
var tmpdoc = dc.getNextDocument();
doc.recycle();
doc = tmpdoc;
}
IsDesignLockingEnabled
This button toggles design locking for the current database.
database.setDesignLockingEnabled(!database.isDesignLockingEnabled());
requestScope.status = "Design locking = " + database.isDesignLockingEnabled();
IsDirectoryCatalog
This button determines whether address books are directory catalogs.
var books = session.getAddressBooks().iterator();
while (books.hasNext()) {
var book:NotesDatabase = books.next();
book.open();
if (book.isDirectoryCatalog()) {
requestScope.status += book.getTitle() + " is a directory catalog\n";
} else {
requestScope.status += book.getTitle() + " is not a directory catalog\n";
}
}
IsDocumentLockingEnabled
This button toggles document locking for the current database.
database.setDocumentLockingEnabled(!database.isDocumentLockingEnabled());
requestScope.status = "Document locking = " + database.isDocumentLockingEnabled();
IsFTIndexed
This data binding for a multiline edit box returns the subject values for all documents containing "new" in a full-text search. The index is created if necessary.
if (database.isFTIndexed()) {
database.updateFTIndex(false)
} else {
database.createFTIndex(0, true)
}
var list = "";
var dc = database.FTSearch("new");
var doc = dc.getFirstDocument();
while (doc != null) {
list = list + doc.getItemValueString("Subject") + "\n";
var tmpdoc = dc.getNextDocument();
doc.recycle();
doc = tmpdoc;
}
return list
IsMultiDbIndexing
This button toggles the setting for including the current database in multi-database indexing.
database.setInMultiDbIndexing(!database.isInMultiDbIndexing());
requestScope.status = "Multi-database indexing = " + database.isInMultiDbIndexing();
IsInService
This button toggles whether the current database is in service.
database.setInService(!database.isInService());
requestScope.status = "Database is in service = " + database.isInService();
IsLink
This button gets the path names of all linked databases in the local directory.
var msg = "Links in local directory";
var dbdir:NotesDbDirectory = session.getDbDirectory(null);
var db:NotesDatabase = dbdir.getFirstDatabase(NotesDbDirectory.DATABASE);
while (db != null) {
if (db.isLink()) {
msg = msg + "\n" + db.getFilePath();
}
db = dbdir.getNextDatabase();
}
if (msg.equals("Links in local directory")) msg = msg + "\nNone";
requestScope.status = msg;
IsMultiDbSearch
This computed field displays whether a database is of type "Multi DB Search."
if (database.isMultiDbSearch()) {
return "Multi-database search"
} else {
return "Not multi-database search"
}
IsOpen
This button gets the result of
isOpen before and after opening a database.
function isitopen(db) {
if (db.isOpen()) {
requestScope.status += db.getTitle() + " is open\n";
} else {
requestScope.status += db.getTitle() + " is not open\n";
}
}
var dbdir:NotesDbDirectory = session.getDbDirectory(null);
var db:NotesDatabase = dbdir.getFirstDatabase(NotesDbDirectory.DATABASE);
isitopen(db);
db.open();
isitopen(db);
IsPendingDelete
This button does not perform the main work if a database is pending deletion.
if (database.isPendingDelete()) {
requestScope.status = "Database pending delete";
} else {
var doc = database.createDocument();
doc.replaceItemValue("Subject", "Test one");
doc.replaceItemValue("Form", "main");
requestScope.status = "Document created";
doc.save();
}
IsPrivateAddressBook
This button gets the private address books available to the current session.
requestScope.status = "Private address books:";
var books = session.getAddressBooks().iterator();
while (books.hasNext()) {
var book:NotesDatabase = books.next();
book.open();
if (book.isPrivateAddressBook()) {
requestScope.status += "\n\t" + book.getTitle();
}
}
IsPublicAddressBook
This button gets the Domino Directories available to the current session.
requestScope.status = "Public address books:";
var books = session.getAddressBooks().iterator();
while (books.hasNext()) {
var book:NotesDatabase = books.next();
book.open();
if (book.isPublicAddressBook()) {
requestScope.status += "\n\t" + book.getTitle();
}
}
LastFixup
This agent button the last fixup date for the local databases.
requestScope.status = "Last fixup dates:";
var dbdir:NotesDbDirectory = session.getDbDirectory(null);
var db:NotesDatabase = dbdir.getFirstDatabase(NotesDbDirectory.DATABASE);
while (db != null) {
// Database must be open
try {
db.open();
} catch(e) {
requestScope.status += "\n\t" + db.getFilePath() + " - could not open";
continue;
}
var fix:NotesDateTime = db.getLastFixup();
requestScope.status += "\n\t" + db.getFilePath() + fix.getLocalTime();
db = dbdir.getNextDatabase();
}
LastFTIndexed
This computed field displays the date that the current database was last indexed.
var title = database.getTitle();
if (database.isFTIndexed()) {
var dt:NotesDateTime = database.getLastFTIndexed();
return "Database \"" + title + "\" last full-text indexed on " + dt.getDateOnly();
} else {
return "Database \"" + title + "\" is not full-text indexed"
}
LastModified
This computed field displays the last modification date for the current database.
return "Database \"" + database.getTitle() + "\" was last modified on " + database.getLastModified();
LimitRevisions
This button cycles the revision limit from 0 to 1000 in increments of 100.
var lr = database.getLimitRevisions();
if (lr >= 1000) {
database.setLimitRevisions(0);
} else {
database.setLimitRevisions(lr + 100);
}
requestScope.status = "Limit for $Revisions is " + database.getLimitRevisions();
LimitUpdatedBy
This button cycles the
$UpdatedBylimit from 0 to 1000 in increments of 100.
var lr = database.getLimitUpdatedBy();
if (lr >= 1000) {
database.setLimitUpdatedBy(0);
} else {
database.setLimitUpdatedBy(lr + 100);
}
requestScope.status = "Limit for for $UpdatedBy is " + database.getLimitUpdatedBy();
ListInDbCatalog
This button toggles whether the current database is listed in a database catalog.
database.setListInDbCatalog(!database.getListInDbCatalog());
requestScope.status = "ListInDbCatalog = " + database.getListInDbCatalog();
Managers
This button gets the names of all managers of the current database.
var managers = database.getManagers().iterator();
requestScope.status = "Managers in current database:";
while (managers.hasNext()) {
requestScope.status += "\n\t" + managers.next();
}
Managers
This computed field gets the maximum size of the current database.
return "The maximum size of this database is " + database.getMaxSize() + " bytes."
NotesURL
This button gets the Notes and HTTP URLs for the current database. The display varies depending on whether access is through Notes (the HTTP URL is blank) or HTTP protocols.
// Get URLs
var notesURL = database.getNotesURL();
var httpURL = database.getHttpURL();
// Assume local if http is blank and print info for notes
if (httpURL.length() == 0) {
requestScope.status = "NotesURL = " + notesURL + "\n" +
"HttpURL = None";
}
// If http exists print info for both assuming output to browser
else {
requestScope.status = "NotesURL = " + notesURL + "\n" +
"HttpURL = " + httpURL;
}
Parent
This computed field displays the common name of the parent session for the current database.
return database.getParent().getCommonUserName()
PercentUsed
This computed field displays the percent of the current database that is used.
return "The current database is " + database.getPercentUsed().toFixed(2) + " percent used."
ReplicaID
This computed field displays the replica ID of the current database.
return "Replica ID of current database: " + database.getReplicaID()
ReplicationInfo
This computed field returns the cutoff date for the current database.
return "Cutoff date: " + database.getReplicationInfo().getCutoffDate().getLocalTime()
Server
This computed field displays the name of the server for the current database.
var server = database.getServer();
if (server.isEmpty()) {
return "Local";
} else {
return server;
}
Size
This computed field gets the size of the current database.
return "The size of this database is " + database.getSize() + " bytes."
SizeQuota and SizeWarning
This computed field displays the size quota and warning for the current database.
return "Size quota = " + database.getSizeQuota() + " kilobytes, warning = " + database.getSizeWarning();
This button removes the size quota and warning for the current database.
database.setSizeQuota(0);
database.setSizeWarning(0);
TemplateName
This computed field returns the template name of an NTF file.
var db:NotesDatabase = session.getDatabase("", "mailbox.ntf", false);
if (db == null) {
return "No mailbox.ntf!";
} else {
var template = db.getTemplateName();
if (template.isEmpty()) {
return "Not a template";
} else {
return template;
}
}
Title
This button changes the title of a local database.
var db:NotesDatabase = session.getDatabase("", requestScope. filename, false);
if (db != null) {
db.setTitle(requestScope.title);
requestScope.status = "Title of " + db.getFileName() + " set to " + db.getTitle();
} else {
requestScope.status = "Could not open " + requestScope.filename;
}
Type
This button gets the data type of the databases in the local directory.
function getTypeString(type) {
var typeString = null;
switch (type) {
case NotesDatabase.DBTYPE_ADDR_BOOK: typeString = "Address book"; break;
case NotesDatabase.DBTYPE_IMAP_SVR_PROXY: typeString = "IMAP server proxy"; break;
case NotesDatabase.DBTYPE_LIBRARY: typeString = "Library"; break;
case NotesDatabase.DBTYPE_LIGHT_ADDR_BOOK: typeString = "Directory catalog (light address book)"; break;
case NotesDatabase.DBTYPE_MAILBOX: typeString = "Mailbox"; break;
case NotesDatabase.DBTYPE_MAILFILE: typeString = "Mail file"; break;
case NotesDatabase.DBTYPE_MULTIDB_SRCH: typeString = "Multi-database search"; break;
case NotesDatabase.DBTYPE_NEWS_SVR_PROXY: typeString = "News server proxy"; break;
case NotesDatabase.DBTYPE_PERS_JOURNAL: typeString = "Personal journal"; break;
case NotesDatabase.DBTYPE_PORTFOLIO: typeString = "Portfolio"; break;
case NotesDatabase.DBTYPE_STANDARD: typeString = "Standard"; break;
case NotesDatabase.DBTYPE_SUBSCRIPTIONS: typeString = "Subscriptions"; break;
case NotesDatabase.DBTYPE_WEB_APP: typeString = "Web application";
}
return typeString;
}
var dbdir:NotesDbDirectory = session.getDbDirectory("");
var db:NotesDatabase = dbdir.getFirstDatabase(NotesDbDirectory.DATABASE);
requestScope.status = "Local databases and types:";
while (db != null) {
db.open();
requestScope.status += "\n\t" + db.getTitle() +
" (" + db.getFileName() + ") " + getTypeString(db.getType());
db = dbdir.getNextDatabase();
}
UndeleteExpireTime
This agent cycles the expiration time for soft deletions from 24 to 48 to 72 hours.
var uet:int = database.getUndeleteExpireTime();
if (uet > 71) {
database.setUndeleteExpireTime(24);
} else {
database.setUndeleteExpireTime(uet + 24);
}
requestScope.status = "UndeleteExpireTime = " + database.getUndeleteExpireTime();
Views
This computed field displays the name of the default view or a message that there is none.
var views = database.getViews().iterator();
while (views.hasNext()) {
var v = views.next();
if (v.isDefaultView()) {
return v.getName() + " is the default view."
}
}
return "There is no default view."
compact
This button compacts a database if it is less than 80 percent used.
var dbname:string = requestScope.filename;
var db:NotesDatabase = session.getDatabase("", dbname, false);
if (db == null) {
requestScope.status = "Cannot open database " + dbname;
return;
}
var title:string = db.getTitle();
var percentUsed:double = db.getPercentUsed();
if (percentUsed < 80) {
var saved:int = db.compact();
requestScope.status = "Compacting database '" + title + "'\n";
}
requestScope.status += "Database '" + title + "' is " + percentUsed + " percent used";
compactWithOptions
This button compacts a database using the options
b,
L, and
S10.
var dbname:string = requestScope.filename;
var db:NotesDatabase = session.getDatabase("", dbname, false);
if (db == null) {
requestScope.status = "Cannot open database " + dbname;
return;
}
var title:string = db.getTitle();
var delta:int = db.compactWithOptions("bLS10");
requestScope.status = "Compacting database '" + title + "'\n";
requestScope.status += "Size difference in bytes: " + delta;
This button compacts a database using the same options.
var dbname:string = requestScope.filename;
var db:NotesDatabase = session.getDatabase("", dbname, false);
if (db == null) {
requestScope.status = "Cannot open database " + dbname;
return;
}
var title:string = db.getTitle();
var options:int = NotesDatabase.CMPC_RECOVER_REDUCE_INPLACE + NotesDatabase.CMPC_NO_LOCKOUT;
var delta:int = db.compactWithOptions(options, "10");
requestScope.status = "Compacting database '" + title + "'\n";
requestScope.status += "Size difference in bytes: " + delta;
createCopy
This button makes a local copy of the local database
names.nsf.
var db:NotesDatabase = session.getDatabase(null, "names");
var title:string = db.getTitle();
try {
var db2:NotesDatabase = db.createCopy(null, "names2");
db2.setTitle("Copy of names");
requestScope.status = "Database \"" + title + "\" copied locally";
} catch(e) {
requestScope.status = "Error: database \"" + title + "\" not copied locally";
}
createDocument
This button creates a new document in the current database and appends an item named Subject with the value of a
requestScope variable. The
requestScope variable is bound to an edit box that the user fills in before clicking the button.
var doc = database.createDocument();
doc.appendItemValue("Subject", requestScope.subject);
doc.save()
This button creates a document in the current database and assigns values.
var doc:NotesDocument = database.createDocument();
doc.appendItemValue("Form", "main");
doc.appendItemValue("subject", "Test Document");
doc.appendItemValue("categories", "Test Documents");
var rti:NotesRichTextItem = doc.createRichTextItem("Body");
rti.appendText("This is the first sentence of text.");
rti.appendText(" This is the second sentence of text.");
if (doc.save()) {
requestScope.status = "Document has been saved"
} else {
requestScope.status = "Unable to save document"
}
createDocumentCollection
The following button creates a document collection, adds documents conditionally, then removes those documents.
var dc:NotesDocumentCollection = database.createDocumentCollection();
var view:NotesView = database.getView("main");
var doc:NotesDocument = view.getFirstDocument();
while (doc != null) {
if (doc.getItemValueString("subject").endsWithIgnoreCase("obsolete")) {
dc.addDocument(doc);
}
var tmpdoc = view.getNextDocument(doc);
doc.recycle();
doc = tmpdoc;
}
requestScope.status = "Number of documents removed: " + dc.getCount();
dc.removeAll(true);
createFromTemplate
This button creates a database from the discussion template.
var template:NotesDatabase = session.getDatabase(null, "discussion8.ntf", false);
if (template == null) {
requestScope.status = "discussion8.ntf does not exist locally";
return;
}
var newdb:NotesDatabase = template.createFromTemplate (null, "suggest", true);
newdb.setTitle("Suggestions for Giving Campaign");
newdb.grantAccess("-Default-", NotesACL.LEVEL_READER);
requestScope.status = "\"Suggestions for Giving Campagn\" created";
createFTIndex
This data binding for a multiline edit box returns the subject values for all documents containing "new" in a full-text search. The index is created if necessary.
if (database.isFTIndexed()) {
database.updateFTIndex(false)
} else {
database.createFTIndex(0, true)
}
var list = "";
var dc = database.FTSearch("new");
var doc = dc.getFirstDocument();
while (doc != null) {
list = list + doc.getItemValueString("Subject") + "\n";
var tmpdoc = dc.getNextDocument();
doc.recycle();
doc = tmpdoc;
}
return list
This button creates or recreates a full-text index for the current database.
var options:int = NotesDatabase.FTINDEX_ALL_BREAKS + NotesDatabase.FTINDEX_CASE_SENSITIVE;
if (database.isFTIndexed()) {
database.createFTIndex(options, true);
requestScope.status = "Database index recreated";
} else {
database.createFTIndex(options, false);
requestScope.status = "New database index created";
}
createNoteCollection
This button creates a note collection from the documents in the current database and exports it to a text file as DXL.
var stream:NotesStream = session.createStream();
var filename:string = "c:\\dxl\\";
filename = filename + database.getFileName();
filename = filename.substring(0, filename.length() - 3) + "dxl";
if (stream.open(filename)) {
requestScope.status = "Opened " + filename;
stream.truncate();
// Create note collection
var nc:NotesNoteCollection = database.createNoteCollection(false);
nc.setSelectDocuments(true);
nc.buildCollection();
// Export note collection as DXL
var exporter:NotesDxlExporter = session.createDxlExporter();
var output:string = exporter.exportDxl(nc);
stream.writeText(output);
requestScope.status = "Exported note collection as DXL ";
stream.close();
} else {
requestScope.status = "Unable to open " + filename;
}
createOutline
This button creates an outline.
var outline:NotesOutline = database.createOutline("Some Documents");
outline.setAlias("SomeDocuments");
outline.setComment("Gives partial view of database");
outline.save();
createReplica
This button creates a local replica of a database on a server.
var db:NotesDatabase = session.getDatabase("notes1/west", "test/DatabaseEtc");
var title:string = db.getTitle();
var replica:NotesDatabase = db.createReplica(null, "dbetc");
requestScope.status = "Database \"" + title + "\" has a new local replica";
createView
This button creates a new view with two views based on another view.
var viewMain:NotesView = database.getView("main");
var viewMod:NotesView = database.createView("modified", "SELECT @All");
var col1:NotesViewColumn = viewMod.copyColumn(viewMain.getColumn(3), 1);
var col2:NotesViewColumn = viewMod.copyColumn(viewMain.getColumn(1), 2);
viewMod.removeColumn(); // remove default # column which is now last column
requestScope.status = "Columns in new view " + viewMod.getName();
var cols = viewMod.getColumns().iterator();
while (cols.hasNext()) {
var col:NotesViewColumn = cols.next();
requestScope.status += "\nColumn " + col.getPosition() + " = " + col.getTitle();
}
enableFolder
This button adds documents to a folder based on the results of a full-text search. The button first creates or updates the full-text index, and ensures that the folder exists if the full-text search returns anything.
database.updateFTIndex(true);
var dc:NotesDocumentCollection = database.FTSearch("cayenne",20);
if (dc.getCount() > 0) {
database.enableFolder("Spicy");
} else {
return;
}
var doc:NotesDocument = dc.getFirstDocument();
while (doc != null) {
doc.putInFolder("Spicy", false);
var tmpdoc = dc.getNextDocument();
doc.recycle();
doc = tmpdoc;
}
fixup
This button runs the Fixup task on all the databases in the local directory.
var dbdir:NotesDbDirectory = session.getDbDirectory("");
var db:NotesDatabase = dbdir.getFirstDatabase(NotesDbDirectory.DATABASE);
requestScope.status = "Fixup local databases";
while (db != null) {
if (db.open()) {
requestScope.status += "\nFixing " + db.getFileName();
db.fixup(NotesDatabase.FIXUP_QUICK +
NotesDatabase.FIXUP_INCREMENTAL + NotesDatabase.FIXUP_NOVIEWS);
db = dbdir.getNextDatabase();
}
}
FTSearch
This data binding for a multiline edit box returns the subject values for all documents containing "new" in a full-text search. The index is created if necessary.
if (database.isFTIndexed()) {
database.updateFTIndex(false)
} else {
database.createFTIndex(0, true)
}
var list = "";
var dc = database.FTSearch("new");
var doc = dc.getFirstDocument();
while (doc != null) {
list = list + doc.getItemValueString("Subject") + "\n";
var tmpdoc = dc.getNextDocument();
doc.recycle();
doc = tmpdoc;
}
return list
This example is the same as the above but uses updateFTIndex to test for and create an index if necessary.
database.updateFTIndex(true);
var list = "";
var dc = database.FTSearch("new");
var doc = dc.getFirstDocument();
while (doc != null) {
list = list + doc.getItemValueString("Subject") + "\n";
var tmpdoc = dc.getNextDocument();
doc.recycle();
doc = tmpdoc;
}
return list
FTSearchRange
This button returns all the documents in the current database that contain a user-specified string, in groups of eight.
database.updateFTIndex(true);
var query:string = requestScope.query;
if (!query.isEmpty()) {
query = "\"" + query + "\"";
var start:int = 1;
// Get the first 8 documents that match the query
var dc:NotesDocumentCollection = database.FTSearchRange(query, 8,
NotesDatabase.FT_SCORES, NotesDatabase.FT_STEMS, start);
if (dc.getCount() == 0) {
requestScope.status = "No matches";
return;
}
requestScope.status = "";
while (dc.getCount() > 0) {
// Display subject for documents matching query
requestScope.status += "\nSearch results "
+ start + " - " + (start - 1 + dc.getCount());
var doc:NotesDocument = dc.getFirstDocument();
while (doc != null) {
requestScope.status += "\n\t" + doc.getItemValueString("Subject");
var tmpdoc = dc.getNextDocument();
doc.recycle();
doc = tmpdoc;
}
// Get next 8 documents that match the query
start = start + 8;
dc = database.FTSearchRange(query, 8,
NotesDatabase.FT_SCORES, NotesDatabase.FT_STEMS, start);
}
}
getAgent
This button gets information on an agent.
var name:string = requestScope.query;
var agent:NotesAgent = database.getAgent(name);
if (agent == null) {
requestScope.status = "No such agent";
} else {
requestScope.status = agent.getName();
requestScope.status += "\n" + agent.getOwner();
var date = agent.getLastRun();
if (date == null) {
requestScope.status += "\nNever run";
} else {
requestScope.status += "\n" + date.getLocalTime();
}
}
getAllReadDocuments
This computed field displays the number of read documents in the current database.
return "Read documents: " + database.getAllReadDocuments().getCount();
getAllUnreadDocuments
This computed field displays the number of unread documents in the current database.
return "Unread documents: " + database.getAllUnreadDocuments().getCount();
getDocumentByID
This button gets a document given its Note ID.
try {
var noteid:string = requestScope.query;
if (noteid.startsWith("NT")) { // in case it comes from @NoteID
noteid = noteid.substring(3);
}
var doc:NotesDocument = database.getDocumentByID(noteid);
requestScope.status = doc.getItemValueString("subject");
} catch(e) {
requestScope.status = "Invalid note ID";
}
getDocumentByUNID
This button gets a document given its UNID.
try {
var unid:string = requestScope.query;
var doc:NotesDocument = database.getDocumentByUNID(unid);
requestScope.status = doc.getItemValueString("subject");
} catch(e) {
requestScope.status = "Invalid UNID";
}
getForm
This button gets a form given its name.
try {
var form:NotesForm = database.getForm(requestScope.query);
requestScope.status = form.getName();
var aliases = form.getAliases().iterator();
if (!aliases.hasNext()) {
requestScope.status += "\nNo aliases";
} else {
while (aliases.hasNext()) {
requestScope.status += "\n" + aliases.next();
}
}
} catch (e) {
requestScope.status = "No such form";
}
getModifiedDocuments
This button gets all modified data documents in the current database since the last time the agent ran. A profile document saves the database end time for each operation.
try {
// Check UntilTime in profile document
var profile:NotesDocument = database.getProfileDocument("Profile", null);
var untilTime:NotesDateTime = null;
var dc:NotesDocumentCollection = null;
if (profile.hasItem("UntilTime")) {
// Start processing from UntilTime
var untilTimeVector = profile.getItemValueDateTimeArray("UntilTime");
untilTime = untilTimeVector.firstElement();
dc = database.getModifiedDocuments(untilTime, NotesDatabase.DBMOD_DOC_DATA);
} else {
// First time through get all documents
dc = database.getModifiedDocuments(null, NotesDatabase.DBMOD_DOC_DATA);
}
if (dc.getCount() > 0) {
// Display LastModified and Subject from each document
var doc:NotesDocument = dc.getFirstDocument();
while(doc != null) {
requestScope.status += doc.getLastModified().getLocalTime()
+ " " + doc.getItemValueString("Subject") + "\n";
var tmpdoc = dc.getNextDocument();
doc.recycle();
doc = tmpdoc;
}
}
else {
// If nothing modified since last time
if (profile.hasItem("UntilTime")) {
requestScope.status = "No documents modified since " + untilTime.getLocalTime();
} else {
requestScope.status = "No documents modified since beginning"
}
}
// Write UntilTime back to profile document
profile.replaceItemValue("UntilTime", dc.getUntilTime());
profile.save(true, true, true);
} catch (e) {
requestScope.status = e.toString();
}
getOption
This computed field displays the status for soft deletes.
if (database.getOption(NotesDatabase.DBOPT_SOFTDELETE)) {
return "Soft deletes enabled"
} else {
re
turn "Soft deletes not enabled"
}
getOption
This computed field displays information on an outline.
var db:NotesDatabase = session.getDatabase("", "headline", false);
if (database == null) {
return "No headline.nsf";
} else {
try {
var outline:NotesOutline = db.getOutline("SubscriptionFormOutline");
return outline.getName() + ": first entry = " + outline.getFirst().getLabel();
} catch(e) {
return "No SubscriptionFormOutline"
}
}
getProfileDocCollection
This button gets all the
email profile documents in the current database.
var dc:NotesDocumentCollection = database.getProfileDocCollection("email");
if (dc.getCount() > 0) {
requestScope.status = "emails:";
var doc:NotesDocument = dc.getFirstDocument();
while (doc != null) {
requestScope.status += "\n" + doc.getItemValueString("email");
var tmpdoc = dc.getNextDocument();
doc.recycle();
doc = tmpdoc;
}
} else {
requestScope.status = "No emails";
}
getProfileDocument
This button gets a profile document given a key name (the query) and displays the value of its
email item.
var name:string = requestScope.query;
if (name.isEmpty()) {
requestScope.status = "No name specified";
return;
}
var doc:NotesDocument = database.getProfileDocument("email", name);
var email:string = doc.getItemValueString("email");
if (email.isEmpty()) {
requestScope.email = "No email";
} else {
requestScope.email = email;
}
This button gets a profile document given a key name (the query) and sets the value of its
email item.
var name:string = requestScope.query;
if (name.isEmpty()) {
requestScope.status = "No name specified";
return;
}
var email:string = requestScope.email;
if (email.isEmpty()) {
requestScope.status = "No email specified";
return;
}
var doc:NotesDocument = database.getProfileDocument("email", name);
doc.replaceItemValue("email", email);
doc.save();
getURL
This computed field displays the URL to open the current database.
return "The URL to open this database is " + database.getURL()
getView
This computed field displays the number of columns in a view.
var v = database.getView("All");
if (v == null) return "No \"All\" view."
return "Number of columns in \"All\" view = " + v.getColumnCount()
grantAccess
This button creates a database from the discussion template.
var template:NotesDatabase = session.getDatabase(null, "discussion8.ntf", false);
if (template == null) {
requestScope.status = "discussion8.ntf does not exist locally";
return;
}
var newdb:NotesDatabase = template.createFromTemplate (null, "suggest", true);
newdb.setTitle("Suggestions for Giving Campaign");
newdb.grantAccess("-Default-", NotesACL.LEVEL_READER);
requestScope.status = "\"Suggestions for Giving Campagn\" created";
markForDelete
This button marks a database for deletion. It is effective if the database is on a server on a cluster with the Cluster Manager running.
var db:NotesDatabase = session.getDatabase("Cathy/Otus", "Test\\MarkForDelete");
if (db.isOpen()) {
db.markForDelete();
requestScope.status = "Is in service = " + db.isInService();
requestScope.status = "\nIs pending delete " + db.isPendingDelete();
} else {
requestScope.status = "Could not open Test\\MarkForDelete";
}
open
This button opens each address book to get its modification date.
try {
var books = session.getAddressBooks().iterator();
while (books.hasNext()) {
var book:NotesDatabase = books.next();
if (book.open()) {
requestScope.status += "\"" + book.getTitle() + "\" is open\n";
requestScope.status += "\tmodified: " + book.getLastModified().getLocalTime() + "\n";
} else {
requestScope.status += "\"" + book.getTitle() + "\" failed to open\n";
}
}
} catch(e) {
requestScope.status = e.toString();
}
openByReplicaID
This button sees if a replica of the current database exists on a server.
try {
var db:NotesDatabase = session.getDatabase(null, null);
var server:string = "Slapper/Acme";
var id:string = database.getReplicaID();
if (db.openByReplicaID(server, id)) {
requestScope.status = "Replica of current database exists on Slapper"
+ "\nFilepath = " + db.getFilePath();
} else {
requestScope.status = "No replica of current database on Slapper";
}
} catch(e) {
requestScope.status = e.toString();
}
openIfModified
This button opens
names.nsf only if was modified in the past hour.
var dt:NotesDateTime = session.createDateTime("Today");
dt.setNow();
dt.adjustHour(-1);
var db:NotesDatabase = session.getDatabase("", "");
if (db.openIfModified(null, "names", dt)) {
requestScope.status = "Names.nsf opened";
} else {
requestScope.status = "Names.nsf not opened";
}
openIfModified
This button opens
names.nsf on a server, but fails over if the server is in a cluster and another server contains the database.
var db:NotesDatabase = session.getDatabase("", "");
if (db.openWithFailover("NotesUA/Westford/Notes", "names")) {
requestScope.status = "Names.nsf opened on " + db.getServer();
} else {
requestScope.status = "Names.nsf not opened";
}
queryAccess
This computed field displays the access level for the current user in the current database.
var title:string = database.getTitle();
title = "For database \"" + title + "\" you have ";
var accLevel:int = database.queryAccess(session.getUserName());
switch (accLevel) {
case(NotesACL.LEVEL_NOACCESS) : return title + "no access";
case(NotesACL.LEVEL_DEPOSITOR) : return title + "depositor access";
case(NotesACL.LEVEL_READER) : return title + "reader access";
case(NotesACL.LEVEL_AUTHOR) : return title + "author access";
case(NotesACL.LEVEL_EDITOR) : return title + "editor access";
case(NotesACL.LEVEL_DESIGNER) : return title + "designer access";
case(NotesACL.LEVEL_MANAGER) : return title + "manager access";
default: return title + "unknown access";
}
queryAccessPrivileges
This button gets the privileges of the current user for the current database.
var title:string = database.getTitle();
var user:string = session.getUserName();
var accPriv:int = database.queryAccessPrivileges(user);
requestScope.status = "Privileges for " + user + " in " + title;
// Check each privilege bit to see if it is 0 or 1
if ((accPriv & NotesDatabase.DBACL_CREATE_DOCS) > 0)
requestScope.status += "\n\tCreate documents";
if ((accPriv & NotesDatabase.DBACL_DELETE_DOCS) > 0)
requestScope.status += "\n\tDelete documents";
if ((accPriv & NotesDatabase.DBACL_CREATE_PRIV_AGENTS) > 0)
requestScope.status += "\n\tCreate private agents";
if ((accPriv & NotesDatabase.DBACL_CREATE_PRIV_FOLDERS_VIEWS) > 0)
requestScope.status += "\n\tCreate private folders/views";
if ((accPriv & NotesDatabase.DBACL_CREATE_SHARED_FOLDERS_VIEWS) > 0)
requestScope.status += "\n\tCreate shared folders/views";
if ((accPriv & NotesDatabase.DBACL_CREATE_SCRIPT_AGENTS) > 0)
requestScope.status += "\n\tCreate LotusScript/Java agents";
if ((accPriv & NotesDatabase.DBACL_READ_PUBLIC_DOCS) > 0)
requestScope.status += "\n\tRead public documents";
if ((accPriv & NotesDatabase.DBACL_WRITE_PUBLIC_DOCS) > 0)
requestScope.status += "\n\tWrite public documents";
if ((accPriv & NotesDatabase.DBACL_REPLICATE_COPY_DOCS) > 0)
requestScope.status += "\n\tReplicate or copy documents";
queryAccessRoles
This computed field displays the roles of the current user for the current database.
var title:string = database.getTitle();database
title = "For database \"" + title + "\" you have the following access roles: ";
var roles = database.queryAccessRoles(session.getUserName());
if (roles.isEmpty()) {
return title + " none";
} else {
for (var i=0; i<roles.length; i++) {
title = title + " " + roles[i];
}
return title;
}
remove
This button removes a specified local database.
var db:NotesDatabase = session.getDatabase(null, requestScope.query, false);
if (db == null) {
requestScope.status = "No such database: " + requestScope.query;
return;
}
try {
db.remove();
requestScope.status = "Removed database: " + requestScope.query;
} catch(e) {
requestScope.status = "Problem removing database: " + requestScope.query;
}
removeFTIndex
This button removes the full-text index for the current database.
requestScope.status = "Removing full-text index";
database.removeFTIndex();
replicate
This button replicates a specified local database with a known server.
try {
var db:NotesDatabase = session.getDatabase(null, requestScope.query, false);
if (db == null) {
requestScope.status = "No such database: " + requestScope.query;
return;
}
if (db.replicate("Sales1/Acme")) {
requestScope.status = "Replicated with: " + requestScope.query;
} else {
requestScope.status = "Replication failed with: " + requestScope.query;
}
} catch(e) {
requestScope.status = "Replication failed with: " + requestScope.query;
}
revokeAccess
This button revokes access for a specified ACL entry.
if (database.getACL().getEntry(requestScope.query) == null) {
requestScope.status = "No ACL entry for " + requestScope.query;
} else {
requestScope.status = "Removing ACL entry for " + requestScope.query;
database.revokeAccess(requestScope.query)
}
search
This button searches the current database for all documents whose Subject field equals a specified value.
var title:string = database.getTitle();
var formula:string = "Subject=\"" + requestScope.query + "\"";
var dc:NotesDocumentCollection = database.search(formula);
var matches:int = dc.getCount();
requestScope.status = "Search of \"" + title + "\" found " +
matches + " document(s) with Subject = \"" + requestScope.query + "\"";
getOption and setOption
This button toggles the soft delete option.
if (database.getOption(NotesDatabase.DBOPT_SOFTDELETE)) {
database.setOption(NotesDatabase.DBOPT_SOFTDELETE, false);
requestScope.status = "Soft deletes turned off";
} else {
database.setOption(NotesDatabase.DBOPT_SOFTDELETE, true);
requestScope.status = "Soft deletes turned on";
}
setOption
This button toggles the soft delete option.
if (database.getOption(NotesDatabase.DBOPT_SOFTDELETE)) {
database.setOption(NotesDatabase.DBOPT_SOFTDELETE, false);
requestScope.status = "Soft deletes turned off";
} else {
database.setOption(NotesDatabase.DBOPT_SOFTDELETE, true);
requestScope.status = "Soft deletes turned on";
}
setOption
This button signs all the forms in the current database.
database.sign(NotesDatabase.DBSIGN_DOC_FORM)
setOption
This data binding for a multiline edit box returns the subject values for all documents containing "new" in a full-text search. The index is created if necessary.
if (database.isFTIndexed()) {
database.updateFTIndex(false)
} else {
database.createFTIndex(0, true)
}
var list = "";
var dc = database.FTSearch("new");
var doc = dc.getFirstDocument();
while (doc != null) {
list = list + doc.getItemValueString("Subject") + "\n";
doc = dc.getNextDocument();
}
return list
This example is the same as the above but uses
updateFTIndex to test for and create an index if necessary.
database.updateFTIndex(true);
var list = "";
var dc = database.FTSearch("new");
var doc = dc.getFirstDocument();
while (doc != null) {
list = list + doc.getItemValueString("Subject") + "\n";
doc = dc.getNextDocument();
}
return list