FreezeService code refactoring

git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/modules/recordsmanagement/HEAD@43578 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Tuna Aksoy
2012-11-13 15:53:53 +00:00
parent c1b9427470
commit d8ab355a05
10 changed files with 87 additions and 6 deletions

View File

@@ -10,6 +10,7 @@
<property name="recordsManagementService" ref="recordsManagementService" /> <property name="recordsManagementService" ref="recordsManagementService" />
<property name="permissionService" ref="PermissionService" /> <property name="permissionService" ref="PermissionService" />
<property name="nodeService" ref="NodeService" /> <property name="nodeService" ref="NodeService" />
<property name="freezeService" ref="freezeService" />
</bean> </bean>
<bean id="capabilityCondition.frozen" <bean id="capabilityCondition.frozen"

View File

@@ -17,6 +17,7 @@
<property name="nodeService" ref="NodeService"/> <property name="nodeService" ref="NodeService"/>
<property name="namespaceService" ref="NamespaceService"/> <property name="namespaceService" ref="NamespaceService"/>
<property name="capabilityService" ref="CapabilityService"/> <property name="capabilityService" ref="CapabilityService"/>
<property name="freezeService" ref="freezeService"/>
</bean> </bean>
<bean id="jsonConversionComponent.baseIndicator" <bean id="jsonConversionComponent.baseIndicator"

View File

@@ -23,6 +23,7 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
import org.alfresco.module.org_alfresco_module_rm.freeze.FreezeService;
import org.alfresco.module.org_alfresco_module_rm.record.RecordService; import org.alfresco.module.org_alfresco_module_rm.record.RecordService;
import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.namespace.QName; import org.alfresco.service.namespace.QName;
@@ -150,7 +151,10 @@ public interface RecordsManagementService
* @return boolean true if record is frozen, false otherwise * @return boolean true if record is frozen, false otherwise
* *
* @since 2.0 * @since 2.0
*
* @deprecated As of 2.1, replaced by {@link FreezeService#isFrozen(NodeRef)}
*/ */
@Deprecated
boolean isFrozen(NodeRef nodeRef); boolean isFrozen(NodeRef nodeRef);
@@ -164,7 +168,10 @@ public interface RecordsManagementService
* @return boolean true if record folder has frozen children, false otherwise * @return boolean true if record folder has frozen children, false otherwise
* *
* @since 2.0 * @since 2.0
*
* @deprecated As of 2.1, replaced by {@link FreezeService#hasFrozenChildren(NodeRef)}
*/ */
@Deprecated
boolean hasFrozenChildren(NodeRef nodeRef); boolean hasFrozenChildren(NodeRef nodeRef);
/** /**

View File

@@ -19,6 +19,7 @@
package org.alfresco.module.org_alfresco_module_rm.capability.declarative; package org.alfresco.module.org_alfresco_module_rm.capability.declarative;
import org.alfresco.module.org_alfresco_module_rm.RecordsManagementService; import org.alfresco.module.org_alfresco_module_rm.RecordsManagementService;
import org.alfresco.module.org_alfresco_module_rm.freeze.FreezeService;
import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel; import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel;
import org.alfresco.service.cmr.repository.NodeService; import org.alfresco.service.cmr.repository.NodeService;
import org.alfresco.service.cmr.security.PermissionService; import org.alfresco.service.cmr.security.PermissionService;
@@ -40,6 +41,7 @@ public abstract class AbstractCapabilityCondition implements CapabilityCondition
protected RecordsManagementService rmService; protected RecordsManagementService rmService;
protected PermissionService permissionService; protected PermissionService permissionService;
protected NodeService nodeService; protected NodeService nodeService;
protected FreezeService freezeService;
/** /**
* @param rmService records management service * @param rmService records management service
@@ -65,6 +67,14 @@ public abstract class AbstractCapabilityCondition implements CapabilityCondition
this.nodeService = nodeService; this.nodeService = nodeService;
} }
/**
* @param freezeService freeze service
*/
public void setFreezeService(FreezeService freezeService)
{
this.freezeService = freezeService;
}
/** /**
* @see org.alfresco.module.org_alfresco_module_rm.capability.declarative.CapabilityCondition#getName() * @see org.alfresco.module.org_alfresco_module_rm.capability.declarative.CapabilityCondition#getName()
*/ */

View File

@@ -36,10 +36,10 @@ private boolean checkChildren = false;
@Override @Override
public boolean evaluate(NodeRef nodeRef) public boolean evaluate(NodeRef nodeRef)
{ {
boolean result = rmService.isFrozen(nodeRef); boolean result = freezeService.isFrozen(nodeRef);
if (result == false && checkChildren == true) if (result == false && checkChildren == true)
{ {
result = rmService.hasFrozenChildren(nodeRef); result = freezeService.hasFrozenChildren(nodeRef);
} }
return result; return result;
} }

View File

@@ -36,7 +36,7 @@ public class FrozenOrHoldCondition extends AbstractCapabilityCondition
public boolean evaluate(NodeRef nodeRef) public boolean evaluate(NodeRef nodeRef)
{ {
FilePlanComponentKind kind = rmService.getFilePlanComponentKind(nodeRef); FilePlanComponentKind kind = rmService.getFilePlanComponentKind(nodeRef);
return (rmService.isFrozen(nodeRef) || return (freezeService.isFrozen(nodeRef) ||
(kind != null && kind.equals(FilePlanComponentKind.HOLD))); (kind != null && kind.equals(FilePlanComponentKind.HOLD)));
} }

View File

@@ -136,4 +136,21 @@ public interface FreezeService
* @param reason updated reason * @param reason updated reason
*/ */
void updateReason(NodeRef hold, String reason); void updateReason(NodeRef hold, String reason);
/**
* Gets the hold node references for a given file plan
* or an empty set if there is not any hold node available
*
* @param filePlan file plan for which the hold nodes will be retrieved
* @return Set<NodeRef> hold node references
*/
Set<NodeRef> getHolds(NodeRef filePlan);
/**
* Checks whether or not the given node has frozen children
*
* @param nodeRef The nodeRef for which will be checked if it has frozen children
* @return true if the given nodeRef has frozen children, false otherwise
*/
boolean hasFrozenChildren(NodeRef nodeRef);
} }

View File

@@ -138,7 +138,7 @@ public class FreezeServiceImpl implements FreezeService,
if (nodeService.exists(nodeRef) == true && if (nodeService.exists(nodeRef) == true &&
recordsManagementService.isFilePlanComponent(nodeRef) == true) recordsManagementService.isFilePlanComponent(nodeRef) == true)
{ {
if (recordsManagementService.isFrozen(nodeRef) == true) if (isFrozen(nodeRef) == true)
{ {
// never allowed to delete a frozen node // never allowed to delete a frozen node
throw new AccessDeniedException("Frozen nodes can not be deleted."); throw new AccessDeniedException("Frozen nodes can not be deleted.");
@@ -165,7 +165,7 @@ public class FreezeServiceImpl implements FreezeService,
if (assoc.isPrimary() == true) if (assoc.isPrimary() == true)
{ {
NodeRef nodeRef = assoc.getChildRef(); NodeRef nodeRef = assoc.getChildRef();
if (recordsManagementService.isFrozen(nodeRef) == true) if (isFrozen(nodeRef) == true)
{ {
// never allowed to delete a node with a frozen child // never allowed to delete a node with a frozen child
throw new AccessDeniedException("Can not delete node, because it contains a frozen child node."); throw new AccessDeniedException("Can not delete node, because it contains a frozen child node.");
@@ -456,6 +456,39 @@ public class FreezeServiceImpl implements FreezeService,
nodeService.setProperty(hold, PROP_HOLD_REASON, reason); nodeService.setProperty(hold, PROP_HOLD_REASON, reason);
} }
/**
* @see org.alfresco.module.org_alfresco_module_rm.freeze.FreezeService#getHold(org.alfresco.service.cmr.repository.NodeRef)
*/
@Override
public Set<NodeRef> getHolds(NodeRef filePlan)
{
ParameterCheck.mandatory("filePlan", filePlan);
Set<NodeRef> holds = new HashSet<NodeRef>();
List<ChildAssociationRef> childAssocs = nodeService.getChildAssocs(filePlan, ASSOC_HOLDS, RegexQNamePattern.MATCH_ALL);
if (childAssocs != null && !childAssocs.isEmpty())
{
for (ChildAssociationRef childAssoc : childAssocs)
{
holds.add(childAssoc.getChildRef());
}
}
return holds;
}
/**
* @see org.alfresco.module.org_alfresco_module_rm.freeze.FreezeService#hasFrozenChildren(org.alfresco.service.cmr.repository.NodeRef)
*/
@Override
public boolean hasFrozenChildren(NodeRef nodeRef)
{
ParameterCheck.mandatory("nodeRef", nodeRef);
return getFrozen(nodeRef).size() > 0 ? true : false;
}
/** /**
* Creates a hold using the given nodeRef and reason * Creates a hold using the given nodeRef and reason
* *

View File

@@ -27,6 +27,7 @@ import org.alfresco.module.org_alfresco_module_rm.FilePlanComponentKind;
import org.alfresco.module.org_alfresco_module_rm.RecordsManagementService; import org.alfresco.module.org_alfresco_module_rm.RecordsManagementService;
import org.alfresco.module.org_alfresco_module_rm.capability.Capability; import org.alfresco.module.org_alfresco_module_rm.capability.Capability;
import org.alfresco.module.org_alfresco_module_rm.capability.CapabilityService; import org.alfresco.module.org_alfresco_module_rm.capability.CapabilityService;
import org.alfresco.module.org_alfresco_module_rm.freeze.FreezeService;
import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel; import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel;
import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.cmr.repository.NodeService; import org.alfresco.service.cmr.repository.NodeService;
@@ -58,6 +59,9 @@ public abstract class BaseEvaluator implements RecordsManagementModel
/** Capability service */ /** Capability service */
protected CapabilityService capabilityService; protected CapabilityService capabilityService;
/** Freeze service */
protected FreezeService freezeService;
/** File plan component kinds */ /** File plan component kinds */
protected Set<FilePlanComponentKind> kinds; protected Set<FilePlanComponentKind> kinds;
@@ -104,6 +108,14 @@ public abstract class BaseEvaluator implements RecordsManagementModel
this.capabilityService = capabilityService; this.capabilityService = capabilityService;
} }
/**
* @param freezeService freeze service
*/
public void setFreezeService(FreezeService freezeService)
{
this.freezeService = freezeService;
}
/** /**
* @param name * @param name
*/ */

View File

@@ -29,6 +29,6 @@ public class FrozenEvaluator extends BaseEvaluator
@Override @Override
protected boolean evaluateImpl(NodeRef nodeRef) protected boolean evaluateImpl(NodeRef nodeRef)
{ {
return recordsManagementService.isFrozen(nodeRef); return freezeService.isFrozen(nodeRef);
} }
} }