mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-07-24 17:32:48 +00:00
Rework of Layered path resolutions that make snapshots of stores containing layers
actually capture the repository context at snapshot creation time. Gave ListEntry and MapEntry proper equals() and hashCode methods and backed out hibernate-cfg.properties changes. Doh! Added cache configuration for AttributeService entities. Did some warning removal in a few places. git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@5576 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -68,6 +68,7 @@
|
||||
<!-- The is the moral equivalent of the value of a symlink. -->
|
||||
<property name="indirection" column="indirection"
|
||||
type="string" length="511" />
|
||||
<property name="indirectionVersion" type="int" column="indirection_version"/>
|
||||
<!-- This marks a layered directory as either knowing itself what
|
||||
it points at (true) or inheriting what it points at from its
|
||||
container (false). -->
|
||||
@@ -99,6 +100,7 @@
|
||||
discriminator-value="layeredfile" proxy="LayeredFileNode" lazy="true">
|
||||
<property name="indirection" type="string" length="511"
|
||||
column="indirection" />
|
||||
<property name="indirectionVersion" type="int" column="indirection_version"/>
|
||||
</subclass>
|
||||
</subclass>
|
||||
</class>
|
||||
@@ -204,6 +206,17 @@
|
||||
<many-to-one name="node" class="AVMNodeImpl" column="node_id" foreign-key="fk_avm_asp_node"/>
|
||||
<property name="name" column="qname" type="QName" length="200"/>
|
||||
</class>
|
||||
<!-- When a snapshot is created we stow away all of the layered
|
||||
nodes that were frozen by the snapshot so that subsequent
|
||||
snapshots can find them and force copies. -->
|
||||
<class name="VersionLayeredNodeEntryImpl" proxy="VersionLayeredNodeEntry"
|
||||
table="avm_version_layered_node_entries">
|
||||
<composite-id>
|
||||
<key-many-to-one name="version" class="VersionRootImpl" column="version_root_id"/>
|
||||
<key-property name="md5Sum" type="string" length="32" column="md5sum"/>
|
||||
</composite-id>
|
||||
<property name="path" type="string" length="512" column="path"/>
|
||||
</class>
|
||||
<query name="ChildEntry.DeleteByParent">
|
||||
<![CDATA[
|
||||
delete ChildEntryImpl ce
|
||||
|
@@ -0,0 +1,72 @@
|
||||
/*
|
||||
* Copyright (C) 2005-2007 Alfresco Software Limited.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version 2
|
||||
* of the License, or (at your option) any later version.
|
||||
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
* As a special exception to the terms and conditions of version 2.0 of
|
||||
* the GPL, you may redistribute this Program in connection with Free/Libre
|
||||
* and Open Source Software ("FLOSS") applications as described in Alfresco's
|
||||
* FLOSS exception. You should have recieved a copy of the text describing
|
||||
* the FLOSS exception, and it is also available here:
|
||||
* http://www.alfresco.com/legal/licensing
|
||||
*/
|
||||
|
||||
package org.alfresco.repo.avm.hibernate;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.alfresco.repo.avm.VersionLayeredNodeEntry;
|
||||
import org.alfresco.repo.avm.VersionLayeredNodeEntryDAO;
|
||||
import org.alfresco.repo.avm.VersionRoot;
|
||||
import org.hibernate.Query;
|
||||
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
|
||||
|
||||
/**
|
||||
* Hibernate implementation of DAO for VersionLayeredNodeEntries.
|
||||
* @author britt
|
||||
*/
|
||||
public class VersionLayeredNodeEntryDAOHibernate extends HibernateDaoSupport
|
||||
implements VersionLayeredNodeEntryDAO
|
||||
{
|
||||
/* (non-Javadoc)
|
||||
* @see org.alfresco.repo.avm.VersionLayeredNodeEntryDAO#delete(org.alfresco.repo.avm.VersionRoot)
|
||||
*/
|
||||
public void delete(VersionRoot version)
|
||||
{
|
||||
Query query = getSession().createQuery("delete from VersionLayeredNodeEntryImpl vln where vln.version = :version");
|
||||
query.setEntity("version", version);
|
||||
query.executeUpdate();
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.alfresco.repo.avm.VersionLayeredNodeEntryDAO#get(org.alfresco.repo.avm.VersionRoot)
|
||||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
public List<VersionLayeredNodeEntry> get(VersionRoot version)
|
||||
{
|
||||
Query query = getSession().createQuery("from VersionLayeredNodeEntryImpl vln " +
|
||||
"where vln.version = :version");
|
||||
query.setEntity("version", version);
|
||||
return (List<VersionLayeredNodeEntry>)query.list();
|
||||
}
|
||||
|
||||
/* (non-Javadoc)
|
||||
* @see org.alfresco.repo.avm.VersionLayeredNodeEntryDAO#save(org.alfresco.repo.avm.VersionLayeredNodeEntry)
|
||||
*/
|
||||
public void save(VersionLayeredNodeEntry entry)
|
||||
{
|
||||
getSession().save(entry);
|
||||
}
|
||||
}
|
@@ -157,8 +157,9 @@ class VersionRootDAOHibernate extends HibernateDaoSupport implements
|
||||
public VersionRoot getMaxVersion(AVMStore rep)
|
||||
{
|
||||
Query query = getSession().createQuery("from VersionRootImpl vr " +
|
||||
"where vr.versionID = " +
|
||||
"(select max(v.versionID) from VersionRootImpl v)");
|
||||
"where vr.avmStore = :store and vr.versionID = " +
|
||||
"(select max(v.versionID) from VersionRootImpl v where v.avmStore = :store)");
|
||||
query.setEntity("store", rep);
|
||||
return (VersionRoot)query.uniqueResult();
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user