mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-07 17:49:17 +00:00
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:
@@ -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);
|
||||
}
|
||||
|
@@ -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;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user