Class RelationshipDAOImpl

    • Constructor Detail

      • RelationshipDAOImpl

        public RelationshipDAOImpl()
    • Method Detail

      • findByItem

        public List<Relationship> findByItem​(Context context,
                                             Item item,
                                             boolean excludeTilted,
                                             boolean excludeNonLatest)
                                      throws SQLException
        Description copied from interface: RelationshipDAO
        This method returns a list of Relationship objects that have the given Item object as a leftItem or a rightItem
        Specified by:
        findByItem in interface RelationshipDAO
        Parameters:
        context - The relevant DSpace context
        item - The item that should be either a leftItem or a rightItem of all the Relationship objects in the returned list
        excludeTilted - If true, excludes tilted relationships
        excludeNonLatest - If true, excludes all relationships for which the other item has a more recent version that is relevant for this relationship
        Returns:
        The list of Relationship objects that contain either a left or a right item that is equal to the given item
        Throws:
        SQLException - If something goes wrong
      • findByItem

        public List<Relationship> findByItem​(Context context,
                                             Item item,
                                             Integer limit,
                                             Integer offset,
                                             boolean excludeTilted,
                                             boolean excludeNonLatest)
                                      throws SQLException
        Description copied from interface: RelationshipDAO
        This method returns a list of Relationship objects that have the given Item object as a leftItem or a rightItem
        Specified by:
        findByItem in interface RelationshipDAO
        Parameters:
        context - The relevant DSpace context
        item - The item that should be either a leftItem or a rightItem of all the Relationship objects in the returned list
        limit - paging limit
        offset - paging offset
        excludeTilted - If true, excludes tilted relationships
        excludeNonLatest - If true, excludes all relationships for which the other item has a more recent version that is relevant for this relationship
        Returns:
        The list of Relationship objects that contain either a left or a right item that is equal to the given item
        Throws:
        SQLException - If something goes wrong
      • getLeftItemPredicate

        protected javax.persistence.criteria.Predicate getLeftItemPredicate​(javax.persistence.criteria.CriteriaBuilder criteriaBuilder,
                                                                            javax.persistence.criteria.Root<Relationship> relationshipRoot,
                                                                            Item item,
                                                                            boolean excludeTilted,
                                                                            boolean excludeNonLatest)
        Get the predicate for a criteria query that selects relationships by their left item.
        Parameters:
        criteriaBuilder - the criteria builder.
        relationshipRoot - the relationship root.
        item - the item that is being searched for.
        excludeTilted - if true, exclude tilted relationships.
        excludeNonLatest - if true, exclude relationships for which the opposite item is not the latest version that is relevant.
        Returns:
        a predicate that satisfies the given restrictions.
      • getRightItemPredicate

        protected javax.persistence.criteria.Predicate getRightItemPredicate​(javax.persistence.criteria.CriteriaBuilder criteriaBuilder,
                                                                             javax.persistence.criteria.Root<Relationship> relationshipRoot,
                                                                             Item item,
                                                                             boolean excludeTilted,
                                                                             boolean excludeNonLatest)
        Get the predicate for a criteria query that selects relationships by their right item.
        Parameters:
        criteriaBuilder - the criteria builder.
        relationshipRoot - the relationship root.
        item - the item that is being searched for.
        excludeTilted - if true, exclude tilted relationships.
        excludeNonLatest - if true, exclude relationships for which the opposite item is not the latest version that is relevant.
        Returns:
        a predicate that satisfies the given restrictions.
      • countByItem

        public int countByItem​(Context context,
                               Item item,
                               boolean excludeTilted,
                               boolean excludeNonLatest)
                        throws SQLException
        Description copied from interface: RelationshipDAO
        This method returns a count of Relationship objects that have the given Item object as a leftItem or a rightItem
        Specified by:
        countByItem in interface RelationshipDAO
        Parameters:
        context - The relevant DSpace context
        item - The item that should be either a leftItem or a rightItem of all the Relationship objects in the returned list
        excludeTilted - if true, excludes tilted relationships
        excludeNonLatest - if true, exclude relationships for which the opposite item is not the latest version that is relevant
        Returns:
        The list of Relationship objects that contain either a left or a right item that is equal to the given item
        Throws:
        SQLException - If something goes wrong
      • findByRelationshipType

        public List<Relationship> findByRelationshipType​(Context context,
                                                         RelationshipType relationshipType)
                                                  throws SQLException
        Description copied from interface: RelationshipDAO
        This method returns a list of Relationship objects for the given RelationshipType object. It will construct a list of all Relationship objects that have the given RelationshipType object as the relationshipType property
        Specified by:
        findByRelationshipType in interface RelationshipDAO
        Parameters:
        context - The relevant DSpace context
        relationshipType - The RelationshipType object to be checked on
        Returns:
        A list of Relationship objects that have the given RelationshipType object as the relationshipType property
        Throws:
        SQLException - If something goes wrong
      • findByRelationshipType

        public List<Relationship> findByRelationshipType​(Context context,
                                                         RelationshipType relationshipType,
                                                         Integer limit,
                                                         Integer offset)
                                                  throws SQLException
        Description copied from interface: RelationshipDAO
        This method returns a list of Relationship objects for the given RelationshipType object. It will construct a list of all Relationship objects that have the given RelationshipType object as the relationshipType property
        Specified by:
        findByRelationshipType in interface RelationshipDAO
        Parameters:
        context - The relevant DSpace context
        relationshipType - The RelationshipType object to be checked on
        limit - paging limit
        offset - paging offset
        Returns:
        A list of Relationship objects that have the given RelationshipType object as the relationshipType property
        Throws:
        SQLException - If something goes wrong
      • findByItemAndRelationshipType

        public List<Relationship> findByItemAndRelationshipType​(Context context,
                                                                Item item,
                                                                RelationshipType relationshipType,
                                                                Integer limit,
                                                                Integer offset,
                                                                boolean excludeNonLatest)
                                                         throws SQLException
        Description copied from interface: RelationshipDAO
        This method returns a list of Relationship objects for the given RelationshipType object. It will construct a list of all Relationship objects that have the given RelationshipType object as the relationshipType property
        Specified by:
        findByItemAndRelationshipType in interface RelationshipDAO
        Parameters:
        context - The relevant DSpace context
        item - item to filter by
        relationshipType - The RelationshipType object to be checked on
        limit - paging limit
        offset - paging offset
        excludeNonLatest - If true, excludes all relationships for which the other item has a more recent version that is relevant for this relationship
        Returns:
        A list of Relationship objects that have the given RelationshipType object as the relationshipType property
        Throws:
        SQLException - If something goes wrong
      • findByItemAndRelationshipType

        public List<Relationship> findByItemAndRelationshipType​(Context context,
                                                                Item item,
                                                                RelationshipType relationshipType,
                                                                boolean isLeft,
                                                                Integer limit,
                                                                Integer offset,
                                                                boolean excludeNonLatest)
                                                         throws SQLException
        Description copied from interface: RelationshipDAO
        This method returns a list of Relationship objects for the given RelationshipType object. It will construct a list of all Relationship objects that have the given RelationshipType object as the relationshipType property
        Specified by:
        findByItemAndRelationshipType in interface RelationshipDAO
        Parameters:
        context - The relevant DSpace context
        item - item to filter by
        relationshipType - The RelationshipType object to be checked on
        isLeft - Is item left or right
        limit - paging limit
        offset - paging offset
        excludeNonLatest - If true, excludes all relationships for which the other item has a more recent version that is relevant for this relationship
        Returns:
        A list of Relationship objects that have the given RelationshipType object as the relationshipType property
        Throws:
        SQLException - If something goes wrong
      • findByLatestItemAndRelationshipType

        public List<ItemUuidAndRelationshipId> findByLatestItemAndRelationshipType​(Context context,
                                                                                   Item latestItem,
                                                                                   RelationshipType relationshipType,
                                                                                   boolean isLeft)
                                                                            throws SQLException
        Description copied from interface: RelationshipDAO
        This method returns the UUIDs of all items that have a relationship with the given item, from the perspective of the other item. In other words, given a relationship with the given item, the given item should have "latest status" in order for the other item uuid to be returned. This method differs from the "excludeNonLatest" property in other methods, because in this method the current item should have "latest status" to return the other item, whereas with "excludeNonLatest" the other item should have "latest status" to be returned. This method is used to index items in solr; when searching for related items of one of the returned uuids, the given item should appear as a search result. NOTE: This method does not return Relationships for performance, because doing so would eagerly fetch the items on both sides, which is unnecessary. NOTE: tilted relationships are NEVER excluded when fetching one relationship type.
        Specified by:
        findByLatestItemAndRelationshipType in interface RelationshipDAO
        Parameters:
        context - the DSpace context.
        latestItem - the target item; only relationships where this item has "latest status" should be considered.
        relationshipType - the relationship type for which relationships should be selected.
        isLeft - whether the entity type of the item occurs on the left or right side of the relationship type. This is redundant in most cases, but necessary because relationship types my have the same entity type on both sides.
        Returns:
        a list containing pairs of relationship ids and item uuids.
        Throws:
        SQLException - if something goes wrong.
      • findByTypeName

        public List<Relationship> findByTypeName​(Context context,
                                                 String typeName)
                                          throws SQLException
        Description copied from interface: RelationshipDAO
        This method returns a list of Relationship objects for the given typeName
        Specified by:
        findByTypeName in interface RelationshipDAO
        Parameters:
        context - The relevant DSpace context
        typeName - The leftward or rightward typeName of the relationship type
        Returns:
        A list of Relationship objects that have the given RelationshipType object as the relationshipType property
        Throws:
        SQLException - If something goes wrong
      • findByTypeName

        public List<Relationship> findByTypeName​(Context context,
                                                 String typeName,
                                                 Integer limit,
                                                 Integer offset)
                                          throws SQLException
        Description copied from interface: RelationshipDAO
        This method returns a list of Relationship objects for the given typeName
        Specified by:
        findByTypeName in interface RelationshipDAO
        Parameters:
        context - The relevant DSpace context
        typeName - The leftward or rightward typeName of the relationship type
        limit - paging limit
        offset - paging offset
        Returns:
        A list of Relationship objects that have the given RelationshipType object as the relationshipType property
        Throws:
        SQLException - If something goes wrong
      • countByItemAndRelationshipType

        public int countByItemAndRelationshipType​(Context context,
                                                  Item item,
                                                  RelationshipType relationshipType,
                                                  boolean isLeft,
                                                  boolean excludeNonLatest)
                                           throws SQLException
        Description copied from interface: RelationshipDAO
        Count total number of relationships (rows in relationship table) by an item and a relationship type and a boolean indicating whether the item should be the leftItem or the rightItem
        Specified by:
        countByItemAndRelationshipType in interface RelationshipDAO
        Parameters:
        context - context
        item - item to filter by
        relationshipType - relationship type to filter by
        isLeft - indicating whether the counted Relationships should have the given Item on the left side
        excludeNonLatest - if true, exclude relationships for which the opposite item is not the latest version that is relevant
        Returns:
        total count
        Throws:
        SQLException - if database error
      • countByTypeName

        public int countByTypeName​(Context context,
                                   String typeName)
                            throws SQLException
        Description copied from interface: RelationshipDAO
        Count total number of relationships (rows in relationship table) given a typeName
        Specified by:
        countByTypeName in interface RelationshipDAO
        Parameters:
        context - context
        typeName - the relationship typeName to filter by
        Returns:
        total count
        Throws:
        SQLException - if database error
      • findByItemAndRelationshipTypeAndList

        public List<Relationship> findByItemAndRelationshipTypeAndList​(Context context,
                                                                       UUID focusUUID,
                                                                       RelationshipType relationshipType,
                                                                       List<UUID> items,
                                                                       boolean isLeft,
                                                                       int offset,
                                                                       int limit)
                                                                throws SQLException
        Description copied from interface: RelationshipDAO
        This method is used to retrieve relationships that match focusItem on the one hand and matches list of related items elsewhere.
        Specified by:
        findByItemAndRelationshipTypeAndList in interface RelationshipDAO
        Parameters:
        context - DSpace context object
        focusUUID - UUID of Item that will match left side if the param isLeft is true otherwise right side
        relationshipType - Relationship type to filter by
        items - List of UUID that will use to filter other side respect the focusUUID
        isLeft - Indicating whether the counted Relationships should have the given Item on the left side or not
        offset - paging offset
        limit - paging limit
        Returns:
        Throws:
        SQLException - If database error
      • countByItemAndRelationshipTypeAndList

        public int countByItemAndRelationshipTypeAndList​(Context context,
                                                         UUID focusUUID,
                                                         RelationshipType relationshipType,
                                                         List<UUID> items,
                                                         boolean isLeft)
                                                  throws SQLException
        Description copied from interface: RelationshipDAO
        Count total number of relationships that match focusItem on the one hand and matches list of related items elsewhere.
        Specified by:
        countByItemAndRelationshipTypeAndList in interface RelationshipDAO
        Parameters:
        context - DSpace context object
        focusUUID - UUID of Item that will match left side if the param isLeft is true otherwise right side
        relationshipType - Relationship type to filter by
        items - List of UUID that will use to filter other side respect the focusUUID
        isLeft - Indicating whether the counted Relationships should have the given Item on the left side or not
        Returns:
        Throws:
        SQLException - If database error