diff --git a/dspace-api/src/main/java/org/dspace/content/RelationshipServiceImpl.java b/dspace-api/src/main/java/org/dspace/content/RelationshipServiceImpl.java index eecc80bc5d..3f5886e4bc 100644 --- a/dspace-api/src/main/java/org/dspace/content/RelationshipServiceImpl.java +++ b/dspace-api/src/main/java/org/dspace/content/RelationshipServiceImpl.java @@ -300,4 +300,9 @@ public class RelationshipServiceImpl implements RelationshipService { } return listToReturn; } + + public List findByRelationshipType(Context context, RelationshipType relationshipType) + throws SQLException { + return relationshipDAO.findByRelationshipType(context, relationshipType); + } } diff --git a/dspace-api/src/main/java/org/dspace/content/dao/RelationshipDAO.java b/dspace-api/src/main/java/org/dspace/content/dao/RelationshipDAO.java index 9f532f4c01..bcf2ba8183 100644 --- a/dspace-api/src/main/java/org/dspace/content/dao/RelationshipDAO.java +++ b/dspace-api/src/main/java/org/dspace/content/dao/RelationshipDAO.java @@ -12,6 +12,7 @@ import java.util.List; import org.dspace.content.Item; import org.dspace.content.Relationship; +import org.dspace.content.RelationshipType; import org.dspace.core.Context; import org.dspace.core.GenericDAO; @@ -56,4 +57,6 @@ public interface RelationshipDAO extends GenericDAO { * @throws SQLException If something goes wrong */ int findRightPlaceByRightItem(Context context,Item item) throws SQLException; + + List findByRelationshipType(Context context, RelationshipType relationshipType) throws SQLException; } diff --git a/dspace-api/src/main/java/org/dspace/content/dao/impl/RelationshipDAOImpl.java b/dspace-api/src/main/java/org/dspace/content/dao/impl/RelationshipDAOImpl.java index 5b3e33f5b5..b7fbb3710e 100644 --- a/dspace-api/src/main/java/org/dspace/content/dao/impl/RelationshipDAOImpl.java +++ b/dspace-api/src/main/java/org/dspace/content/dao/impl/RelationshipDAOImpl.java @@ -15,6 +15,7 @@ import javax.persistence.criteria.Root; import org.dspace.content.Item; import org.dspace.content.Relationship; +import org.dspace.content.RelationshipType; import org.dspace.content.Relationship_; import org.dspace.content.dao.RelationshipDAO; import org.dspace.core.AbstractHibernateDAO; @@ -62,4 +63,17 @@ public class RelationshipDAOImpl extends AbstractHibernateDAO impl return 1; } } + + public List findByRelationshipType(Context context, RelationshipType relationshipType) + throws SQLException { + CriteriaBuilder criteriaBuilder = getCriteriaBuilder(context); + CriteriaQuery criteriaQuery = getCriteriaQuery(criteriaBuilder, Relationship.class); + Root relationshipRoot = criteriaQuery.from(Relationship.class); + criteriaQuery.select(relationshipRoot); + criteriaQuery + .where(criteriaBuilder.equal(relationshipRoot.get(Relationship_.relationshipType), relationshipType)); + return list(context, criteriaQuery, true, Relationship.class, -1, -1); + } + + } diff --git a/dspace-api/src/main/java/org/dspace/content/service/RelationshipService.java b/dspace-api/src/main/java/org/dspace/content/service/RelationshipService.java index a8052e1e6f..feadaaaba3 100644 --- a/dspace-api/src/main/java/org/dspace/content/service/RelationshipService.java +++ b/dspace-api/src/main/java/org/dspace/content/service/RelationshipService.java @@ -76,4 +76,6 @@ public interface RelationshipService extends DSpaceCRUDService { public List findByItemAndRelationshipType(Context context, Item item, RelationshipType relationshipType) throws SQLException; + + List findByRelationshipType(Context context, RelationshipType relationshipType) throws SQLException; } \ No newline at end of file diff --git a/dspace-spring-rest/src/main/java/org/dspace/app/rest/RelationshipRestController.java b/dspace-spring-rest/src/main/java/org/dspace/app/rest/RelationshipRestController.java index fadf7a6fc9..94b801ddc6 100644 --- a/dspace-spring-rest/src/main/java/org/dspace/app/rest/RelationshipRestController.java +++ b/dspace-spring-rest/src/main/java/org/dspace/app/rest/RelationshipRestController.java @@ -82,8 +82,10 @@ public class RelationshipRestController { relationships.addAll(relationshipService.findByItemAndRelationshipType(context, item, relationshipType)); } } else { - //TODO Find by label - relationships = relationshipService.findAll(context); + for (RelationshipType relationshipType : relationshipTypeList) { + relationships.addAll(relationshipService.findByRelationshipType(context, relationshipType)); + } +// relationships = relationshipService.findAll(context); } List relationshipRests = new LinkedList<>();