mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-07 17:49:17 +00:00
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:
502
source/java/org/alfresco/repo/avm/ibatis/AVMNodeDAOIbatis.java
Normal file
502
source/java/org/alfresco/repo/avm/ibatis/AVMNodeDAOIbatis.java
Normal 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;
|
||||
}
|
||||
}
|
163
source/java/org/alfresco/repo/avm/ibatis/AVMStoreDAOIbatis.java
Normal file
163
source/java/org/alfresco/repo/avm/ibatis/AVMStoreDAOIbatis.java
Normal 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;
|
||||
}
|
||||
}
|
@@ -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());
|
||||
}
|
||||
}
|
@@ -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;
|
||||
}
|
||||
}
|
@@ -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());
|
||||
}
|
||||
}
|
100
source/java/org/alfresco/repo/avm/ibatis/MergeLinkDAOIbatis.java
Normal file
100
source/java/org/alfresco/repo/avm/ibatis/MergeLinkDAOIbatis.java
Normal 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());
|
||||
}
|
||||
}
|
@@ -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());
|
||||
}
|
||||
}
|
@@ -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;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user