package fr.itldev.koya.behaviour.security; import org.alfresco.repo.node.NodeServicePolicies; import org.alfresco.repo.policy.Behaviour; import org.alfresco.repo.policy.JavaBehaviour; import org.alfresco.repo.policy.PolicyComponent; import org.alfresco.repo.security.authority.UnknownAuthorityException; import org.alfresco.service.cmr.repository.NodeRef; import org.apache.log4j.Logger; import fr.itldev.koya.alfservice.KoyaNodeService; import fr.itldev.koya.alfservice.security.SpaceAclService; import fr.itldev.koya.exception.KoyaServiceException; import fr.itldev.koya.model.KoyaModel; import fr.itldev.koya.model.impl.Space; public class DeleteKoyaGroupsBeforeDelete implements NodeServicePolicies.BeforeDeleteNodePolicy { private final Logger logger = Logger.getLogger(this.getClass()); private Behaviour beforeDeleteNode; private PolicyComponent policyComponent; private SpaceAclService spaceAclService; private KoyaNodeService koyaNodeService; public void setPolicyComponent(PolicyComponent policyComponent) { this.policyComponent = policyComponent; } public void setSpaceAclService(SpaceAclService spaceAclService) { this.spaceAclService = spaceAclService; } public void setKoyaNodeService(KoyaNodeService koyaNodeService) { this.koyaNodeService = koyaNodeService; } public void init() { this.beforeDeleteNode = new JavaBehaviour(this, "beforeDeleteNode", Behaviour.NotificationFrequency.FIRST_EVENT); this.policyComponent.bindClassBehaviour(NodeServicePolicies.BeforeDeleteNodePolicy.QNAME, KoyaModel.TYPE_DOSSIER, this.beforeDeleteNode); this.policyComponent.bindClassBehaviour(NodeServicePolicies.BeforeDeleteNodePolicy.QNAME, KoyaModel.TYPE_SPACE, this.beforeDeleteNode); } @Override public void beforeDeleteNode(NodeRef nodeRef) { try { Space s = koyaNodeService.getKoyaNode(nodeRef, Space.class); spaceAclService.removeAllKoyaGroups(s); } catch (KoyaServiceException ex) { logger.error("before delete node error : " + ex.toString()); } catch (UnknownAuthorityException e) { logger.error("Unknown authority trying to del group : " + e.toString()); } } }