Methods Summary |
---|
public oracle.toplink.essentials.descriptors.ClassDescriptor | getDescriptor()
return descriptor;
|
public int | getFinishingTime()
return finishingTime;
|
public oracle.toplink.essentials.internal.sessions.CommitOrderCalculator | getOwner()
return owner;
|
public oracle.toplink.essentials.internal.sessions.CommitOrderDependencyNode | getPredecessor()
return predecessor;
|
public java.util.Vector | getRelatedNodes()
return relatedNodes;
|
public boolean | hasBeenVisited()
return (traversalState == Visited);
|
public boolean | hasNotBeenVisited()
return (traversalState == NotVisited);
|
public void | markInProgress()
traversalState = InProgress;
|
public void | markNotVisited()
traversalState = NotVisited;
|
public void | markVisited()
traversalState = Visited;
|
public void | recordMappingDependencies()Add all owned classes for each descriptor through checking the mappings.
If I have a foreign mapping with a constraint dependency, then add it
If I'm related to a class, I'm related to all its subclasses and superclasses.
If my superclass is related to a class, I'm related to it.
for (Enumeration mappings = getDescriptor().getMappings().elements();
mappings.hasMoreElements();) {
DatabaseMapping mapping = (DatabaseMapping)mappings.nextElement();
if (mapping.isForeignReferenceMapping()) {
if (((ForeignReferenceMapping)mapping).hasConstraintDependency()) {
Class ownedClass;
ClassDescriptor refDescriptor = ((ForeignReferenceMapping)mapping).getReferenceDescriptor();
if (refDescriptor == null) {
refDescriptor = session.getDescriptor(((ForeignReferenceMapping)mapping).getReferenceClass());
}
ownedClass = refDescriptor.getJavaClass();
if (ownedClass == null) {
throw oracle.toplink.essentials.exceptions.DescriptorException.referenceClassNotSpecified(mapping);
}
CommitOrderDependencyNode node = getOwner().nodeFor(ownedClass);
Vector ownedNodes = withAllSubclasses(node);
// I could remove duplicates here, but it's not that big a deal.
Helper.addAllToVector(relatedNodes, ownedNodes);
} else if (((ForeignReferenceMapping)mapping).hasInverseConstraintDependency()) {
Class ownerClass;
ClassDescriptor refDescriptor = ((ForeignReferenceMapping)mapping).getReferenceDescriptor();
if (refDescriptor == null) {
refDescriptor = session.getDescriptor(((ForeignReferenceMapping)mapping).getReferenceClass());
}
ownerClass = refDescriptor.getJavaClass();
if (ownerClass == null) {
throw oracle.toplink.essentials.exceptions.DescriptorException.referenceClassNotSpecified(mapping);
}
CommitOrderDependencyNode ownerNode = getOwner().nodeFor(ownerClass);
Vector ownedNodes = withAllSubclasses(this);
// I could remove duplicates here, but it's not that big a deal.
Helper.addAllToVector(ownerNode.getRelatedNodes(), ownedNodes);
}
}
}
|
public void | recordSpecifiedDependencies()Add all owned classes for each descriptor through checking the mappings.
If I have a foreign mapping with a constraint dependency, then add it
If I'm related to a class, I'm related to all its subclasses and superclasses.
If my superclass is related to a class, I'm related to it.
for (Enumeration constraintsEnum = getDescriptor().getConstraintDependencies().elements();
constraintsEnum.hasMoreElements();) {
Class ownedClass = (Class)constraintsEnum.nextElement();
CommitOrderDependencyNode node = getOwner().nodeFor(ownedClass);
Vector ownedNodes = withAllSubclasses(node);
// I could remove duplicates here, but it's not that big a deal.
Helper.addAllToVector(relatedNodes, ownedNodes);
}
|
public void | setDiscoveryTime(int time)
discoveryTime = time;
|
public void | setFinishingTime(int time)
finishingTime = time;
|
public void | setPredecessor(oracle.toplink.essentials.internal.sessions.CommitOrderDependencyNode n)
predecessor = n;
|
public java.lang.String | toString()
if (descriptor == null) {
return ToStringLocalization.buildMessage("empty_commit_order_dependency_node", (Object[])null);
} else {
Object[] args = { descriptor };
return ToStringLocalization.buildMessage("node", args);
}
|
public void | visit()
//Visit this node as part of a topological sort
int startTime;
markInProgress();
startTime = getOwner().getNextTime();
setDiscoveryTime(startTime);
for (Enumeration e = getRelatedNodes().elements(); e.hasMoreElements();) {
CommitOrderDependencyNode node = (CommitOrderDependencyNode)e.nextElement();
if (node.hasNotBeenVisited()) {
node.setPredecessor(this);
node.visit();
}
if (node.getPredecessor() == null) {
node.setPredecessor(this);
}
}
markVisited();
setFinishingTime(getOwner().getNextTime());
|
public java.util.Vector | withAllSubclasses(oracle.toplink.essentials.internal.sessions.CommitOrderDependencyNode node)
Vector results = new Vector();
results.addElement(node);
if (node.getDescriptor().hasInheritance()) {
InheritancePolicy p = node.getDescriptor().getInheritancePolicy();
// For bug 3019934 replace getChildDescriptors with getAllChildDescriptors.
for (Enumeration e = p.getAllChildDescriptors().elements(); e.hasMoreElements();) {
results.addElement(getOwner().nodeFor((ClassDescriptor)e.nextElement()));
}
}
return results;
|