Allow 'cmis-sql-strict' query language in Node Browser.

- fix up Search Service to CMIS query engine wrappers

git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@15015 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
David Caruana
2009-06-29 15:47:06 +00:00
parent aa41f18f6d
commit b5d4daa46a
4 changed files with 43 additions and 10 deletions

View File

@@ -54,6 +54,7 @@ import org.alfresco.service.namespace.QName;
public class CMISResultSetMetaDataImpl implements CMISResultSetMetaData public class CMISResultSetMetaDataImpl implements CMISResultSetMetaData
{ {
private CMISQueryOptions options; private CMISQueryOptions options;
private SearchParameters searchParams;
private Map<String, CMISResultSetColumn> columnMetaData; private Map<String, CMISResultSetColumn> columnMetaData;
@@ -62,6 +63,7 @@ public class CMISResultSetMetaDataImpl implements CMISResultSetMetaData
public CMISResultSetMetaDataImpl(CMISQueryOptions options, Query query, CMISDictionaryService cmisDictionaryService, DictionaryService alfrescoDictionaryService) public CMISResultSetMetaDataImpl(CMISQueryOptions options, Query query, CMISDictionaryService cmisDictionaryService, DictionaryService alfrescoDictionaryService)
{ {
this.options = options; this.options = options;
this.searchParams = new SearchParameters(options);
Map<String, Selector> selectors = query.getSource().getSelectors(); Map<String, Selector> selectors = query.getSource().getSelectors();
selectorMetaData = new LinkedHashMap<String, CMISResultSetSelector>(); selectorMetaData = new LinkedHashMap<String, CMISResultSetSelector>();
@@ -196,7 +198,7 @@ public class CMISResultSetMetaDataImpl implements CMISResultSetMetaData
public SearchParameters getSearchParameters() public SearchParameters getSearchParameters()
{ {
throw new UnsupportedOperationException(); return searchParams;
} }
} }

View File

@@ -204,14 +204,11 @@ public class CMISResultSetRowImpl implements CMISResultSetRow
public NodeRef getNodeRef() public NodeRef getNodeRef()
{ {
if(getCMISResultSet().getMetaData().getColumns().length == 1) if (nodeRefs.size() == 1)
{ {
return getNodeRef(getCMISResultSet().getMetaData().getColumns()[0].getName()); return nodeRefs.values().iterator().next();
}
else
{
throw new UnsupportedOperationException("Ambiguous selector");
} }
throw new UnsupportedOperationException("Ambiguous selector");
} }
public QName getQName() public QName getQName()

View File

@@ -41,6 +41,7 @@ import net.sf.acegisecurity.ConfigAttribute;
import net.sf.acegisecurity.ConfigAttributeDefinition; import net.sf.acegisecurity.ConfigAttributeDefinition;
import net.sf.acegisecurity.afterinvocation.AfterInvocationProvider; import net.sf.acegisecurity.afterinvocation.AfterInvocationProvider;
import org.alfresco.cmis.CMISResultSet;
import org.alfresco.repo.search.SimpleResultSetMetaData; import org.alfresco.repo.search.SimpleResultSetMetaData;
import org.alfresco.repo.search.impl.lucene.PagingLuceneResultSet; import org.alfresco.repo.search.impl.lucene.PagingLuceneResultSet;
import org.alfresco.repo.search.impl.querymodel.QueryEngineResults; import org.alfresco.repo.search.impl.querymodel.QueryEngineResults;
@@ -256,13 +257,13 @@ public class ACLEntryAfterInvocationProvider implements AfterInvocationProvider,
} }
return decide(authentication, object, config, (ChildAssociationRef) returnedObject); return decide(authentication, object, config, (ChildAssociationRef) returnedObject);
} }
else if (ResultSet.class.isAssignableFrom(returnedObject.getClass())) else if (CMISResultSet.class.isAssignableFrom(returnedObject.getClass()))
{ {
if (log.isDebugEnabled()) if (log.isDebugEnabled())
{ {
log.debug("Result Set access"); log.debug("CMIS Result Set - already checked permissions for " + object.getClass().getName());
} }
return decide(authentication, object, config, (ResultSet) returnedObject); return returnedObject;
} }
else if (PagingLuceneResultSet.class.isAssignableFrom(returnedObject.getClass())) else if (PagingLuceneResultSet.class.isAssignableFrom(returnedObject.getClass()))
{ {
@@ -272,6 +273,14 @@ public class ACLEntryAfterInvocationProvider implements AfterInvocationProvider,
} }
return decide(authentication, object, config, (PagingLuceneResultSet) returnedObject); return decide(authentication, object, config, (PagingLuceneResultSet) returnedObject);
} }
else if (ResultSet.class.isAssignableFrom(returnedObject.getClass()))
{
if (log.isDebugEnabled())
{
log.debug("Result Set access");
}
return decide(authentication, object, config, (ResultSet) returnedObject);
}
else if (QueryEngineResults.class.isAssignableFrom(returnedObject.getClass())) else if (QueryEngineResults.class.isAssignableFrom(returnedObject.getClass()))
{ {
if (log.isDebugEnabled()) if (log.isDebugEnabled())

View File

@@ -34,6 +34,7 @@ import java.util.Map;
import java.util.Set; import java.util.Set;
import org.alfresco.repo.search.MLAnalysisMode; import org.alfresco.repo.search.MLAnalysisMode;
import org.alfresco.repo.search.impl.querymodel.QueryOptions;
import org.alfresco.service.cmr.repository.StoreRef; import org.alfresco.service.cmr.repository.StoreRef;
import org.alfresco.service.namespace.NamespaceService; import org.alfresco.service.namespace.NamespaceService;
@@ -164,6 +165,30 @@ public class SearchParameters
super(); super();
} }
/**
* Construct from Query Options
*
* @param options
*/
public SearchParameters(QueryOptions options)
{
setBulkFetch(options.getFetchSize() > 0);
setBulkFetchSize(options.getFetchSize());
setSkipCount(options.getSkipCount());
setMaxPermissionChecks(options.getMaxPermissionChecks());
setMaxPermissionCheckTimeMillis(options.getMaxPermissionCheckTimeMillis());
if (options.getMaxItems() >= 0)
{
setLimitBy(LimitBy.FINAL_SIZE);
setLimit(options.getMaxItems());
setMaxItems(options.getMaxItems());
}
else
{
setLimitBy(LimitBy.UNLIMITED);
}
}
/** /**
* Get the search language * Get the search language
* *