package com.openkm.module.base;
import java.util.Calendar;
import javax.jcr.AccessDeniedException;
import javax.jcr.InvalidItemStateException;
import javax.jcr.ItemExistsException;
import javax.jcr.Node;
import javax.jcr.ReferentialIntegrityException;
import javax.jcr.RepositoryException;
import javax.jcr.Session;
import javax.jcr.lock.LockException;
import javax.jcr.nodetype.ConstraintViolationException;
import javax.jcr.nodetype.NoSuchNodeTypeException;
import javax.jcr.version.VersionException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.openkm.bean.Note;
public class BaseNoteModule {
private static Logger log = LoggerFactory.getLogger(BaseNoteModule.class);
/**
* Add a note to a node.
*/
public static Note add(Session session, Node node, String text) throws NoSuchNodeTypeException,
VersionException, ConstraintViolationException, LockException, AccessDeniedException,
ItemExistsException, InvalidItemStateException, ReferentialIntegrityException,
RepositoryException {
if (!node.isNodeType(Note.MIX_TYPE)) {
log.debug("Adding mixing '{}' to {}", Note.MIX_TYPE, node.getPath());
node.addMixin(Note.MIX_TYPE);
node.save();
}
Node notesNode = node.getNode(Note.LIST);
Calendar cal = Calendar.getInstance();
Node noteNode = notesNode.addNode(cal.getTimeInMillis()+"", Note.TYPE);
noteNode.setProperty(Note.DATE, cal);
noteNode.setProperty(Note.USER, session.getUserID());
noteNode.setProperty(Note.TEXT, text);
notesNode.save();
// Retrieve stored values
Note newNote = get(noteNode);
return newNote;
}
/**
* Read note values
*/
public static Note get(Node noteNode) throws javax.jcr.PathNotFoundException, javax.jcr.RepositoryException {
Note note = new Note();
note.setDate(noteNode.getProperty(Note.DATE).getDate());
note.setUser(noteNode.getProperty(Note.USER).getString());
note.setText(noteNode.getProperty(Note.TEXT).getString());
note.setPath(noteNode.getPath());
return note;
}
}