diff --git a/config/alfresco/ibatis/org.hibernate.dialect.Dialect/node-common-SqlMap.xml b/config/alfresco/ibatis/org.hibernate.dialect.Dialect/node-common-SqlMap.xml index aa15434089..1b23e73a80 100644 --- a/config/alfresco/ibatis/org.hibernate.dialect.Dialect/node-common-SqlMap.xml +++ b/config/alfresco/ibatis/org.hibernate.dialect.Dialect/node-common-SqlMap.xml @@ -786,6 +786,20 @@ parentNode.id = #parentNode.id# and a.child_node_id IS NULL + + - - \ No newline at end of file diff --git a/source/java/org/alfresco/repo/node/db/DbNodeServiceImpl.java b/source/java/org/alfresco/repo/node/db/DbNodeServiceImpl.java index 38ae3bcd84..94938192c9 100644 --- a/source/java/org/alfresco/repo/node/db/DbNodeServiceImpl.java +++ b/source/java/org/alfresco/repo/node/db/DbNodeServiceImpl.java @@ -1782,6 +1782,72 @@ public class DbNodeServiceImpl extends AbstractNodeServiceImpl // done return results; } + + /** + * Specific properties not supported by {@link #getChildAssocsByPropertyValue(NodeRef, QName, Serializable)} + */ + private static List getChildAssocsByPropertyValueBannedProps = new ArrayList(); + static + { + getChildAssocsByPropertyValueBannedProps.add(ContentModel.PROP_NODE_DBID); + getChildAssocsByPropertyValueBannedProps.add(ContentModel.PROP_NODE_UUID); + getChildAssocsByPropertyValueBannedProps.add(ContentModel.PROP_NAME); + getChildAssocsByPropertyValueBannedProps.add(ContentModel.PROP_MODIFIED); + getChildAssocsByPropertyValueBannedProps.add(ContentModel.PROP_MODIFIER); + getChildAssocsByPropertyValueBannedProps.add(ContentModel.PROP_CREATED); + getChildAssocsByPropertyValueBannedProps.add(ContentModel.PROP_CREATOR); + } + + @Override + public List getChildAssocsByPropertyValue( + NodeRef nodeRef, + QName propertyQName, + Serializable value) + { + // Get the node + Pair nodePair = getNodePairNotNull(nodeRef); + Long nodeId = nodePair.getFirst(); + + // Check the QName is not one of the "special" system maintained ones. + + if (getChildAssocsByPropertyValueBannedProps.contains(propertyQName)) + { + throw new IllegalArgumentException( + "getChildAssocsByPropertyValue does not allow search of system maintaied properties: " + propertyQName); + } + + final List results = new ArrayList(10); + // We have a callback handler to filter results + ChildAssocRefQueryCallback callback = new ChildAssocRefQueryCallback() + { + public boolean preLoadNodes() + { + return false; + } + + public boolean handle( + Pair childAssocPair, + Pair parentNodePair, + Pair childNodePair) + { + results.add(childAssocPair.getSecond()); + return true; + } + + public void done() + { + } + }; + + // Get the assocs pointing to it + nodeDAO.getChildAssocsByPropertyValue(nodeId, propertyQName, value, callback); + + // sort the results + List orderedList = reorderChildAssocs(results); + + // Done + return orderedList; + } public void removeAssociation(NodeRef sourceRef, NodeRef targetRef, QName assocTypeQName) throws InvalidNodeRefException @@ -2221,66 +2287,4 @@ public class DbNodeServiceImpl extends AbstractNodeServiceImpl return true; } } - - private static List getChildAssocsByPropertyValueBannedProps = new ArrayList(); - static - { - getChildAssocsByPropertyValueBannedProps.add(ContentModel.PROP_NODE_DBID); - getChildAssocsByPropertyValueBannedProps.add(ContentModel.PROP_NODE_UUID); - getChildAssocsByPropertyValueBannedProps.add(ContentModel.PROP_NAME); - getChildAssocsByPropertyValueBannedProps.add(ContentModel.PROP_MODIFIED); - getChildAssocsByPropertyValueBannedProps.add(ContentModel.PROP_MODIFIER); - getChildAssocsByPropertyValueBannedProps.add(ContentModel.PROP_CREATED); - getChildAssocsByPropertyValueBannedProps.add(ContentModel.PROP_CREATOR); - } - - @Override - public List getChildAssocsByPropertyValue(NodeRef nodeRef, - QName propertyQName, - Serializable value) - { - // Get the node - Pair nodePair = getNodePairNotNull(nodeRef); - Long nodeId = nodePair.getFirst(); - - // Check the QName is not one of the "special" system maintained ones. - - if(getChildAssocsByPropertyValueBannedProps.contains(propertyQName)) - { - throw new IllegalArgumentException("getChildAssocsByPropertyValue does not allow search of system maintaied properties: " + propertyQName); - } - - final List results = new ArrayList(10); - // We have a callback handler to filter results - ChildAssocRefQueryCallback callback = new ChildAssocRefQueryCallback() - { - public boolean preLoadNodes() - { - return false; - } - - public boolean handle( - Pair childAssocPair, - Pair parentNodePair, - Pair childNodePair) - { - results.add(childAssocPair.getSecond()); - return true; - } - - public void done() - { - } - }; - - // Get the assocs pointing to it - nodeDAO.getChildAssocsByPropertyValue(nodeId, propertyQName, value, callback); - - // sort the results - List orderedList = reorderChildAssocs(results); - - // Done - return orderedList; - } - - } +} diff --git a/source/java/org/alfresco/repo/node/db/DbNodeServiceImplTest.java b/source/java/org/alfresco/repo/node/db/DbNodeServiceImplTest.java index 7aa2a9d018..266d68f8dc 100644 --- a/source/java/org/alfresco/repo/node/db/DbNodeServiceImplTest.java +++ b/source/java/org/alfresco/repo/node/db/DbNodeServiceImplTest.java @@ -539,7 +539,5 @@ public class DbNodeServiceImplTest extends BaseNodeServiceTest { // expect to go here } - - } }