package org.exoplatform.ecm.webui.component.explorer.control.filter; import java.util.Map; import javax.jcr.Node; import javax.jcr.nodetype.NodeType; import org.exoplatform.ecm.webui.component.explorer.UIJCRExplorer; import org.exoplatform.services.cms.impl.Utils; import org.exoplatform.webui.ext.filter.UIExtensionFilter; import org.exoplatform.webui.ext.filter.UIExtensionFilterType; /** * Created by The eXo Platform SAS * Author : Ha Quang Tan * tanhq@exoplatform.com * September 24, 2012 */ public class CanAddSymlinkFilter implements UIExtensionFilter { public boolean accept(Map<String, Object> context) throws Exception { if(context == null) return true; UIJCRExplorer uiExplorer = (UIJCRExplorer) context.get(UIJCRExplorer.class.getName()); if(uiExplorer == null) return true; Node currentNode = uiExplorer.getCurrentNode(); if (currentNode.getPrimaryNodeType().canAddChildNode(String.valueOf(System.currentTimeMillis()), Utils.EXO_SYMLINK)) { return true; } NodeType[] declaredSuperTypes = currentNode.getPrimaryNodeType().getSupertypes(); for (NodeType nodeType : declaredSuperTypes) { if(nodeType.canAddChildNode(String.valueOf(System.currentTimeMillis()), Utils.EXO_SYMLINK)) return true; } NodeType[] declaredSuperTypesOfMixs = currentNode.getMixinNodeTypes(); for (NodeType mixin : declaredSuperTypesOfMixs) { NodeType[] superTypes = mixin.getSupertypes(); if (mixin.canAddChildNode(String.valueOf(System.currentTimeMillis()), Utils.EXO_SYMLINK)) return true; for (NodeType nodeType : superTypes) { if(nodeType.canAddChildNode(String.valueOf(System.currentTimeMillis()), Utils.EXO_SYMLINK)) return true; } } return false; } public UIExtensionFilterType getType() { return UIExtensionFilterType.MANDATORY; } public void onDeny(Map<String, Object> context) throws Exception { } }