mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-07-24 17:32:48 +00:00
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:
@@ -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
|
||||
|
@@ -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();
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user