MOB-629 - remove AVM issuer id

git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@13676 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Jan Vonka
2009-03-18 17:38:14 +00:00
parent a4e4ee8ef3
commit ef51318dbe
25 changed files with 4356 additions and 4869 deletions

View File

@@ -1,380 +1,376 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
<hibernate-mapping package="org.alfresco.repo.avm">
<typedef class="org.alfresco.repo.domain.hibernate.QNameUserType" name="QName" />
<!-- AVMNodeBean is the abstract base for filesystem like objects.
We're using the one table per class hierarchy strategy to implement
polymorphism. -->
<class table="avm_nodes" abstract="true"
name="AVMNodeImpl"
proxy="AVMNode"
optimistic-lock="version"
lazy="false">
<cache usage="read-write"/>
<!-- The id is set programmatically using an Issuer. See below. -->
<id name="id"
column="id"
type="long"/>
<!-- I suppose this would be more efficient to encode type by an int.
We'll see if using a string makes a difference. -->
<discriminator column="class_type"
type="string"
length="20"/>
<!-- We're using hibernate's own versioning scheme for concurrency control.
I don't know how well that will play with a full Spring-JTA stack. -->
<version column="vers"
name="vers"
type="long"/>
<!-- This should really be not null, but I haven't figured out
the right way to build the relation so that nullability constraints
won't cause violations in the db during saves. -->
<property name="versionID" type="int" column="version_id"
not-null="true"/>
<property name="guid" type="string" length="36" column="guid"/>
<component name="basicAttributes" class="BasicAttributesImpl">
<property name="creator" type="string" not-null="true"/>
<property name="owner" type="string" not-null="true"/>
<property name="lastModifier" type="string" not-null="true"/>
<property name="createDate" type="long" not-null="true"/>
<property name="modDate" type="long" not-null="true"/>
<property name="accessDate" type="long" not-null="true"/>
</component>
<property name="isRoot" column="is_root" type="boolean"/>
<many-to-one name="storeNew" class="AVMStoreImpl" column="store_new_id" foreign-key="fk_avm_n_store"/>
<!-- ACL -->
<many-to-one name="acl" column="acl_id" foreign-key="fk_avm_n_acl" cascade="none"
class="org.alfresco.repo.domain.hibernate.DbAccessControlListImpl"/>
<set name="aspects" fetch="join" lazy="false" table="avm_aspects" cascade="all" optimistic-lock="true">
<cache usage="read-write"/>
<key column="node_id" not-null="true" foreign-key="fk_avm_nasp_n"/>
<element column="qname_id" type="long" not-null="true"/> <!-- fk_avm_nasp_qn -->
</set>
<map name="properties" fetch="join" lazy="false" table="avm_node_properties" cascade="all" optimistic-lock="true">
<cache usage="read-write"/>
<key column="node_id" not-null="true" foreign-key="fk_avm_nprop_n"/>
<map-key column="qname_id" type="long" /> <!-- fk_avm_nprop_qn -->
<composite-element class="org.alfresco.repo.domain.PropertyValue">
<property name="actualType" column="actual_type_n" type="integer" not-null="true" />
<property name="persistedType" column="persisted_type_n" type="integer" not-null="true" />
<property name="multiValued" column="multi_valued" type="boolean" not-null="true" />
<property name="booleanValue" column="boolean_value" type="boolean" />
<property name="longValue" column="long_value" type="long" />
<property name="floatValue" column="float_value" type="float" />
<property name="doubleValue" column="double_value" type="double" />
<property name="stringValue" column="string_value" type="string" length="1024"/>
<property name="serializableValue" column="serializable_value" type="serializable" length="16384"/>
</composite-element>
</map>
<!-- Deleted nodes -->
<subclass name="DeletedNodeImpl"
proxy="DeletedNode"
lazy="false"
discriminator-value="deletednode">
<property name="deletedType" type="int"/>
</subclass>
<!-- Directories, two flavors. -->
<subclass name="DirectoryNodeImpl"
proxy="DirectoryNode"
abstract="true"
lazy="false">
<!-- A Layered Directory is our smart symlink thingy. -->
<subclass name="LayeredDirectoryNodeImpl"
proxy="LayeredDirectoryNode"
discriminator-value="layereddirectory" lazy="false">
<!-- The layer id is an implementation trick to disambiguate
exactly what layer is being refered to in various circumstances. -->
<property name="layerID" column="layer_id" type="long"/>
<!-- 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).
Ideally we would have the column 'indirection' in the index but it is too long.
-->
<property name="primaryIndirection"
column="primary_indirection" type="boolean" index="idx_avm_n_pi" />
<property name="opacity" column="opacity" type="boolean"/>
<!-- Map of names to DirectoryEntries. -->
</subclass>
<!-- Just plain directories. -->
<subclass name="PlainDirectoryNodeImpl"
discriminator-value="plaindirectory" proxy="PlainDirectoryNode" lazy="false">
</subclass>
</subclass>
<!-- There are two kinds of files, plain and symlinky. -->
<subclass name="FileNodeImpl"
proxy="FileNode"
abstract="true"
lazy="false">
<!-- Plain files just have a reference to a Content object. -->
<subclass discriminator-value="plainfile"
name="PlainFileNodeImpl" proxy="PlainFileNode" lazy="false">
<property name="contentURL" column="content_url" type="string" length="128"/>
<property name="mimeType" column="mime_type" type="string" length="64"/>
<property name="encoding" column="encoding" type="string" length="16"/>
<property name="length" column="length" type="long"/>
</subclass>
<!-- Layered files are almost exactly copy on write symlinks. -->
<subclass name="LayeredFileNodeImpl"
discriminator-value="layeredfile" proxy="LayeredFileNode" lazy="false">
<property name="indirection" type="string" length="511"
column="indirection" />
<property name="indirectionVersion" type="int" column="indirection_version"/>
</subclass>
</subclass>
</class>
<!-- A store is the what we used to call a virtual repository. -->
<class table="avm_stores" name="AVMStoreImpl"
proxy="AVMStore" optimistic-lock="version">
<cache usage="read-write"/>
<id name="id" column="id" type="long">
<generator class="native"/>
</id>
<version name="vers" column="vers" type="long"/>
<property name="name" column="name" type="string" unique="true"/>
<property type="int" name="nextVersionID"
column="next_version_id" not-null="true"/>
<!-- Every AVMStore has a root directory that is the current root directory. -->
<many-to-one name="root" class="DirectoryNodeImpl"
column="current_root_id" cascade="save-update" foreign-key="fk_avm_s_root">
</many-to-one>
<!-- ACL -->
<many-to-one name="storeAcl" column="acl_id" foreign-key="fk_avm_s_acl" cascade="none"
class="org.alfresco.repo.domain.hibernate.DbAccessControlListImpl"/>
</class>
<class name="AVMStorePropertyImpl" proxy="AVMStoreProperty" table="avm_store_properties">
<id name="id" column="id" type="long">
<generator class="native"/>
</id>
<many-to-one name="store" class="AVMStoreImpl" column="avm_store_id" foreign-key="fk_avm_sprop_store"/>
<property name="qnameId" column="qname_id" type="long" not-null="true" /> <!-- fk_avm_sprop_qname -->
<component class="org.alfresco.repo.domain.PropertyValue" name="value">
<property name="actualType" column="actual_type_n" type="integer" not-null="true" />
<property name="persistedType" column="persisted_type_n" type="integer" not-null="true" />
<property name="multiValued" column="multi_valued" type="boolean" not-null="true" />
<property name="booleanValue" column="boolean_value" type="boolean" />
<property name="longValue" column="long_value" type="long" />
<property name="floatValue" column="float_value" type="float" />
<property name="doubleValue" column="double_value" type="double" />
<property name="stringValue" column="string_value" type="string" length="1024"/>
<property name="serializableValue" column="serializable_value" type="serializable" length="16384"/>
</component>
</class>
<class name="VersionRootImpl" proxy="VersionRoot" table="avm_version_roots">
<cache usage="read-write"/>
<id name="id" column="id" type="long">
<generator class="native"></generator>
</id>
<natural-id>
<property name="versionID" type="int" not-null="true"
column="version_id" index="idx_avm_vr_version">
</property>
<many-to-one name="avmStore" column="avm_store_id"
class="AVMStoreImpl" not-null="true" foreign-key="fk_avm_vr_store">
</many-to-one>
</natural-id>
<property name="createDate" type="long" not-null="true" column="create_date">
</property>
<property name="creator" type="string" column="creator"
not-null="true">
</property>
<many-to-one name="root" class="DirectoryNodeImpl"
column="root_id" not-null="true" foreign-key="fk_avm_vr_root">
</many-to-one>
<property name="tag" type="string" length="255" column="tag"/>
<property name="description" type="string" length="4000" column="description"/>
</class>
<class name="ChildEntryImpl" proxy="ChildEntry" table="avm_child_entries">
<cache usage="read-write"/>
<composite-id name="key" class="ChildKey" >
<key-many-to-one name="parent" column="parent_id" class="DirectoryNodeImpl" foreign-key="fk_avm_ce_parent"/>
<key-property name="name" column="name" type="string" length="160"/>
</composite-id>
<many-to-one name="child" column="child_id" class="AVMNodeImpl" not-null="true" foreign-key="fk_avm_ce_child"/>
</class>
<class name="HistoryLinkImpl" proxy="HistoryLink" table="avm_history_links">
<composite-id>
<key-many-to-one name="ancestor" class="AVMNodeImpl" column="ancestor" foreign-key="fk_avm_hl_ancestor"/>
<key-many-to-one name="descendent" class="AVMNodeImpl" column="descendent" foreign-key="fk_avm_hl_desc"/>
</composite-id>
</class>
<class name="MergeLinkImpl" proxy="MergeLink" table="avm_merge_links">
<composite-id>
<key-many-to-one name="mfrom" class="AVMNodeImpl" column="mfrom" foreign-key="fk_avm_ml_from"/>
<key-many-to-one name="mto" class="AVMNodeImpl" column="mto" foreign-key="fk_avm_ml_to"/>
</composite-id>
</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_entry">
<composite-id>
<key-many-to-one name="version" class="VersionRootImpl" column="version_root_id" foreign-key="fk_avm_vlne_vr"/>
<key-property name="md5Sum" type="string" length="32" column="md5sum"/>
</composite-id>
<property name="path" type="string" length="512" column="path"/>
</class>
<class name="IssuerIDImpl" proxy="IssuerID" table="avm_issuer_ids" optimistic-lock="version" lazy="false">
<id name="issuer" type="string" length="32" column="issuer"/>
<version name="version" column="version" type="long"/>
<property name="next" type="long" column="next_id" not-null="true"/>
</class>
<query name="ChildEntry.DeleteByParent">
<![CDATA[
delete ChildEntryImpl ce
where ce.key.parent = :parent
]]>
</query>
<query name="AVMNode.GetNewInStore">
<![CDATA[
from AVMNodeImpl an
where an.storeNew = :store
]]>
</query>
<query name="AVMNode.GetNewInStoreID">
<![CDATA[
select an.id
from AVMNodeImpl an
where an.storeNew = :store
]]>
</query>
<query name="AVMNode.ClearNewInStore">
<![CDATA[
update versioned AVMNodeImpl an
set an.storeNew = null
where an.storeNew = :store
]]>
</query>
<query name="AVMNode.GetNewLayeredDirectory">
<![CDATA[
select an.id
from LayeredDirectoryNodeImpl an
where an.storeNew = :store
]]>
</query>
<query name="AVMNode.GetNewLayeredFile">
<![CDATA[
select an.id
from LayeredFileNodeImpl an
where an.storeNew = :store
]]>
</query>
<query name="AVMNode.GetDescendents">
<![CDATA[
select hl.descendent
from HistoryLinkImpl hl
where hl.ancestor = :node
]]>
</query>
<query name="HistoryLink.ByAncestor">
<![CDATA[
from HistoryLinkImpl hl
where hl.ancestor = :node
]]>
</query>
<query name="AVMNode.GetMergedTo">
<![CDATA[
select ml.mto
from MergeLinkImpl ml
where ml.mfrom = :merged
]]>
</query>
<query name="MergeLink.ByFrom">
<![CDATA[
from MergeLinkImpl ml
where ml.mfrom = :merged
]]>
</query>
<query name="VersionRoot.GetVersionRoot">
<![CDATA[
select v.root
from VersionRootImpl v
where
v.avmStore = :store and v.versionID = :version
]]>
</query>
<query name="VersionRoot.VersionByID">
<![CDATA[
from VersionRootImpl v
where
v.avmStore = :store and v.versionID = :version
]]>
</query>
<query name="FindOrphans">
<![CDATA[
from AVMNodeImpl an
where
an not in ( select ce.child
from ChildEntryImpl ce )
and an.isRoot = false
]]>
</query>
<query name="FindOrphans2">
<![CDATA[
select an
from ChildEntryImpl ce
right outer join ce.child an
where ce.child is null and an.isRoot = false
]]>
</query>
<query name="PlainFileNode.GetContentUrls">
<![CDATA[
select
pfn.contentURL
from
PlainFileNodeImpl pfn
where pfn.contentURL is not null
]]>
</query>
<sql-query name="avm.GetStorePropertiesByKeyPattern">
<return alias="asp" class="AVMStorePropertyImpl"/>
SELECT
{asp.*}
FROM
avm_store_properties asp
JOIN alf_qname qn ON (qn.id = asp.qname_id)
JOIN alf_namespace ns ON (ns.id = qn.ns_id)
WHERE
ns.uri LIKE :uri AND
qn.local_name LIKE :localName
</sql-query>
<sql-query name="avm.GetStorePropertiesByStoreAndKeyPattern">
<return alias="asp" class="AVMStorePropertyImpl"/>
SELECT
{asp.*}
FROM
avm_store_properties asp
JOIN alf_qname qn ON (qn.id = asp.qname_id)
JOIN alf_namespace ns ON (ns.id = qn.ns_id)
WHERE
asp.avm_store_id = :storeId AND
ns.uri LIKE :uri AND
qn.local_name LIKE :localName
</sql-query>
<sql-query name="avm.DeleteStorePropertiesByType">
DELETE
FROM
avm_store_properties
WHERE
avm_store_id = :storeId AND
qname_id = :qnameId
</sql-query>
<sql-query name="avm.DeleteStoreProperties">
DELETE
FROM
avm_store_properties
WHERE
avm_store_id = :storeId
</sql-query>
</hibernate-mapping>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
<hibernate-mapping package="org.alfresco.repo.avm">
<typedef class="org.alfresco.repo.domain.hibernate.QNameUserType" name="QName" />
<!-- AVMNodeBean is the abstract base for filesystem like objects.
We're using the one table per class hierarchy strategy to implement
polymorphism. -->
<class table="avm_nodes" abstract="true"
name="AVMNodeImpl"
proxy="AVMNode"
optimistic-lock="version"
lazy="false">
<cache usage="read-write"/>
<id name="id" column="id" type="long">
<generator class="native"/>
</id>
<!-- I suppose this would be more efficient to encode type by an int.
We'll see if using a string makes a difference. -->
<discriminator column="class_type"
type="string"
length="20"/>
<!-- We're using hibernate's own versioning scheme for concurrency control.
I don't know how well that will play with a full Spring-JTA stack. -->
<version column="vers"
name="vers"
type="long"/>
<!-- This should really be not null, but I haven't figured out
the right way to build the relation so that nullability constraints
won't cause violations in the db during saves. -->
<property name="versionID" type="int" column="version_id"
not-null="true"/>
<property name="guid" type="string" length="36" column="guid"/>
<component name="basicAttributes" class="BasicAttributesImpl">
<property name="creator" type="string" not-null="true"/>
<property name="owner" type="string" not-null="true"/>
<property name="lastModifier" type="string" not-null="true"/>
<property name="createDate" type="long" not-null="true"/>
<property name="modDate" type="long" not-null="true"/>
<property name="accessDate" type="long" not-null="true"/>
</component>
<property name="isRoot" column="is_root" type="boolean"/>
<many-to-one name="storeNew" class="AVMStoreImpl" column="store_new_id" foreign-key="fk_avm_n_store"/>
<!-- ACL -->
<many-to-one name="acl" column="acl_id" foreign-key="fk_avm_n_acl" cascade="none"
class="org.alfresco.repo.domain.hibernate.DbAccessControlListImpl"/>
<set name="aspects" fetch="join" lazy="false" table="avm_aspects" cascade="all" optimistic-lock="true">
<cache usage="read-write"/>
<key column="node_id" not-null="true" foreign-key="fk_avm_nasp_n"/>
<element column="qname_id" type="long" not-null="true"/> <!-- fk_avm_nasp_qn -->
</set>
<map name="properties" fetch="join" lazy="false" table="avm_node_properties" cascade="all" optimistic-lock="true">
<cache usage="read-write"/>
<key column="node_id" not-null="true" foreign-key="fk_avm_nprop_n"/>
<map-key column="qname_id" type="long" /> <!-- fk_avm_nprop_qn -->
<composite-element class="org.alfresco.repo.domain.PropertyValue">
<property name="actualType" column="actual_type_n" type="integer" not-null="true" />
<property name="persistedType" column="persisted_type_n" type="integer" not-null="true" />
<property name="multiValued" column="multi_valued" type="boolean" not-null="true" />
<property name="booleanValue" column="boolean_value" type="boolean" />
<property name="longValue" column="long_value" type="long" />
<property name="floatValue" column="float_value" type="float" />
<property name="doubleValue" column="double_value" type="double" />
<property name="stringValue" column="string_value" type="string" length="1024"/>
<property name="serializableValue" column="serializable_value" type="serializable" length="16384"/>
</composite-element>
</map>
<!-- Deleted nodes -->
<subclass name="DeletedNodeImpl"
proxy="DeletedNode"
lazy="false"
discriminator-value="deletednode">
<property name="deletedType" type="int"/>
</subclass>
<!-- Directories, two flavors. -->
<subclass name="DirectoryNodeImpl"
proxy="DirectoryNode"
abstract="true"
lazy="false">
<!-- A Layered Directory is our smart symlink thingy. -->
<subclass name="LayeredDirectoryNodeImpl"
proxy="LayeredDirectoryNode"
discriminator-value="layereddirectory" lazy="false">
<!-- The layer id is an implementation trick to disambiguate
exactly what layer is being refered to in various circumstances. -->
<property name="layerID" column="layer_id" type="long"/>
<!-- 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).
Ideally we would have the column 'indirection' in the index but it is too long.
-->
<property name="primaryIndirection"
column="primary_indirection" type="boolean" index="idx_avm_n_pi" />
<property name="opacity" column="opacity" type="boolean"/>
<!-- Map of names to DirectoryEntries. -->
</subclass>
<!-- Just plain directories. -->
<subclass name="PlainDirectoryNodeImpl"
discriminator-value="plaindirectory" proxy="PlainDirectoryNode" lazy="false">
</subclass>
</subclass>
<!-- There are two kinds of files, plain and symlinky. -->
<subclass name="FileNodeImpl"
proxy="FileNode"
abstract="true"
lazy="false">
<!-- Plain files just have a reference to a Content object. -->
<subclass discriminator-value="plainfile"
name="PlainFileNodeImpl" proxy="PlainFileNode" lazy="false">
<property name="contentURL" column="content_url" type="string" length="128"/>
<property name="mimeType" column="mime_type" type="string" length="64"/>
<property name="encoding" column="encoding" type="string" length="16"/>
<property name="length" column="length" type="long"/>
</subclass>
<!-- Layered files are almost exactly copy on write symlinks. -->
<subclass name="LayeredFileNodeImpl"
discriminator-value="layeredfile" proxy="LayeredFileNode" lazy="false">
<property name="indirection" type="string" length="511"
column="indirection" />
<property name="indirectionVersion" type="int" column="indirection_version"/>
</subclass>
</subclass>
</class>
<!-- A store is the what we used to call a virtual repository. -->
<class table="avm_stores" name="AVMStoreImpl"
proxy="AVMStore" optimistic-lock="version">
<cache usage="read-write"/>
<id name="id" column="id" type="long">
<generator class="native"/>
</id>
<version name="vers" column="vers" type="long"/>
<property name="name" column="name" type="string" unique="true"/>
<property type="int" name="nextVersionID"
column="next_version_id" not-null="true"/>
<!-- Every AVMStore has a root directory that is the current root directory. -->
<many-to-one name="root" class="DirectoryNodeImpl"
column="current_root_id" cascade="save-update" foreign-key="fk_avm_s_root">
</many-to-one>
<!-- ACL -->
<many-to-one name="storeAcl" column="acl_id" foreign-key="fk_avm_s_acl" cascade="none"
class="org.alfresco.repo.domain.hibernate.DbAccessControlListImpl"/>
</class>
<class name="AVMStorePropertyImpl" proxy="AVMStoreProperty" table="avm_store_properties">
<id name="id" column="id" type="long">
<generator class="native"/>
</id>
<many-to-one name="store" class="AVMStoreImpl" column="avm_store_id" foreign-key="fk_avm_sprop_store"/>
<property name="qnameId" column="qname_id" type="long" not-null="true" /> <!-- fk_avm_sprop_qname -->
<component class="org.alfresco.repo.domain.PropertyValue" name="value">
<property name="actualType" column="actual_type_n" type="integer" not-null="true" />
<property name="persistedType" column="persisted_type_n" type="integer" not-null="true" />
<property name="multiValued" column="multi_valued" type="boolean" not-null="true" />
<property name="booleanValue" column="boolean_value" type="boolean" />
<property name="longValue" column="long_value" type="long" />
<property name="floatValue" column="float_value" type="float" />
<property name="doubleValue" column="double_value" type="double" />
<property name="stringValue" column="string_value" type="string" length="1024"/>
<property name="serializableValue" column="serializable_value" type="serializable" length="16384"/>
</component>
</class>
<class name="VersionRootImpl" proxy="VersionRoot" table="avm_version_roots">
<cache usage="read-write"/>
<id name="id" column="id" type="long">
<generator class="native"></generator>
</id>
<natural-id>
<property name="versionID" type="int" not-null="true"
column="version_id" index="idx_avm_vr_version">
</property>
<many-to-one name="avmStore" column="avm_store_id"
class="AVMStoreImpl" not-null="true" foreign-key="fk_avm_vr_store">
</many-to-one>
</natural-id>
<property name="createDate" type="long" not-null="true" column="create_date">
</property>
<property name="creator" type="string" column="creator"
not-null="true">
</property>
<many-to-one name="root" class="DirectoryNodeImpl"
column="root_id" not-null="true" foreign-key="fk_avm_vr_root">
</many-to-one>
<property name="tag" type="string" length="255" column="tag"/>
<property name="description" type="string" length="4000" column="description"/>
</class>
<class name="ChildEntryImpl" proxy="ChildEntry" table="avm_child_entries">
<cache usage="read-write"/>
<composite-id name="key" class="ChildKey" >
<key-many-to-one name="parent" column="parent_id" class="DirectoryNodeImpl" foreign-key="fk_avm_ce_parent"/>
<key-property name="name" column="name" type="string" length="160"/>
</composite-id>
<many-to-one name="child" column="child_id" class="AVMNodeImpl" not-null="true" foreign-key="fk_avm_ce_child"/>
</class>
<class name="HistoryLinkImpl" proxy="HistoryLink" table="avm_history_links">
<composite-id>
<key-many-to-one name="ancestor" class="AVMNodeImpl" column="ancestor" foreign-key="fk_avm_hl_ancestor"/>
<key-many-to-one name="descendent" class="AVMNodeImpl" column="descendent" foreign-key="fk_avm_hl_desc"/>
</composite-id>
</class>
<class name="MergeLinkImpl" proxy="MergeLink" table="avm_merge_links">
<composite-id>
<key-many-to-one name="mfrom" class="AVMNodeImpl" column="mfrom" foreign-key="fk_avm_ml_from"/>
<key-many-to-one name="mto" class="AVMNodeImpl" column="mto" foreign-key="fk_avm_ml_to"/>
</composite-id>
</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_entry">
<composite-id>
<key-many-to-one name="version" class="VersionRootImpl" column="version_root_id" foreign-key="fk_avm_vlne_vr"/>
<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
where ce.key.parent = :parent
]]>
</query>
<query name="AVMNode.GetNewInStore">
<![CDATA[
from AVMNodeImpl an
where an.storeNew = :store
]]>
</query>
<query name="AVMNode.GetNewInStoreID">
<![CDATA[
select an.id
from AVMNodeImpl an
where an.storeNew = :store
]]>
</query>
<query name="AVMNode.ClearNewInStore">
<![CDATA[
update versioned AVMNodeImpl an
set an.storeNew = null
where an.storeNew = :store
]]>
</query>
<query name="AVMNode.GetNewLayeredDirectory">
<![CDATA[
select an.id
from LayeredDirectoryNodeImpl an
where an.storeNew = :store
]]>
</query>
<query name="AVMNode.GetNewLayeredFile">
<![CDATA[
select an.id
from LayeredFileNodeImpl an
where an.storeNew = :store
]]>
</query>
<query name="AVMNode.GetDescendents">
<![CDATA[
select hl.descendent
from HistoryLinkImpl hl
where hl.ancestor = :node
]]>
</query>
<query name="HistoryLink.ByAncestor">
<![CDATA[
from HistoryLinkImpl hl
where hl.ancestor = :node
]]>
</query>
<query name="AVMNode.GetMergedTo">
<![CDATA[
select ml.mto
from MergeLinkImpl ml
where ml.mfrom = :merged
]]>
</query>
<query name="MergeLink.ByFrom">
<![CDATA[
from MergeLinkImpl ml
where ml.mfrom = :merged
]]>
</query>
<query name="VersionRoot.GetVersionRoot">
<![CDATA[
select v.root
from VersionRootImpl v
where
v.avmStore = :store and v.versionID = :version
]]>
</query>
<query name="VersionRoot.VersionByID">
<![CDATA[
from VersionRootImpl v
where
v.avmStore = :store and v.versionID = :version
]]>
</query>
<query name="FindOrphans">
<![CDATA[
from AVMNodeImpl an
where
an not in ( select ce.child
from ChildEntryImpl ce )
and an.isRoot = false
]]>
</query>
<query name="FindOrphans2">
<![CDATA[
select an
from ChildEntryImpl ce
right outer join ce.child an
where ce.child is null and an.isRoot = false
]]>
</query>
<query name="PlainFileNode.GetContentUrls">
<![CDATA[
select
pfn.contentURL
from
PlainFileNodeImpl pfn
where pfn.contentURL is not null
]]>
</query>
<sql-query name="avm.GetStorePropertiesByKeyPattern">
<return alias="asp" class="AVMStorePropertyImpl"/>
SELECT
{asp.*}
FROM
avm_store_properties asp
JOIN alf_qname qn ON (qn.id = asp.qname_id)
JOIN alf_namespace ns ON (ns.id = qn.ns_id)
WHERE
ns.uri LIKE :uri AND
qn.local_name LIKE :localName
</sql-query>
<sql-query name="avm.GetStorePropertiesByStoreAndKeyPattern">
<return alias="asp" class="AVMStorePropertyImpl"/>
SELECT
{asp.*}
FROM
avm_store_properties asp
JOIN alf_qname qn ON (qn.id = asp.qname_id)
JOIN alf_namespace ns ON (ns.id = qn.ns_id)
WHERE
asp.avm_store_id = :storeId AND
ns.uri LIKE :uri AND
qn.local_name LIKE :localName
</sql-query>
<sql-query name="avm.DeleteStorePropertiesByType">
DELETE
FROM
avm_store_properties
WHERE
avm_store_id = :storeId AND
qname_id = :qnameId
</sql-query>
<sql-query name="avm.DeleteStoreProperties">
DELETE
FROM
avm_store_properties
WHERE
avm_store_id = :storeId
</sql-query>
</hibernate-mapping>

View File

@@ -1,70 +0,0 @@
/*
* 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 org.alfresco.repo.avm.IssuerDAO;
import org.alfresco.service.cmr.avm.AVMException;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
/**
* DAO for Issuers. Hibernate version.
* @author britt
*/
class IssuerDAOHibernate extends HibernateDaoSupport implements
IssuerDAO
{
/**
* Do nothing constructor.
*/
public IssuerDAOHibernate()
{
super();
}
/**
* Get the largest issued id for the named issuer.
* @param The name of the issuer.
* @return The value or null if the issuer is brand new.
* @throws AVMException on an invalid name.
*/
public Long getIssuerValue(String name)
{
if (name.equals("content"))
{
return (Long)getSession().
createQuery("select max(fc.id) from FileContentImpl fc").uniqueResult();
}
else if (name.equals("layer"))
{
return (Long)getSession().
createQuery("select max(an.layerID) from AVMNodeImpl an").uniqueResult();
}
else if (name.equals("node"))
{
return (Long)getSession().createQuery("select max(an.id) from AVMNodeImpl an").uniqueResult();
}
throw new AVMException("Unknown issuer type: " + name);
}
}

View File

@@ -1,32 +0,0 @@
/**
*
*/
package org.alfresco.repo.avm.hibernate;
import org.alfresco.repo.avm.IssuerID;
import org.alfresco.repo.avm.IssuerIDDAO;
import org.alfresco.repo.avm.IssuerIDImpl;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
/**
* Hibernate implementation of IssuerIDDAO
* @author britt
*/
public class IssuerIDDAOHibernate extends HibernateDaoSupport implements IssuerIDDAO
{
/* (non-Javadoc)
* @see org.alfresco.repo.avm.IssuerIDDAO#get(java.lang.String)
*/
public IssuerID get(String name)
{
return (IssuerID)getSession().get(IssuerIDImpl.class, name);
}
/* (non-Javadoc)
* @see org.alfresco.repo.avm.IssuerIDDAO#save(org.alfresco.repo.avm.IssuerID)
*/
public void save(IssuerID issuerID)
{
getSession().save(issuerID);
}
}