package org.openntf.domino.formula; import java.util.Map; import java.util.Vector; import org.openntf.domino.Document; import org.openntf.domino.utils.Strings; import org.openntf.formula.Function; import org.openntf.formula.FunctionFactory; import org.openntf.formula.FunctionSet; import org.openntf.formula.ValueHolder; import org.openntf.formula.annotation.ParamCount; public enum DocFunctions { ; public static class Functions extends FunctionSet { private static final Map<String, Function> functionSet = FunctionFactory.getFunctions(DocFunctions.class); @Override public Map<String, Function> getFunctions() { return functionSet; } } private static ValueHolder valueOf(final Vector<String> vector) { if (vector == null) return ValueHolder.valueDefault(); ValueHolder ret = ValueHolder.createValueHolder(String.class, vector.size()); for (int i = 0; i < vector.size(); i++) { ret.add(vector.get(i)); } return ret; } @ParamCount(0) public static ValueHolder atAuthor(final FormulaContextNotes ctx) { return valueOf(ctx.getDocument().getAuthors()); } @ParamCount(0) public static ValueHolder atAllChildren(final FormulaContextNotes ctx) { return ctx.evaluateNative("@allchildren"); } @ParamCount(0) public static ValueHolder atAllDescendants(final FormulaContextNotes ctx) { return ctx.evaluateNative("@alldescendants"); } @ParamCount(0) public static ValueHolder atAttachmentLengths(final FormulaContextNotes ctx) { return ctx.evaluateNative("@attachmentlengths"); } @ParamCount(0) public static ValueHolder atAttachmentNames(final FormulaContextNotes ctx) { return ctx.evaluateNative("@attachmentnames"); } @ParamCount(0) public static ValueHolder atAttachmentModifiedTimes(final FormulaContextNotes ctx) { return ctx.evaluateNative("@attachmentmodifiedtimes"); } @ParamCount(0) public static ValueHolder atAttachments(final FormulaContextNotes ctx) { return ctx.evaluateNative("@attachments"); } @ParamCount(0) public static ValueHolder atAccessed(final FormulaContextNotes ctx) { return ValueHolder.valueOf(ctx.getDocument().getLastAccessed()); } @ParamCount(0) public static ValueHolder atModified(final FormulaContextNotes ctx) { return ValueHolder.valueOf(ctx.getDocument().getLastModified()); } @ParamCount(0) public static ValueHolder atCreated(final FormulaContextNotes ctx) { return ValueHolder.valueOf(ctx.getDocument().getCreated()); } // @ParamCount(0) // @OpenNTF // public static ValueHolder atAccessedDate(final FormulaContextNotes ctx) { // return ctx.getVar("@accesseddate"); // } // // @ParamCount(0) // public static ValueHolder atModifiedDate(final FormulaContextNotes ctx) { // return ctx.getVar("@modifieddate"); // } // // @ParamCount(0) // @OpenNTF // public static ValueHolder atCreatedDate(final FormulaContextNotes ctx) { // return ctx.getVar("@createddate"); // } @ParamCount(0) public static ValueHolder atDocumentUniqueid(final FormulaContextNotes ctx) { return ValueHolder.valueOf(ctx.getDocument().getUniversalID()); } @ParamCount(0) public static ValueHolder atNoteId(final FormulaContextNotes ctx) { String nid = ctx.getDocument().getNoteID(); if ("0".equals(nid)) nid = "NT00000000"; return ValueHolder.valueOf(nid); } @ParamCount(0) public static ValueHolder atDocLength(final FormulaContextNotes ctx) { return ValueHolder.valueOf(ctx.getDocument().getSize()); } @ParamCount(0) public static ValueHolder atIsResponseDoc(final FormulaContextNotes ctx) { return ValueHolder.valueOf(ctx.getDocument().isResponse()); } @ParamCount(0) public static ValueHolder atReplicaId(final FormulaContextNotes ctx) { return ValueHolder.valueOf(ctx.getDatabase().getReplicaID()); } @ParamCount(0) public static ValueHolder atResponses(final FormulaContextNotes ctx) { return ctx.evaluateNative("@responses"); } @ParamCount(0) public static ValueHolder atIsNewDoc(final FormulaContextNotes ctx) { return ValueHolder.valueOf(ctx.getDocument().isNewNote()); } @ParamCount(0) public static ValueHolder atInheritedDocumentUniqueID(final FormulaContextNotes ctx) { return ValueHolder.valueOf(ctx.getDocument().getParentDocumentUNID()); } @ParamCount(0) public static ValueHolder atDocFields(final FormulaContextNotes ctx) { Map<String, Object> doc = ctx.getDocument(); if (doc == null) { return ValueHolder.valueDefault(); } else { return ValueHolder.valueOf(doc.keySet()); } } @ParamCount(1) public static ValueHolder atGetField(final FormulaContextNotes ctx, final ValueHolder[] params) { return ctx.getField(params[0].getString(0)); } @ParamCount(2) public static ValueHolder atSetField(final FormulaContextNotes ctx, final ValueHolder[] params) { ctx.setField(params[0].getString(0), params[1]); return params[1]; } @ParamCount(2) public static boolean atAddToFolder(final FormulaContextNotes ctx, final String to, final String from) { Document doc = ctx.getDocument(); if (doc != null) { if (!Strings.isBlankString(to)) { doc.putInFolder(to); } if (!Strings.isBlankString(from)) { doc.removeFromFolder(from); } return true; } return false; } @ParamCount(2) public static ValueHolder atSet(final FormulaContextNotes ctx, final ValueHolder[] params) { ctx.setVarLC(params[0].getString(0).toLowerCase(), params[1]); return params[1]; } }