diff --git a/config/alfresco/avm-console-context.xml b/config/alfresco/avm-console-context.xml
index 4626c441ec..df5a1e31de 100644
--- a/config/alfresco/avm-console-context.xml
+++ b/config/alfresco/avm-console-context.xml
@@ -146,6 +146,12 @@
+
+
+
+
+
+
@@ -174,6 +180,9 @@
+
+
+
diff --git a/config/alfresco/avm-test-context.xml b/config/alfresco/avm-test-context.xml
index 37a4c21b9b..847d037abe 100644
--- a/config/alfresco/avm-test-context.xml
+++ b/config/alfresco/avm-test-context.xml
@@ -118,6 +118,12 @@
+
+
+
+
+
+
@@ -146,6 +152,9 @@
+
+
+
diff --git a/source/java/org/alfresco/repo/avm/AVMContext.java b/source/java/org/alfresco/repo/avm/AVMContext.java
index e00e66ceb2..eacabd21cc 100644
--- a/source/java/org/alfresco/repo/avm/AVMContext.java
+++ b/source/java/org/alfresco/repo/avm/AVMContext.java
@@ -65,6 +65,11 @@ public class AVMContext
*/
public DeletedChildDAO fDeletedChildDAO;
+ /**
+ * The NewInRepositoryDAO
+ */
+ public NewInRepositoryDAO fNewInRepositoryDAO;
+
/**
* @param nodeDAO the fAVMNodeDAO to set
*/
@@ -136,4 +141,12 @@ public class AVMContext
{
fIssuerDAO = issuerDAO;
}
+
+ /**
+ * @param newInRepositoryDAO The DAO to set.
+ */
+ public void setNewInRepositoryDAO(NewInRepositoryDAO newInRepositoryDAO)
+ {
+ fNewInRepositoryDAO = newInRepositoryDAO;
+ }
}
diff --git a/source/java/org/alfresco/repo/avm/AVMNode.java b/source/java/org/alfresco/repo/avm/AVMNode.java
index 6e1b4a7c40..e8a876b56d 100644
--- a/source/java/org/alfresco/repo/avm/AVMNode.java
+++ b/source/java/org/alfresco/repo/avm/AVMNode.java
@@ -65,12 +65,6 @@ public interface AVMNode
*/
public AVMNode copy(Lookup lPath);
- /**
- * Set the repository for a node.
- * @param repo The Repository to set.
- */
- public void setRepository(Repository repo);
-
/**
* Get the type of this node.
*/
@@ -106,12 +100,6 @@ public interface AVMNode
*/
public long getId();
- /**
- * Set this node's newness.
- * @param isNew The newness.
- */
- public void setIsNew(boolean isNew);
-
/**
* Get the newnews.
* @return Whether the node is new.
diff --git a/source/java/org/alfresco/repo/avm/AVMNodeDAO.java b/source/java/org/alfresco/repo/avm/AVMNodeDAO.java
index e89bc752f8..25ed30f17e 100644
--- a/source/java/org/alfresco/repo/avm/AVMNodeDAO.java
+++ b/source/java/org/alfresco/repo/avm/AVMNodeDAO.java
@@ -30,13 +30,6 @@ public interface AVMNodeDAO
*/
public void save(AVMNode node);
- /**
- * Make all the nodes owned by a repository no longer
- * point to that repository.
- * @param rep The Repository.
- */
- public void unreferenceRepository(Repository rep);
-
/**
* Delete a single node.
* @param node The node to delete.
@@ -57,13 +50,6 @@ public interface AVMNodeDAO
*/
public DirectoryNode getRepositoryRoot(Repository rep, int version);
- /**
- * Get those nodes which are new in the given repository.
- * @param repo The repository.
- * @return A List of AVMNodes.
- */
- public List getNewInRepo(Repository repo);
-
/**
* Update a node that has been dirtied.
* @param node The node.
diff --git a/source/java/org/alfresco/repo/avm/AVMNodeImpl.java b/source/java/org/alfresco/repo/avm/AVMNodeImpl.java
index cf691c739b..e6d0632ffd 100644
--- a/source/java/org/alfresco/repo/avm/AVMNodeImpl.java
+++ b/source/java/org/alfresco/repo/avm/AVMNodeImpl.java
@@ -35,21 +35,11 @@ public abstract class AVMNodeImpl implements AVMNode, Serializable
*/
private int fVersionID;
- /**
- * The Repository that owns this.
- */
- private Repository fRepository;
-
/**
* The basic attributes of this. Owner, creator, mod time, etc.
*/
private BasicAttributes fBasicAttributes;
- /**
- * Whether this node is new (and should therefore not be COWed).
- */
- private boolean fIsNew;
-
/**
* The version number (for concurrency control).
*/
@@ -77,16 +67,14 @@ public abstract class AVMNodeImpl implements AVMNode, Serializable
{
fID = id;
fVersionID = -1;
- fRepository = repo;
fIsRoot = false;
long time = System.currentTimeMillis();
fBasicAttributes = new BasicAttributesImpl("britt",
- "britt",
- "britt",
- time,
- time,
- time);
- fIsNew = true;
+ "britt",
+ "britt",
+ time,
+ time,
+ time);
}
/**
@@ -139,24 +127,6 @@ public abstract class AVMNodeImpl implements AVMNode, Serializable
return AVMContext.fgInstance.fAVMNodeDAO.getMergedFrom(this);
}
- /**
- * Set the owning repository for this.
- * @param repo The owning repository.
- */
- public void setRepository(Repository repo)
- {
- fRepository = repo;
- }
-
- /**
- * Get the repository that owns this.
- * @return The repository.
- */
- public Repository getRepository()
- {
- return fRepository;
- }
-
/**
* Equality based on object ids.
* @param obj The thing to compare against.
@@ -241,22 +211,13 @@ public abstract class AVMNodeImpl implements AVMNode, Serializable
return fBasicAttributes;
}
- /**
- * Set whether this is new.
- * @param isNew Whether this is new.
- */
- public void setIsNew(boolean isNew)
- {
- fIsNew = isNew;
- }
-
/**
* Get whether this is a new node.
* @return Whether this is new.
*/
public boolean getIsNew()
{
- return fIsNew;
+ return AVMContext.fgInstance.fNewInRepositoryDAO.getByNode(this) != null;
}
/**
diff --git a/source/java/org/alfresco/repo/avm/LayeredDirectoryNodeImpl.java b/source/java/org/alfresco/repo/avm/LayeredDirectoryNodeImpl.java
index fbdc741983..3dff9b7071 100644
--- a/source/java/org/alfresco/repo/avm/LayeredDirectoryNodeImpl.java
+++ b/source/java/org/alfresco/repo/avm/LayeredDirectoryNodeImpl.java
@@ -75,6 +75,8 @@ class LayeredDirectoryNodeImpl extends DirectoryNodeImpl implements LayeredDirec
fPrimaryIndirection = true;
fOpacity = false;
AVMContext.fgInstance.fAVMNodeDAO.save(this);
+ AVMContext.fgInstance.fAVMNodeDAO.flush();
+ AVMContext.fgInstance.fNewInRepositoryDAO.save(new NewInRepositoryImpl(repos, this));
}
/**
@@ -105,6 +107,8 @@ class LayeredDirectoryNodeImpl extends DirectoryNodeImpl implements LayeredDirec
this);
AVMContext.fgInstance.fDeletedChildDAO.save(newDel);
}
+ AVMContext.fgInstance.fAVMNodeDAO.flush();
+ AVMContext.fgInstance.fNewInRepositoryDAO.save(new NewInRepositoryImpl(repos, this));
}
/**
@@ -136,6 +140,8 @@ class LayeredDirectoryNodeImpl extends DirectoryNodeImpl implements LayeredDirec
AVMContext.fgInstance.fChildEntryDAO.save(newChild);
}
}
+ AVMContext.fgInstance.fAVMNodeDAO.flush();
+ AVMContext.fgInstance.fNewInRepositoryDAO.save(new NewInRepositoryImpl(repos, this));
}
/**
@@ -157,6 +163,8 @@ class LayeredDirectoryNodeImpl extends DirectoryNodeImpl implements LayeredDirec
fLayerID = -1;
fOpacity = false;
AVMContext.fgInstance.fAVMNodeDAO.save(this);
+ AVMContext.fgInstance.fAVMNodeDAO.flush();
+ AVMContext.fgInstance.fNewInRepositoryDAO.save(new NewInRepositoryImpl(repo, this));
}
/**
diff --git a/source/java/org/alfresco/repo/avm/LayeredFileNodeImpl.java b/source/java/org/alfresco/repo/avm/LayeredFileNodeImpl.java
index 99536d28a7..4949e0265e 100644
--- a/source/java/org/alfresco/repo/avm/LayeredFileNodeImpl.java
+++ b/source/java/org/alfresco/repo/avm/LayeredFileNodeImpl.java
@@ -48,6 +48,8 @@ class LayeredFileNodeImpl extends FileNodeImpl implements LayeredFileNode
super(repo.getSuperRepository().issueID(), repo);
fIndirection = other.getIndirection();
AVMContext.fgInstance.fAVMNodeDAO.save(this);
+ AVMContext.fgInstance.fAVMNodeDAO.flush();
+ AVMContext.fgInstance.fNewInRepositoryDAO.save(new NewInRepositoryImpl(repo, this));
}
/**
@@ -60,6 +62,8 @@ class LayeredFileNodeImpl extends FileNodeImpl implements LayeredFileNode
super(repo.getSuperRepository().issueID(), repo);
fIndirection = indirection;
AVMContext.fgInstance.fAVMNodeDAO.save(this);
+ AVMContext.fgInstance.fAVMNodeDAO.flush();
+ AVMContext.fgInstance.fNewInRepositoryDAO.save(new NewInRepositoryImpl(repo, this));
}
/**
diff --git a/source/java/org/alfresco/repo/avm/NewInRepository.java b/source/java/org/alfresco/repo/avm/NewInRepository.java
new file mode 100644
index 0000000000..1ea039e6c9
--- /dev/null
+++ b/source/java/org/alfresco/repo/avm/NewInRepository.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2006 Alfresco, Inc.
+ *
+ * Licensed under the Mozilla Public License version 1.1
+ * with a permitted attribution clause. You may obtain a
+ * copy of the License at
+ *
+ * http://www.alfresco.org/legal/license.txt
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
+ * either express or implied. See the License for the specific
+ * language governing permissions and limitations under the
+ * License.
+ */
+
+package org.alfresco.repo.avm;
+
+/**
+ * Eensy-weensy interface for tracking nodes that are new in a repository.
+ * @author britt
+ */
+public interface NewInRepository
+{
+ /**
+ * Get the Repository part.
+ * @return The Repository
+ */
+ public Repository getRepository();
+
+ /**
+ * Get the node part.
+ * @return The AVMNode.
+ */
+ public AVMNode getNode();
+}
diff --git a/source/java/org/alfresco/repo/avm/NewInRepositoryDAO.java b/source/java/org/alfresco/repo/avm/NewInRepositoryDAO.java
new file mode 100644
index 0000000000..dcbd343944
--- /dev/null
+++ b/source/java/org/alfresco/repo/avm/NewInRepositoryDAO.java
@@ -0,0 +1,53 @@
+/*
+ * Copyright (C) 2006 Alfresco, Inc.
+ *
+ * Licensed under the Mozilla Public License version 1.1
+ * with a permitted attribution clause. You may obtain a
+ * copy of the License at
+ *
+ * http://www.alfresco.org/legal/license.txt
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
+ * either express or implied. See the License for the specific
+ * language governing permissions and limitations under the
+ * License.
+ */
+
+package org.alfresco.repo.avm;
+
+import java.util.List;
+
+/**
+ * DAO for NewInRepository markers.
+ * @author britt
+ */
+public interface NewInRepositoryDAO
+{
+ /**
+ * Save one.
+ * @param newEntry The item to save.
+ */
+ public void save(NewInRepository newEntry);
+
+ /**
+ * Get one by Node.
+ * @param node The node to lookup with.
+ * @return The Entry or null if not found.
+ */
+ public NewInRepository getByNode(AVMNode node);
+
+ /**
+ * Get all that are in the given repository.
+ * @param repository The Repository.
+ * @return A List of NewInRepositorys.
+ */
+ public List getByRepository(Repository repository);
+
+ /**
+ * Delete the given entry.
+ * @param newEntry The entry to delete.
+ */
+ public void delete(NewInRepository newEntry);
+}
diff --git a/source/java/org/alfresco/repo/avm/NewInRepositoryImpl.java b/source/java/org/alfresco/repo/avm/NewInRepositoryImpl.java
new file mode 100644
index 0000000000..e43cb8b743
--- /dev/null
+++ b/source/java/org/alfresco/repo/avm/NewInRepositoryImpl.java
@@ -0,0 +1,90 @@
+/*
+ * Copyright (C) 2006 Alfresco, Inc.
+ *
+ * Licensed under the Mozilla Public License version 1.1
+ * with a permitted attribution clause. You may obtain a
+ * copy of the License at
+ *
+ * http://www.alfresco.org/legal/license.txt
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
+ * either express or implied. See the License for the specific
+ * language governing permissions and limitations under the
+ * License.
+ */
+
+package org.alfresco.repo.avm;
+
+import java.io.Serializable;
+
+/**
+ * A record of a node that is new and in which repository it resides.
+ * @author britt
+ */
+public class NewInRepositoryImpl implements NewInRepository, Serializable
+{
+ private static final long serialVersionUID = 1905996612150732182L;
+
+ /**
+ * The Repository.
+ */
+ private Repository fRepository;
+
+ /**
+ * The Node.
+ */
+ private AVMNode fNode;
+
+ /**
+ * Default constructor.
+ */
+ public NewInRepositoryImpl()
+ {
+ }
+
+ /**
+ * Make a new one.
+ * @param repository The repository.
+ * @param node The AVMNode that is new.
+ */
+ public NewInRepositoryImpl(Repository repository, AVMNode node)
+ {
+ fRepository = repository;
+ fNode = node;
+ }
+
+ /**
+ * @return the fNode
+ */
+ public AVMNode getNode()
+ {
+ return fNode;
+ }
+
+ /**
+ * @param node the fNode to set
+ */
+ public void setNode(AVMNode node)
+ {
+ fNode = node;
+ }
+
+ /**
+ * @return the fRepository
+ */
+ public Repository getRepository()
+ {
+ return fRepository;
+ }
+
+ /**
+ * @param repository the fRepository to set
+ */
+ public void setRepository(Repository repository)
+ {
+ fRepository = repository;
+ }
+}
+
diff --git a/source/java/org/alfresco/repo/avm/OrphanReaper.java b/source/java/org/alfresco/repo/avm/OrphanReaper.java
index bd20505f3e..8cf5dc0472 100644
--- a/source/java/org/alfresco/repo/avm/OrphanReaper.java
+++ b/source/java/org/alfresco/repo/avm/OrphanReaper.java
@@ -209,6 +209,7 @@ public class OrphanReaper implements Runnable
mergedFrom = mlink.getMfrom();
AVMContext.fgInstance.fMergeLinkDAO.delete(mlink);
}
+ AVMContext.fgInstance.fAVMNodeDAO.flush();
// Get all the nodes that have this node as ancestor.
List links = AVMContext.fgInstance.fHistoryLinkDAO.getByAncestor(node);
for (HistoryLink link : links)
@@ -228,6 +229,11 @@ public class OrphanReaper implements Runnable
link.getMto().setMergedFrom(ancestor);
AVMContext.fgInstance.fMergeLinkDAO.delete(link);
}
+ NewInRepository newInRep = AVMContext.fgInstance.fNewInRepositoryDAO.getByNode(node);
+ if (newInRep != null)
+ {
+ AVMContext.fgInstance.fNewInRepositoryDAO.delete(newInRep);
+ }
// TODO What to do about such Hibernate wackiness: session.flush();
// TODO More of the same: node = AVMNodeUnwrapper.Unwrap(node);
// Extra work for directories.
diff --git a/source/java/org/alfresco/repo/avm/PlainDirectoryNodeImpl.java b/source/java/org/alfresco/repo/avm/PlainDirectoryNodeImpl.java
index 1cfcaad943..1aec6d10b5 100644
--- a/source/java/org/alfresco/repo/avm/PlainDirectoryNodeImpl.java
+++ b/source/java/org/alfresco/repo/avm/PlainDirectoryNodeImpl.java
@@ -38,6 +38,8 @@ class PlainDirectoryNodeImpl extends DirectoryNodeImpl implements PlainDirectory
{
super(repo.getSuperRepository().issueID(), repo);
AVMContext.fgInstance.fAVMNodeDAO.save(this);
+ AVMContext.fgInstance.fAVMNodeDAO.flush();
+ AVMContext.fgInstance.fNewInRepositoryDAO.save(new NewInRepositoryImpl(repo, this));
}
/**
@@ -58,15 +60,15 @@ class PlainDirectoryNodeImpl extends DirectoryNodeImpl implements PlainDirectory
{
super(repos.getSuperRepository().issueID(), repos);
AVMContext.fgInstance.fAVMNodeDAO.save(this);
- // TODO Something about this. sess.flush();
for (ChildEntry child : AVMContext.fgInstance.fChildEntryDAO.getByParent(other))
{
ChildEntry newChild = new ChildEntryImpl(child.getName(),
this,
child.getChild());
AVMContext.fgInstance.fChildEntryDAO.save(newChild);
- // TODO Something about this: sess.flush();
}
+ AVMContext.fgInstance.fAVMNodeDAO.flush();
+ AVMContext.fgInstance.fNewInRepositoryDAO.save(new NewInRepositoryImpl(repos, this));
}
/**
diff --git a/source/java/org/alfresco/repo/avm/PlainFileNodeImpl.java b/source/java/org/alfresco/repo/avm/PlainFileNodeImpl.java
index b2faf0f9cc..5d8cacbb60 100644
--- a/source/java/org/alfresco/repo/avm/PlainFileNodeImpl.java
+++ b/source/java/org/alfresco/repo/avm/PlainFileNodeImpl.java
@@ -50,6 +50,8 @@ class PlainFileNodeImpl extends FileNodeImpl implements PlainFileNode
super(repos.getSuperRepository().issueID(), repos);
fContent = new FileContentImpl(SuperRepository.GetInstance().issueContentID());
AVMContext.fgInstance.fAVMNodeDAO.save(this);
+ AVMContext.fgInstance.fAVMNodeDAO.flush();
+ AVMContext.fgInstance.fNewInRepositoryDAO.save(new NewInRepositoryImpl(repos, this));
}
/**
@@ -62,6 +64,8 @@ class PlainFileNodeImpl extends FileNodeImpl implements PlainFileNode
super(repos.getSuperRepository().issueID(), repos);
fContent = new FileContentImpl(SuperRepository.GetInstance().issueContentID(), content);
AVMContext.fgInstance.fAVMNodeDAO.save(this);
+ AVMContext.fgInstance.fAVMNodeDAO.flush();
+ AVMContext.fgInstance.fNewInRepositoryDAO.save(new NewInRepositoryImpl(repos, this));
}
/**
@@ -76,6 +80,8 @@ class PlainFileNodeImpl extends FileNodeImpl implements PlainFileNode
fContent = other.getContent();
fContent.setRefCount(fContent.getRefCount() + 1);
AVMContext.fgInstance.fAVMNodeDAO.save(this);
+ AVMContext.fgInstance.fAVMNodeDAO.flush();
+ AVMContext.fgInstance.fNewInRepositoryDAO.save(new NewInRepositoryImpl(repos, this));
}
/**
@@ -91,6 +97,8 @@ class PlainFileNodeImpl extends FileNodeImpl implements PlainFileNode
fContent = content;
fContent.setRefCount(fContent.getRefCount() + 1);
AVMContext.fgInstance.fAVMNodeDAO.save(this);
+ AVMContext.fgInstance.fAVMNodeDAO.flush();
+ AVMContext.fgInstance.fNewInRepositoryDAO.save(new NewInRepositoryImpl(repos, this));
}
/**
diff --git a/source/java/org/alfresco/repo/avm/RepositoryImpl.java b/source/java/org/alfresco/repo/avm/RepositoryImpl.java
index 54aff91d26..fc1765e3d9 100644
--- a/source/java/org/alfresco/repo/avm/RepositoryImpl.java
+++ b/source/java/org/alfresco/repo/avm/RepositoryImpl.java
@@ -100,7 +100,6 @@ public class RepositoryImpl implements Repository, Serializable
// Make up the initial version record and save.
long time = System.currentTimeMillis();
fRoot = new PlainDirectoryNodeImpl(this);
- fRoot.setIsNew(false);
fRoot.setIsRoot(true);
AVMContext.fgInstance.fAVMNodeDAO.save(fRoot);
VersionRoot versionRoot = new VersionRootImpl(this,
@@ -135,13 +134,11 @@ public class RepositoryImpl implements Repository, Serializable
throw new AVMExistsException("Already snapshotted.");
}
// Clear out the new nodes.
- AVMNodeDAO anDAO = AVMContext.fgInstance.fAVMNodeDAO;
- for (AVMNode newNode : anDAO.getNewInRepo(this))
+ List newInRep = AVMContext.fgInstance.fNewInRepositoryDAO.getByRepository(this);
+ for (NewInRepository newGuy : newInRep)
{
- newNode.setIsNew(false);
+ AVMContext.fgInstance.fNewInRepositoryDAO.delete(newGuy);
}
- // TODO: This is a grotesque hack to deal with hibernate.
- anDAO.flush();
// Make up a new version record.
VersionRoot versionRoot = new VersionRootImpl(this,
fRoot,
diff --git a/source/java/org/alfresco/repo/avm/SimultaneousLoadTest.java b/source/java/org/alfresco/repo/avm/SimultaneousLoadTest.java
index 845513768d..78be8f35f3 100644
--- a/source/java/org/alfresco/repo/avm/SimultaneousLoadTest.java
+++ b/source/java/org/alfresco/repo/avm/SimultaneousLoadTest.java
@@ -33,7 +33,7 @@ public class SimultaneousLoadTest extends AVMServiceTestBase
try
{
int n = 8;
- int m = 2;
+ int m = 1;
fReaper.setInactiveBaseSleep(60000);
for (int i = 0; i < n; i++)
{
diff --git a/source/java/org/alfresco/repo/avm/SuperRepository.java b/source/java/org/alfresco/repo/avm/SuperRepository.java
index d585327150..73cd7ca716 100644
--- a/source/java/org/alfresco/repo/avm/SuperRepository.java
+++ b/source/java/org/alfresco/repo/avm/SuperRepository.java
@@ -23,7 +23,6 @@ import java.io.OutputStream;
import java.io.RandomAccessFile;
import java.util.ArrayList;
import java.util.Date;
-import java.util.Iterator;
import java.util.List;
import java.util.SortedMap;
@@ -178,8 +177,8 @@ class SuperRepository
@SuppressWarnings("unused")
Repository rep = new RepositoryImpl(this, name);
// Special handling for repository creation.
- // TODO is this needed.
- rep.getRoot().setIsNew(false);
+ NewInRepository newInRep = AVMContext.fgInstance.fNewInRepositoryDAO.getByNode(rep.getRoot());
+ AVMContext.fgInstance.fNewInRepositoryDAO.delete(newInRep);
}
/**
@@ -456,12 +455,10 @@ class SuperRepository
node.setIsRoot(false);
vrDAO.delete(vr);
}
- Iterator iter = AVMContext.fgInstance.fAVMNodeDAO.getByRepository(rep);
- while (iter.hasNext())
+ List newGuys = AVMContext.fgInstance.fNewInRepositoryDAO.getByRepository(rep);
+ for (NewInRepository newGuy : newGuys)
{
- AVMNode node = iter.next();
- node.setRepository(null);
- AVMContext.fgInstance.fAVMNodeDAO.update(node);
+ AVMContext.fgInstance.fNewInRepositoryDAO.delete(newGuy);
}
AVMContext.fgInstance.fRepositoryDAO.delete(rep);
}
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 a6507ba41c..4be0f8b90f 100644
--- a/source/java/org/alfresco/repo/avm/hibernate/AVM.hbm.xml
+++ b/source/java/org/alfresco/repo/avm/hibernate/AVM.hbm.xml
@@ -27,12 +27,8 @@
-
-
@@ -175,6 +171,12 @@
+
+
+
+
+
+
diff --git a/source/java/org/alfresco/repo/avm/hibernate/AVMNodeDAOHibernate.java b/source/java/org/alfresco/repo/avm/hibernate/AVMNodeDAOHibernate.java
index b1809a926a..031cdfe3e5 100644
--- a/source/java/org/alfresco/repo/avm/hibernate/AVMNodeDAOHibernate.java
+++ b/source/java/org/alfresco/repo/avm/hibernate/AVMNodeDAOHibernate.java
@@ -53,26 +53,6 @@ public class AVMNodeDAOHibernate extends HibernateDaoSupport implements
getSession().save(node);
}
- /**
- * Get all the nodes owned by a Repository and make
- * them no longer point at that Repository.
- * @param rep The Repository.
- */
- @SuppressWarnings("unchecked")
- public void unreferenceRepository(Repository rep)
- {
- Session sess = getSession();
- Query query = sess.createQuery("from AVMNodeImpl an where an.repository = :rep");
- query.setEntity("rep", rep);
- Iterator iter = (Iterator)query.iterate();
- while (iter.hasNext())
- {
- AVMNode node = iter.next();
- node.setRepository(null);
- }
- sess.flush();
- }
-
/**
* Delete a single node.
* @param node The node to delete.
@@ -91,20 +71,6 @@ public class AVMNodeDAOHibernate extends HibernateDaoSupport implements
return AVMNodeUnwrapper.Unwrap((AVMNode)getSession().get(AVMNodeImpl.class, id));
}
- /**
- * Get those nodes which are new in the given repository.
- * @param repo The repository.
- * @return A List of AVMNodes.
- */
- @SuppressWarnings("unchecked")
- public List getNewInRepo(Repository repo)
- {
- Query query =
- getSession().getNamedQuery("AVMNode.ByNewInRepo");
- query.setEntity("repo", repo);
- return (List)query.list();
- }
-
/**
* Update a node that has been dirtied.
* @param node The node.
diff --git a/source/java/org/alfresco/repo/avm/hibernate/NewInRepositoryDAOHibernate.java b/source/java/org/alfresco/repo/avm/hibernate/NewInRepositoryDAOHibernate.java
new file mode 100644
index 0000000000..ab398a208a
--- /dev/null
+++ b/source/java/org/alfresco/repo/avm/hibernate/NewInRepositoryDAOHibernate.java
@@ -0,0 +1,78 @@
+/*
+ * Copyright (C) 2006 Alfresco, Inc.
+ *
+ * Licensed under the Mozilla Public License version 1.1
+ * with a permitted attribution clause. You may obtain a
+ * copy of the License at
+ *
+ * http://www.alfresco.org/legal/license.txt
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
+ * either express or implied. See the License for the specific
+ * language governing permissions and limitations under the
+ * License.
+ */
+
+package org.alfresco.repo.avm.hibernate;
+
+import java.util.List;
+
+import org.alfresco.repo.avm.AVMNode;
+import org.alfresco.repo.avm.NewInRepository;
+import org.alfresco.repo.avm.NewInRepositoryDAO;
+import org.alfresco.repo.avm.Repository;
+import org.hibernate.Query;
+import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
+
+/**
+ * Hibernate implementation of NewInRepository DAO.
+ * @author britt
+ */
+public class NewInRepositoryDAOHibernate extends HibernateDaoSupport implements
+ NewInRepositoryDAO
+{
+ /**
+ * Save one.
+ * @param newEntry The item to save.
+ */
+ public void save(NewInRepository newEntry)
+ {
+ getSession().save(newEntry);
+ }
+
+ /**
+ * Get one by Node.
+ * @param node The node to lookup with.
+ * @return The Entry or null if not found.
+ */
+ public NewInRepository getByNode(AVMNode node)
+ {
+ Query query = getSession().createQuery("from NewInRepositoryImpl nie where nie.node = :node");
+ query.setEntity("node", node);
+ return (NewInRepository)query.uniqueResult();
+ }
+
+ /**
+ * Get all that are in the given repository.
+ * @param repository The Repository.
+ * @return A List of NewInRepositorys.
+ */
+ @SuppressWarnings("unchecked")
+ public List getByRepository(Repository repository)
+ {
+ Query query = getSession().createQuery("from NewInRepositoryImpl nie where nie.repository = :rep");
+ query.setEntity("rep", repository);
+ return (List)query.list();
+ }
+
+ /**
+ * Delete the given entry.
+ * @param newEntry The entry to delete.
+ */
+ public void delete(NewInRepository newEntry)
+ {
+ getSession().delete(newEntry);
+ }
+}