AVM DAO refactor

git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@16138 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Jan Vonka
2009-09-08 09:55:22 +00:00
parent bae58d6ee7
commit c2cca0311b
113 changed files with 9654 additions and 3923 deletions

View File

@@ -0,0 +1,502 @@
/*
* Copyright (C) 2005-2009 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.ibatis;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.alfresco.error.AlfrescoRuntimeException;
import org.alfresco.repo.avm.AVMDAOs;
import org.alfresco.repo.avm.AVMNode;
import org.alfresco.repo.avm.AVMNodeDAO;
import org.alfresco.repo.avm.AVMNodeImpl;
import org.alfresco.repo.avm.AVMNodeType;
import org.alfresco.repo.avm.AVMStore;
import org.alfresco.repo.avm.BasicAttributes;
import org.alfresco.repo.avm.BasicAttributesImpl;
import org.alfresco.repo.avm.DeletedNode;
import org.alfresco.repo.avm.DeletedNodeImpl;
import org.alfresco.repo.avm.DirectoryNode;
import org.alfresco.repo.avm.HistoryLink;
import org.alfresco.repo.avm.Layered;
import org.alfresco.repo.avm.LayeredDirectoryNode;
import org.alfresco.repo.avm.LayeredDirectoryNodeImpl;
import org.alfresco.repo.avm.LayeredFileNode;
import org.alfresco.repo.avm.LayeredFileNodeImpl;
import org.alfresco.repo.avm.MergeLink;
import org.alfresco.repo.avm.PlainDirectoryNode;
import org.alfresco.repo.avm.PlainDirectoryNodeImpl;
import org.alfresco.repo.avm.PlainFileNode;
import org.alfresco.repo.avm.PlainFileNodeImpl;
import org.alfresco.repo.domain.DbAccessControlList;
import org.alfresco.repo.domain.PropertyValue;
import org.alfresco.repo.domain.avm.AVMNodeEntity;
import org.alfresco.repo.domain.avm.AVMVersionRootEntity;
import org.alfresco.repo.domain.hibernate.DbAccessControlListImpl;
import org.alfresco.service.cmr.repository.ContentData;
import org.alfresco.service.namespace.QName;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
/**
* iBATIS DAO wrapper for AVMNode
*
* @author janv
*
*/
class AVMNodeDAOIbatis extends HibernateDaoSupport implements AVMNodeDAO
{
/* (non-Javadoc)
* @see org.alfresco.repo.avm.AVMNodeDAO#save(org.alfresco.repo.avm.AVMNode)
*/
public void save(AVMNode node)
{
AVMNodeEntity nodeEntity = AVMDAOs.Instance().newAVMNodeDAO.createNode(convertNodeToNodeEntity(node));
((AVMNodeImpl)node).setId(nodeEntity.getId());
}
/* (non-Javadoc)
* @see org.alfresco.repo.avm.AVMNodeDAO#delete(org.alfresco.repo.avm.AVMNode)
*/
public void delete(AVMNode node)
{
AVMDAOs.Instance().newAVMNodeDAO.deleteNode(node.getId());
}
/* (non-Javadoc)
* @see org.alfresco.repo.avm.AVMNodeDAO#createAspect(long, long)
*/
public void createAspect(long nodeId, QName aspectQName)
{
AVMDAOs.Instance().newAVMNodeDAO.createAspect(nodeId, aspectQName);
}
/* (non-Javadoc)
* @see org.alfresco.repo.avm.AVMNodeDAO#deleteAspect(long, long)
*/
public void deleteAspect(long nodeId, QName aspectQName)
{
AVMDAOs.Instance().newAVMNodeDAO.deleteAspect(nodeId, aspectQName);
}
/* (non-Javadoc)
* @see org.alfresco.repo.avm.AVMNodeDAO#deleteAspects(long)
*/
public void deleteAspects(long nodeId)
{
AVMDAOs.Instance().newAVMNodeDAO.deleteAspects(nodeId);
}
/* (non-Javadoc)
* @see org.alfresco.repo.avm.AVMNodeDAO#getAspects(long)
*/
public Set<QName> getAspects(long nodeId)
{
return AVMDAOs.Instance().newAVMNodeDAO.getAspects(nodeId);
}
/* (non-Javadoc)
* @see org.alfresco.repo.avm.AVMNodeDAO#createOrUpdateProperty(long, QName, org.alfresco.repo.domain.PropertyValue)
*/
public void createOrUpdateProperty(long nodeId, QName qname, PropertyValue value)
{
AVMDAOs.Instance().newAVMNodeDAO.createOrUpdateNodeProperty(nodeId, qname, value);
}
/* (non-Javadoc)
* @see org.alfresco.repo.avm.AVMNodeDAO#deleteProperty(long, QName)
*/
public void deleteProperty(long nodeId, QName propQName)
{
AVMDAOs.Instance().newAVMNodeDAO.deleteNodeProperty(nodeId, propQName);
}
/* (non-Javadoc)
* @see org.alfresco.repo.avm.AVMNodeDAO#deleteProperties(long)
*/
public void deleteProperties(long nodeId)
{
AVMDAOs.Instance().newAVMNodeDAO.deleteNodeProperties(nodeId);
}
/* (non-Javadoc)
* @see org.alfresco.repo.avm.AVMNodeDAO#getProperties(long)
*/
public Map<QName, PropertyValue> getProperties(long nodeId)
{
return AVMDAOs.Instance().newAVMNodeDAO.getNodeProperties(nodeId);
}
/* (non-Javadoc)
* @see org.alfresco.repo.avm.AVMNodeDAO#getByID(long)
*/
public AVMNode getByID(long id)
{
return convertNodeEntityToNode(AVMDAOs.Instance().newAVMNodeDAO.getNode(id));
}
/* package */ AVMNode getRootNodeByID(AVMStore store, long rootNodeId)
{
AVMNodeEntity rootNodeEntity = AVMDAOs.Instance().newAVMNodeDAO.getNode(rootNodeId);
AVMNode rootNode = null;
if (rootNodeEntity.getStoreNewId() != null)
{
rootNode = convertNodeEntityToNode(rootNodeEntity, false);
rootNode.setStoreNew(store);
}
else
{
rootNode = convertNodeEntityToNode(rootNodeEntity);
}
return rootNode;
}
/* (non-Javadoc)
* @see org.alfresco.repo.avm.AVMNodeDAO#update(org.alfresco.repo.avm.AVMNode)
*/
public void update(AVMNode node)
{
AVMNodeEntity nodeEntity = convertNodeToNodeEntity(node);
AVMDAOs.Instance().newAVMNodeDAO.updateNode(nodeEntity);
((AVMNodeImpl)node).setVers(nodeEntity.getVers());
}
/**
* TODO review
*
* @deprecated
*/
public void updateModTimeAndGuid(AVMNode node)
{
AVMNodeEntity nodeEntity = convertNodeToNodeEntity(node);
AVMDAOs.Instance().newAVMNodeDAO.updateNodeModTimeAndGuid(nodeEntity);
((AVMNodeImpl)node).setVers(nodeEntity.getVers());
}
/* (non-Javadoc)
* @see org.alfresco.repo.avm.AVMNodeDAO#getAVMStoreRoot(org.alfresco.repo.avm.AVMStore, int)
*/
public DirectoryNode getAVMStoreRoot(AVMStore store, int version)
{
AVMVersionRootEntity vrEntity = AVMDAOs.Instance().newAVMVersionRootDAO.getByVersionID(store.getId(), version);
if (vrEntity == null)
{
return null;
}
return (DirectoryNode) getByID(vrEntity.getRootNodeId());
}
/* (non-Javadoc)
* @see org.alfresco.repo.avm.AVMNodeDAO#getAncestor(org.alfresco.repo.avm.AVMNode)
*/
public AVMNode getAncestor(AVMNode descendent)
{
HistoryLink hl = AVMDAOs.Instance().fHistoryLinkDAO.getByDescendent(descendent);
if (hl == null)
{
return null;
}
return hl.getAncestor();
}
/* (non-Javadoc)
* @see org.alfresco.repo.avm.AVMNodeDAO#getMergedFrom(org.alfresco.repo.avm.AVMNode)
*/
public AVMNode getMergedFrom(AVMNode mTo)
{
MergeLink ml = AVMDAOs.Instance().fMergeLinkDAO.getByTo(mTo);
if (ml == null)
{
return null;
}
return ml.getMfrom();
}
/* (non-Javadoc)
* @see org.alfresco.repo.avm.AVMNodeDAO#getOrphans(int)
*/
public List<AVMNode> getOrphans(int batchSize)
{
// TODO - limit to batch size
List<AVMNodeEntity> nodeEntities = AVMDAOs.Instance().newAVMNodeDAO.getNodeOrphans();
if (nodeEntities == null)
{
return new ArrayList<AVMNode>(0);
}
List<AVMNode> nodes = new ArrayList<AVMNode>(nodeEntities.size());
for (AVMNodeEntity nodeEntity : nodeEntities)
{
nodes.add(convertNodeEntityToNode(nodeEntity));
}
return nodes;
}
/* (non-Javadoc)
* @see org.alfresco.repo.avm.AVMNodeDAO#getNewInStore(org.alfresco.repo.avm.AVMStore)
*/
public List<AVMNode> getNewInStore(AVMStore store)
{
List<AVMNodeEntity> nodeEntities = AVMDAOs.Instance().newAVMNodeDAO.getNodesNewInStore(store.getId());
if (nodeEntities == null)
{
return new ArrayList<AVMNode>(0);
}
List<AVMNode> nodes = new ArrayList<AVMNode>(nodeEntities.size());
for (AVMNodeEntity nodeEntity : nodeEntities)
{
nodes.add(convertNodeEntityToNode(nodeEntity));
}
return nodes;
}
/* (non-Javadoc)
* @see org.alfresco.repo.avm.AVMNodeDAO#flush()
*/
public void flush()
{
// NOOP
}
/* (non-Javadoc)
* @see org.alfresco.repo.avm.AVMNodeDAO#evict(org.alfresco.repo.avm.AVMNode)
*/
public void evict(AVMNode node)
{
// NOOP
}
/* (non-Javadoc)
* @see org.alfresco.repo.avm.AVMNodeDAO#clear()
*/
public void clear()
{
AVMDAOs.Instance().newAVMNodeDAO.clearNodeEntityCache();
}
/* (non-Javadoc)
* @see org.alfresco.repo.avm.AVMNodeDAO#noCache()
*/
public void noCache()
{
// NOOP
}
/* (non-Javadoc)
* @see org.alfresco.repo.avm.AVMNodeDAO#yesCache()
*/
public void yesCache()
{
// NOOP
}
/* (non-Javadoc)
* @see org.alfresco.repo.avm.AVMNodeDAO#clearNewInStore(org.alfresco.repo.avm.AVMStore)
*/
public void clearNewInStore(AVMStore store)
{
AVMDAOs.Instance().newAVMNodeDAO.updateNodesClearNewInStore(store.getId());
}
/* (non-Javadoc)
* @see org.alfresco.repo.avm.AVMNodeDAO#getNewLayeredInStoreIDs(org.alfresco.repo.avm.AVMStore)
*/
public List<Long> getNewLayeredInStoreIDs(AVMStore store)
{
return AVMDAOs.Instance().newAVMNodeDAO.getLayeredNodesNewInStoreIDs(store.getId());
}
/* (non-Javadoc)
* @see org.alfresco.repo.avm.AVMNodeDAO#getNewLayeredInStore(org.alfresco.repo.avm.AVMStore)
*/
public List<Layered> getNewLayeredInStore(AVMStore store)
{
List<AVMNodeEntity> nodeEntities = AVMDAOs.Instance().newAVMNodeDAO.getLayeredNodesNewInStore(store.getId());
if (nodeEntities == null)
{
return new ArrayList<Layered>(0);
}
List<Layered> nodes = new ArrayList<Layered>(nodeEntities.size());
for (AVMNodeEntity nodeEntity : nodeEntities)
{
nodes.add((Layered)convertNodeEntityToNode(nodeEntity));
}
return nodes;
}
private AVMNodeEntity convertNodeToNodeEntity(AVMNode node)
{
AVMNodeEntity nodeEntity = new AVMNodeEntity();
nodeEntity.setId(node.getId());
nodeEntity.setAccessDate(node.getBasicAttributes().getAccessDate());
nodeEntity.setOwner(node.getBasicAttributes().getOwner());
nodeEntity.setCreator(node.getBasicAttributes().getCreator());
nodeEntity.setCreatedDate(node.getBasicAttributes().getCreateDate());
nodeEntity.setModifier(node.getBasicAttributes().getLastModifier());
nodeEntity.setModifiedDate(node.getBasicAttributes().getModDate());
nodeEntity.setType(node.getType());
nodeEntity.setVersion(new Long(node.getVersionID()));
nodeEntity.setVers(((AVMNodeImpl)node).getVers());
nodeEntity.setAclId((node.getAcl() == null ? null : node.getAcl().getId()));
nodeEntity.setGuid(node.getGuid());
nodeEntity.setStoreNewId(node.getStoreNew() == null ? null : node.getStoreNew().getId());
nodeEntity.setRoot(node.getIsRoot());
if (node instanceof PlainFileNode)
{
PlainFileNode pfNode = (PlainFileNode)node;
nodeEntity.setEncoding(pfNode.getContentData().getEncoding());
nodeEntity.setMimetype(pfNode.getContentData().getMimetype());
nodeEntity.setContentUrl(pfNode.getContentData().getContentUrl());
nodeEntity.setLength(pfNode.getContentData().getSize());
}
else if (node instanceof LayeredFileNode)
{
LayeredFileNode lfNode = (LayeredFileNode)node;
nodeEntity.setIndirection(lfNode.getIndirection());
nodeEntity.setIndirectionVersion(lfNode.getIndirectionVersion());
}
else if (node instanceof PlainDirectoryNode)
{
// no additional
}
else if (node instanceof LayeredDirectoryNode)
{
LayeredDirectoryNode ldNode = (LayeredDirectoryNode)node;
nodeEntity.setIndirection(ldNode.getIndirection());
nodeEntity.setIndirectionVersion(ldNode.getIndirectionVersion());
nodeEntity.setLayerId(ldNode.getLayerID());
nodeEntity.setPrimaryIndirection(ldNode.getPrimaryIndirection());
nodeEntity.setOpacity(ldNode.getOpacity());
}
else if (node instanceof DeletedNode)
{
DeletedNode dNode = (DeletedNode)node;
nodeEntity.setDeletedType(dNode.getDeletedType());
}
return nodeEntity;
}
private AVMNode convertNodeEntityToNode(AVMNodeEntity nodeEntity)
{
return convertNodeEntityToNode(nodeEntity, true);
}
private AVMNode convertNodeEntityToNode(AVMNodeEntity nodeEntity, boolean withStore)
{
AVMNodeImpl node = null;
if (nodeEntity.getType() == AVMNodeType.PLAIN_FILE)
{
node = new PlainFileNodeImpl();
ContentData cd = new ContentData(nodeEntity.getContentUrl(), nodeEntity.getMimetype(), nodeEntity.getLength(), nodeEntity.getEncoding());
((PlainFileNodeImpl)node).setContentData(cd);
}
else if (nodeEntity.getType() == AVMNodeType.PLAIN_DIRECTORY)
{
node = new PlainDirectoryNodeImpl();
// no additional
}
else if (nodeEntity.getType() == AVMNodeType.LAYERED_FILE)
{
node = new LayeredFileNodeImpl();
((LayeredFileNodeImpl)node).setIndirection(nodeEntity.getIndirection());
((LayeredFileNodeImpl)node).setIndirectionVersion(nodeEntity.getIndirectionVersion());
}
else if (nodeEntity.getType() == AVMNodeType.LAYERED_DIRECTORY)
{
node = new LayeredDirectoryNodeImpl();
((LayeredDirectoryNodeImpl)node).setIndirection(nodeEntity.getIndirection());
((LayeredDirectoryNodeImpl)node).setIndirectionVersion(nodeEntity.getIndirectionVersion());
((LayeredDirectoryNodeImpl)node).setPrimaryIndirection(nodeEntity.isPrimaryIndirection());
((LayeredDirectoryNodeImpl)node).setLayerID(nodeEntity.getLayerId());
((LayeredDirectoryNodeImpl)node).setOpacity(nodeEntity.getOpacity());
}
else if (nodeEntity.getType() == AVMNodeType.DELETED_NODE)
{
node = new DeletedNodeImpl();
((DeletedNodeImpl)node).setDeletedType(nodeEntity.getDeletedType());
}
else
{
// belts-and-braces
throw new AlfrescoRuntimeException("Unexpected node type: "+nodeEntity.getType());
}
node.setId(nodeEntity.getId());
node.setIsRoot(nodeEntity.isRoot());
node.setGuid(nodeEntity.getGuid());
node.setVersionID(nodeEntity.getVersion().intValue());
node.setVers(nodeEntity.getVers());
BasicAttributes ba = new BasicAttributesImpl();
ba.setAccessDate(nodeEntity.getAccessDate());
ba.setModDate(nodeEntity.getModifiedDate());
ba.setCreateDate(nodeEntity.getCreatedDate());
ba.setLastModifier(nodeEntity.getModifier());
ba.setCreator(nodeEntity.getCreator());
ba.setOwner(nodeEntity.getOwner());
node.setBasicAttributes(ba);
AVMStore store = null;
if (withStore)
{
if (nodeEntity.getStoreNewId() != null)
{
store = AVMDAOs.Instance().fAVMStoreDAO.getByID(nodeEntity.getStoreNewId());
}
}
node.setStoreNew(store);
DbAccessControlList acl = null;
if (nodeEntity.getAclId() != null)
{
acl = (DbAccessControlList) getHibernateTemplate().get(DbAccessControlListImpl.class, nodeEntity.getAclId());
}
node.setAcl(acl);
return node;
}
}

View File

@@ -0,0 +1,163 @@
/*
* Copyright (C) 2005-2009 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.ibatis;
import java.util.ArrayList;
import java.util.List;
import org.alfresco.repo.avm.AVMDAOs;
import org.alfresco.repo.avm.AVMNode;
import org.alfresco.repo.avm.AVMStore;
import org.alfresco.repo.avm.AVMStoreDAO;
import org.alfresco.repo.avm.AVMStoreImpl;
import org.alfresco.repo.avm.DirectoryNode;
import org.alfresco.repo.domain.DbAccessControlList;
import org.alfresco.repo.domain.avm.AVMStoreEntity;
import org.alfresco.repo.domain.hibernate.DbAccessControlListImpl;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
/**
* iBATIS DAO wrapper for AVMStore
*
* @author janv
*/
class AVMStoreDAOIbatis extends HibernateDaoSupport implements AVMStoreDAO
{
/* (non-Javadoc)
* @see org.alfresco.repo.avm.AVMStoreDAO#save(org.alfresco.repo.avm.AVMStore)
*/
public void save(AVMStore store)
{
AVMStoreEntity storeEntity = AVMDAOs.Instance().newAVMStoreDAO.createStore(store.getName());
((AVMStoreImpl)store).setId(storeEntity.getId());
}
/* (non-Javadoc)
* @see org.alfresco.repo.avm.AVMStoreDAO#delete(org.alfresco.repo.avm.AVMStore)
*/
public void delete(AVMStore store)
{
AVMDAOs.Instance().newAVMStoreDAO.deleteStore(store.getId());
}
/* (non-Javadoc)
* @see org.alfresco.repo.avm.AVMStoreDAO#getAll()
*/
public List<AVMStore> getAll()
{
List<AVMStoreEntity> storeEntities = AVMDAOs.Instance().newAVMStoreDAO.getAllStores();
List<AVMStore> result = new ArrayList<AVMStore>(storeEntities.size());
for (AVMStoreEntity storeEntity : storeEntities)
{
result.add(getByID(storeEntity.getId()));
}
return result;
}
/* (non-Javadoc)
* @see org.alfresco.repo.avm.AVMStoreDAO#getByName(java.lang.String)
*/
public AVMStore getByName(String name)
{
AVMStoreEntity storeEntity = AVMDAOs.Instance().newAVMStoreDAO.getStore(name);
return convertStoreEntityToStore(storeEntity);
}
/* (non-Javadoc)
* @see org.alfresco.repo.avm.AVMStoreDAO#getByRoot(org.alfresco.repo.avm.AVMNode)
*/
public AVMStore getByRoot(AVMNode root)
{
AVMStoreEntity storeEntity = AVMDAOs.Instance().newAVMStoreDAO.getStoreByRoot(root.getId());
return convertStoreEntityToStore(storeEntity);
}
/* (non-Javadoc)
* @see org.alfresco.repo.avm.AVMStoreDAO#update(org.alfresco.repo.avm.AVMStore)
*/
public void update(AVMStore store)
{
AVMStoreEntity storeEntity = convertStoreToStoreEntity(store);
AVMDAOs.Instance().newAVMStoreDAO.updateStore(storeEntity);
((AVMStoreImpl)store).setVers(storeEntity.getVers());
}
/* (non-Javadoc)
* @see org.alfresco.repo.avm.AVMStoreDAO#getByID(long)
*/
public AVMStore getByID(long id)
{
AVMStoreEntity storeEntity = AVMDAOs.Instance().newAVMStoreDAO.getStore(id);
return convertStoreEntityToStore(storeEntity);
}
/* (non-Javadoc)
* @see org.alfresco.repo.avm.AVMStoreDAO#invalidateCache()
*/
public void invalidateCache()
{
AVMDAOs.Instance().newAVMStoreDAO.clearStoreEntityCache();
}
private AVMStore convertStoreEntityToStore(AVMStoreEntity storeEntity)
{
if (storeEntity == null)
{
return null;
}
AVMStoreImpl store = new AVMStoreImpl();
store.setId(storeEntity.getId());
store.setName(storeEntity.getName());
store.setNextVersionID(storeEntity.getVersion().intValue());
store.setVers(storeEntity.getVers());
DbAccessControlList acl = null;
if (storeEntity.getAclId() != null)
{
acl = (DbAccessControlList) getHibernateTemplate().get(DbAccessControlListImpl.class, storeEntity.getAclId());
}
store.setStoreAcl(acl);
DirectoryNode rootNode = (DirectoryNode) ((AVMNodeDAOIbatis)AVMDAOs.Instance().fAVMNodeDAO).getRootNodeByID(store, storeEntity.getRootNodeId());
store.setRoot(rootNode);
return store;
}
private AVMStoreEntity convertStoreToStoreEntity(AVMStore store)
{
AVMStoreEntity storeEntity = new AVMStoreEntity();
storeEntity.setId(store.getId());
storeEntity.setName(store.getName());
storeEntity.setRootNodeId(store.getRoot().getId());
storeEntity.setVersion(new Long(store.getNextVersionID()));
storeEntity.setVers(((AVMStoreImpl)store).getVers());
storeEntity.setAclId((store.getStoreAcl() == null ? null : store.getStoreAcl().getId()));
return storeEntity;
}
}

View File

@@ -0,0 +1,143 @@
/*
* Copyright (C) 2005-2009 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.ibatis;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.alfresco.repo.avm.AVMDAOs;
import org.alfresco.repo.avm.AVMStore;
import org.alfresco.repo.avm.AVMStoreProperty;
import org.alfresco.repo.avm.AVMStorePropertyDAO;
import org.alfresco.repo.avm.AVMStorePropertyImpl;
import org.alfresco.repo.domain.PropertyValue;
import org.alfresco.repo.domain.QNameDAO;
import org.alfresco.repo.domain.avm.AVMStorePropertyEntity;
import org.alfresco.service.namespace.QName;
import org.alfresco.util.Pair;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
/**
* iBATIS DAO wrapper for AVMStoreProperty
*
* @author janv
*/
class AVMStorePropertyDAOIbatis extends HibernateDaoSupport implements AVMStorePropertyDAO
{
/* (non-Javadoc)
* @see org.alfresco.repo.avm.AVMStorePropertyDAO#save(org.alfresco.repo.avm.AVMStoreProperty)
*/
public void save(AVMStoreProperty prop)
{
AVMDAOs.Instance().newAVMStoreDAO.createOrUpdateStoreProperty(prop.getStore().getId(), prop.getQname(), prop.getValue());
}
/* (non-Javadoc)
* @see org.alfresco.repo.avm.AVMStorePropertyDAO#get(org.alfresco.repo.avm.AVMStore, org.alfresco.service.namespace.QName)
*/
public PropertyValue get(AVMStore store, QName name)
{
return AVMDAOs.Instance().newAVMStoreDAO.getStoreProperty(store.getId(), name);
}
/* (non-Javadoc)
* @see org.alfresco.repo.avm.AVMStorePropertyDAO#get(org.alfresco.repo.avm.AVMStore)
*/
public Map<QName, PropertyValue> get(AVMStore store)
{
return AVMDAOs.Instance().newAVMStoreDAO.getStoreProperties(store.getId());
}
/**
* Query store properties by key pattern.
* @param store The store.
* @param keyPattern An sql 'like' pattern wrapped up in a QName
* @return A List of matching AVMStoreProperties.
*/
public Map<QName, PropertyValue> queryByKeyPattern(AVMStore store, QName keyPattern)
{
// Get the URI and LocalName parts
String uri = keyPattern.getNamespaceURI();
if (uri == null || uri.length() == 0)
{
uri = "%";
}
String localName = keyPattern.getLocalName();
if (localName == null || localName.length() == 0)
{
localName = "%";
}
return AVMDAOs.Instance().newAVMStoreDAO.getStorePropertiesByStoreAndKeyPattern(store.getId(), uri, localName);
}
/**
* Query all stores' properties by key pattern.
* @param keyPattern The sql 'like' pattern wrapped up in a QName
* @return A List of match AVMStoreProperties.
*/
public Map<String, Map<QName, PropertyValue>> queryByKeyPattern(QName keyPattern)
{
// Get the URI and LocalName parts
String uri = keyPattern.getNamespaceURI();
if (uri == null || uri.length() == 0)
{
uri = "%";
}
String localName = keyPattern.getLocalName();
if (localName == null || localName.length() == 0)
{
localName = "%";
}
return AVMDAOs.Instance().newAVMStoreDAO.getStorePropertiesByKeyPattern(uri, localName);
}
/* (non-Javadoc)
* @see org.alfresco.repo.avm.AVMStorePropertyDAO#update(org.alfresco.repo.avm.AVMStoreProperty)
*/
public void update(AVMStoreProperty prop)
{
// NOOP
}
/* (non-Javadoc)
* @see org.alfresco.repo.avm.AVMStorePropertyDAO#delete(org.alfresco.repo.avm.AVMStore, org.alfresco.service.namespace.QName)
*/
public void delete(AVMStore store, QName name)
{
AVMDAOs.Instance().newAVMStoreDAO.deleteStoreProperty(store.getId(), name);
}
/* (non-Javadoc)
* @see org.alfresco.repo.avm.AVMStorePropertyDAO#delete(org.alfresco.repo.avm.AVMStore)
*/
public void delete(AVMStore store)
{
AVMDAOs.Instance().newAVMStoreDAO.deleteStoreProperties(store.getId());
}
}

View File

@@ -0,0 +1,172 @@
/*
* Copyright (C) 2005-2009 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.ibatis;
import java.util.ArrayList;
import java.util.List;
import org.alfresco.repo.avm.AVMDAOs;
import org.alfresco.repo.avm.AVMNode;
import org.alfresco.repo.avm.ChildEntry;
import org.alfresco.repo.avm.ChildEntryDAO;
import org.alfresco.repo.avm.ChildEntryImpl;
import org.alfresco.repo.avm.ChildKey;
import org.alfresco.repo.avm.DirectoryNode;
import org.alfresco.repo.domain.avm.AVMChildEntryEntity;
/**
* iBATIS DAO wrapper for ChildEntry
*
* @author jan
*/
class ChildEntryDAOIbatis implements ChildEntryDAO
{
/* (non-Javadoc)
* @see org.alfresco.repo.avm.ChildEntryDAO#save(org.alfresco.repo.avm.ChildEntry)
*/
public void save(ChildEntry entry)
{
AVMDAOs.Instance().newAVMNodeLinksDAO.createChildEntry(entry.getKey().getParent().getId(), entry.getKey().getName(), entry.getChild().getId());
}
/* (non-Javadoc)
* @see org.alfresco.repo.avm.ChildEntryDAO#get(org.alfresco.repo.avm.ChildKey)
*/
public ChildEntry get(ChildKey key)
{
AVMChildEntryEntity childEntryEntity = AVMDAOs.Instance().newAVMNodeLinksDAO.getChildEntry(key.getParent().getId(), key.getName());
return getChildEntryForParent(key.getParent(), childEntryEntity);
}
/* (non-Javadoc)
* @see org.alfresco.repo.avm.ChildEntryDAO#getByParent(org.alfresco.repo.avm.DirectoryNode, java.lang.String)
*/
public List<ChildEntry> getByParent(DirectoryNode parent, String childNamePattern)
{
// TODO - add option for childNamePattern
List<AVMChildEntryEntity> childEntryEntities = AVMDAOs.Instance().newAVMNodeLinksDAO.getChildEntriesByParent(parent.getId());
List<ChildEntry> result = new ArrayList<ChildEntry>(childEntryEntities.size());
for (AVMChildEntryEntity childEntryEntity : childEntryEntities)
{
result.add(getChildEntryForParent(parent, childEntryEntity));
}
return result;
}
/* (non-Javadoc)
* @see org.alfresco.repo.avm.ChildEntryDAO#getByParentChild(org.alfresco.repo.avm.DirectoryNode, org.alfresco.repo.avm.AVMNode)
*/
public boolean existsParentChild(DirectoryNode parent, AVMNode child)
{
AVMChildEntryEntity childEntryEntity = AVMDAOs.Instance().newAVMNodeLinksDAO.getChildEntry(parent.getId(), child.getId());
return (childEntryEntity != null);
}
/* (non-Javadoc)
* @see org.alfresco.repo.avm.ChildEntryDAO#getByChild(org.alfresco.repo.avm.AVMNode)
*/
public List<ChildEntry> getByChild(AVMNode child)
{
List<AVMChildEntryEntity> childEntryEntities = AVMDAOs.Instance().newAVMNodeLinksDAO.getChildEntriesByChild(child.getId());
List<ChildEntry> result = new ArrayList<ChildEntry>(childEntryEntities.size());
for (AVMChildEntryEntity childEntryEntity : childEntryEntities)
{
result.add(getChildEntryForChild(child, childEntryEntity));
}
return result;
}
/* (non-Javadoc)
* @see org.alfresco.repo.avm.ChildEntryDAO#update(org.alfresco.repo.avm.ChildEntry)
*/
public void update(ChildEntry child)
{
// NOOP
}
/* (non-Javadoc)
* @see org.alfresco.repo.avm.ChildEntryDAO#delete(org.alfresco.repo.avm.ChildEntry)
*/
public void delete(ChildEntry child)
{
AVMChildEntryEntity childEntryEntity = new AVMChildEntryEntity();
childEntryEntity.setParentNodeId(child.getKey().getParent().getId());
childEntryEntity.setName(child.getKey().getName());
childEntryEntity.setChildNodeId(child.getChild().getId());
AVMDAOs.Instance().newAVMNodeLinksDAO.deleteChildEntry(childEntryEntity);
}
/* (non-Javadoc)
* @see org.alfresco.repo.avm.ChildEntryDAO#deleteByParent(org.alfresco.repo.avm.AVMNode)
*/
public void deleteByParent(AVMNode parent)
{
AVMDAOs.Instance().newAVMNodeLinksDAO.deleteChildEntriesByParent(parent.getId());
}
/* (non-Javadoc)
* @see org.alfresco.repo.avm.ChildEntryDAO#evict(org.alfresco.repo.avm.ChildEntry)
*/
public void evict(ChildEntry entry)
{
// NOOP
}
private ChildEntry getChildEntryForParent(DirectoryNode parentNode, AVMChildEntryEntity childEntryEntity)
{
if (childEntryEntity == null)
{
return null;
}
AVMNode childNode = AVMDAOs.Instance().fAVMNodeDAO.getByID(childEntryEntity.getChildId());
ChildEntry ce = new ChildEntryImpl(new ChildKey(parentNode, childEntryEntity.getName()), childNode);
ce.setKey(new ChildKey(parentNode, childEntryEntity.getName()));
ce.setChild(childNode);
return ce;
}
private ChildEntry getChildEntryForChild(AVMNode childNode, AVMChildEntryEntity childEntryEntity)
{
if (childEntryEntity == null)
{
return null;
}
DirectoryNode parentNode = (DirectoryNode)AVMDAOs.Instance().fAVMNodeDAO.getByID(childEntryEntity.getParentNodeId());
ChildEntry ce = new ChildEntryImpl(new ChildKey(parentNode, childEntryEntity.getName()), childNode);
ce.setKey(new ChildKey(parentNode, childEntryEntity.getName()));
ce.setChild(childNode);
return ce;
}
}

View File

@@ -0,0 +1,100 @@
/*
* Copyright (C) 2005-2009 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.ibatis;
import java.util.ArrayList;
import java.util.List;
import org.alfresco.repo.avm.AVMDAOs;
import org.alfresco.repo.avm.AVMNode;
import org.alfresco.repo.avm.HistoryLink;
import org.alfresco.repo.avm.HistoryLinkDAO;
import org.alfresco.repo.avm.HistoryLinkImpl;
import org.alfresco.repo.domain.avm.AVMHistoryLinkEntity;
/**
* iBATIS DAO wrapper for HistoryLink
*
* @author janv
*/
class HistoryLinkDAOIbatis implements HistoryLinkDAO
{
/* (non-Javadoc)
* @see org.alfresco.repo.avm.HistoryLinkDAO#save(org.alfresco.repo.avm.HistoryLink)
*/
public void save(HistoryLink link)
{
AVMDAOs.Instance().newAVMNodeLinksDAO.createHistoryLink(link.getAncestor().getId(), link.getDescendent().getId());
}
/* (non-Javadoc)
* @see org.alfresco.repo.avm.HistoryLinkDAO#getByDescendent(org.alfresco.repo.avm.AVMNode)
*/
public HistoryLink getByDescendent(AVMNode descendent)
{
AVMHistoryLinkEntity hlEntity = AVMDAOs.Instance().newAVMNodeLinksDAO.getHistoryLinkByDescendent(descendent.getId());
if (hlEntity == null)
{
return null;
}
AVMNode ancestor = AVMDAOs.Instance().fAVMNodeDAO.getByID(hlEntity.getAncestorNodeId());
HistoryLink hl = new HistoryLinkImpl();
hl.setAncestor(ancestor);
hl.setDescendent(descendent);
return hl;
}
/* (non-Javadoc)
* @see org.alfresco.repo.avm.HistoryLinkDAO#getByAncestor(org.alfresco.repo.avm.AVMNode)
*/
public List<HistoryLink> getByAncestor(AVMNode ancestor)
{
List<AVMHistoryLinkEntity> hlEntities = AVMDAOs.Instance().newAVMNodeLinksDAO.getHistoryLinksByAncestor(ancestor.getId());
List<HistoryLink> hls = new ArrayList<HistoryLink>(hlEntities.size());
for (AVMHistoryLinkEntity hlEntity : hlEntities)
{
AVMNode descendent = AVMDAOs.Instance().fAVMNodeDAO.getByID(hlEntity.getDescendentNodeId());
HistoryLink hl = new HistoryLinkImpl();
hl.setAncestor(ancestor);
hl.setDescendent(descendent);
hls.add(hl);
}
return hls;
}
/* (non-Javadoc)
* @see org.alfresco.repo.avm.HistoryLinkDAO#delete(org.alfresco.repo.avm.HistoryLink)
*/
public void delete(HistoryLink link)
{
AVMDAOs.Instance().newAVMNodeLinksDAO.deleteHistoryLink(link.getAncestor().getId(), link.getDescendent().getId());
}
}

View File

@@ -0,0 +1,100 @@
/*
* Copyright (C) 2005-2009 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.ibatis;
import java.util.ArrayList;
import java.util.List;
import org.alfresco.repo.avm.AVMDAOs;
import org.alfresco.repo.avm.AVMNode;
import org.alfresco.repo.avm.MergeLink;
import org.alfresco.repo.avm.MergeLinkDAO;
import org.alfresco.repo.avm.MergeLinkImpl;
import org.alfresco.repo.domain.avm.AVMMergeLinkEntity;
/**
* iBATIS DAO wrapper for MergeLink
*
* @author janv
*/
class MergeLinkDAOIbatis implements MergeLinkDAO
{
/* (non-Javadoc)
* @see org.alfresco.repo.avm.MergeLinkDAO#save(org.alfresco.repo.avm.MergeLink)
*/
public void save(MergeLink link)
{
AVMDAOs.Instance().newAVMNodeLinksDAO.createMergeLink(link.getMfrom().getId(), link.getMto().getId());
}
/* (non-Javadoc)
* @see org.alfresco.repo.avm.MergeLinkDAO#getByTo(org.alfresco.repo.avm.AVMNode)
*/
public MergeLink getByTo(AVMNode to)
{
AVMMergeLinkEntity mlEntity = AVMDAOs.Instance().newAVMNodeLinksDAO.getMergeLinkByTo(to.getId());
if (mlEntity == null)
{
return null;
}
AVMNode from = AVMDAOs.Instance().fAVMNodeDAO.getByID(mlEntity.getMergeFromNodeId());
MergeLink ml = new MergeLinkImpl();
ml.setMfrom(from);
ml.setMto(to);
return ml;
}
/* (non-Javadoc)
* @see org.alfresco.repo.avm.MergeLinkDAO#getByFrom(org.alfresco.repo.avm.AVMNode)
*/
public List<MergeLink> getByFrom(AVMNode from)
{
List<AVMMergeLinkEntity> mlEntities = AVMDAOs.Instance().newAVMNodeLinksDAO.getMergeLinksByFrom(from.getId());
List<MergeLink> mls = new ArrayList<MergeLink>(mlEntities.size());
for (AVMMergeLinkEntity mlEntity : mlEntities)
{
AVMNode to = AVMDAOs.Instance().fAVMNodeDAO.getByID(mlEntity.getMergeToNodeId());
MergeLink ml = new MergeLinkImpl();
ml.setMfrom(from);
ml.setMto(to);
mls.add(ml);
}
return mls;
}
/* (non-Javadoc)
* @see org.alfresco.repo.avm.MergeLinkDAO#delete(org.alfresco.repo.avm.MergeLink)
*/
public void delete(MergeLink link)
{
AVMDAOs.Instance().newAVMNodeLinksDAO.deleteMergeLink(link.getMfrom().getId(), link.getMto().getId());
}
}

View File

@@ -0,0 +1,81 @@
/*
* Copyright (C) 2005-2009 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.ibatis;
import java.util.ArrayList;
import java.util.List;
import org.alfresco.repo.avm.AVMDAOs;
import org.alfresco.repo.avm.VersionLayeredNodeEntry;
import org.alfresco.repo.avm.VersionLayeredNodeEntryDAO;
import org.alfresco.repo.avm.VersionLayeredNodeEntryImpl;
import org.alfresco.repo.avm.VersionRoot;
import org.alfresco.repo.domain.avm.AVMVersionLayeredNodeEntryEntity;
/**
* iBATIS DAO wrapper for VersionLayeredNodeEntry
*
* @author janv
*/
class VersionLayeredNodeEntryDAOIbatis implements VersionLayeredNodeEntryDAO
{
/* (non-Javadoc)
* @see org.alfresco.repo.avm.VersionLayeredNodeEntryDAO#delete(org.alfresco.repo.avm.VersionRoot)
*/
public void delete(VersionRoot version)
{
AVMDAOs.Instance().newAVMVersionRootDAO.deleteVersionLayeredNodeEntries(version.getId());
}
/* (non-Javadoc)
* @see org.alfresco.repo.avm.VersionLayeredNodeEntryDAO#get(org.alfresco.repo.avm.VersionRoot)
*/
public List<VersionLayeredNodeEntry> get(VersionRoot version)
{
List<AVMVersionLayeredNodeEntryEntity> vlneEntities = AVMDAOs.Instance().newAVMVersionRootDAO.getVersionLayeredNodeEntries(version.getId());
List<VersionLayeredNodeEntry> vlnes = new ArrayList<VersionLayeredNodeEntry>(vlneEntities.size());
for(AVMVersionLayeredNodeEntryEntity vlneEntity : vlneEntities)
{
VersionLayeredNodeEntryImpl vlne = new VersionLayeredNodeEntryImpl();
vlne.setVersion(version);
vlne.setMd5Sum(vlneEntity.getMd5sum());
vlne.setPath(vlneEntity.getPath());
vlnes.add(vlne);
}
return vlnes;
}
/* (non-Javadoc)
* @see org.alfresco.repo.avm.VersionLayeredNodeEntryDAO#save(org.alfresco.repo.avm.VersionLayeredNodeEntry)
*/
public void save(VersionLayeredNodeEntry entry)
{
AVMDAOs.Instance().newAVMVersionRootDAO.createVersionLayeredNodeEntry(entry.getVersion().getId(), entry.getMd5Sum(), entry.getPath());
}
}

View File

@@ -0,0 +1,191 @@
/*
* Copyright (C) 2005-2009 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.ibatis;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.alfresco.repo.avm.AVMDAOs;
import org.alfresco.repo.avm.AVMNode;
import org.alfresco.repo.avm.AVMStore;
import org.alfresco.repo.avm.DirectoryNode;
import org.alfresco.repo.avm.VersionRoot;
import org.alfresco.repo.avm.VersionRootDAO;
import org.alfresco.repo.avm.VersionRootImpl;
import org.alfresco.repo.domain.avm.AVMVersionRootEntity;
/**
* iBATIS DAO wrapper for VersionRoot
*
* @author janv
*/
class VersionRootDAOIbatis implements VersionRootDAO
{
/* (non-Javadoc)
* @see org.alfresco.repo.avm.VersionRootDAO#save(org.alfresco.repo.avm.VersionRoot)
*/
public void save(VersionRoot vr)
{
AVMVersionRootEntity vrEntity = AVMDAOs.Instance().newAVMVersionRootDAO.createVersionRoot(
vr.getAvmStore().getId(),
vr.getRoot().getId(),
vr.getVersionID(),
vr.getCreator(),
vr.getTag(),
vr.getDescription());
((VersionRootImpl)vr).setId(vrEntity.getId());
}
/* (non-Javadoc)
* @see org.alfresco.repo.avm.VersionRootDAO#update(org.alfresco.repo.avm.VersionRoot)
*/
public void update(VersionRoot vr)
{
// note: tag and description only
AVMDAOs.Instance().newAVMVersionRootDAO.updateVersionRoot(convertVersionRootToVersionRootEntity(vr));
}
/* (non-Javadoc)
* @see org.alfresco.repo.avm.VersionRootDAO#delete(org.alfresco.repo.avm.VersionRoot)
*/
public void delete(VersionRoot vr)
{
AVMDAOs.Instance().newAVMVersionRootDAO.deleteVersionRoot(vr.getId());
}
/* (non-Javadoc)
* @see org.alfresco.repo.avm.VersionRootDAO#getAllInAVMStore(org.alfresco.repo.avm.AVMStore)
*/
public List<VersionRoot> getAllInAVMStore(AVMStore store)
{
List<AVMVersionRootEntity> vrEntities = AVMDAOs.Instance().newAVMVersionRootDAO.getAllInStore(store.getId());
List<VersionRoot> vrs = new ArrayList<VersionRoot>(vrEntities.size());
for (AVMVersionRootEntity vrEntity : vrEntities)
{
vrs.add(convertVersionRootEntityToVersionRoot(vrEntity));
}
return vrs;
}
/* (non-Javadoc)
* @see org.alfresco.repo.avm.VersionRootDAO#getByDates(org.alfresco.repo.avm.AVMStore, java.util.Date, java.util.Date)
*/
public List<VersionRoot> getByDates(AVMStore store, Date from, Date to)
{
List<AVMVersionRootEntity> vrEntities = AVMDAOs.Instance().newAVMVersionRootDAO.getByDates(store.getId(), from, to);
List<VersionRoot> vrs = new ArrayList<VersionRoot>(vrEntities.size());
for (AVMVersionRootEntity vrEntity : vrEntities)
{
vrs.add(convertVersionRootEntityToVersionRoot(vrEntity));
}
return vrs;
}
/* (non-Javadoc)
* @see org.alfresco.repo.avm.VersionRootDAO#getByVersionID(org.alfresco.repo.avm.AVMStore, int)
*/
public synchronized VersionRoot getByVersionID(AVMStore store, int id)
{
AVMVersionRootEntity vrEntity = AVMDAOs.Instance().newAVMVersionRootDAO.getByVersionID(store.getId(), id);
return convertVersionRootEntityToVersionRoot(vrEntity);
}
/* (non-Javadoc)
* @see org.alfresco.repo.avm.VersionRootDAO#getByRoot(org.alfresco.repo.avm.AVMNode)
*/
public VersionRoot getByRoot(AVMNode root)
{
AVMVersionRootEntity vrEntity = AVMDAOs.Instance().newAVMVersionRootDAO.getByRoot(root.getId());
return convertVersionRootEntityToVersionRoot(vrEntity);
}
/* (non-Javadoc)
* @see org.alfresco.repo.avm.VersionRootDAO#getMaxVersion(org.alfresco.repo.avm.AVMStore)
*/
public VersionRoot getMaxVersion(AVMStore rep)
{
AVMVersionRootEntity vrEntity = AVMDAOs.Instance().newAVMVersionRootDAO.getMaxVersion(rep.getId());
return convertVersionRootEntityToVersionRoot(vrEntity);
}
/* (non-Javadoc)
* @see org.alfresco.repo.avm.VersionRootDAO#getMaxVersionID(org.alfresco.repo.avm.AVMStore)
*/
public Integer getMaxVersionID(AVMStore store)
{
Long maxVersionId = AVMDAOs.Instance().newAVMVersionRootDAO.getMaxVersionID(store.getId());
if (maxVersionId == null)
{
return null;
}
return new Integer(maxVersionId.intValue());
}
private AVMVersionRootEntity convertVersionRootToVersionRootEntity(VersionRoot vr)
{
if (vr == null)
{
return null;
}
AVMVersionRootEntity vrEntity = new AVMVersionRootEntity();
vrEntity.setCreatedDate(vr.getCreateDate());
vrEntity.setCreator(vr.getCreator());
vrEntity.setDescription(vr.getDescription());
vrEntity.setId(vr.getId());
vrEntity.setRootNodeId(vr.getRoot().getId());
vrEntity.setStoreId(vr.getAvmStore().getId());
vrEntity.setTag(vr.getTag());
vrEntity.setVersion(vr.getVersionID());
return vrEntity;
}
private VersionRoot convertVersionRootEntityToVersionRoot(AVMVersionRootEntity vrEntity)
{
if (vrEntity == null)
{
return null;
}
AVMStore store = AVMDAOs.Instance().fAVMStoreDAO.getByID(vrEntity.getStoreId());
AVMNode rootNode = AVMDAOs.Instance().fAVMNodeDAO.getByID(vrEntity.getRootNodeId());
VersionRootImpl vr = new VersionRootImpl(
store,
(DirectoryNode)rootNode,
vrEntity.getVersion().intValue(),
vrEntity.getCreatedDate(),
vrEntity.getCreator(),
vrEntity.getTag(),
vrEntity.getDescription());
vr.setId(vrEntity.getId());
return vr;
}
}