mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-07-24 17:32:48 +00:00
This brings the AVM implementation to the 'it compiles so it should work"
state. It's hooked up to nothing right now. First will be a basic test harness for it, then... git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/BRANCHES/WCM-DEV2/root@2891 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -154,7 +154,7 @@ public interface AVMService
|
|||||||
* @param name The name of the Repository.
|
* @param name The name of the Repository.
|
||||||
* @return A Set of version IDs
|
* @return A Set of version IDs
|
||||||
*/
|
*/
|
||||||
public Set<Integer> getRepositoryVersions(String name);
|
public Set<Long> getRepositoryVersions(String name);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Lookup a node by version ids and path. Note that an AVMNode is essentially
|
* Lookup a node by version ids and path. Note that an AVMNode is essentially
|
||||||
|
20
source/java/org/alfresco/repo/avm/Layered.java
Normal file
20
source/java/org/alfresco/repo/avm/Layered.java
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
package org.alfresco.repo.avm;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Layered nodes share this method.
|
||||||
|
* @author britt
|
||||||
|
*/
|
||||||
|
public interface Layered
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Get the indirection, or underlying path that this
|
||||||
|
* node points to.
|
||||||
|
* @param lookup The lookup path. Needed for most nodes to determine
|
||||||
|
* underlying path.
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public String getUnderlying(Lookup lookup);
|
||||||
|
}
|
@@ -23,6 +23,8 @@ import java.util.Map;
|
|||||||
import java.util.TreeMap;
|
import java.util.TreeMap;
|
||||||
|
|
||||||
import org.alfresco.error.AlfrescoRuntimeException;
|
import org.alfresco.error.AlfrescoRuntimeException;
|
||||||
|
import org.alfresco.repo.avm.hibernate.BasicAttributesBean;
|
||||||
|
import org.alfresco.repo.avm.hibernate.BasicAttributesBeanImpl;
|
||||||
import org.alfresco.repo.avm.hibernate.DirectoryEntry;
|
import org.alfresco.repo.avm.hibernate.DirectoryEntry;
|
||||||
import org.alfresco.repo.avm.hibernate.LayeredDirectoryNodeBean;
|
import org.alfresco.repo.avm.hibernate.LayeredDirectoryNodeBean;
|
||||||
import org.alfresco.repo.avm.hibernate.LayeredDirectoryNodeBeanImpl;
|
import org.alfresco.repo.avm.hibernate.LayeredDirectoryNodeBeanImpl;
|
||||||
@@ -31,7 +33,7 @@ import org.alfresco.repo.avm.hibernate.LayeredDirectoryNodeBeanImpl;
|
|||||||
* Interface for a layered directory node. Stub.
|
* Interface for a layered directory node. Stub.
|
||||||
* @author britt
|
* @author britt
|
||||||
*/
|
*/
|
||||||
public class LayeredDirectoryNode extends DirectoryNode
|
public class LayeredDirectoryNode extends DirectoryNode implements Layered
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* The underlying bean data.
|
* The underlying bean data.
|
||||||
@@ -55,6 +57,14 @@ public class LayeredDirectoryNode extends DirectoryNode
|
|||||||
*/
|
*/
|
||||||
public LayeredDirectoryNode(String indirection, Repository repos)
|
public LayeredDirectoryNode(String indirection, Repository repos)
|
||||||
{
|
{
|
||||||
|
long time = System.currentTimeMillis();
|
||||||
|
BasicAttributesBean attrs = new BasicAttributesBeanImpl("britt",
|
||||||
|
"britt",
|
||||||
|
"britt",
|
||||||
|
time,
|
||||||
|
time,
|
||||||
|
time);
|
||||||
|
repos.getSuperRepository().getSession().save(attrs);
|
||||||
fData = new LayeredDirectoryNodeBeanImpl(repos.getSuperRepository().issueID(),
|
fData = new LayeredDirectoryNodeBeanImpl(repos.getSuperRepository().issueID(),
|
||||||
-1,
|
-1,
|
||||||
-1,
|
-1,
|
||||||
@@ -62,6 +72,7 @@ public class LayeredDirectoryNode extends DirectoryNode
|
|||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
repos.getDataBean(),
|
repos.getDataBean(),
|
||||||
|
attrs,
|
||||||
-1,
|
-1,
|
||||||
indirection);
|
indirection);
|
||||||
setDataBean(fData);
|
setDataBean(fData);
|
||||||
@@ -76,6 +87,13 @@ public class LayeredDirectoryNode extends DirectoryNode
|
|||||||
public LayeredDirectoryNode(LayeredDirectoryNode other,
|
public LayeredDirectoryNode(LayeredDirectoryNode other,
|
||||||
Repository repos)
|
Repository repos)
|
||||||
{
|
{
|
||||||
|
LayeredDirectoryNodeBean thatBean = (LayeredDirectoryNodeBean)other.getDataBean();
|
||||||
|
BasicAttributesBean attrs = new BasicAttributesBeanImpl(thatBean.getBasicAttributes());
|
||||||
|
long time = System.currentTimeMillis();
|
||||||
|
attrs.setModDate(time);
|
||||||
|
attrs.setAccessDate(time);
|
||||||
|
attrs.setLastModifier("britt");
|
||||||
|
repos.getSuperRepository().getSession().save(attrs);
|
||||||
fData = new LayeredDirectoryNodeBeanImpl(repos.getSuperRepository().issueID(),
|
fData = new LayeredDirectoryNodeBeanImpl(repos.getSuperRepository().issueID(),
|
||||||
-1,
|
-1,
|
||||||
-1,
|
-1,
|
||||||
@@ -83,11 +101,12 @@ public class LayeredDirectoryNode extends DirectoryNode
|
|||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
repos.getDataBean(),
|
repos.getDataBean(),
|
||||||
|
attrs,
|
||||||
-1,
|
-1,
|
||||||
other.getUnderlying());
|
other.getUnderlying());
|
||||||
fData.setAdded(((LayeredDirectoryNodeBean)other.getDataBean()).getAdded());
|
fData.setAdded(thatBean.getAdded());
|
||||||
fData.setDeleted(((LayeredDirectoryNodeBean)other.getDataBean()).getDeleted());
|
fData.setDeleted(thatBean.getDeleted());
|
||||||
fData.setPrimaryIndirection(((LayeredDirectoryNodeBean)other.getDataBean()).getPrimaryIndirection());
|
fData.setPrimaryIndirection(thatBean.getPrimaryIndirection());
|
||||||
repos.getSuperRepository().getSession().save(fData);
|
repos.getSuperRepository().getSession().save(fData);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -101,6 +120,12 @@ public class LayeredDirectoryNode extends DirectoryNode
|
|||||||
Repository repos,
|
Repository repos,
|
||||||
Lookup lPath)
|
Lookup lPath)
|
||||||
{
|
{
|
||||||
|
BasicAttributesBean attrs = new BasicAttributesBeanImpl(other.getDataBean().getBasicAttributes());
|
||||||
|
long time = System.currentTimeMillis();
|
||||||
|
attrs.setModDate(time);
|
||||||
|
attrs.setAccessDate(time);
|
||||||
|
attrs.setLastModifier("britt");
|
||||||
|
repos.getSuperRepository().getSession().save(attrs);
|
||||||
fData = new LayeredDirectoryNodeBeanImpl(repos.getSuperRepository().issueID(),
|
fData = new LayeredDirectoryNodeBeanImpl(repos.getSuperRepository().issueID(),
|
||||||
-1,
|
-1,
|
||||||
-1,
|
-1,
|
||||||
@@ -108,6 +133,7 @@ public class LayeredDirectoryNode extends DirectoryNode
|
|||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
repos.getDataBean(),
|
repos.getDataBean(),
|
||||||
|
attrs,
|
||||||
-1,
|
-1,
|
||||||
null);
|
null);
|
||||||
// TODO Is this right?
|
// TODO Is this right?
|
||||||
@@ -116,6 +142,7 @@ public class LayeredDirectoryNode extends DirectoryNode
|
|||||||
repos.getSuperRepository().getSession().save(fData);
|
repos.getSuperRepository().getSession().save(fData);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO Something.
|
||||||
public LayeredDirectoryNode(DirectoryNode dir,
|
public LayeredDirectoryNode(DirectoryNode dir,
|
||||||
Repository repo,
|
Repository repo,
|
||||||
Lookup srcLookup,
|
Lookup srcLookup,
|
||||||
|
@@ -18,6 +18,8 @@
|
|||||||
package org.alfresco.repo.avm;
|
package org.alfresco.repo.avm;
|
||||||
|
|
||||||
import org.alfresco.error.AlfrescoRuntimeException;
|
import org.alfresco.error.AlfrescoRuntimeException;
|
||||||
|
import org.alfresco.repo.avm.hibernate.BasicAttributesBean;
|
||||||
|
import org.alfresco.repo.avm.hibernate.BasicAttributesBeanImpl;
|
||||||
import org.alfresco.repo.avm.hibernate.LayeredFileNodeBean;
|
import org.alfresco.repo.avm.hibernate.LayeredFileNodeBean;
|
||||||
import org.alfresco.repo.avm.hibernate.LayeredFileNodeBeanImpl;
|
import org.alfresco.repo.avm.hibernate.LayeredFileNodeBeanImpl;
|
||||||
|
|
||||||
@@ -25,7 +27,7 @@ import org.alfresco.repo.avm.hibernate.LayeredFileNodeBeanImpl;
|
|||||||
* A LayeredFileNode behaves like a copy on write symlink.
|
* A LayeredFileNode behaves like a copy on write symlink.
|
||||||
* @author britt
|
* @author britt
|
||||||
*/
|
*/
|
||||||
public class LayeredFileNode extends FileNode
|
public class LayeredFileNode extends FileNode implements Layered
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* The data bean.
|
* The data bean.
|
||||||
@@ -66,6 +68,14 @@ public class LayeredFileNode extends FileNode
|
|||||||
*/
|
*/
|
||||||
public LayeredFileNode(String indirection, Repository repo)
|
public LayeredFileNode(String indirection, Repository repo)
|
||||||
{
|
{
|
||||||
|
long time = System.currentTimeMillis();
|
||||||
|
BasicAttributesBean attrs = new BasicAttributesBeanImpl("britt",
|
||||||
|
"britt",
|
||||||
|
"britt",
|
||||||
|
time,
|
||||||
|
time,
|
||||||
|
time);
|
||||||
|
repo.getSuperRepository().getSession().save(attrs);
|
||||||
fData = new LayeredFileNodeBeanImpl(repo.getSuperRepository().issueID(),
|
fData = new LayeredFileNodeBeanImpl(repo.getSuperRepository().issueID(),
|
||||||
-1L,
|
-1L,
|
||||||
-1L,
|
-1L,
|
||||||
@@ -73,6 +83,7 @@ public class LayeredFileNode extends FileNode
|
|||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
repo.getDataBean(),
|
repo.getDataBean(),
|
||||||
|
attrs,
|
||||||
indirection);
|
indirection);
|
||||||
repo.getSuperRepository().getSession().save(fData);
|
repo.getSuperRepository().getSession().save(fData);
|
||||||
setDataBean(fData);
|
setDataBean(fData);
|
||||||
@@ -135,4 +146,12 @@ public class LayeredFileNode extends FileNode
|
|||||||
assert false : "Never happens";
|
assert false : "Never happens";
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.alfresco.repo.avm.Layered#getUnderlying(org.alfresco.repo.avm.Lookup)
|
||||||
|
*/
|
||||||
|
public String getUnderlying(Lookup lookup)
|
||||||
|
{
|
||||||
|
return fData.getIndirection();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -21,6 +21,8 @@ import java.util.HashMap;
|
|||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.TreeMap;
|
import java.util.TreeMap;
|
||||||
|
|
||||||
|
import org.alfresco.repo.avm.hibernate.BasicAttributesBean;
|
||||||
|
import org.alfresco.repo.avm.hibernate.BasicAttributesBeanImpl;
|
||||||
import org.alfresco.repo.avm.hibernate.DirectoryEntry;
|
import org.alfresco.repo.avm.hibernate.DirectoryEntry;
|
||||||
import org.alfresco.repo.avm.hibernate.PlainDirectoryNodeBean;
|
import org.alfresco.repo.avm.hibernate.PlainDirectoryNodeBean;
|
||||||
import org.alfresco.repo.avm.hibernate.PlainDirectoryNodeBeanImpl;
|
import org.alfresco.repo.avm.hibernate.PlainDirectoryNodeBeanImpl;
|
||||||
@@ -42,6 +44,14 @@ public class PlainDirectoryNode extends DirectoryNode
|
|||||||
*/
|
*/
|
||||||
public PlainDirectoryNode(Repository repo)
|
public PlainDirectoryNode(Repository repo)
|
||||||
{
|
{
|
||||||
|
long time = System.currentTimeMillis();
|
||||||
|
BasicAttributesBean attrs = new BasicAttributesBeanImpl("britt",
|
||||||
|
"britt",
|
||||||
|
"britt",
|
||||||
|
time,
|
||||||
|
time,
|
||||||
|
time);
|
||||||
|
repo.getSuperRepository().getSession().save(attrs);
|
||||||
fData = new PlainDirectoryNodeBeanImpl(repo.getSuperRepository().issueID(),
|
fData = new PlainDirectoryNodeBeanImpl(repo.getSuperRepository().issueID(),
|
||||||
repo.getLatestVersion(),
|
repo.getLatestVersion(),
|
||||||
0L,
|
0L,
|
||||||
@@ -49,6 +59,7 @@ public class PlainDirectoryNode extends DirectoryNode
|
|||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
repo.getDataBean(),
|
repo.getDataBean(),
|
||||||
|
attrs,
|
||||||
false);
|
false);
|
||||||
repo.getSuperRepository().getSession().save(fData);
|
repo.getSuperRepository().getSession().save(fData);
|
||||||
}
|
}
|
||||||
@@ -71,6 +82,12 @@ public class PlainDirectoryNode extends DirectoryNode
|
|||||||
public PlainDirectoryNode(PlainDirectoryNode other,
|
public PlainDirectoryNode(PlainDirectoryNode other,
|
||||||
Repository repos)
|
Repository repos)
|
||||||
{
|
{
|
||||||
|
long time = System.currentTimeMillis();
|
||||||
|
BasicAttributesBean attrs = new BasicAttributesBeanImpl(other.getDataBean().getBasicAttributes());
|
||||||
|
attrs.setModDate(time);
|
||||||
|
attrs.setCreateDate(time);
|
||||||
|
attrs.setAccessDate(time);
|
||||||
|
repos.getSuperRepository().getSession().save(attrs);
|
||||||
fData = new PlainDirectoryNodeBeanImpl(repos.getSuperRepository().issueID(),
|
fData = new PlainDirectoryNodeBeanImpl(repos.getSuperRepository().issueID(),
|
||||||
-1,
|
-1,
|
||||||
-1,
|
-1,
|
||||||
@@ -78,6 +95,7 @@ public class PlainDirectoryNode extends DirectoryNode
|
|||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
repos.getDataBean(),
|
repos.getDataBean(),
|
||||||
|
attrs,
|
||||||
false);
|
false);
|
||||||
setDataBean(fData);
|
setDataBean(fData);
|
||||||
fData.setChildren(new HashMap<String, DirectoryEntry>(((PlainDirectoryNodeBean)other.getDataBean()).getChildren()));
|
fData.setChildren(new HashMap<String, DirectoryEntry>(((PlainDirectoryNodeBean)other.getDataBean()).getChildren()));
|
||||||
|
@@ -17,6 +17,8 @@
|
|||||||
|
|
||||||
package org.alfresco.repo.avm;
|
package org.alfresco.repo.avm;
|
||||||
|
|
||||||
|
import org.alfresco.repo.avm.hibernate.BasicAttributesBean;
|
||||||
|
import org.alfresco.repo.avm.hibernate.BasicAttributesBeanImpl;
|
||||||
import org.alfresco.repo.avm.hibernate.ContentBean;
|
import org.alfresco.repo.avm.hibernate.ContentBean;
|
||||||
import org.alfresco.repo.avm.hibernate.ContentBeanImpl;
|
import org.alfresco.repo.avm.hibernate.ContentBeanImpl;
|
||||||
import org.alfresco.repo.avm.hibernate.PlainFileNodeBean;
|
import org.alfresco.repo.avm.hibernate.PlainFileNodeBean;
|
||||||
@@ -50,6 +52,14 @@ public class PlainFileNode extends FileNode
|
|||||||
public PlainFileNode(Repository repos)
|
public PlainFileNode(Repository repos)
|
||||||
{
|
{
|
||||||
ContentBean content = new ContentBeanImpl(repos.getSuperRepository().issueContentID());
|
ContentBean content = new ContentBeanImpl(repos.getSuperRepository().issueContentID());
|
||||||
|
long time = System.currentTimeMillis();
|
||||||
|
BasicAttributesBean attrs = new BasicAttributesBeanImpl("britt",
|
||||||
|
"britt",
|
||||||
|
"britt",
|
||||||
|
time,
|
||||||
|
time,
|
||||||
|
time);
|
||||||
|
repos.getSuperRepository().getSession().save(attrs);
|
||||||
fData = new PlainFileNodeBeanImpl(repos.getSuperRepository().issueID(),
|
fData = new PlainFileNodeBeanImpl(repos.getSuperRepository().issueID(),
|
||||||
-1,
|
-1,
|
||||||
-1,
|
-1,
|
||||||
@@ -57,6 +67,7 @@ public class PlainFileNode extends FileNode
|
|||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
repos.getDataBean(),
|
repos.getDataBean(),
|
||||||
|
attrs,
|
||||||
content);
|
content);
|
||||||
content.setRefCount(1);
|
content.setRefCount(1);
|
||||||
// Transitive persistence should take care of content.
|
// Transitive persistence should take care of content.
|
||||||
@@ -72,6 +83,12 @@ public class PlainFileNode extends FileNode
|
|||||||
public PlainFileNode(PlainFileNode other,
|
public PlainFileNode(PlainFileNode other,
|
||||||
Repository repos)
|
Repository repos)
|
||||||
{
|
{
|
||||||
|
long time = System.currentTimeMillis();
|
||||||
|
BasicAttributesBean attrs = new BasicAttributesBeanImpl(other.getDataBean().getBasicAttributes());
|
||||||
|
attrs.setCreateDate(time);
|
||||||
|
attrs.setModDate(time);
|
||||||
|
attrs.setAccessDate(time);
|
||||||
|
repos.getSuperRepository().getSession().save(attrs);
|
||||||
fData = new PlainFileNodeBeanImpl(repos.getSuperRepository().issueID(),
|
fData = new PlainFileNodeBeanImpl(repos.getSuperRepository().issueID(),
|
||||||
-1,
|
-1,
|
||||||
-1,
|
-1,
|
||||||
@@ -79,6 +96,7 @@ public class PlainFileNode extends FileNode
|
|||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
repos.getDataBean(),
|
repos.getDataBean(),
|
||||||
|
attrs,
|
||||||
other.fData.getContent());
|
other.fData.getContent());
|
||||||
repos.getSuperRepository().getSession().save(fData);
|
repos.getSuperRepository().getSession().save(fData);
|
||||||
fData.getContent().setRefCount(fData.getContent().getRefCount() + 1);
|
fData.getContent().setRefCount(fData.getContent().getRefCount() + 1);
|
||||||
|
@@ -131,7 +131,7 @@ public interface Repository
|
|||||||
* Get the version ids that this Repository has.
|
* Get the version ids that this Repository has.
|
||||||
* @return A Set of Version IDs.
|
* @return A Set of Version IDs.
|
||||||
*/
|
*/
|
||||||
public Set<Integer> getVersions();
|
public Set<Long> getVersions();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the data bean.
|
* Get the data bean.
|
||||||
|
@@ -165,7 +165,7 @@ public interface SuperRepository
|
|||||||
* @param name The name of the repository.
|
* @param name The name of the repository.
|
||||||
* @return A Set of IDs.
|
* @return A Set of IDs.
|
||||||
*/
|
*/
|
||||||
public Set<Integer> getRepositoryVersions(String name);
|
public Set<Long> getRepositoryVersions(String name);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Issue a unique identifier for a new node.
|
* Issue a unique identifier for a new node.
|
||||||
|
@@ -10,6 +10,9 @@
|
|||||||
</id>
|
</id>
|
||||||
<discriminator column="class_type" type="string" length="20"></discriminator>
|
<discriminator column="class_type" type="string" length="20"></discriminator>
|
||||||
<version column="vers" name="vers" type="long"></version>
|
<version column="vers" name="vers" type="long"></version>
|
||||||
|
<many-to-one name="basicAttributes" column="basic_attrs"
|
||||||
|
class="BasicAttributesBeanImpl" unique="true" cascade="all">
|
||||||
|
</many-to-one>
|
||||||
<many-to-one name="ancestor" column="ancestor_id"
|
<many-to-one name="ancestor" column="ancestor_id"
|
||||||
class="AVMNodeBeanImpl">
|
class="AVMNodeBeanImpl">
|
||||||
</many-to-one>
|
</many-to-one>
|
||||||
@@ -95,4 +98,17 @@
|
|||||||
</subclass>
|
</subclass>
|
||||||
</subclass>
|
</subclass>
|
||||||
</class>
|
</class>
|
||||||
|
<class name="BasicAttributesBeanImpl" proxy="BasicAttributesBean"
|
||||||
|
lazy="true" optimistic-lock="version" table="basic_attributes">
|
||||||
|
<id name="id" type="long">
|
||||||
|
<generator class="native"></generator>
|
||||||
|
</id>
|
||||||
|
<version column="vers" name="vers" type="long"></version>
|
||||||
|
<property name="creator" type="string" not-null="true"></property>
|
||||||
|
<property name="owner" type="string" not-null="true"></property>
|
||||||
|
<property name="lastModifier" type="string" not-null="true"></property>
|
||||||
|
<property name="createDate" type="long" not-null="true"></property>
|
||||||
|
<property name="modDate" type="long" not-null="true"></property>
|
||||||
|
<property name="accessDate" type="long" not-null="true"></property>
|
||||||
|
</class>
|
||||||
</hibernate-mapping>
|
</hibernate-mapping>
|
||||||
|
@@ -131,4 +131,16 @@ public interface AVMNodeBean
|
|||||||
* @return The version.
|
* @return The version.
|
||||||
*/
|
*/
|
||||||
public long getVers();
|
public long getVers();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the basic attributes.
|
||||||
|
* @param attrs The attributes to set.
|
||||||
|
*/
|
||||||
|
public void setBasicAttributes(BasicAttributesBean attrs);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the basic attributes.
|
||||||
|
* @return The attributes.
|
||||||
|
*/
|
||||||
|
public BasicAttributesBean getBasicAttributes();
|
||||||
}
|
}
|
@@ -58,6 +58,11 @@ public class AVMNodeBeanImpl implements AVMNodeBean
|
|||||||
*/
|
*/
|
||||||
private RepositoryBean fRepository;
|
private RepositoryBean fRepository;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The BasicAttributes.
|
||||||
|
*/
|
||||||
|
private BasicAttributesBean fBasicAttributes;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Whether this node is new (and should therefore not be COWed).
|
* Whether this node is new (and should therefore not be COWed).
|
||||||
*/
|
*/
|
||||||
@@ -91,7 +96,8 @@ public class AVMNodeBeanImpl implements AVMNodeBean
|
|||||||
AVMNodeBean ancestor,
|
AVMNodeBean ancestor,
|
||||||
AVMNodeBean mergedFrom,
|
AVMNodeBean mergedFrom,
|
||||||
DirectoryNodeBean parent,
|
DirectoryNodeBean parent,
|
||||||
RepositoryBean repository)
|
RepositoryBean repository,
|
||||||
|
BasicAttributesBean attrs)
|
||||||
{
|
{
|
||||||
fID = id;
|
fID = id;
|
||||||
fVersionID = versionID;
|
fVersionID = versionID;
|
||||||
@@ -101,6 +107,7 @@ public class AVMNodeBeanImpl implements AVMNodeBean
|
|||||||
fParent = parent;
|
fParent = parent;
|
||||||
fRepository = repository;
|
fRepository = repository;
|
||||||
fIsNew = true;
|
fIsNew = true;
|
||||||
|
fBasicAttributes = attrs;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
@@ -272,4 +279,20 @@ public class AVMNodeBeanImpl implements AVMNodeBean
|
|||||||
{
|
{
|
||||||
fVers = vers;
|
fVers = vers;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.alfresco.repo.avm.hibernate.AVMNodeBean#getBasicAttributes()
|
||||||
|
*/
|
||||||
|
public BasicAttributesBean getBasicAttributes()
|
||||||
|
{
|
||||||
|
return fBasicAttributes;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.alfresco.repo.avm.hibernate.AVMNodeBean#setBasicAttributes(org.alfresco.repo.avm.hibernate.BasicAttributesBean)
|
||||||
|
*/
|
||||||
|
public void setBasicAttributes(BasicAttributesBean attrs)
|
||||||
|
{
|
||||||
|
fBasicAttributes = attrs;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -0,0 +1,105 @@
|
|||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
package org.alfresco.repo.avm.hibernate;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Ownership, timestamps, later perhaps ACLs
|
||||||
|
* @author britt
|
||||||
|
*/
|
||||||
|
public interface BasicAttributesBean
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Set the id.
|
||||||
|
* @param id
|
||||||
|
*/
|
||||||
|
public void setId(Long id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the id.
|
||||||
|
* @return The id.
|
||||||
|
*/
|
||||||
|
public Long getId();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the version (for concurrency control.)
|
||||||
|
*/
|
||||||
|
public void setVers(long vers);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the version (for concurrency control.)
|
||||||
|
*/
|
||||||
|
public long getVers();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the creator of the node.
|
||||||
|
* @param creator The creator to set.
|
||||||
|
*/
|
||||||
|
public void setCreator(String creator);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the creator of the node.
|
||||||
|
* @return The creator.
|
||||||
|
*/
|
||||||
|
public String getCreator();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the owner of the node.
|
||||||
|
* @param owner The owner to set.
|
||||||
|
*/
|
||||||
|
public void setOwner(String owner);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the owner of the node.
|
||||||
|
* @return The owner.
|
||||||
|
*/
|
||||||
|
public String getOwner();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the last modifier of the node.
|
||||||
|
* @param lastModifier
|
||||||
|
*/
|
||||||
|
public void setLastModifier(String lastModifier);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the last modifier of the node.
|
||||||
|
* @return The last modifier.
|
||||||
|
*/
|
||||||
|
public String getLastModifier();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the create date.
|
||||||
|
* @param createDate The date to set.
|
||||||
|
*/
|
||||||
|
public void setCreateDate(long createDate);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the create date.
|
||||||
|
* @return The create date.
|
||||||
|
*/
|
||||||
|
public long getCreateDate();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the modification date.
|
||||||
|
* @param modDate The date to set.
|
||||||
|
*/
|
||||||
|
public void setModDate(long modDate);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the modification date.
|
||||||
|
* @return The modification date.
|
||||||
|
*/
|
||||||
|
public long getModDate();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the access date of the node.
|
||||||
|
* @param accessDate The access date.
|
||||||
|
*/
|
||||||
|
public void setAccessDate(long accessDate);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the access date of the node.
|
||||||
|
* @return The access date.
|
||||||
|
*/
|
||||||
|
public long getAccessDate();
|
||||||
|
}
|
@@ -0,0 +1,225 @@
|
|||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
package org.alfresco.repo.avm.hibernate;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Implementation of the BasicAttributesBean.
|
||||||
|
* @author britt
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class BasicAttributesBeanImpl implements BasicAttributesBean
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* The id.
|
||||||
|
*/
|
||||||
|
private Long fID;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The version for concurrency control.
|
||||||
|
*/
|
||||||
|
private long fVers;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The creator.
|
||||||
|
*/
|
||||||
|
private String fCreator;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The owner.
|
||||||
|
*/
|
||||||
|
private String fOwner;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The last modifier.
|
||||||
|
*/
|
||||||
|
private String fLastModifier;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The creation date.
|
||||||
|
*/
|
||||||
|
private long fCreateDate;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The modification date.
|
||||||
|
*/
|
||||||
|
private long fModDate;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The access date.
|
||||||
|
*/
|
||||||
|
private long fAccessDate;
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.alfresco.repo.avm.hibernate.BasicAttributesBean#getId()
|
||||||
|
*/
|
||||||
|
public Long getId()
|
||||||
|
{
|
||||||
|
return fID;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.alfresco.repo.avm.hibernate.BasicAttributesBean#setId(java.lang.Long)
|
||||||
|
*/
|
||||||
|
public void setId(Long id)
|
||||||
|
{
|
||||||
|
fID = id;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Default constructor.
|
||||||
|
*/
|
||||||
|
public BasicAttributesBeanImpl()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A Copy constructor.
|
||||||
|
* @param other
|
||||||
|
*/
|
||||||
|
public BasicAttributesBeanImpl(BasicAttributesBean other)
|
||||||
|
{
|
||||||
|
fCreator = other.getCreator();
|
||||||
|
fOwner = other.getOwner();
|
||||||
|
fLastModifier = other.getLastModifier();
|
||||||
|
fCreateDate = other.getCreateDate();
|
||||||
|
fModDate = other.getModDate();
|
||||||
|
fAccessDate = other.getAccessDate();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fill in the blanks constructor.
|
||||||
|
* @param creator
|
||||||
|
* @param owner
|
||||||
|
* @param modifier
|
||||||
|
* @param createDate
|
||||||
|
* @param modDate
|
||||||
|
* @param accessDate
|
||||||
|
*/
|
||||||
|
public BasicAttributesBeanImpl(String creator,
|
||||||
|
String owner,
|
||||||
|
String modifier,
|
||||||
|
long createDate,
|
||||||
|
long modDate,
|
||||||
|
long accessDate)
|
||||||
|
{
|
||||||
|
fCreator = creator;
|
||||||
|
fOwner = owner;
|
||||||
|
fLastModifier = modifier;
|
||||||
|
fCreateDate = createDate;
|
||||||
|
fModDate = modDate;
|
||||||
|
fAccessDate = accessDate;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.alfresco.repo.avm.hibernate.BasicAttributesBean#getVers()
|
||||||
|
*/
|
||||||
|
public long getVers()
|
||||||
|
{
|
||||||
|
return fVers;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.alfresco.repo.avm.hibernate.BasicAttributesBean#setVers(long)
|
||||||
|
*/
|
||||||
|
public void setVers(long vers)
|
||||||
|
{
|
||||||
|
fVers = vers;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.alfresco.repo.avm.hibernate.BasicAttributesBean#setCreator(java.lang.String)
|
||||||
|
*/
|
||||||
|
public void setCreator(String creator)
|
||||||
|
{
|
||||||
|
fCreator = creator;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.alfresco.repo.avm.hibernate.BasicAttributesBean#getCreator()
|
||||||
|
*/
|
||||||
|
public String getCreator()
|
||||||
|
{
|
||||||
|
return fCreator;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.alfresco.repo.avm.hibernate.BasicAttributesBean#setOwner(java.lang.String)
|
||||||
|
*/
|
||||||
|
public void setOwner(String owner)
|
||||||
|
{
|
||||||
|
fOwner = owner;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.alfresco.repo.avm.hibernate.BasicAttributesBean#getOwner()
|
||||||
|
*/
|
||||||
|
public String getOwner()
|
||||||
|
{
|
||||||
|
return fOwner;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.alfresco.repo.avm.hibernate.BasicAttributesBean#setLastModifier(java.lang.String)
|
||||||
|
*/
|
||||||
|
public void setLastModifier(String lastModifier)
|
||||||
|
{
|
||||||
|
fLastModifier = lastModifier;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.alfresco.repo.avm.hibernate.BasicAttributesBean#getLastModifier()
|
||||||
|
*/
|
||||||
|
public String getLastModifier()
|
||||||
|
{
|
||||||
|
return fLastModifier;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.alfresco.repo.avm.hibernate.BasicAttributesBean#setCreateDate(long)
|
||||||
|
*/
|
||||||
|
public void setCreateDate(long createDate)
|
||||||
|
{
|
||||||
|
fCreateDate = createDate;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.alfresco.repo.avm.hibernate.BasicAttributesBean#getCreateDate()
|
||||||
|
*/
|
||||||
|
public long getCreateDate()
|
||||||
|
{
|
||||||
|
return fCreateDate;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.alfresco.repo.avm.hibernate.BasicAttributesBean#setModDate(long)
|
||||||
|
*/
|
||||||
|
public void setModDate(long modDate)
|
||||||
|
{
|
||||||
|
fModDate = modDate;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.alfresco.repo.avm.hibernate.BasicAttributesBean#getModDate()
|
||||||
|
*/
|
||||||
|
public long getModDate()
|
||||||
|
{
|
||||||
|
return fModDate;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.alfresco.repo.avm.hibernate.BasicAttributesBean#setAccessDate(long)
|
||||||
|
*/
|
||||||
|
public void setAccessDate(long accessDate)
|
||||||
|
{
|
||||||
|
fAccessDate = accessDate;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.alfresco.repo.avm.hibernate.BasicAttributesBean#getAccessDate()
|
||||||
|
*/
|
||||||
|
public long getAccessDate()
|
||||||
|
{
|
||||||
|
return fAccessDate;
|
||||||
|
}
|
||||||
|
}
|
@@ -46,8 +46,9 @@ public class DirectoryNodeBeanImpl extends AVMNodeBeanImpl implements DirectoryN
|
|||||||
AVMNodeBean ancestor,
|
AVMNodeBean ancestor,
|
||||||
AVMNodeBean mergedFrom,
|
AVMNodeBean mergedFrom,
|
||||||
DirectoryNodeBean parent,
|
DirectoryNodeBean parent,
|
||||||
RepositoryBean repository)
|
RepositoryBean repository,
|
||||||
|
BasicAttributesBean attrs)
|
||||||
{
|
{
|
||||||
super(id, versionID, branchID, ancestor, mergedFrom, parent, repository);
|
super(id, versionID, branchID, ancestor, mergedFrom, parent, repository, attrs);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -47,8 +47,9 @@ public class FileNodeBeanImpl extends AVMNodeBeanImpl implements FileNodeBean
|
|||||||
AVMNodeBean ancestor,
|
AVMNodeBean ancestor,
|
||||||
AVMNodeBean mergedFrom,
|
AVMNodeBean mergedFrom,
|
||||||
DirectoryNodeBean parent,
|
DirectoryNodeBean parent,
|
||||||
RepositoryBean repository)
|
RepositoryBean repository,
|
||||||
|
BasicAttributesBean attrs)
|
||||||
{
|
{
|
||||||
super(id, versionID, branchID, ancestor, mergedFrom, parent, repository);
|
super(id, versionID, branchID, ancestor, mergedFrom, parent, repository, attrs);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -81,10 +81,11 @@ public class LayeredDirectoryNodeBeanImpl extends DirectoryNodeBeanImpl implemen
|
|||||||
AVMNodeBean mergedFrom,
|
AVMNodeBean mergedFrom,
|
||||||
DirectoryNodeBean parent,
|
DirectoryNodeBean parent,
|
||||||
RepositoryBean repository,
|
RepositoryBean repository,
|
||||||
|
BasicAttributesBean attrs,
|
||||||
long layerID,
|
long layerID,
|
||||||
String indirection)
|
String indirection)
|
||||||
{
|
{
|
||||||
super(id, versionID, branchID, ancestor, mergedFrom, parent, repository);
|
super(id, versionID, branchID, ancestor, mergedFrom, parent, repository, attrs);
|
||||||
fLayerID = layerID;
|
fLayerID = layerID;
|
||||||
fIndirection = indirection;
|
fIndirection = indirection;
|
||||||
fAdded = new HashMap<String, DirectoryEntry>();
|
fAdded = new HashMap<String, DirectoryEntry>();
|
||||||
|
@@ -54,9 +54,10 @@ public class LayeredFileNodeBeanImpl extends FileNodeBeanImpl implements
|
|||||||
AVMNodeBean mergedFrom,
|
AVMNodeBean mergedFrom,
|
||||||
DirectoryNodeBean parent,
|
DirectoryNodeBean parent,
|
||||||
RepositoryBean repository,
|
RepositoryBean repository,
|
||||||
|
BasicAttributesBean attrs,
|
||||||
String indirection)
|
String indirection)
|
||||||
{
|
{
|
||||||
super(id, versionID, branchID, ancestor, mergedFrom, parent, repository);
|
super(id, versionID, branchID, ancestor, mergedFrom, parent, repository, attrs);
|
||||||
fIndirection = indirection;
|
fIndirection = indirection;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -61,9 +61,10 @@ public class PlainDirectoryNodeBeanImpl extends DirectoryNodeBeanImpl implements
|
|||||||
AVMNodeBean mergedFrom,
|
AVMNodeBean mergedFrom,
|
||||||
DirectoryNodeBean parent,
|
DirectoryNodeBean parent,
|
||||||
RepositoryBean repository,
|
RepositoryBean repository,
|
||||||
|
BasicAttributesBean attrs,
|
||||||
boolean isRoot)
|
boolean isRoot)
|
||||||
{
|
{
|
||||||
super(id, versionID, branchID, ancestor, mergedFrom, parent, repository);
|
super(id, versionID, branchID, ancestor, mergedFrom, parent, repository, attrs);
|
||||||
fChildren = new HashMap<String, DirectoryEntry>();
|
fChildren = new HashMap<String, DirectoryEntry>();
|
||||||
fIsRoot = isRoot;
|
fIsRoot = isRoot;
|
||||||
}
|
}
|
||||||
|
@@ -54,9 +54,10 @@ public class PlainFileNodeBeanImpl extends FileNodeBeanImpl implements PlainFile
|
|||||||
AVMNodeBean mergedFrom,
|
AVMNodeBean mergedFrom,
|
||||||
DirectoryNodeBean parent,
|
DirectoryNodeBean parent,
|
||||||
RepositoryBean repository,
|
RepositoryBean repository,
|
||||||
|
BasicAttributesBean attrs,
|
||||||
ContentBean content)
|
ContentBean content)
|
||||||
{
|
{
|
||||||
super(id, versionID, branchID, ancestor, mergedFrom, parent, repository);
|
super(id, versionID, branchID, ancestor, mergedFrom, parent, repository, attrs);
|
||||||
fContent = content;
|
fContent = content;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -80,6 +80,14 @@ public class TestPopulate extends TestCase
|
|||||||
Issuer contentIssuer = new Issuer("content", 0);
|
Issuer contentIssuer = new Issuer("content", 0);
|
||||||
Issuer repositoryIssuer = new Issuer("repository", 0);
|
Issuer repositoryIssuer = new Issuer("repository", 0);
|
||||||
// Make the initial root directory.
|
// Make the initial root directory.
|
||||||
|
long time = System.currentTimeMillis();
|
||||||
|
BasicAttributesBean attrs = new BasicAttributesBeanImpl("britt",
|
||||||
|
"britt",
|
||||||
|
"britt",
|
||||||
|
time,
|
||||||
|
time,
|
||||||
|
time);
|
||||||
|
session.save(attrs);
|
||||||
PlainDirectoryNodeBean root =
|
PlainDirectoryNodeBean root =
|
||||||
new PlainDirectoryNodeBeanImpl(nodeIssuer.issue(),
|
new PlainDirectoryNodeBeanImpl(nodeIssuer.issue(),
|
||||||
0,
|
0,
|
||||||
@@ -88,6 +96,7 @@ public class TestPopulate extends TestCase
|
|||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
|
attrs,
|
||||||
true);
|
true);
|
||||||
// Make a new repository.
|
// Make a new repository.
|
||||||
RepositoryBean rep =
|
RepositoryBean rep =
|
||||||
@@ -112,11 +121,19 @@ public class TestPopulate extends TestCase
|
|||||||
// Now read some things back, and modify some stuff.
|
// Now read some things back, and modify some stuff.
|
||||||
Issuer nodeIssuer = (Issuer)session.get(Issuer.class, "node");
|
Issuer nodeIssuer = (Issuer)session.get(Issuer.class, "node");
|
||||||
Issuer contentIssuer = (Issuer)session.get(Issuer.class, "content");
|
Issuer contentIssuer = (Issuer)session.get(Issuer.class, "content");
|
||||||
RepositoryBean rep = (RepositoryBean)session.get(RepositoryBeanImpl.class, 0L);
|
RepositoryBean rep = (RepositoryBean)session.get(RepositoryBeanImpl.class, "main");
|
||||||
long version = rep.getNextVersionID();
|
long version = rep.getNextVersionID();
|
||||||
rep.setNextVersionID(version + 1);
|
rep.setNextVersionID(version + 1);
|
||||||
assertTrue(rep != null);
|
assertTrue(rep != null);
|
||||||
PlainDirectoryNodeBean root = (PlainDirectoryNodeBean)rep.getRoot();
|
PlainDirectoryNodeBean root = (PlainDirectoryNodeBean)rep.getRoot();
|
||||||
|
long time = System.currentTimeMillis();
|
||||||
|
BasicAttributesBean attrs = new BasicAttributesBeanImpl("britt",
|
||||||
|
"britt",
|
||||||
|
"britt",
|
||||||
|
time,
|
||||||
|
time,
|
||||||
|
time);
|
||||||
|
session.save(attrs);
|
||||||
PlainDirectoryNodeBean newRoot = new PlainDirectoryNodeBeanImpl(nodeIssuer.issue(),
|
PlainDirectoryNodeBean newRoot = new PlainDirectoryNodeBeanImpl(nodeIssuer.issue(),
|
||||||
version,
|
version,
|
||||||
0L,
|
0L,
|
||||||
@@ -124,8 +141,11 @@ public class TestPopulate extends TestCase
|
|||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
rep,
|
rep,
|
||||||
|
attrs,
|
||||||
true);
|
true);
|
||||||
ContentBean content = new ContentBeanImpl(contentIssuer.issue());
|
ContentBean content = new ContentBeanImpl(contentIssuer.issue());
|
||||||
|
attrs = new BasicAttributesBeanImpl(attrs);
|
||||||
|
session.save(attrs);
|
||||||
PlainFileNodeBean file = new PlainFileNodeBeanImpl(nodeIssuer.issue(),
|
PlainFileNodeBean file = new PlainFileNodeBeanImpl(nodeIssuer.issue(),
|
||||||
version,
|
version,
|
||||||
0L,
|
0L,
|
||||||
@@ -133,6 +153,7 @@ public class TestPopulate extends TestCase
|
|||||||
null,
|
null,
|
||||||
newRoot,
|
newRoot,
|
||||||
rep,
|
rep,
|
||||||
|
attrs,
|
||||||
content);
|
content);
|
||||||
content.setRefCount(content.getRefCount() + 1);
|
content.setRefCount(content.getRefCount() + 1);
|
||||||
newRoot.getChildren().put("foo", new DirectoryEntry(AVMNodeType.PLAIN_FILE, file));
|
newRoot.getChildren().put("foo", new DirectoryEntry(AVMNodeType.PLAIN_FILE, file));
|
||||||
@@ -141,6 +162,8 @@ public class TestPopulate extends TestCase
|
|||||||
content = new ContentBeanImpl(contentIssuer.issue());
|
content = new ContentBeanImpl(contentIssuer.issue());
|
||||||
content.setRefCount(content.getRefCount() + 1);
|
content.setRefCount(content.getRefCount() + 1);
|
||||||
file.setIsNew(false);
|
file.setIsNew(false);
|
||||||
|
attrs = new BasicAttributesBeanImpl(attrs);
|
||||||
|
session.save(attrs);
|
||||||
file = new PlainFileNodeBeanImpl(nodeIssuer.issue(),
|
file = new PlainFileNodeBeanImpl(nodeIssuer.issue(),
|
||||||
version,
|
version,
|
||||||
0L,
|
0L,
|
||||||
@@ -148,6 +171,7 @@ public class TestPopulate extends TestCase
|
|||||||
null,
|
null,
|
||||||
newRoot,
|
newRoot,
|
||||||
rep,
|
rep,
|
||||||
|
attrs,
|
||||||
content);
|
content);
|
||||||
session.save(content);
|
session.save(content);
|
||||||
file.setIsNew(false);
|
file.setIsNew(false);
|
||||||
@@ -187,11 +211,11 @@ public class TestPopulate extends TestCase
|
|||||||
{
|
{
|
||||||
public void perform(Session session)
|
public void perform(Session session)
|
||||||
{
|
{
|
||||||
RepositoryBean rep = (RepositoryBean)session.get(RepositoryBeanImpl.class, 0L);
|
RepositoryBean rep = (RepositoryBean)session.get(RepositoryBeanImpl.class, "main");
|
||||||
PlainDirectoryNodeBean root = (PlainDirectoryNodeBean)rep.getRoot();
|
PlainDirectoryNodeBean root = (PlainDirectoryNodeBean)rep.getRoot();
|
||||||
PlainDirectoryNodeBean prev = (PlainDirectoryNodeBean)root.getAncestor();
|
PlainDirectoryNodeBean prev = (PlainDirectoryNodeBean)root.getAncestor();
|
||||||
|
rep.getRoots().remove(rep.getRoot().getId());
|
||||||
rep.setRoot(prev);
|
rep.setRoot(prev);
|
||||||
rep.getRoots().remove(1);
|
|
||||||
for (String name : root.getChildren().keySet())
|
for (String name : root.getChildren().keySet())
|
||||||
{
|
{
|
||||||
AVMNodeBean child = root.getChildren().get(name).getChild();
|
AVMNodeBean child = root.getChildren().get(name).getChild();
|
||||||
|
@@ -393,11 +393,11 @@ public class AVMServiceImpl implements AVMService
|
|||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
* @see org.alfresco.repo.avm.AVMService#getRepositoryVersions(java.lang.String)
|
* @see org.alfresco.repo.avm.AVMService#getRepositoryVersions(java.lang.String)
|
||||||
*/
|
*/
|
||||||
public Set<Integer> getRepositoryVersions(final String name)
|
public Set<Long> getRepositoryVersions(final String name)
|
||||||
{
|
{
|
||||||
class HTxnCallback implements HibernateTxnCallback
|
class HTxnCallback implements HibernateTxnCallback
|
||||||
{
|
{
|
||||||
public Set<Integer> versions;
|
public Set<Long> versions;
|
||||||
|
|
||||||
public void perform(Session session)
|
public void perform(Session session)
|
||||||
{
|
{
|
||||||
|
@@ -26,10 +26,12 @@ import java.util.Set;
|
|||||||
|
|
||||||
import org.alfresco.error.AlfrescoRuntimeException;
|
import org.alfresco.error.AlfrescoRuntimeException;
|
||||||
import org.alfresco.repo.avm.AVMNode;
|
import org.alfresco.repo.avm.AVMNode;
|
||||||
|
import org.alfresco.repo.avm.AVMNodeFactory;
|
||||||
import org.alfresco.repo.avm.DirectoryNode;
|
import org.alfresco.repo.avm.DirectoryNode;
|
||||||
import org.alfresco.repo.avm.FileContent;
|
import org.alfresco.repo.avm.FileContent;
|
||||||
import org.alfresco.repo.avm.FileNode;
|
import org.alfresco.repo.avm.FileNode;
|
||||||
import org.alfresco.repo.avm.FolderEntry;
|
import org.alfresco.repo.avm.FolderEntry;
|
||||||
|
import org.alfresco.repo.avm.Layered;
|
||||||
import org.alfresco.repo.avm.LayeredDirectoryNode;
|
import org.alfresco.repo.avm.LayeredDirectoryNode;
|
||||||
import org.alfresco.repo.avm.LayeredFileNode;
|
import org.alfresco.repo.avm.LayeredFileNode;
|
||||||
import org.alfresco.repo.avm.Lookup;
|
import org.alfresco.repo.avm.Lookup;
|
||||||
@@ -38,6 +40,8 @@ import org.alfresco.repo.avm.PlainFileNode;
|
|||||||
import org.alfresco.repo.avm.Repository;
|
import org.alfresco.repo.avm.Repository;
|
||||||
import org.alfresco.repo.avm.SuperRepository;
|
import org.alfresco.repo.avm.SuperRepository;
|
||||||
import org.alfresco.repo.avm.hibernate.AVMNodeBean;
|
import org.alfresco.repo.avm.hibernate.AVMNodeBean;
|
||||||
|
import org.alfresco.repo.avm.hibernate.BasicAttributesBean;
|
||||||
|
import org.alfresco.repo.avm.hibernate.BasicAttributesBeanImpl;
|
||||||
import org.alfresco.repo.avm.hibernate.DirectoryEntry;
|
import org.alfresco.repo.avm.hibernate.DirectoryEntry;
|
||||||
import org.alfresco.repo.avm.hibernate.DirectoryNodeBean;
|
import org.alfresco.repo.avm.hibernate.DirectoryNodeBean;
|
||||||
import org.alfresco.repo.avm.hibernate.PlainDirectoryNodeBean;
|
import org.alfresco.repo.avm.hibernate.PlainDirectoryNodeBean;
|
||||||
@@ -71,6 +75,14 @@ public class RepositoryImpl implements Repository
|
|||||||
fSuper = superRepo;
|
fSuper = superRepo;
|
||||||
fData = new RepositoryBeanImpl(name, null);
|
fData = new RepositoryBeanImpl(name, null);
|
||||||
fSuper.getSession().save(fData);
|
fSuper.getSession().save(fData);
|
||||||
|
long time = System.currentTimeMillis();
|
||||||
|
BasicAttributesBean attrs = new BasicAttributesBeanImpl("britt",
|
||||||
|
"britt",
|
||||||
|
"britt",
|
||||||
|
time,
|
||||||
|
time,
|
||||||
|
time);
|
||||||
|
superRepo.getSession().save(attrs);
|
||||||
PlainDirectoryNodeBean rootBean =
|
PlainDirectoryNodeBean rootBean =
|
||||||
new PlainDirectoryNodeBeanImpl(fSuper.issueID(),
|
new PlainDirectoryNodeBeanImpl(fSuper.issueID(),
|
||||||
fData.getNextVersionID(),
|
fData.getNextVersionID(),
|
||||||
@@ -79,6 +91,7 @@ public class RepositoryImpl implements Repository
|
|||||||
null,
|
null,
|
||||||
null,
|
null,
|
||||||
fData,
|
fData,
|
||||||
|
attrs,
|
||||||
true // is root
|
true // is root
|
||||||
);
|
);
|
||||||
fSuper.getSession().save(rootBean);
|
fSuper.getSession().save(rootBean);
|
||||||
@@ -349,13 +362,13 @@ public class RepositoryImpl implements Repository
|
|||||||
dstDir.addChild(dstName, dstNode, dPath);
|
dstDir.addChild(dstName, dstNode, dPath);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO Should this be propagated out to SuperRepository.
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
* @see org.alfresco.repo.avm.Repository#getVersions()
|
* @see org.alfresco.repo.avm.Repository#getVersions()
|
||||||
*/
|
*/
|
||||||
public Set<Integer> getVersions()
|
public Set<Long> getVersions()
|
||||||
{
|
{
|
||||||
// TODO Auto-generated method stub
|
return fData.getRoots().keySet();
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
@@ -363,8 +376,7 @@ public class RepositoryImpl implements Repository
|
|||||||
*/
|
*/
|
||||||
public RepositoryBean getDataBean()
|
public RepositoryBean getDataBean()
|
||||||
{
|
{
|
||||||
// TODO Auto-generated method stub
|
return fData;
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
@@ -372,8 +384,7 @@ public class RepositoryImpl implements Repository
|
|||||||
*/
|
*/
|
||||||
public SuperRepository getSuperRepository()
|
public SuperRepository getSuperRepository()
|
||||||
{
|
{
|
||||||
// TODO Auto-generated method stub
|
return fSuper;
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
@@ -381,8 +392,52 @@ public class RepositoryImpl implements Repository
|
|||||||
*/
|
*/
|
||||||
public Lookup lookup(int version, String path)
|
public Lookup lookup(int version, String path)
|
||||||
{
|
{
|
||||||
// TODO Auto-generated method stub
|
Lookup result = new Lookup(this, fData.getName());
|
||||||
return null;
|
if (path.length() == 0)
|
||||||
|
{
|
||||||
|
throw new AlfrescoRuntimeException("Invalid path: " + path);
|
||||||
|
}
|
||||||
|
String[] pathElements = path.split("/");
|
||||||
|
DirectoryNode dir = null;
|
||||||
|
if (version < 0)
|
||||||
|
{
|
||||||
|
dir = (DirectoryNode)AVMNodeFactory.CreateFromBean(fData.getRoot());
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
AVMNodeBean bean = fData.getRoots().get(version);
|
||||||
|
if (bean == null)
|
||||||
|
{
|
||||||
|
throw new AlfrescoRuntimeException("Invalid version: " + version);
|
||||||
|
}
|
||||||
|
dir = (DirectoryNode)AVMNodeFactory.CreateFromBean(bean);
|
||||||
|
}
|
||||||
|
result.add(dir, "");
|
||||||
|
if (pathElements.length == 0)
|
||||||
|
{
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
for (int i = 0; i < pathElements.length - 1; i++)
|
||||||
|
{
|
||||||
|
AVMNode child = dir.lookupChild(result, pathElements[i], version);
|
||||||
|
if (child == null)
|
||||||
|
{
|
||||||
|
throw new AlfrescoRuntimeException("Not found: " + pathElements[i]);
|
||||||
|
}
|
||||||
|
if (!(child instanceof DirectoryNode))
|
||||||
|
{
|
||||||
|
throw new AlfrescoRuntimeException("Not a directory: " + pathElements[i]);
|
||||||
|
}
|
||||||
|
dir = (DirectoryNode)child;
|
||||||
|
result.add(dir, pathElements[i]);
|
||||||
|
}
|
||||||
|
AVMNode child = dir.lookupChild(result, pathElements[pathElements.length - 1], version);
|
||||||
|
if (child == null)
|
||||||
|
{
|
||||||
|
throw new AlfrescoRuntimeException("Not found: " + pathElements[pathElements.length - 1]);
|
||||||
|
}
|
||||||
|
result.add(child, pathElements[pathElements.length - 1]);
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
@@ -390,8 +445,12 @@ public class RepositoryImpl implements Repository
|
|||||||
*/
|
*/
|
||||||
public Lookup lookupDirectory(int version, String path)
|
public Lookup lookupDirectory(int version, String path)
|
||||||
{
|
{
|
||||||
// TODO Auto-generated method stub
|
Lookup lPath = lookup(version, path);
|
||||||
return null;
|
if (!(lPath.getCurrentNode() instanceof DirectoryNode))
|
||||||
|
{
|
||||||
|
throw new AlfrescoRuntimeException("Not a directory: " + path);
|
||||||
|
}
|
||||||
|
return lPath;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
@@ -399,7 +458,12 @@ public class RepositoryImpl implements Repository
|
|||||||
*/
|
*/
|
||||||
public String getIndirectionPath(int version, String path)
|
public String getIndirectionPath(int version, String path)
|
||||||
{
|
{
|
||||||
// TODO Auto-generated method stub
|
Lookup lPath = lookup(version, path);
|
||||||
return null;
|
AVMNode node = lPath.getCurrentNode();
|
||||||
|
if (node instanceof Layered)
|
||||||
|
{
|
||||||
|
return ((Layered)node).getUnderlying(lPath);
|
||||||
|
}
|
||||||
|
throw new AlfrescoRuntimeException("Not a layered node: " + path);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -374,7 +374,7 @@ public class SuperRepositoryImpl implements SuperRepository
|
|||||||
/* (non-Javadoc)
|
/* (non-Javadoc)
|
||||||
* @see org.alfresco.repo.avm.SuperRepository#getRepositoryVersions(java.lang.String)
|
* @see org.alfresco.repo.avm.SuperRepository#getRepositoryVersions(java.lang.String)
|
||||||
*/
|
*/
|
||||||
public Set<Integer> getRepositoryVersions(String name)
|
public Set<Long> getRepositoryVersions(String name)
|
||||||
{
|
{
|
||||||
Repository rep = getRepositoryByName(name);
|
Repository rep = getRepositoryByName(name);
|
||||||
return rep.getVersions();
|
return rep.getVersions();
|
||||||
|
Reference in New Issue
Block a user