Package org.fcrepo.kernel.impl
Class ContainmentIndexImpl
- java.lang.Object
-
- org.fcrepo.kernel.impl.ContainmentIndexImpl
-
- All Implemented Interfaces:
ContainmentIndex
@Component("containmentIndexImpl") public class ContainmentIndexImpl extends Object implements ContainmentIndex
- Since:
- 6.0.0
- Author:
- peichman, whikloj
-
-
Field Summary
Fields Modifier and Type Field Description static String
FEDORA_ID_COLUMN
static String
RESOURCES_TABLE
-
Constructor Summary
Constructors Constructor Description ContainmentIndexImpl()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addContainedBy(Transaction tx, FedoraId parent, FedoraId child)
Add a contained by relation between the child resource and its parent.void
addContainedBy(Transaction tx, FedoraId parent, FedoraId child, Instant startTime, Instant endTime)
Add a contained by relation between the child resource and its parent for a range of time in the past.void
commitTransaction(Transaction tx)
Commit the changes made in the transaction.Instant
containmentLastUpdated(Transaction tx, FedoraId fedoraId)
Find the timestamp of the last child added or deletedString
getContainedBy(Transaction tx, FedoraId resource)
Return the ID of the containing resource for resourceID.FedoraId
getContainerIdByPath(Transaction tx, FedoraId fedoraId, boolean checkDeleted)
Find the ID for the container of the provided resource by iterating up the path until you find a real resource.Stream<String>
getContains(Transaction tx, FedoraId fedoraId)
Return a stream of fedora identifiers contained by the specified fedora resource for the current state of the repository.Stream<String>
getContainsDeleted(Transaction tx, FedoraId fedoraId)
Return a stream of fedora identifiers contained by the specified fedora resource that have deleted relationships.DataSource
getDataSource()
Get the data source backing this containment indexboolean
hasResourcesStartingWith(Transaction tx, FedoraId fedoraId)
Find whether there are any resources that starts with the ID provided.void
purgeResource(Transaction tx, FedoraId resource)
Remove all relationships to the specified resource.void
removeContainedBy(Transaction tx, FedoraId parent, FedoraId child)
Mark a contained by relation between the child resource and its parent as deleted.void
removeResource(Transaction tx, FedoraId resource)
Mark all relationships to the specified resource as deleted.void
reset()
Truncates the containment index.boolean
resourceExists(Transaction tx, FedoraId fedoraId, boolean includeDeleted)
Check if the resourceID exists in the containment index.void
rollbackTransaction(Transaction tx)
Rollback the containment index changes in the transaction.void
setDataSource(DataSource dataSource)
Set the data source backing this containment index
-
-
-
Field Detail
-
RESOURCES_TABLE
public static final String RESOURCES_TABLE
- See Also:
- Constant Field Values
-
FEDORA_ID_COLUMN
public static final String FEDORA_ID_COLUMN
- See Also:
- Constant Field Values
-
-
Constructor Detail
-
ContainmentIndexImpl
public ContainmentIndexImpl()
-
-
Method Detail
-
getContains
public Stream<String> getContains(@Nonnull Transaction tx, FedoraId fedoraId)
Description copied from interface:ContainmentIndex
Return a stream of fedora identifiers contained by the specified fedora resource for the current state of the repository.- Specified by:
getContains
in interfaceContainmentIndex
- Parameters:
tx
- The transaction, or null if no transactionfedoraId
- The ID of the containing fedora resource- Returns:
- A stream of contained identifiers
-
getContainsDeleted
public Stream<String> getContainsDeleted(@Nonnull Transaction tx, FedoraId fedoraId)
Description copied from interface:ContainmentIndex
Return a stream of fedora identifiers contained by the specified fedora resource that have deleted relationships.- Specified by:
getContainsDeleted
in interfaceContainmentIndex
- Parameters:
tx
- The transaction, or null if no transactionfedoraId
- The ID of the containing fedora resource- Returns:
- A stream of contained identifiers
-
getContainedBy
public String getContainedBy(@Nonnull Transaction tx, FedoraId resource)
Description copied from interface:ContainmentIndex
Return the ID of the containing resource for resourceID.- Specified by:
getContainedBy
in interfaceContainmentIndex
- Parameters:
tx
- The transaction, or null if no transactionresource
- The FedoraId of the resource to find the containing resource for.- Returns:
- The id of the containing resource or null if none found.
-
addContainedBy
public void addContainedBy(@Nonnull Transaction tx, FedoraId parent, FedoraId child)
Description copied from interface:ContainmentIndex
Add a contained by relation between the child resource and its parent.- Specified by:
addContainedBy
in interfaceContainmentIndex
- Parameters:
tx
- The transaction.parent
- The containing resource fedoraID.child
- The contained resource fedoraID.
-
addContainedBy
public void addContainedBy(@Nonnull Transaction tx, FedoraId parent, FedoraId child, Instant startTime, Instant endTime)
Description copied from interface:ContainmentIndex
Add a contained by relation between the child resource and its parent for a range of time in the past.- Specified by:
addContainedBy
in interfaceContainmentIndex
- Parameters:
tx
- The transaction.parent
- The containing resource fedoraID.child
- The contained resource fedoraID.startTime
- The start instant of the containment relationship.endTime
- The end instant of the containment relationship.
-
removeContainedBy
public void removeContainedBy(@Nonnull Transaction tx, FedoraId parent, FedoraId child)
Description copied from interface:ContainmentIndex
Mark a contained by relation between the child resource and its parent as deleted.- Specified by:
removeContainedBy
in interfaceContainmentIndex
- Parameters:
tx
- The transaction.parent
- The containing resource fedoraID.child
- The contained resource fedoraID.
-
removeResource
public void removeResource(@Nonnull Transaction tx, FedoraId resource)
Description copied from interface:ContainmentIndex
Mark all relationships to the specified resource as deleted.- Specified by:
removeResource
in interfaceContainmentIndex
- Parameters:
tx
- The transaction.resource
- The FedoraId of resource to remove.
-
purgeResource
public void purgeResource(@Nonnull Transaction tx, FedoraId resource)
Description copied from interface:ContainmentIndex
Remove all relationships to the specified resource.- Specified by:
purgeResource
in interfaceContainmentIndex
- Parameters:
tx
- The transaction.resource
- The FedoraId of resource to remove.
-
commitTransaction
public void commitTransaction(Transaction tx)
Description copied from interface:ContainmentIndex
Commit the changes made in the transaction.- Specified by:
commitTransaction
in interfaceContainmentIndex
- Parameters:
tx
- The transaction.
-
rollbackTransaction
@Transactional(propagation=NOT_SUPPORTED) public void rollbackTransaction(Transaction tx)
Description copied from interface:ContainmentIndex
Rollback the containment index changes in the transaction.- Specified by:
rollbackTransaction
in interfaceContainmentIndex
- Parameters:
tx
- The transaction.
-
resourceExists
public boolean resourceExists(@Nonnull Transaction tx, FedoraId fedoraId, boolean includeDeleted)
Description copied from interface:ContainmentIndex
Check if the resourceID exists in the containment index. Which should mean it exists.- Specified by:
resourceExists
in interfaceContainmentIndex
- Parameters:
tx
- The transaction, or null if no transactionfedoraId
- The resource's FedoraId.includeDeleted
- Include deleted resources in the search.- Returns:
- True if it is in the index.
-
getContainerIdByPath
public FedoraId getContainerIdByPath(Transaction tx, FedoraId fedoraId, boolean checkDeleted)
Description copied from interface:ContainmentIndex
Find the ID for the container of the provided resource by iterating up the path until you find a real resource.- Specified by:
getContainerIdByPath
in interfaceContainmentIndex
- Parameters:
tx
- The transaction, or null if no transactionfedoraId
- The resource's ID.checkDeleted
- Whether to include deleted resource (tombstones) in the search.- Returns:
- The container ID.
-
reset
public void reset()
Description copied from interface:ContainmentIndex
Truncates the containment index. This should only be called when rebuilding the index.- Specified by:
reset
in interfaceContainmentIndex
-
hasResourcesStartingWith
public boolean hasResourcesStartingWith(Transaction tx, FedoraId fedoraId)
Description copied from interface:ContainmentIndex
Find whether there are any resources that starts with the ID provided.- Specified by:
hasResourcesStartingWith
in interfaceContainmentIndex
- Parameters:
tx
- The transaction, or null if no transaction.fedoraId
- The ID to use to look for other IDs.- Returns:
- Are there any matching IDs.
-
containmentLastUpdated
public Instant containmentLastUpdated(Transaction tx, FedoraId fedoraId)
Description copied from interface:ContainmentIndex
Find the timestamp of the last child added or deleted- Specified by:
containmentLastUpdated
in interfaceContainmentIndex
- Parameters:
tx
- The transaction, or null if no transaction.fedoraId
- The ID of the containing resource to check.- Returns:
- Timestamp of last child added or deleted or null if none
-
getDataSource
public DataSource getDataSource()
Get the data source backing this containment index- Returns:
- data source
-
setDataSource
public void setDataSource(DataSource dataSource)
Set the data source backing this containment index- Parameters:
dataSource
- data source
-
-