View Javadoc
1   package info.magnolia.module.resources.app.setup;
2   
3   import info.magnolia.jcr.util.NodeTypes;
4   import info.magnolia.jcr.util.NodeUtil;
5   import info.magnolia.module.InstallContext;
6   import info.magnolia.module.delta.AbstractRepositoryTask;
7   import info.magnolia.module.delta.TaskExecutionException;
8   import info.magnolia.repository.RepositoryConstants;
9   
10  import javax.jcr.Node;
11  import javax.jcr.RepositoryException;
12  import javax.jcr.Session;
13  
14  /**
15   * Adds {@link info.magnolia.module.resources.app.availability.IsFolderOrHasTemplateRule} to given {@code #actionName}.
16   */
17  public class AddIsFolderOrHasTemplateAvailabilityRuleTask extends AbstractRepositoryTask {
18  
19      private final String actionName;
20  
21      public AddIsFolderOrHasTemplateAvailabilityRuleTask(String name, String description, String actionName) {
22          super(name, description);
23          this.actionName = actionName;
24      }
25  
26      @Override
27      protected void doExecute(InstallContext installContext) throws RepositoryException, TaskExecutionException {
28          Session session = installContext.getJCRSession(RepositoryConstants.CONFIG);
29          Node rules = NodeUtil.createPath(session.getRootNode(),
30                  "/modules/processed-resources-app/apps/processed-resources/subApps/browser/actions/" + actionName + "/availability/rules", NodeTypes.ContentNode.NAME);
31          if (rules.hasNode("IsFolderOrHasTemplateRule")) {
32              return;
33          }
34          Node isFolderOrHasTemplateRuleNode = rules.addNode("IsFolderOrHasTemplateRule", NodeTypes.ContentNode.NAME);
35          isFolderOrHasTemplateRuleNode.setProperty("implementationClass", "info.magnolia.module.resources.app.availability.IsFolderOrHasTemplateRule");
36      }
37  }