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="permissionService" ref="PermissionService" />
<property name="nodeService" ref="NodeService" />
<property name="freezeService" ref="freezeService" />
</bean>
<bean id="capabilityCondition.frozen"

View File

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

View File

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

View File

@@ -19,6 +19,7 @@
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.freeze.FreezeService;
import org.alfresco.module.org_alfresco_module_rm.model.RecordsManagementModel;
import org.alfresco.service.cmr.repository.NodeService;
import org.alfresco.service.cmr.security.PermissionService;
@@ -40,6 +41,7 @@ public abstract class AbstractCapabilityCondition implements CapabilityCondition
protected RecordsManagementService rmService;
protected PermissionService permissionService;
protected NodeService nodeService;
protected FreezeService freezeService;
/**
* @param rmService records management service
@@ -65,6 +67,14 @@ public abstract class AbstractCapabilityCondition implements CapabilityCondition
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()
*/

View File

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

View File

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

View File

@@ -136,4 +136,21 @@ public interface FreezeService
* @param reason updated 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 &&
recordsManagementService.isFilePlanComponent(nodeRef) == true)
{
if (recordsManagementService.isFrozen(nodeRef) == true)
if (isFrozen(nodeRef) == true)
{
// never allowed to delete a frozen node
throw new AccessDeniedException("Frozen nodes can not be deleted.");
@@ -165,7 +165,7 @@ public class FreezeServiceImpl implements FreezeService,
if (assoc.isPrimary() == true)
{
NodeRef nodeRef = assoc.getChildRef();
if (recordsManagementService.isFrozen(nodeRef) == true)
if (isFrozen(nodeRef) == true)
{
// never allowed to delete a node with a frozen child
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);
}
/**
* @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
*

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

View File

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