public final class ReferenceMap
extends java.lang.Object
Constructor and Description |
---|
ReferenceMap(boolean istransactional, TransactionManager txmgr)
Initializes the ReferenceMap
|
ReferenceMap(ReferenceMap other, boolean isTransactional, TransactionManager txmgr)
Initializes the ReferenceMap from another reference map, essentially constructing a copy
|
ReferenceMap(TransactionManager txmgr)
Simply calls
ReferenceMap(boolean, TransactionManager) with isTransaction set to true |
Modifier and Type | Method and Description |
---|---|
boolean |
__isKnownToExist(Ref ref) |
boolean |
__nodeExists(Ref ref) |
void |
deleteNode(Ref ref) |
java.util.Set<Ref> |
findDependencies(Ref ref, java.util.Set<java.lang.String> typeIds, java.util.Set<java.lang.String> frontierTypeIds, boolean includeMissingRefs) |
java.util.Set<Ref> |
findDependents(Ref ref, java.util.Set<java.lang.String> typeIds, java.util.Set<java.lang.String> frontierTypeIds) |
java.util.Set<Ref> |
getChildren(Ref ref)
Returns an unmodifiable view of the children of the given item
|
java.util.Set<Ref> |
getDependencyRefs(Ref root) |
java.util.Set<Ref> |
getDependentRefs(Ref root) |
java.util.Set<Ref> |
getDependents(Ref ref)
Returns an unmodifiable view of the parents of the given item
|
int |
getDepth(Ref ref) |
int |
getNumDependencies(Ref root) |
int |
getNumDependents(Ref root) |
java.util.List<Ref> |
getResourcesOrdered()
Returns a collection of references to all the resources that exist in the domain.
|
boolean |
hasCycle()
Checks whether the graph has cycles.
|
boolean |
hasCycle(Ref ref, java.util.Set<Ref> futureReferences)
Checks whether the graph has cycles.
|
boolean |
hasDependencies(Ref root) |
boolean |
hasDependents(Ref root)
Returns true if there are any dependents on the given folder/project or resource.
|
boolean |
isEmpty()
returns whether it is empty
|
boolean |
isInCycle(Ref ref, java.util.Set<Ref> icycle)
checks whether the given ref is in a cycle
|
boolean |
isReferenced(Ref ref) |
static ReferenceMap |
merge(ReferenceMap m1, ReferenceMap m2, boolean newmap)
merges the 2 given maps.
|
void |
rename(Ref oldref, Ref newref)
changes the identity of a given reference
|
void |
reverse()
reverses the graph.
|
void |
setReferences(Ref dependent, java.util.Set<Ref> children)
Establishes references from the parent to the children.
|
void |
sortRefs(java.util.List<Ref> refs, boolean orderForDeletion)
Apply sorting algorithm to the given set of refs.
|
public ReferenceMap(TransactionManager txmgr)
ReferenceMap(boolean, TransactionManager)
with isTransaction
set to truepublic ReferenceMap(boolean istransactional, TransactionManager txmgr)
istransactional
- whether the ReferenceMap should participate in transactionspublic ReferenceMap(ReferenceMap other, boolean isTransactional, TransactionManager txmgr)
public boolean isEmpty()
public void reverse()
public static ReferenceMap merge(ReferenceMap m1, ReferenceMap m2, boolean newmap)
The resulting map is non-transactional. The flag newmap can be used to indicate whether a new ReferenceMap object must be created or if the given maps can be reused by optimizations.
public void setReferences(Ref dependent, java.util.Set<Ref> children)
public java.util.Set<Ref> getDependents(Ref ref)
public java.util.Set<Ref> getChildren(Ref ref)
public void deleteNode(Ref ref)
public boolean __nodeExists(Ref ref)
public boolean __isKnownToExist(Ref ref)
public boolean isReferenced(Ref ref)
public int getDepth(Ref ref)
public boolean hasCycle()
public boolean hasCycle(Ref ref, java.util.Set<Ref> futureReferences)
futureReferences
- optional future references for the given referncepublic boolean isInCycle(Ref ref, java.util.Set<Ref> icycle)
public boolean hasDependents(Ref root)
public int getNumDependents(Ref root)
public java.util.Set<Ref> findDependents(Ref ref, java.util.Set<java.lang.String> typeIds, java.util.Set<java.lang.String> frontierTypeIds)
public boolean hasDependencies(Ref root)
public int getNumDependencies(Ref root)
public java.util.Set<Ref> findDependencies(Ref ref, java.util.Set<java.lang.String> typeIds, java.util.Set<java.lang.String> frontierTypeIds, boolean includeMissingRefs)
public java.util.List<Ref> getResourcesOrdered()
public void sortRefs(java.util.List<Ref> refs, boolean orderForDeletion)
refs
- the references to sort. All references must exist in the graphorderForDeletion
- if true the result is ordered so that the resources can be safely deleted in the result order. If false, it is ordered in the inverse order, e.g., resources that does not depend on anything are ordered first. The sorting is a topological sort based on the depth of a node in the reference graph. If two references are at the same depth, they are further ordered with respect to the natural ordering of Ref