From f80dcdd7e454a6839a35a1344636e1182bc6fe4c Mon Sep 17 00:00:00 2001 From: Britt Park Date: Mon, 11 Dec 2006 17:45:36 +0000 Subject: [PATCH] AVMNodeDescriptor now can be asked what type of deleted node it is via isDeletedFile() and isDeletedDirectory(). git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@4571 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- .../org/alfresco/repo/avm/AVMCrawlTestP.java | 2 +- .../org/alfresco/repo/avm/AVMServiceTest.java | 2 + .../org/alfresco/repo/avm/DeletedNode.java | 5 +++ .../alfresco/repo/avm/DeletedNodeImpl.java | 30 ++++++++++++-- .../repo/avm/LayeredDirectoryNodeImpl.java | 6 ++- .../repo/avm/LayeredFileNodeImpl.java | 9 +++-- .../repo/avm/PlainDirectoryNodeImpl.java | 6 ++- .../alfresco/repo/avm/PlainFileNodeImpl.java | 9 +++-- .../alfresco/repo/avm/hibernate/AVM.hbm.xml | 1 + .../service/cmr/avm/AVMNodeDescriptor.java | 39 ++++++++++++++++++- 10 files changed, 96 insertions(+), 13 deletions(-) diff --git a/source/java/org/alfresco/repo/avm/AVMCrawlTestP.java b/source/java/org/alfresco/repo/avm/AVMCrawlTestP.java index 122999ab8d..d4ef18abf9 100644 --- a/source/java/org/alfresco/repo/avm/AVMCrawlTestP.java +++ b/source/java/org/alfresco/repo/avm/AVMCrawlTestP.java @@ -37,7 +37,7 @@ public class AVMCrawlTestP extends AVMServiceTestBase { int n = 8; // Number of Threads. int m = 32; // How many multiples of content to start with. - long runTime = 21600000; // 6 hours. + long runTime = 3600000; // 6 hours. fService.purgeAVMStore("main"); BulkLoader loader = new BulkLoader(); loader.setAvmService(fService); diff --git a/source/java/org/alfresco/repo/avm/AVMServiceTest.java b/source/java/org/alfresco/repo/avm/AVMServiceTest.java index a681e3d6c2..0896d039da 100644 --- a/source/java/org/alfresco/repo/avm/AVMServiceTest.java +++ b/source/java/org/alfresco/repo/avm/AVMServiceTest.java @@ -3351,6 +3351,7 @@ public class AVMServiceTest extends AVMServiceTestBase fService.removeNode("main:/a/b/c", "foo"); AVMNodeDescriptor desc = fService.lookup(-1, "main:/a/b/c/foo", true); assertTrue(desc.isDeleted()); + assertTrue(desc.isDeletedFile()); Map listing = fService.getDirectoryListing(-1, "main:/a/b/c", true); assertEquals(2, listing.size()); assertTrue(listing.get("foo").isDeleted()); @@ -3373,6 +3374,7 @@ public class AVMServiceTest extends AVMServiceTestBase fService.removeNode("main:/layer/b/c", "bar"); desc = fService.lookup(-1, "main:/layer/b/c/bar", true); assertTrue(desc.isDeleted()); + assertTrue(desc.isDeletedFile()); listing = fService.getDirectoryListing(-1, "main:/layer/b/c", true); assertEquals(2, listing.size()); assertTrue(listing.get("foo").isDeleted()); diff --git a/source/java/org/alfresco/repo/avm/DeletedNode.java b/source/java/org/alfresco/repo/avm/DeletedNode.java index c18e563442..0f6b4d43ff 100644 --- a/source/java/org/alfresco/repo/avm/DeletedNode.java +++ b/source/java/org/alfresco/repo/avm/DeletedNode.java @@ -23,4 +23,9 @@ package org.alfresco.repo.avm; */ public interface DeletedNode extends AVMNode { + /** + * Get the type of node that this is a deleted placeholder for + * @return The type of node that was deleted. + */ + public int getDeletedType(); } diff --git a/source/java/org/alfresco/repo/avm/DeletedNodeImpl.java b/source/java/org/alfresco/repo/avm/DeletedNodeImpl.java index 39658e8c2e..9f2c01ff4a 100644 --- a/source/java/org/alfresco/repo/avm/DeletedNodeImpl.java +++ b/source/java/org/alfresco/repo/avm/DeletedNodeImpl.java @@ -26,6 +26,11 @@ import org.alfresco.service.cmr.avm.AVMNodeDescriptor; public class DeletedNodeImpl extends AVMNodeImpl implements DeletedNode { private static final long serialVersionUID = 7283526790174482993L; + + /** + * The type of node that this is a deleted node for. + */ + private int fDeletedType; /** * For Hibernate's use. @@ -44,7 +49,23 @@ public class DeletedNodeImpl extends AVMNodeImpl implements DeletedNode { super(id, store); } + + /** + * Setter. + */ + public void setDeletedType(int type) + { + fDeletedType = type; + } + /** + * Getter. + */ + public int getDeletedType() + { + return fDeletedType; + } + /** * This should never be called. */ @@ -87,7 +108,8 @@ public class DeletedNodeImpl extends AVMNodeImpl implements DeletedNode false, -1, false, - -1); + -1, + fDeletedType); } /** @@ -114,7 +136,8 @@ public class DeletedNodeImpl extends AVMNodeImpl implements DeletedNode false, -1, false, - -1); + -1, + fDeletedType); } /** @@ -143,7 +166,8 @@ public class DeletedNodeImpl extends AVMNodeImpl implements DeletedNode false, -1, false, - -1); + -1, + fDeletedType); } /** diff --git a/source/java/org/alfresco/repo/avm/LayeredDirectoryNodeImpl.java b/source/java/org/alfresco/repo/avm/LayeredDirectoryNodeImpl.java index 91368d00f2..cf07381390 100644 --- a/source/java/org/alfresco/repo/avm/LayeredDirectoryNodeImpl.java +++ b/source/java/org/alfresco/repo/avm/LayeredDirectoryNodeImpl.java @@ -568,11 +568,12 @@ class LayeredDirectoryNodeImpl extends DirectoryNodeImpl implements LayeredDirec } if (child != null && (indirect || child.getStoreNew() == null || child.getAncestor() != null)) { - AVMNode ghost = new DeletedNodeImpl(lPath.getAVMStore().getAVMRepository().issueID(), + DeletedNodeImpl ghost = new DeletedNodeImpl(lPath.getAVMStore().getAVMRepository().issueID(), lPath.getAVMStore()); AVMDAOs.Instance().fAVMNodeDAO.save(ghost); AVMDAOs.Instance().fAVMNodeDAO.flush(); ghost.setAncestor(child); + ghost.setDeletedType(child.getType()); this.putChild(name, ghost); } else @@ -682,6 +683,7 @@ class LayeredDirectoryNodeImpl extends DirectoryNodeImpl implements LayeredDirec fPrimaryIndirection, fLayerID, fOpacity, + -1, -1); } @@ -710,6 +712,7 @@ class LayeredDirectoryNodeImpl extends DirectoryNodeImpl implements LayeredDirec fPrimaryIndirection, fLayerID, fOpacity, + -1, -1); } @@ -749,6 +752,7 @@ class LayeredDirectoryNodeImpl extends DirectoryNodeImpl implements LayeredDirec fPrimaryIndirection, fLayerID, fOpacity, + -1, -1); } diff --git a/source/java/org/alfresco/repo/avm/LayeredFileNodeImpl.java b/source/java/org/alfresco/repo/avm/LayeredFileNodeImpl.java index 1c3a9040fc..937c09a2b8 100644 --- a/source/java/org/alfresco/repo/avm/LayeredFileNodeImpl.java +++ b/source/java/org/alfresco/repo/avm/LayeredFileNodeImpl.java @@ -161,7 +161,8 @@ class LayeredFileNodeImpl extends FileNodeImpl implements LayeredFileNode false, -1, false, - 0); + 0, + -1); } /** @@ -188,7 +189,8 @@ class LayeredFileNodeImpl extends FileNodeImpl implements LayeredFileNode false, -1, false, - 0); + 0, + -1); } /** @@ -217,7 +219,8 @@ class LayeredFileNodeImpl extends FileNodeImpl implements LayeredFileNode false, -1, false, - 0); + 0, + -1); } /** diff --git a/source/java/org/alfresco/repo/avm/PlainDirectoryNodeImpl.java b/source/java/org/alfresco/repo/avm/PlainDirectoryNodeImpl.java index 729d4f3259..9735e50dfc 100644 --- a/source/java/org/alfresco/repo/avm/PlainDirectoryNodeImpl.java +++ b/source/java/org/alfresco/repo/avm/PlainDirectoryNodeImpl.java @@ -232,11 +232,12 @@ class PlainDirectoryNodeImpl extends DirectoryNodeImpl implements PlainDirectory AVMDAOs.Instance().fChildEntryDAO.delete(entry); if (child.getStoreNew() == null || child.getAncestor() != null) { - AVMNode ghost = new DeletedNodeImpl(lPath.getAVMStore().getAVMRepository().issueID(), + DeletedNodeImpl ghost = new DeletedNodeImpl(lPath.getAVMStore().getAVMRepository().issueID(), lPath.getAVMStore()); AVMDAOs.Instance().fAVMNodeDAO.save(ghost); AVMDAOs.Instance().fAVMNodeDAO.flush(); ghost.setAncestor(child); + ghost.setDeletedType(child.getType()); putChild(name, ghost); } else @@ -363,6 +364,7 @@ class PlainDirectoryNodeImpl extends DirectoryNodeImpl implements PlainDirectory false, -1, false, + -1, -1); } @@ -390,6 +392,7 @@ class PlainDirectoryNodeImpl extends DirectoryNodeImpl implements PlainDirectory false, -1, false, + -1, -1); } @@ -419,6 +422,7 @@ class PlainDirectoryNodeImpl extends DirectoryNodeImpl implements PlainDirectory false, -1, false, + -1, -1); } diff --git a/source/java/org/alfresco/repo/avm/PlainFileNodeImpl.java b/source/java/org/alfresco/repo/avm/PlainFileNodeImpl.java index 54744a4c9e..fa945d98b1 100644 --- a/source/java/org/alfresco/repo/avm/PlainFileNodeImpl.java +++ b/source/java/org/alfresco/repo/avm/PlainFileNodeImpl.java @@ -194,7 +194,8 @@ class PlainFileNodeImpl extends FileNodeImpl implements PlainFileNode false, -1, false, - getLength()); + getLength(), + -1); } /** @@ -221,7 +222,8 @@ class PlainFileNodeImpl extends FileNodeImpl implements PlainFileNode false, -1, false, - getFileLength()); + getFileLength(), + -1); } /** @@ -250,7 +252,8 @@ class PlainFileNodeImpl extends FileNodeImpl implements PlainFileNode false, -1, false, - getFileLength()); + getFileLength(), + -1); } /** diff --git a/source/java/org/alfresco/repo/avm/hibernate/AVM.hbm.xml b/source/java/org/alfresco/repo/avm/hibernate/AVM.hbm.xml index bd2be7ef8b..9f3616b570 100644 --- a/source/java/org/alfresco/repo/avm/hibernate/AVM.hbm.xml +++ b/source/java/org/alfresco/repo/avm/hibernate/AVM.hbm.xml @@ -50,6 +50,7 @@ proxy="DeletedNode" lazy="true" discriminator-value="deletednode"> +