diff --git a/source/java/org/alfresco/repo/domain/hibernate/Node.hbm.xml b/source/java/org/alfresco/repo/domain/hibernate/Node.hbm.xml index b02a880151..6c7b1d4f58 100644 --- a/source/java/org/alfresco/repo/domain/hibernate/Node.hbm.xml +++ b/source/java/org/alfresco/repo/domain/hibernate/Node.hbm.xml @@ -203,27 +203,25 @@ - - - - - - - - - - - + + + + + + + + + diff --git a/source/java/org/alfresco/repo/node/db/NodeDaoService.java b/source/java/org/alfresco/repo/node/db/NodeDaoService.java index 9d1a41f878..474ba27a81 100644 --- a/source/java/org/alfresco/repo/node/db/NodeDaoService.java +++ b/source/java/org/alfresco/repo/node/db/NodeDaoService.java @@ -16,7 +16,6 @@ */ package org.alfresco.repo.node.db; -import java.util.Collection; import java.util.List; import org.alfresco.repo.domain.ChildAssoc; @@ -173,16 +172,6 @@ public interface NodeDaoService Node targetNode, QName assocTypeQName); - /** - * @return Returns the target nodes for the association - */ - public Collection getNodeAssocTargets(Node sourceNode, QName assocTypeQName); - - /** - * @return Returns the source nodes for the association - */ - public Collection getNodeAssocSources(Node targetNode, QName assocTypeQName); - /** * @param assoc the node association to remove */ diff --git a/source/java/org/alfresco/repo/node/db/hibernate/HibernateNodeDaoServiceImpl.java b/source/java/org/alfresco/repo/node/db/hibernate/HibernateNodeDaoServiceImpl.java index 9918a69758..a9f298b566 100644 --- a/source/java/org/alfresco/repo/node/db/hibernate/HibernateNodeDaoServiceImpl.java +++ b/source/java/org/alfresco/repo/node/db/hibernate/HibernateNodeDaoServiceImpl.java @@ -36,6 +36,7 @@ import org.alfresco.repo.domain.hibernate.StoreImpl; import org.alfresco.repo.node.db.NodeDaoService; import org.alfresco.repo.transaction.AlfrescoTransactionSupport; import org.alfresco.service.cmr.dictionary.InvalidTypeException; +import org.alfresco.service.cmr.repository.AssociationRef; import org.alfresco.service.cmr.repository.ChildAssociationRef; import org.alfresco.service.cmr.repository.NodeRef; import org.alfresco.service.namespace.QName; @@ -56,9 +57,6 @@ import org.springframework.orm.hibernate3.support.HibernateDaoSupport; public class HibernateNodeDaoServiceImpl extends HibernateDaoSupport implements NodeDaoService { private static final String QUERY_GET_ALL_STORES = "store.GetAllStores"; - private static final String QUERY_GET_NODE_ASSOC = "node.GetNodeAssoc"; - private static final String QUERY_GET_NODE_ASSOC_TARGETS = "node.GetNodeAssocTargets"; - private static final String QUERY_GET_NODE_ASSOC_SOURCES = "node.GetNodeAssocSources"; private static final String QUERY_GET_CONTENT_DATA_STRINGS = "node.GetContentDataStrings"; /** a uuid identifying this unique instance */ @@ -469,62 +467,27 @@ public class HibernateNodeDaoServiceImpl extends HibernateDaoSupport implements final Node targetNode, final QName assocTypeQName) { - HibernateCallback callback = new HibernateCallback() + AssociationRef nodeAssocRef = new AssociationRef( + sourceNode.getNodeRef(), + assocTypeQName, + targetNode.getNodeRef()); + // get all the source's target associations + Collection assocs = sourceNode.getTargetNodeAssocs(); + // hunt down the desired assoc + for (NodeAssoc assoc : assocs) { - public Object doInHibernate(Session session) + // is it a match? + if (!assoc.getNodeAssocRef().equals(nodeAssocRef)) // not a match { - Query query = session.getNamedQuery(HibernateNodeDaoServiceImpl.QUERY_GET_NODE_ASSOC); - query.setEntity("sourceNode", sourceNode) - .setEntity("targetNode", targetNode) - .setString("assocTypeQName", assocTypeQName.toString()) - .setMaxResults(1); - return query.uniqueResult(); + continue; + } + else + { + return assoc; } - }; - Object queryResult = getHibernateTemplate().execute(callback); - if (queryResult == null) - { - return null; } - NodeAssoc assoc = (NodeAssoc) queryResult; - // done - return assoc; - } - - @SuppressWarnings("unchecked") - public Collection getNodeAssocTargets(final Node sourceNode, final QName assocTypeQName) - { - HibernateCallback callback = new HibernateCallback() - { - public Object doInHibernate(Session session) - { - Query query = session.getNamedQuery(HibernateNodeDaoServiceImpl.QUERY_GET_NODE_ASSOC_TARGETS); - query.setEntity("sourceNode", sourceNode) - .setString("assocTypeQName", assocTypeQName.toString()); - return query.list(); - } - }; - List queryResults = (List) getHibernateTemplate().execute(callback); - // done - return queryResults; - } - - @SuppressWarnings("unchecked") - public Collection getNodeAssocSources(final Node targetNode, final QName assocTypeQName) - { - HibernateCallback callback = new HibernateCallback() - { - public Object doInHibernate(Session session) - { - Query query = session.getNamedQuery(HibernateNodeDaoServiceImpl.QUERY_GET_NODE_ASSOC_SOURCES); - query.setEntity("targetNode", targetNode) - .setString("assocTypeQName", assocTypeQName.toString()); - return query.list(); - } - }; - List queryResults = (List) getHibernateTemplate().execute(callback); - // done - return queryResults; + // not found + return null; } public void deleteNodeAssoc(NodeAssoc assoc)