Purge tests cover more now. Moved purging queries into mapping file.

Added call to AVMService to get Versions
by creation date.  GetRepositoryVersions methods now return Lists of 
VersionDescriptors, value objects with the attributes of a version.


git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/BRANCHES/WCM-DEV2/root@3131 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Britt Park
2006-06-17 18:48:44 +00:00
parent a215fb72b6
commit 9c17cfa1e0
16 changed files with 439 additions and 131 deletions

View File

@@ -24,7 +24,6 @@ import org.alfresco.repo.avm.hibernate.HibernateTxn;
import org.alfresco.repo.avm.hibernate.HibernateTxnCallback;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.proxy.HibernateProxy;
/**
* This is the background thread for reaping no longer referenced nodes
@@ -200,7 +199,7 @@ class OrphanReaper implements Runnable
AVMNode ancestor = node.getAncestor();
AVMNode mergedFrom = node.getMergedFrom();
// Get all the nodes that have this node as ancestor.
query = session.createQuery("from AVMNodeImpl an where an.ancestor = :node");
query = session.getNamedQuery("AVMNode.GetDescendents");
query.setEntity("node", node);
List<AVMNode> descendents = (List<AVMNode>)query.list();
for (AVMNode desc : descendents)
@@ -212,28 +211,24 @@ class OrphanReaper implements Runnable
}
}
// Get all the nodes that have this node as mergedFrom
query = session.createQuery("from AVMNodeImpl an where an.mergedFrom = :merged");
query = session.getNamedQuery("AVMNode.GetMergedTo");
query.setEntity("merged", node);
List<AVMNode> merged = (List<AVMNode>)query.list();
for (AVMNode merge : merged)
{
merge.setMergedFrom(ancestor);
}
// Work around Bitter Hibernate.
if (node instanceof HibernateProxy)
{
node = (AVMNode)((HibernateProxy)node).getHibernateLazyInitializer().getImplementation();
}
node = AVMNodeUnwrapper.Unwrap(node);
// Extra work for directories.
if (node instanceof DirectoryNode)
{
// First get rid of all child entries for the node.
Query delete = session.createQuery("delete ChildEntryImpl ce where ce.parent = :parent");
Query delete = session.getNamedQuery("ChildEntry.DeleteByParent");
delete.setEntity("parent", node);
delete.executeUpdate();
// Now find all the nodes that point to this node as their
// canonical parent and null that reference out.
query = session.createQuery("from AVMNodeImpl an where an.parent = :parent");
query = session.getNamedQuery("AVMNode.GetByParent");
query.setEntity("parent", node);
List<AVMNode> children = (List<AVMNode>)query.list();
for (AVMNode child : children)
@@ -243,7 +238,7 @@ class OrphanReaper implements Runnable
if (node instanceof LayeredDirectoryNode)
{
// More special work for layered directories.
delete = session.createQuery("delete DeletedChildImpl dc where dc.parent = :parent");
delete = session.getNamedQuery("DeletedChild.DeleteByParent");
delete.setEntity("parent", node);
delete.executeUpdate();
}