OpenCMIS server: significant query performance improvements

git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@29606 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Florian Mü
2011-08-08 13:14:42 +00:00
parent 18bd553b68
commit 26f647d5fd
4 changed files with 17 additions and 5 deletions

View File

@@ -29,6 +29,7 @@ import java.util.Map;
import java.util.Set;
import org.alfresco.opencmis.dictionary.CMISDictionaryService;
import org.alfresco.opencmis.dictionary.CMISNodeInfo;
import org.alfresco.repo.search.impl.querymodel.Query;
import org.alfresco.service.cmr.dictionary.DictionaryService;
import org.alfresco.service.cmr.repository.ChildAssociationRef;
@@ -48,6 +49,8 @@ public class CMISResultSet implements ResultSetSPI<CMISResultSetRow, CMISResultS
private static final long serialVersionUID = 2014688399588268994L;
private Map<String, ResultSet> wrapped;
private Map<NodeRef, CMISNodeInfo> nodeInfos;
private LimitBy limitBy;
@@ -72,6 +75,7 @@ public class CMISResultSet implements ResultSetSPI<CMISResultSetRow, CMISResultS
this.query = query;
this.cmisDictionaryService = cmisDictionaryService;
this.alfrescoDictionaryService = alfrescoDictionaryService;
this.nodeInfos = new HashMap<NodeRef, CMISNodeInfo>();
}
/*
@@ -111,7 +115,7 @@ public class CMISResultSet implements ResultSetSPI<CMISResultSetRow, CMISResultS
*/
public CMISResultSetRow getRow(int i)
{
return new CMISResultSetRow(this, i, getScores(i), nodeService, getNodeRefs(i), query, cmisDictionaryService);
return new CMISResultSetRow(this, i, getScores(i), nodeService, getNodeRefs(i), nodeInfos, query, cmisDictionaryService);
}
/*

View File

@@ -23,6 +23,7 @@ import java.util.LinkedHashMap;
import java.util.Map;
import org.alfresco.opencmis.dictionary.CMISDictionaryService;
import org.alfresco.opencmis.dictionary.CMISNodeInfo;
import org.alfresco.repo.search.impl.querymodel.Column;
import org.alfresco.repo.search.impl.querymodel.PropertyArgument;
import org.alfresco.repo.search.impl.querymodel.Query;
@@ -55,13 +56,16 @@ public class CMISResultSetRow implements ResultSetRow
private NodeService nodeService;
private Map<String, NodeRef> nodeRefs;
private Map<NodeRef, CMISNodeInfo> nodeInfos;
private Query query;
private CMISDictionaryService cmisDictionaryService;
public CMISResultSetRow(CMISResultSet resultSet, int index, Map<String, Float> scores, NodeService nodeService,
Map<String, NodeRef> nodeRefs, Query query, CMISDictionaryService cmisDictionaryService)
Map<String, NodeRef> nodeRefs, Map<NodeRef, CMISNodeInfo> nodeInfos, Query query,
CMISDictionaryService cmisDictionaryService)
{
this.resultSet = resultSet;
this.index = index;
@@ -70,6 +74,7 @@ public class CMISResultSetRow implements ResultSetRow
this.nodeRefs = nodeRefs;
this.query = query;
this.cmisDictionaryService = cmisDictionaryService;
this.nodeInfos = nodeInfos;
}
/*
@@ -158,6 +163,7 @@ public class CMISResultSetRow implements ResultSetRow
CmisFunctionEvaluationContext context = new CmisFunctionEvaluationContext();
context.setCmisDictionaryService(cmisDictionaryService);
context.setNodeRefs(nodeRefs);
context.setNodeInfos(nodeInfos);
context.setNodeService(nodeService);
context.setScores(scores);
context.setScore(getScore());