Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package org.openl.rules.repository.jcr;
  
  import javax.jcr.Node;
  import javax.jcr.Property;
  import javax.jcr.Value;
 
 
 public class JcrCommonProject extends JcrEntity implements RCommonProject {
     private final Log log = LogFactory.getLog(JcrCommonProject.class);
 
     private JcrVersion version;
 
     protected JcrCommonProject(Node nodethrows RepositoryException {
         super(node);
 
          = new JcrVersion(node);
     }
 
     protected void checkInAll(Node nCommonUser userthrows RepositoryException {
         NodeIterator ni = n.getNodes();
 
         while (ni.hasNext()) {
             Node child = ni.nextNode();
             checkInAll(childuser);
         }
 
         boolean saveProps = false;
         PropertyIterator pi = n.getProperties();
         while (pi.hasNext()) {
             Property p = pi.nextProperty();
             if (p.isModified() || p.isNew()) {
                 saveProps = true;
                 break;
             }
         }
 
         boolean mustBeSaved = (saveProps || n.isModified() || n.isNew());
         boolean mustBeCheckedIn = (n.isNodeType(.) && n.isCheckedOut());
 
         if (mustBeCheckedIn) {
             .updateRevision(n);
             n.setProperty(.user.getUserName());
             n.save();
             .info("Checking in... " + n.getPath());
             n.checkin();
         } else if (mustBeSaved) {
             .info("Saving... " + n.getPath());
             n.save();
         }
     }
 
     public void commit(CommonUser userthrows RRepositoryException {
         try {
             Node n = node();
             NodeUtil.smartCheckout(ntrue);
             .nextRevision();
             .updateVersion(n);
 
             checkInAll(nuser);
             commitParent(n.getParent());
         } catch (RepositoryException e) {
             throw new RRepositoryException("Failed to checkin project ''{0}''!"egetName());
         }
     }
 
     protected void commitParent(Node parentthrows RepositoryException {
         if (parent.isModified()) {
             parent.save();
         }
         if (parent.isCheckedOut()) {
             if (parent.isNodeType(.)) {
                 parent.checkin();
             }
         }
     }
 
     public void delete(CommonUser userthrows RRepositoryException {
         if (isMarked4Deletion()) {
             throw new RRepositoryException("Project ''{0}'' is already marked for deletion!"nullgetName());
         }
 
         try {
             Node n = node();
 
             n.checkout();
             n.setProperty(.true);
             commit(user);
         } catch (RepositoryException e) {
            throw new RRepositoryException("Failed to Mark project ''{0}'' for Deletion!"egetName());
        }
    }
    public void erase(CommonUser userthrows RRepositoryException {
        try {
            Node parent = node().getParent();
            // ALL IS LOST
            // TODO: add logging here
            .info("Erasing project '" + getName() + "' on behalf of " + user.getUserName());
            super.delete();
            commitParent(parent);
        } catch (RepositoryException e) {
            throw new RRepositoryException("Failed to delete project ''{0}''!"egetName());
        }
    }
    public boolean isMarked4Deletion() throws RRepositoryException {
        try {
            boolean isMarked;
            Node n = node();
            // even if property itself is 'false' it still means that project is
            // 'marked'
            isMarked = n.hasProperty(.);
            return isMarked;
        } catch (RepositoryException e) {
            throw new RRepositoryException("Failed to Check Marked4Deletion!"e);
        }
    }
  
    public void undelete(CommonUser userthrows RRepositoryException {
        if (!isMarked4Deletion()) {
            throw new RRepositoryException("Project ''{0}'' is not marked for deletion!"nullgetName());
        }
        try {
            Node n = node();
            n.checkout();
            commit(user);
        } catch (RepositoryException e) {
            throw new RRepositoryException("Failed to Unmark project ''{0}'' from Deletion!"egetName());
        }
    }
New to GrepCode? Check out our FAQ X