SAIL-294: DAO refactoring - Ripping out Hibernate entity classes and refactor patches

git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@20753 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Derek Hulley
2010-06-22 13:44:03 +00:00
parent db40093488
commit 472fde8509
53 changed files with 420 additions and 7687 deletions

View File

@@ -19,11 +19,15 @@
package org.alfresco.repo.domain.patch;
import java.util.List;
import java.util.Map;
import org.alfresco.repo.domain.avm.AVMNodeEntity;
import org.alfresco.repo.domain.contentdata.ContentDataDAO;
import org.alfresco.service.cmr.repository.ContentData;
import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.cmr.repository.StoreRef;
import org.alfresco.service.namespace.QName;
import org.alfresco.util.Pair;
/**
* Additional DAO services for patches
@@ -136,4 +140,40 @@ public interface PatchDAO
* @return Returns the names of authorities with incorrect CRC values
*/
public List<String> getAuthoritiesWithNonUtf8Crcs();
/**
* @return Returns the number child association rows
*/
public int getChildAssocCount();
/**
* The results map contains:
* <pre>
* <![CDATA[
<result property="id" column="id" jdbcType="BIGINT" javaType="java.lang.Long"/>
<result property="typeQNameId" column="type_qname_id" jdbcType="BIGINT" javaType="java.lang.Long"/>
<result property="qnameNamespaceId" column="qname_ns_id" jdbcType="BIGINT" javaType="java.lang.Long"/>
<result property="qnameLocalName" column="qname_localname" jdbcType="VARCHAR" javaType="java.lang.String"/>
<result property="childNodeNameCrc" column="child_node_name_crc" jdbcType="BIGINT" javaType="java.lang.Long"/>
<result property="qnameCrc" column="qname_crc" jdbcType="BIGINT" javaType="java.lang.Long"/>
<result property="childNodeUuid" column="child_node_uuid" jdbcType="VARCHAR" javaType="java.lang.String"/>
<result property="childNodeName" column="child_node_name" jdbcType="VARCHAR" javaType="java.lang.String"/>
]]>
* </pre>
* @param minAssocId the minimum child assoc ID
* @param maxResults the number of child associations to fetch
* @return Returns child associations <b>that need fixing</b>
*/
public List<Map<String, Object>> getChildAssocsForCrcFix(Long minAssocId, int maxResults);
public int updateChildAssocCrc(Long assocId, Long childNodeNameCrc, Long qnameCrc);
/**
* Query for a list of nodes that have a given type and share the same name pattern (SQL LIKE syntax)
*
* @param typeQName the node type
* @param namePattern the SQL LIKE pattern
* @return Returns the node ID and node name
*/
public List<Pair<NodeRef, String>> getNodesOfTypeWithNamePattern(QName typeQName, String namePattern);
}

View File

@@ -21,6 +21,7 @@ package org.alfresco.repo.domain.patch.ibatis;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -32,7 +33,10 @@ import org.alfresco.repo.domain.CrcHelper;
import org.alfresco.repo.domain.avm.AVMNodeEntity;
import org.alfresco.repo.domain.patch.AbstractPatchDAOImpl;
import org.alfresco.repo.domain.qname.QNameDAO;
import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.cmr.repository.StoreRef;
import org.alfresco.service.namespace.QName;
import org.alfresco.util.Pair;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.orm.ibatis.SqlMapClientTemplate;
@@ -59,20 +63,24 @@ public class PatchDAOImpl extends AbstractPatchDAOImpl
private static final String SELECT_ADM_MAX_NODE_ID = "alfresco.patch.select_admMaxNodeId";
private static final String SELECT_AVM_NODES_WITH_OLD_CONTENT_PROPERTIES = "alfresco.patch.select_avmNodesWithOldContentProperties";
private static final String SELECT_ADM_OLD_CONTENT_PROPERTIES = "alfresco.patch.select_admOldContentProperties";
private static final String SELECT_USERS_WITHOUT_USAGE_PROP = "alfresco.usage.select_GetUsersWithoutUsageProp";
private static final String SELECT_AUTHORITIES_AND_CRC = "alfresco.patch.select_authoritiesAndCrc";
private static final String SELECT_PERMISSIONS_ALL_ACL_IDS = "alfresco.permissions.select_AllAclIds";
private static final String SELECT_PERMISSIONS_USED_ACL_IDS = "alfresco.permissions.select_UsedAclIds";
private static final String SELECT_CHILD_ASSOCS_COUNT = "alfresco.patch.select_allChildAssocsCount";
private static final String SELECT_CHILD_ASSOCS_FOR_CRCS = "alfresco.patch.select_allChildAssocsForCrcs";
private static final String SELECT_NODES_BY_TYPE_AND_NAME_PATTERN = "alfresco.patch.select_nodesByTypeAndNamePattern";
private static final String UPDATE_ADM_OLD_CONTENT_PROPERTY = "alfresco.patch.update_admOldContentProperty";
private static final String UPDATE_CONTENT_MIMETYPE_ID = "alfresco.patch.update_contentMimetypeId";
private static final String UPDATE_AVM_NODE_LIST_NULLIFY_ACL = "alfresco.avm.update_AVMNodeList_nullifyAcl";
private static final String UPDATE_AVM_NODE_LIST_SET_ACL = "alfresco.avm.update_AVMNodeList_setAcl";
private static final String SELECT_USERS_WITHOUT_USAGE_PROP = "alfresco.usage.select_GetUsersWithoutUsageProp";
private static final String UPDATE_CHILD_ASSOC_CRC = "alfresco.patch.update_childAssocCrc";
private static final String SELECT_PERMISSIONS_MAX_ACL_ID = "alfresco.permissions.select_MaxAclId";
private static final String SELECT_PERMISSIONS_DM_NODE_COUNT = "alfresco.permissions.select_DmNodeCount";
private static final String SELECT_PERMISSIONS_DM_NODE_COUNT_WITH_NEW_ACLS = "alfresco.permissions.select_DmNodeCountWherePermissionsHaveChanged";
private static final String SELECT_PERMISSIONS_ALL_ACL_IDS = "alfresco.permissions.select_AllAclIds";
private static final String SELECT_PERMISSIONS_USED_ACL_IDS = "alfresco.permissions.select_UsedAclIds";
private static final String DELETE_PERMISSIONS_UNUSED_ACES = "alfresco.permissions.delete_UnusedAces";
private static final String DELETE_PERMISSIONS_ACL_LIST = "alfresco.permissions.delete_AclList";
private static final String DELETE_PERMISSIONS_ACL_MEMBERS_FOR_ACL_LIST = "alfresco.permissions.delete_AclMembersForAclList";
@@ -438,4 +446,73 @@ public class PatchDAOImpl extends AbstractPatchDAOImpl
// Done
return results;
}
public int getChildAssocCount()
{
return (Integer) template.queryForObject(SELECT_CHILD_ASSOCS_COUNT);
}
@SuppressWarnings("unchecked")
public List<Map<String, Object>> getChildAssocsForCrcFix(Long minAssocId, int maxResults)
{
Long qnameId = qnameDAO.getOrCreateQName(ContentModel.PROP_NAME).getFirst();
IdsEntity entity = new IdsEntity();
entity.setIdOne(qnameId);
entity.setIdTwo(minAssocId);
List<Map<String, Object>> results = template.queryForList(SELECT_CHILD_ASSOCS_FOR_CRCS, entity, 0, maxResults);
// Done
return results;
}
public int updateChildAssocCrc(Long assocId, Long childNodeNameCrc, Long qnameCrc)
{
Map<String, Object> params = new HashMap<String, Object>();
params.put("id", assocId);
params.put("childNodeNameCrc", childNodeNameCrc);
params.put("qnameCrc", qnameCrc);
return template.update(UPDATE_CHILD_ASSOC_CRC, params);
}
public List<Pair<NodeRef, String>> getNodesOfTypeWithNamePattern(QName typeQName, String namePattern)
{
Pair<Long, QName> typeQNamePair = qnameDAO.getQName(typeQName);
if (typeQNamePair == null)
{
// No point querying
return Collections.emptyList();
}
Long typeQNameId = typeQNamePair.getFirst();
Pair<Long, QName> propQNamePair = qnameDAO.getQName(ContentModel.PROP_NAME);
if (propQNamePair == null)
{
return Collections.emptyList();
}
Long propQNameId = propQNamePair.getFirst();
Map<String, Object> params = new HashMap<String, Object>();
params.put("typeQNameId", typeQNameId);
params.put("propQNameId", propQNameId);
params.put("namePattern", namePattern);
final List<Pair<NodeRef, String>> results = new ArrayList<Pair<NodeRef, String>>(500);
RowHandler rowHandler = new RowHandler()
{
@SuppressWarnings("unchecked")
public void handleRow(Object rowObject)
{
Map<String, Object> row = (Map<String, Object>) rowObject;
String protocol = (String) row.get("protocol");
String identifier = (String) row.get("identifier");
String uuid = (String) row.get("uuid");
NodeRef nodeRef = new NodeRef(new StoreRef(protocol, identifier), uuid);
String name = (String) row.get("name");
Pair<NodeRef, String> pair = new Pair<NodeRef, String>(nodeRef, name);
results.add(pair);
}
};
template.queryWithRowHandler(SELECT_NODES_BY_TYPE_AND_NAME_PATTERN, params, rowHandler);
return results;
}
}