Merged DEV/SWIFT to HEAD

25490: ALF-5260 - MyBatis: AVM (-> MySQL)
          - includes SerializableTypeHandler
          - also, for consistency, remove SqlSessionDaoSupport from Activtities (r25466)
          - TODO: test EliminateDuplicates patch
          - TODO: inserts for non-MySQL dbs
   25504: ALF-5260 - MyBatis: part III
          - AppliedPatch, Content/MimeType/Encoding, Locale, Locks, QName, Usage
          - also minor updates to AVM & Activities (for consistency)
   25517: ALF-5260 - MyBatis: part IV
          - DAOs - Patch, Permissions/ACLs, PropVal, SOLR
          - NOTE: includes fixup for SOLRDAOTest - also return nodeRef
          - TODO: batching (for ContentUrl patch)
   25541: ALF-5260 - MyBatis: add missing file (r25517)
   25556: ALF-5260 - MyBatis: V - PostgreSQL support (for migrated DAOs - does not yet include Audit + Node)
   25576: ALF-5260 - MyBatis: VI - Audit & Control DAOs (MySQL + PostgreSQL)
          - also replaced SqlExecutor.NO_MAXIMUM_RESULTS with RowBounds.NO_ROW_LIMIT
   25589: ALF-5260 - MyBatis: part VII - Node DAO (MySQL + PostgreSQL)
   25612: ALF-5260 - MyBatis: part VIII - Oracle / DB2 / SQL Server
          - sanity checked only (bootstrap -> RepositoryStartupTest, DomainTestSuite, ModelTestSuite)
          - also remove remaining references to iBatis (and jar)
Note:
 - Currently LockDAOTest is failing on an update
 - Fixed up DAo code changes from V3.4 - expect some to have been missed


git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@28004 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Derek Hulley
2011-05-24 05:57:44 +00:00
parent e92b931ee9
commit 682d24d191
76 changed files with 2789 additions and 2758 deletions

View File

@@ -25,8 +25,7 @@ import org.alfresco.ibatis.BatchingDAO;
import org.alfresco.repo.domain.avm.AVMNodeEntity;
import org.alfresco.repo.domain.contentdata.ContentDataDAO;
import org.alfresco.service.cmr.repository.ContentData;
import com.ibatis.sqlmap.client.event.RowHandler;
import org.apache.ibatis.session.ResultHandler;
/**
@@ -218,36 +217,36 @@ public abstract class AbstractPatchDAOImpl implements PatchDAO, BatchingDAO
protected abstract int deleteAclMemberEntitiesForAcls(List<Long> aclIds);
// note: caller's row handler is expected to migrate the attrs
public void migrateOldAttrTenants(RowHandler rowHandler)
public void migrateOldAttrTenants(ResultHandler resultHandler)
{
getOldAttrTenantsImpl(rowHandler);
getOldAttrTenantsImpl(resultHandler);
}
protected abstract void getOldAttrTenantsImpl(RowHandler rowHandler);
protected abstract void getOldAttrTenantsImpl(ResultHandler resultHandler);
// note: caller's row handler is expected to migrate the attrs
public void migrateOldAttrAVMLocks(RowHandler rowHandler)
public void migrateOldAttrAVMLocks(ResultHandler resultHandler)
{
getOldAttrAVMLocksImpl(rowHandler);
getOldAttrAVMLocksImpl(resultHandler);
}
protected abstract void getOldAttrAVMLocksImpl(RowHandler rowHandler);
protected abstract void getOldAttrAVMLocksImpl(ResultHandler resultHandler);
// note: caller's row handler is expected to migrate the attrs
public void migrateOldAttrPropertyBackedBeans(RowHandler rowHandler)
public void migrateOldAttrPropertyBackedBeans(ResultHandler resultHandler)
{
getOldAttrPropertyBackedBeansImpl(rowHandler);
getOldAttrPropertyBackedBeansImpl(resultHandler);
}
protected abstract void getOldAttrPropertyBackedBeansImpl(RowHandler rowHandler);
protected abstract void getOldAttrPropertyBackedBeansImpl(ResultHandler resultHandler);
// note: caller's row handler is expected to migrate the attrs
public void migrateOldAttrChainingURS(RowHandler rowHandler)
public void migrateOldAttrChainingURS(ResultHandler resultHandler)
{
getOldAttrChainingURSImpl(rowHandler);
getOldAttrChainingURSImpl(resultHandler);
}
protected abstract void getOldAttrChainingURSImpl(RowHandler rowHandler);
protected abstract void getOldAttrChainingURSImpl(ResultHandler resultHandler);
public List<String> getOldAttrCustomNames()
{

View File

@@ -27,8 +27,7 @@ import org.alfresco.service.cmr.repository.ContentData;
import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.namespace.QName;
import org.alfresco.util.Pair;
import com.ibatis.sqlmap.client.event.RowHandler;
import org.apache.ibatis.session.ResultHandler;
/**
* Additional DAO services for patches
@@ -187,22 +186,22 @@ public interface PatchDAO
/**
* Migrate old Tenant attributes (if any)
*/
public void migrateOldAttrTenants(RowHandler rowHandler);
public void migrateOldAttrTenants(ResultHandler resultHandler);
/**
* Migrate old AVM Lock attributes (if any)
*/
public void migrateOldAttrAVMLocks(RowHandler rowHandler);
public void migrateOldAttrAVMLocks(ResultHandler resultHandler);
/**
* Migrate old Property-Backed Bean attributes (if any)
*/
public void migrateOldAttrPropertyBackedBeans(RowHandler rowHandler);
public void migrateOldAttrPropertyBackedBeans(ResultHandler resultHandler);
/**
* Migrate old Chaining User Registry Synchronizer attributes (if any)
*/
public void migrateOldAttrChainingURS(RowHandler rowHandler);
public void migrateOldAttrChainingURS(ResultHandler resultHandler);
/**
* Get custom global attribute names (if any)

View File

@@ -22,7 +22,7 @@ import java.util.List;
import org.alfresco.repo.domain.patch.AbstractAppliedPatchDAOImpl;
import org.alfresco.repo.domain.patch.AppliedPatchEntity;
import org.springframework.orm.ibatis.SqlMapClientTemplate;
import org.mybatis.spring.SqlSessionTemplate;
/**
* iBatis-specific implementation of the AppliedPatch DAO.
@@ -37,13 +37,15 @@ public class AppliedPatchDAOImpl extends AbstractAppliedPatchDAOImpl
private static final String SELECT_APPLIED_PATCH_BY_ID = "alfresco.appliedpatch.select_AppliedPatchById";
private static final String SELECT_ALL_APPLIED_PATCH = "alfresco.appliedpatch.select_AllAppliedPatches";
private SqlMapClientTemplate template;
public void setSqlMapClientTemplate(SqlMapClientTemplate sqlMapClientTemplate)
private SqlSessionTemplate template;
public final void setSqlSessionTemplate(SqlSessionTemplate sqlSessionTemplate)
{
this.template = sqlMapClientTemplate;
this.template = sqlSessionTemplate;
}
@Override
protected void createAppliedPatchEntity(AppliedPatchEntity entity)
{
@@ -60,7 +62,7 @@ public class AppliedPatchDAOImpl extends AbstractAppliedPatchDAOImpl
{
AppliedPatchEntity entity = new AppliedPatchEntity();
entity.setId(id);
entity = (AppliedPatchEntity) template.queryForObject(SELECT_APPLIED_PATCH_BY_ID, entity);
entity = (AppliedPatchEntity) template.selectOne(SELECT_APPLIED_PATCH_BY_ID, entity);
// Could be null
return entity;
}
@@ -69,9 +71,8 @@ public class AppliedPatchDAOImpl extends AbstractAppliedPatchDAOImpl
@Override
protected List<AppliedPatchEntity> getAppliedPatchEntities()
{
return (List<AppliedPatchEntity>) template.queryForList(SELECT_ALL_APPLIED_PATCH);
return (List<AppliedPatchEntity>) template.selectList(SELECT_ALL_APPLIED_PATCH);
}
//
// @Override

View File

@@ -18,7 +18,6 @@
*/
package org.alfresco.repo.domain.patch.ibatis;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
@@ -39,10 +38,10 @@ import org.alfresco.util.Pair;
import org.alfresco.util.ParameterCheck;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.orm.ibatis.SqlMapClientTemplate;
import com.ibatis.sqlmap.client.event.RowHandler;
import com.ibatis.sqlmap.engine.execution.SqlExecutor;
import org.apache.ibatis.session.ResultContext;
import org.apache.ibatis.session.ResultHandler;
import org.apache.ibatis.session.RowBounds;
import org.mybatis.spring.SqlSessionTemplate;
/**
* iBatis-specific implementation of the AVMPatch DAO.
@@ -101,15 +100,18 @@ public class PatchDAOImpl extends AbstractPatchDAOImpl
private static final String SELECT_SHARED_ACLS_THAT_DO_NOT_INHERIT_CORRECTLY_FROM_THE_PRIMARY_PARENT = "alfresco.patch.select_sharedAclsThatDoNotInheritCorrectlyFromThePrimaryParent";
private static final String SELECT_SHARED_ACLS_THAT_DO_NOT_INHERIT_CORRECTLY_FROM_THEIR_DEFINING_ACL = "alfresco.patch.select_sharedAclsThatDoNotInheritCorrectlyFromTheirDefiningAcl";
private SqlMapClientTemplate template;
private QNameDAO qnameDAO;
private LocaleDAO localeDAO;
public void setSqlMapClientTemplate(SqlMapClientTemplate sqlMapClientTemplate)
private SqlSessionTemplate template;
public final void setSqlSessionTemplate(SqlSessionTemplate sqlSessionTemplate)
{
this.template = sqlMapClientTemplate;
this.template = sqlSessionTemplate;
}
private QNameDAO qnameDAO;
public void setQnameDAO(QNameDAO qnameDAO)
{
this.qnameDAO = qnameDAO;
@@ -122,6 +124,8 @@ public class PatchDAOImpl extends AbstractPatchDAOImpl
public void startBatch()
{
// TODO
/*
try
{
template.getSqlMapClient().startBatch();
@@ -130,10 +134,13 @@ public class PatchDAOImpl extends AbstractPatchDAOImpl
{
throw new RuntimeException("Failed to start batch", e);
}
*/
}
public void executeBatch()
{
// TODO
/*
try
{
template.getSqlMapClient().executeBatch();
@@ -142,12 +149,13 @@ public class PatchDAOImpl extends AbstractPatchDAOImpl
{
throw new RuntimeException("Failed to start batch", e);
}
*/
}
@Override
protected long getAVMNodeEntitiesCountWhereNewInStore()
{
Long count = (Long) template.queryForObject(SELECT_AVM_NODE_ENTITIES_COUNT_WHERE_NEW_IN_STORE);
Long count = (Long) template.selectOne(SELECT_AVM_NODE_ENTITIES_COUNT_WHERE_NEW_IN_STORE);
return count == null ? 0L : count;
}
@@ -157,10 +165,10 @@ public class PatchDAOImpl extends AbstractPatchDAOImpl
{
if (maxResults < 0)
{
maxResults = SqlExecutor.NO_MAXIMUM_RESULTS;
maxResults = RowBounds.NO_ROW_LIMIT;
}
return (List<AVMNodeEntity>) template.queryForList(SELECT_AVM_NODE_ENTITIES_WITH_EMPTY_GUID, 0, maxResults);
return (List<AVMNodeEntity>) template.selectList(SELECT_AVM_NODE_ENTITIES_WITH_EMPTY_GUID, new RowBounds(0, maxResults));
}
@SuppressWarnings("unchecked")
@@ -169,10 +177,10 @@ public class PatchDAOImpl extends AbstractPatchDAOImpl
{
if (maxResults < 0)
{
maxResults = SqlExecutor.NO_MAXIMUM_RESULTS;
maxResults = RowBounds.NO_ROW_LIMIT;
}
return (List<AVMNodeEntity>) template.queryForList(SELECT_AVM_LD_NODE_ENTITIES_NULL_VERSION, 0, maxResults);
return (List<AVMNodeEntity>) template.selectList(SELECT_AVM_LD_NODE_ENTITIES_NULL_VERSION, new RowBounds(0, maxResults));
}
@SuppressWarnings("unchecked")
@@ -181,15 +189,15 @@ public class PatchDAOImpl extends AbstractPatchDAOImpl
{
if (maxResults < 0)
{
maxResults = SqlExecutor.NO_MAXIMUM_RESULTS;
maxResults = RowBounds.NO_ROW_LIMIT;
}
return (List<AVMNodeEntity>) template.queryForList(SELECT_AVM_LF_NODE_ENTITIES_NULL_VERSION, 0, maxResults);
return (List<AVMNodeEntity>) template.selectList(SELECT_AVM_LF_NODE_ENTITIES_NULL_VERSION, new RowBounds(0, maxResults));
}
public long getMaxAvmNodeID()
{
Long count = (Long) template.queryForObject(SELECT_AVM_MAX_NODE_ID);
Long count = (Long) template.selectOne(SELECT_AVM_MAX_NODE_ID);
return count == null ? 0L : count;
}
@@ -199,12 +207,12 @@ public class PatchDAOImpl extends AbstractPatchDAOImpl
IdsEntity ids = new IdsEntity();
ids.setIdOne(minNodeId);
ids.setIdTwo(maxNodeId);
return (List<Long>) template.queryForList(SELECT_AVM_NODES_WITH_OLD_CONTENT_PROPERTIES, ids);
return (List<Long>) template.selectList(SELECT_AVM_NODES_WITH_OLD_CONTENT_PROPERTIES, ids);
}
public long getMaxAdmNodeID()
{
Long count = (Long) template.queryForObject(SELECT_ADM_MAX_NODE_ID);
Long count = (Long) template.selectOne(SELECT_ADM_MAX_NODE_ID);
return count == null ? 0L : count;
}
@@ -215,7 +223,7 @@ public class PatchDAOImpl extends AbstractPatchDAOImpl
IdsEntity ids = new IdsEntity();
ids.setIdOne(minNodeId);
ids.setIdTwo(maxNodeId);
return (List<Map<String, Object>>) template.queryForList(SELECT_ADM_OLD_CONTENT_PROPERTIES, ids);
return (List<Map<String, Object>>) template.selectList(SELECT_ADM_OLD_CONTENT_PROPERTIES, ids);
}
@Override
@@ -277,14 +285,14 @@ public class PatchDAOImpl extends AbstractPatchDAOImpl
@Override
protected long getMaxAclEntityId()
{
Long count = (Long) template.queryForObject(SELECT_PERMISSIONS_MAX_ACL_ID, null);
Long count = (Long) template.selectOne(SELECT_PERMISSIONS_MAX_ACL_ID, null);
return count == null ? 0L : count;
}
@Override
protected long getDmNodeEntitiesCount()
{
Long count = (Long) template.queryForObject(SELECT_PERMISSIONS_DM_NODE_COUNT, null);
Long count = (Long) template.selectOne(SELECT_PERMISSIONS_DM_NODE_COUNT, null);
return count == null ? 0L : count;
}
@@ -293,7 +301,7 @@ public class PatchDAOImpl extends AbstractPatchDAOImpl
{
Map<String, Object> params = new HashMap<String, Object>(1);
params.put("id", above);
Long count = (Long) template.queryForObject(SELECT_PERMISSIONS_DM_NODE_COUNT_WITH_NEW_ACLS, params);
Long count = (Long) template.selectOne(SELECT_PERMISSIONS_DM_NODE_COUNT_WITH_NEW_ACLS, params);
return count == null ? 0L : count;
}
@@ -301,14 +309,14 @@ public class PatchDAOImpl extends AbstractPatchDAOImpl
@Override
protected List<Long> selectAllAclEntityIds()
{
return (List<Long>) template.queryForList(SELECT_PERMISSIONS_ALL_ACL_IDS);
return (List<Long>) template.selectList(SELECT_PERMISSIONS_ALL_ACL_IDS);
}
@SuppressWarnings("unchecked")
@Override
protected List<Long> selectNonDanglingAclEntityIds()
{
return (List<Long>) template.queryForList(SELECT_PERMISSIONS_USED_ACL_IDS);
return (List<Long>) template.selectList(SELECT_PERMISSIONS_USED_ACL_IDS);
}
@Override
@@ -332,12 +340,12 @@ public class PatchDAOImpl extends AbstractPatchDAOImpl
public List<String> getAuthoritiesWithNonUtf8Crcs()
{
final List<String> results = new ArrayList<String>(1000);
RowHandler rowHandler = new RowHandler()
ResultHandler resultHandler = new ResultHandler()
{
@SuppressWarnings("unchecked")
public void handleRow(Object valueObject)
public void handleResult(ResultContext context)
{
Map<String, Object> result = (Map<String, Object>) valueObject;
Map<String, Object> result = (Map<String, Object>) context.getResultObject();
String authority = (String) result.get("authority");
Long crc = (Long) result.get("crc");
Long crcShouldBe = CrcHelper.getStringCrcPair(authority, 32, true, true).getSecond();
@@ -348,20 +356,20 @@ public class PatchDAOImpl extends AbstractPatchDAOImpl
}
}
};
template.queryWithRowHandler(SELECT_AUTHORITIES_AND_CRC, rowHandler);
template.select(SELECT_AUTHORITIES_AND_CRC, resultHandler);
// Done
return results;
}
public int getChildAssocCount()
{
return (Integer) template.queryForObject(SELECT_CHILD_ASSOCS_COUNT);
return (Integer) template.selectOne(SELECT_CHILD_ASSOCS_COUNT);
}
@Override
public Long getMaxChildAssocId()
{
Long maxAssocId = (Long) template.queryForObject(SELECT_CHILD_ASSOCS_MAX_ID);
Long maxAssocId = (Long) template.selectOne(SELECT_CHILD_ASSOCS_MAX_ID);
return maxAssocId == null ? 0L : maxAssocId;
}
@@ -400,7 +408,7 @@ public class PatchDAOImpl extends AbstractPatchDAOImpl
try
{
List<Map<String, Object>> rows = template.queryForList(SELECT_CHILD_ASSOCS_FOR_CRCS, entity, 0, queryMaxResults);
List<Map<String, Object>> rows = (List<Map<String, Object>>) template.selectList(SELECT_CHILD_ASSOCS_FOR_CRCS, entity, new RowBounds(0, queryMaxResults));
if (results.size() == 0 && rows.size() >= maxResults)
{
// We have all we need
@@ -473,12 +481,12 @@ public class PatchDAOImpl extends AbstractPatchDAOImpl
params.put("namePattern", namePattern);
final List<Pair<NodeRef, String>> results = new ArrayList<Pair<NodeRef, String>>(500);
RowHandler rowHandler = new RowHandler()
ResultHandler resultHandler = new ResultHandler()
{
@SuppressWarnings("unchecked")
public void handleRow(Object rowObject)
public void handleResult(ResultContext context)
{
Map<String, Object> row = (Map<String, Object>) rowObject;
Map<String, Object> row = (Map<String, Object>) context.getResultObject();
String protocol = (String) row.get("protocol");
String identifier = (String) row.get("identifier");
String uuid = (String) row.get("uuid");
@@ -488,39 +496,39 @@ public class PatchDAOImpl extends AbstractPatchDAOImpl
results.add(pair);
}
};
template.queryWithRowHandler(SELECT_NODES_BY_TYPE_AND_NAME_PATTERN, params, rowHandler);
template.select(SELECT_NODES_BY_TYPE_AND_NAME_PATTERN, params, resultHandler);
return results;
}
@Override
protected void getOldAttrTenantsImpl(RowHandler rowHandler)
protected void getOldAttrTenantsImpl(ResultHandler resultHandler)
{
template.queryWithRowHandler(SELECT_OLD_ATTR_TENANTS, rowHandler);
template.select(SELECT_OLD_ATTR_TENANTS, resultHandler);
}
@Override
protected void getOldAttrAVMLocksImpl(RowHandler rowHandler)
protected void getOldAttrAVMLocksImpl(ResultHandler resultHandler)
{
template.queryWithRowHandler(SELECT_OLD_ATTR_AVM_LOCKS, rowHandler);
template.select(SELECT_OLD_ATTR_AVM_LOCKS, resultHandler);
}
@Override
protected void getOldAttrPropertyBackedBeansImpl(RowHandler rowHandler)
protected void getOldAttrPropertyBackedBeansImpl(ResultHandler resultHandler)
{
template.queryWithRowHandler(SELECT_OLD_ATTR_PBBS, rowHandler);
template.select(SELECT_OLD_ATTR_PBBS, resultHandler);
}
@Override
protected void getOldAttrChainingURSImpl(RowHandler rowHandler)
protected void getOldAttrChainingURSImpl(ResultHandler resultHandler)
{
template.queryWithRowHandler(SELECT_OLD_ATTR_CHAINING_URS, rowHandler);
template.select(SELECT_OLD_ATTR_CHAINING_URS, resultHandler);
}
@SuppressWarnings("unchecked")
@Override
protected List<String> getOldAttrCustomNamesImpl()
{
return (List<String>)template.queryForList(SELECT_OLD_ATTR_CUSTOM_NAMES);
return (List<String>)template.selectList(SELECT_OLD_ATTR_CUSTOM_NAMES);
}
@Override
@@ -545,7 +553,7 @@ public class PatchDAOImpl extends AbstractPatchDAOImpl
@Override
public List<Map<String, Object>> getAclsThatInheritFromNonPrimaryParent()
{
List<Map<String, Object>> rows = template.queryForList(
List<Map<String, Object>> rows = (List<Map<String, Object>>) template.selectList(
SELECT_ACLS_THAT_INHERIT_FROM_NON_PRIMARY_PARENT,
Boolean.TRUE);
return rows;
@@ -555,7 +563,7 @@ public class PatchDAOImpl extends AbstractPatchDAOImpl
@Override
public List<Map<String, Object>> getAclsThatInheritWithInheritanceUnset()
{
List<Map<String, Object>> rows = template.queryForList(
List<Map<String, Object>> rows = (List<Map<String, Object>>) template.selectList(
SELECT_ACLS_THAT_INHERIT_WITH_INHERITANCE_UNSET,
Boolean.TRUE);
return rows;
@@ -565,7 +573,7 @@ public class PatchDAOImpl extends AbstractPatchDAOImpl
@Override
public List<Map<String, Object>> getDefiningAclsThatDoNotInheritCorrectlyFromThePrimaryParent()
{
List<Map<String, Object>> rows = template.queryForList(
List<Map<String, Object>> rows = (List<Map<String, Object>>) template.selectList(
SELECT_DEFINING_ACLS_THAT_DO_NOT_INHERIT_CORRECTLY_FROM_THE_PRIMARY_PARENT,
Boolean.TRUE);
return rows;
@@ -575,7 +583,7 @@ public class PatchDAOImpl extends AbstractPatchDAOImpl
@Override
public List<Map<String, Object>> getSharedAclsThatDoNotInheritCorrectlyFromThePrimaryParent()
{
List<Map<String, Object>> rows = template.queryForList(
List<Map<String, Object>> rows = (List<Map<String, Object>>) template.selectList(
SELECT_SHARED_ACLS_THAT_DO_NOT_INHERIT_CORRECTLY_FROM_THE_PRIMARY_PARENT,
Boolean.TRUE);
return rows;
@@ -585,7 +593,7 @@ public class PatchDAOImpl extends AbstractPatchDAOImpl
@Override
public List<Map<String, Object>> getSharedAclsThatDoNotInheritCorrectlyFromTheirDefiningAcl()
{
List<Map<String, Object>> rows = template.queryForList(
List<Map<String, Object>> rows = (List<Map<String, Object>>) template.selectList(
SELECT_SHARED_ACLS_THAT_DO_NOT_INHERIT_CORRECTLY_FROM_THEIR_DEFINING_ACL,
Boolean.TRUE);
return rows;