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:
Britt Park
2007-04-30 16:37:36 +00:00
parent fe970f03fe
commit d0d7e61fcd
46 changed files with 1008 additions and 70 deletions

View File

@@ -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

View File

@@ -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);
}
}

View File

@@ -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();
}