Added new AVM node type DeletedNode (aka, ghost, tombstone), a marker node for a

node that has been deleted in a version. This makes tree comparisons easier by
resolving the cases in which one wants to know whether a deletions is more or less 
recent than another version of a node.  Along the way got rid of DeletedChild and 
friends including a table in the schema, since DeletedNode takes on all the work
that it performed.
Deleted two illegally named files in Virgin content.


git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/BRANCHES/WCM-DEV2/root@3748 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Britt Park
2006-09-10 17:20:35 +00:00
parent 11772e5796
commit 8a95b09b98
21 changed files with 382 additions and 483 deletions

View File

@@ -45,6 +45,12 @@
<!-- ACL -->
<many-to-one name="acl" column="acl_id"
class="org.alfresco.repo.domain.hibernate.DbAccessControlListImpl"/>
<!-- Deleted nodes -->
<subclass name="DeletedNodeImpl"
proxy="DeletedNode"
lazy="true"
discriminator-value="deletednode">
</subclass>
<!-- Directories, two flavors. -->
<subclass name="DirectoryNodeImpl"
proxy="DirectoryNode"
@@ -141,15 +147,6 @@
<many-to-one name="child" column="child_id" class="AVMNodeImpl"
not-null="true"/>
</class>
<class table="avm_deleted_children" name="DeletedChildImpl" proxy="DeletedChild">
<cache usage="read-write"/>
<id name="id" column="id" type="long">
<generator class="native"/>
</id>
<property name="name" column="name" type="string" index="deleted_child_name_index"/>
<many-to-one name="parent" class="LayeredDirectoryNodeImpl"
column="parent_id"/>
</class>
<class name="HistoryLinkImpl" proxy="HistoryLink" table="avm_history_links">
<composite-id>
<key-many-to-one name="ancestor" class="AVMNodeImpl" column="ancestor"/>
@@ -280,26 +277,6 @@
v.avmStore = :store and v.versionID = :version
]]>
</query>
<query name="DeletedChild.ByNameParent">
<![CDATA[
from DeletedChildImpl dc
where
dc.parent = :parent and dc.name = :name
]]>
</query>
<query name="DeletedChild.ByParent">
<![CDATA[
from DeletedChildImpl dc
where
dc.parent = :parent
]]>
</query>
<query name="DeletedChild.DeleteByParent">
<![CDATA[
delete DeletedChildImpl dc
where dc.parent = :parent
]]>
</query>
<query name="FindOrphans">
<![CDATA[
from AVMNodeImpl an

View File

@@ -1,103 +0,0 @@
/*
* 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.DeletedChild;
import org.alfresco.repo.avm.DeletedChildDAO;
import org.alfresco.repo.avm.LayeredDirectoryNode;
import org.hibernate.Query;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
/**
* Hibernate implementation of DAO for DeletedChildren.
* @author britt
*/
class DeletedChildDAOHibernate extends HibernateDaoSupport implements
DeletedChildDAO
{
/**
* Do nothing constructor.
*/
public DeletedChildDAOHibernate()
{
super();
}
/**
* Save an unsaved DeletedChild.
* @param child The DeletedChild to be saved.
*/
public void save(DeletedChild child)
{
getSession().save(child);
}
/**
* Delete one.
* @param child The one to delete.
*/
public void delete(DeletedChild child)
{
getSession().delete(child);
}
/**
* Delete all belonging to the given parent.
* @param parent The parent.
*/
public void deleteByParent(AVMNode parent)
{
Query delete = getSession().getNamedQuery("DeletedChild.DeleteByParent");
delete.setEntity("parent", parent);
delete.executeUpdate();
}
/**
* Get by name and parent.
* @param name The name of the deleted entry.
* @param parent The parent.
* @return A DeletedChild or null if not found.
*/
public DeletedChild getByNameParent(String name, LayeredDirectoryNode parent)
{
Query query = getSession().getNamedQuery("DeletedChild.ByNameParent");
query.setString("name", name);
query.setEntity("parent", parent);
query.setCacheable(true);
query.setCacheRegion("DeletedChild.ByNameParent");
return (DeletedChild)query.uniqueResult();
}
/**
* Get all the deleted children of a given parent.
* @param parent The parent.
* @return A List of DeletedChildren.
*/
@SuppressWarnings("unchecked")
public List<DeletedChild> getByParent(LayeredDirectoryNode parent)
{
Query query = getSession().getNamedQuery("DeletedChild.ByParent");
query.setEntity("parent", parent);
query.setCacheable(true);
query.setCacheRegion("DeletedChild.ByParent");
return (List<DeletedChild>)query.list();
}
}