use of org.alfresco.repo.search.impl.querymodel.Argument in project alfresco-repository by Alfresco.
the class DBFTSPrefixTerm method prepare.
/*
* (non-Javadoc)
* @see
* org.alfresco.repo.search.impl.querymodel.impl.db.DBQueryBuilderComponent#prepare(org.alfresco.service.namespace
* .NamespaceService, org.alfresco.service.cmr.dictionary.DictionaryService,
* org.alfresco.repo.domain.qname.QNameDAO, org.alfresco.repo.domain.node.NodeDAO, java.util.Set, java.util.Map,
* org.alfresco.repo.search.impl.querymodel.FunctionEvaluationContext)
*/
@Override
public void prepare(NamespaceService namespaceService, DictionaryService dictionaryService, QNameDAO qnameDAO, NodeDAO nodeDAO, TenantService tenantService, Set<String> selectors, Map<String, Argument> functionArgs, FunctionEvaluationContext functionContext, boolean supportBooleanFloatAndDouble) {
Argument argument = functionArgs.get(ARG_TERM);
String term = (String) argument.getValue(functionContext);
// strip trailing wildcard *
term = term.substring(0, term.length() - 1);
PropertyArgument propertyArgument = (PropertyArgument) functionArgs.get(ARG_PROPERTY);
argument = functionArgs.get(ARG_TOKENISATION_MODE);
AnalysisMode mode = (AnalysisMode) argument.getValue(functionContext);
if (mode != AnalysisMode.IDENTIFIER) {
throw new QueryModelException("Analysis mode not supported for DB " + mode);
}
PropertySupport propertySupport = new PropertySupport();
propertySupport.setValue(term + "%");
QName propertyQName = QName.createQName(DBQuery.expandQName(functionContext.getAlfrescoPropertyName(propertyArgument.getPropertyName()), namespaceService));
propertySupport.setPropertyQName(propertyQName);
propertySupport.setPropertyDataType(DBQuery.getDataTypeDefinition(dictionaryService, propertyQName));
propertySupport.setPair(qnameDAO.getQName(propertyQName));
propertySupport.setJoinCommandType(DBQuery.getJoinCommandType(propertyQName));
propertySupport.setFieldName(DBQuery.getFieldName(dictionaryService, propertyQName, supportBooleanFloatAndDouble));
propertySupport.setCommandType(DBQueryBuilderPredicatePartCommandType.LIKE);
builderSupport = propertySupport;
}
use of org.alfresco.repo.search.impl.querymodel.Argument in project alfresco-repository by Alfresco.
the class DBLike method prepare.
/* (non-Javadoc)
* @see org.alfresco.repo.search.impl.querymodel.impl.db.DBQueryBuilderComponent#prepare(org.alfresco.service.namespace.NamespaceService, org.alfresco.service.cmr.dictionary.DictionaryService, org.alfresco.repo.domain.qname.QNameDAO, org.alfresco.repo.domain.node.NodeDAO, java.util.Set, java.util.Map, org.alfresco.repo.search.impl.querymodel.FunctionEvaluationContext)
*/
@Override
public void prepare(NamespaceService namespaceService, DictionaryService dictionaryService, QNameDAO qnameDAO, NodeDAO nodeDAO, TenantService tenantService, Set<String> selectors, Map<String, Argument> functionArgs, FunctionEvaluationContext functionContext, boolean supportBooleanFloatAndDouble) {
PropertyArgument propertyArgument = (PropertyArgument) functionArgs.get(ARG_PROPERTY);
Argument inverseArgument = functionArgs.get(ARG_NOT);
Boolean not = DefaultTypeConverter.INSTANCE.convert(Boolean.class, inverseArgument.getValue(functionContext));
Argument expressionArgument = functionArgs.get(ARG_EXP);
String expression = expressionArgument.getValue(functionContext).toString();
if (propertyArgument.getPropertyName().equals(PropertyIds.CONTENT_STREAM_MIME_TYPE)) {
PropertySupport propertySupport = new PropertySupport();
propertySupport.setValue(expression);
QName basePropertyQName = QName.createQName(DBQuery.expandQName(functionContext.getAlfrescoPropertyName(propertyArgument.getPropertyName()), namespaceService));
propertySupport.setPropertyQName(basePropertyQName);
propertySupport.setPropertyDataType(DBQuery.getDataTypeDefinition(dictionaryService, basePropertyQName));
propertySupport.setPair(qnameDAO.getQName(basePropertyQName));
propertySupport.setJoinCommandType(DBQueryBuilderJoinCommandType.CONTENT_MIMETYPE);
propertySupport.setFieldName("mimetype_str");
if ((not != null) && (not.equals(Boolean.TRUE))) {
propertySupport.setCommandType(DBQueryBuilderPredicatePartCommandType.NOTLIKE);
} else {
propertySupport.setCommandType(DBQueryBuilderPredicatePartCommandType.LIKE);
}
builderSupport = propertySupport;
} else {
PropertySupport propertySupport = new PropertySupport();
propertySupport.setValue(expression);
QName propertyQName = QName.createQName(DBQuery.expandQName(functionContext.getAlfrescoPropertyName(propertyArgument.getPropertyName()), namespaceService));
propertySupport.setPropertyQName(propertyQName);
propertySupport.setPropertyDataType(DBQuery.getDataTypeDefinition(dictionaryService, propertyQName));
propertySupport.setPair(qnameDAO.getQName(propertyQName));
propertySupport.setJoinCommandType(DBQuery.getJoinCommandType(propertyQName));
propertySupport.setFieldName(DBQuery.getFieldName(dictionaryService, propertyQName, supportBooleanFloatAndDouble));
if ((not != null) && (not.equals(Boolean.TRUE))) {
propertySupport.setCommandType(DBQueryBuilderPredicatePartCommandType.NOTLIKE);
} else {
propertySupport.setCommandType(DBQueryBuilderPredicatePartCommandType.LIKE);
}
builderSupport = propertySupport;
}
}
use of org.alfresco.repo.search.impl.querymodel.Argument in project alfresco-repository by Alfresco.
the class DBExists method prepare.
/*
* (non-Javadoc)
* @see
* org.alfresco.repo.search.impl.querymodel.impl.db.DBQueryBuilderComponent#prepare(org.alfresco.service.namespace
* .NamespaceService, org.alfresco.service.cmr.dictionary.DictionaryService,
* org.alfresco.repo.domain.qname.QNameDAO, org.alfresco.repo.domain.node.NodeDAO, java.util.Set, java.util.Map,
* org.alfresco.repo.search.impl.querymodel.FunctionEvaluationContext)
*/
@Override
public void prepare(NamespaceService namespaceService, DictionaryService dictionaryService, QNameDAO qnameDAO, NodeDAO nodeDAO, TenantService tenantService, Set<String> selectors, Map<String, Argument> functionArgs, FunctionEvaluationContext functionContext, boolean supportBooleanFloatAndDouble) {
PropertyArgument propertyArgument = (PropertyArgument) functionArgs.get(ARG_PROPERTY);
Argument inverseArgument = functionArgs.get(ARG_NOT);
Boolean not = DefaultTypeConverter.INSTANCE.convert(Boolean.class, inverseArgument.getValue(functionContext));
if (propertyArgument.getPropertyName().equals(PropertyIds.PARENT_ID)) {
ParentSupport parentSupport = new ParentSupport();
if ((not != null) && (not.equals(Boolean.TRUE))) {
parentSupport.setCommandType(DBQueryBuilderPredicatePartCommandType.NOTEXISTS);
parentSupport.setLeftOuter(true);
} else {
parentSupport.setCommandType(DBQueryBuilderPredicatePartCommandType.EXISTS);
}
builderSupport = parentSupport;
} else if (propertyArgument.getPropertyName().equals(PropertyIds.OBJECT_ID)) {
UUIDSupport uuidSupport = new UUIDSupport();
if ((not != null) && (not.equals(Boolean.TRUE))) {
uuidSupport.setCommandType(DBQueryBuilderPredicatePartCommandType.NOTEXISTS);
uuidSupport.setLeftOuter(true);
} else {
uuidSupport.setCommandType(DBQueryBuilderPredicatePartCommandType.EXISTS);
}
builderSupport = uuidSupport;
} else if (propertyArgument.getPropertyName().equals(PropertyIds.OBJECT_TYPE_ID)) {
TypeSupport typeSupport = new TypeSupport();
if ((not != null) && (not.equals(Boolean.TRUE))) {
typeSupport.setCommandType(DBQueryBuilderPredicatePartCommandType.NOTEXISTS);
typeSupport.setJoinType(JoinType.LEFT);
} else {
typeSupport.setCommandType(DBQueryBuilderPredicatePartCommandType.EXISTS);
}
builderSupport = typeSupport;
} else if (propertyArgument.getPropertyName().equals(PropertyIds.BASE_TYPE_ID)) {
TypeSupport typeSupport = new TypeSupport();
if ((not != null) && (not.equals(Boolean.TRUE))) {
typeSupport.setCommandType(DBQueryBuilderPredicatePartCommandType.NOTEXISTS);
typeSupport.setJoinType(JoinType.LEFT);
} else {
typeSupport.setCommandType(DBQueryBuilderPredicatePartCommandType.EXISTS);
}
builderSupport = typeSupport;
} else if (propertyArgument.getPropertyName().equals(PropertyIds.CONTENT_STREAM_MIME_TYPE)) {
PropertySupport propertySupport = new PropertySupport();
QName basePropertyQName = QName.createQName(DBQuery.expandQName(functionContext.getAlfrescoPropertyName(propertyArgument.getPropertyName()), namespaceService));
propertySupport.setPropertyQName(basePropertyQName);
propertySupport.setPropertyDataType(DBQuery.getDataTypeDefinition(dictionaryService, basePropertyQName));
propertySupport.setPair(qnameDAO.getQName(basePropertyQName));
propertySupport.setJoinCommandType(DBQueryBuilderJoinCommandType.CONTENT_MIMETYPE);
propertySupport.setFieldName("mimetype_str");
if ((not != null) && (not.equals(Boolean.TRUE))) {
propertySupport.setCommandType(DBQueryBuilderPredicatePartCommandType.NOTEXISTS);
propertySupport.setLeftOuter(true);
} else {
propertySupport.setCommandType(DBQueryBuilderPredicatePartCommandType.EXISTS);
}
builderSupport = propertySupport;
} else if (propertyArgument.getPropertyName().equals(PropertyIds.CONTENT_STREAM_LENGTH)) {
PropertySupport propertySupport = new PropertySupport();
QName basePropertyQName = QName.createQName(DBQuery.expandQName(functionContext.getAlfrescoPropertyName(propertyArgument.getPropertyName()), namespaceService));
propertySupport.setPropertyQName(basePropertyQName);
propertySupport.setPropertyDataType(DBQuery.getDataTypeDefinition(dictionaryService, basePropertyQName));
propertySupport.setPair(qnameDAO.getQName(basePropertyQName));
propertySupport.setJoinCommandType(DBQueryBuilderJoinCommandType.CONTENT_URL);
propertySupport.setFieldName("content_size");
if ((not != null) && (not.equals(Boolean.TRUE))) {
propertySupport.setCommandType(DBQueryBuilderPredicatePartCommandType.NOTEXISTS);
propertySupport.setLeftOuter(true);
} else {
propertySupport.setCommandType(DBQueryBuilderPredicatePartCommandType.EXISTS);
}
builderSupport = propertySupport;
} else {
PropertySupport propertySupport = new PropertySupport();
QName propertyQName = QName.createQName(DBQuery.expandQName(functionContext.getAlfrescoPropertyName(propertyArgument.getPropertyName()), namespaceService));
propertySupport.setPropertyQName(propertyQName);
propertySupport.setPropertyDataType(DBQuery.getDataTypeDefinition(dictionaryService, propertyQName));
propertySupport.setPair(qnameDAO.getQName(propertyQName));
propertySupport.setJoinCommandType(DBQuery.getJoinCommandType(propertyQName));
propertySupport.setFieldName(DBQuery.getFieldName(dictionaryService, propertyQName, supportBooleanFloatAndDouble));
if ((not != null) && (not.equals(Boolean.TRUE))) {
propertySupport.setCommandType(DBQueryBuilderPredicatePartCommandType.NOTEXISTS);
propertySupport.setLeftOuter(true);
} else {
propertySupport.setCommandType(DBQueryBuilderPredicatePartCommandType.EXISTS);
}
builderSupport = propertySupport;
}
}
use of org.alfresco.repo.search.impl.querymodel.Argument in project alfresco-repository by Alfresco.
the class DBFTSPhrase method prepare.
/*
* (non-Javadoc)
* @see
* org.alfresco.repo.search.impl.querymodel.impl.db.DBQueryBuilderComponent#prepare(org.alfresco.service.namespace
* .NamespaceService, org.alfresco.service.cmr.dictionary.DictionaryService,
* org.alfresco.repo.domain.qname.QNameDAO, org.alfresco.repo.domain.node.NodeDAO, java.util.Set, java.util.Map,
* org.alfresco.repo.search.impl.querymodel.FunctionEvaluationContext)
*/
@Override
public void prepare(NamespaceService namespaceService, DictionaryService dictionaryService, QNameDAO qnameDAO, NodeDAO nodeDAO, TenantService tenantService, Set<String> selectors, Map<String, Argument> functionArgs, FunctionEvaluationContext functionContext, boolean supportBooleanFloatAndDouble) {
Argument argument = functionArgs.get(ARG_PHRASE);
String term = (String) argument.getValue(functionContext);
PropertyArgument propArg = (PropertyArgument) functionArgs.get(ARG_PROPERTY);
if ((propArg == null) || (propArg.getPropertyName() == null)) {
throw new QueryModelException("Default field not supported");
} else if (propArg.getPropertyName().equals(QueryConstants.FIELD_PARENT)) {
ParentSupport parentSupport = new ParentSupport();
String id = (String) term;
parentSupport.setDbid(DBQuery.getDbid(id, nodeDAO, tenantService));
parentSupport.setCommandType(DBQueryBuilderPredicatePartCommandType.EQUALS);
builderSupport = parentSupport;
} else if (propArg.getPropertyName().equals(QueryConstants.FIELD_TYPE)) {
TypeSupport typeSupport = new TypeSupport();
typeSupport.setQnameIds(DBQuery.findTypeIds(term, namespaceService, dictionaryService, qnameDAO, false));
typeSupport.setCommandType(DBQueryBuilderPredicatePartCommandType.IN);
builderSupport = typeSupport;
} else if (propArg.getPropertyName().equals(QueryConstants.FIELD_ASPECT)) {
AspectSupport aspectSupport = new AspectSupport();
aspectSupport.setQnameIds(DBQuery.findAspectIds(term, namespaceService, dictionaryService, qnameDAO, false));
builderSupport = aspectSupport;
} else if (propArg.getPropertyName().equals(QueryConstants.FIELD_EXACTTYPE)) {
TypeSupport typeSupport = new TypeSupport();
typeSupport.setQnameIds(DBQuery.findTypeIds(term, namespaceService, dictionaryService, qnameDAO, true));
typeSupport.setCommandType(DBQueryBuilderPredicatePartCommandType.IN);
builderSupport = typeSupport;
} else if (propArg.getPropertyName().equals(QueryConstants.FIELD_EXACTASPECT)) {
AspectSupport aspectSupport = new AspectSupport();
aspectSupport.setQnameIds(DBQuery.findAspectIds(term, namespaceService, dictionaryService, qnameDAO, true));
builderSupport = aspectSupport;
} else {
argument = functionArgs.get(ARG_TOKENISATION_MODE);
AnalysisMode mode = (AnalysisMode) argument.getValue(functionContext);
if (mode != AnalysisMode.IDENTIFIER) {
throw new QueryModelException("Analysis mode not supported for DB " + mode);
}
PropertySupport propertySupport = new PropertySupport();
propertySupport.setValue(term);
QName propertyQName = QName.createQName(DBQuery.expandQName(functionContext.getAlfrescoPropertyName(propArg.getPropertyName()), namespaceService));
propertySupport.setPropertyQName(propertyQName);
propertySupport.setPropertyDataType(DBQuery.getDataTypeDefinition(dictionaryService, propertyQName));
propertySupport.setPair(qnameDAO.getQName(propertyQName));
propertySupport.setJoinCommandType(DBQuery.getJoinCommandType(propertyQName));
propertySupport.setFieldName(DBQuery.getFieldName(dictionaryService, propertyQName, supportBooleanFloatAndDouble));
propertySupport.setCommandType(DBQueryBuilderPredicatePartCommandType.EQUALS);
builderSupport = propertySupport;
}
}
use of org.alfresco.repo.search.impl.querymodel.Argument in project alfresco-repository by Alfresco.
the class DBFTSTerm method prepare.
/*
* (non-Javadoc)
* @see
* org.alfresco.repo.search.impl.querymodel.impl.db.DBQueryBuilderComponent#prepare(org.alfresco.service.namespace
* .NamespaceService, org.alfresco.service.cmr.dictionary.DictionaryService,
* org.alfresco.repo.domain.qname.QNameDAO, org.alfresco.repo.domain.node.NodeDAO, java.util.Set, java.util.Map,
* org.alfresco.repo.search.impl.querymodel.FunctionEvaluationContext)
*/
@Override
public void prepare(NamespaceService namespaceService, DictionaryService dictionaryService, QNameDAO qnameDAO, NodeDAO nodeDAO, TenantService tenantService, Set<String> selectors, Map<String, Argument> functionArgs, FunctionEvaluationContext functionContext, boolean supportBooleanFloatAndDouble) {
Argument argument = functionArgs.get(ARG_TERM);
String term = (String) argument.getValue(functionContext);
PropertyArgument propArg = (PropertyArgument) functionArgs.get(ARG_PROPERTY);
if ((propArg == null) || (propArg.getPropertyName() == null)) {
throw new QueryModelException("Default field not supported");
} else if (propArg.getPropertyName().equals(QueryConstants.FIELD_PARENT)) {
ParentSupport parentSupport = new ParentSupport();
String id = (String) term;
parentSupport.setDbid(DBQuery.getDbid(id, nodeDAO, tenantService));
parentSupport.setCommandType(DBQueryBuilderPredicatePartCommandType.EQUALS);
builderSupport = parentSupport;
} else if (propArg.getPropertyName().equals(QueryConstants.FIELD_TYPE)) {
TypeSupport typeSupport = new TypeSupport();
typeSupport.setQnameIds(DBQuery.findTypeIds(term, namespaceService, dictionaryService, qnameDAO, false));
typeSupport.setCommandType(DBQueryBuilderPredicatePartCommandType.IN);
builderSupport = typeSupport;
} else if (propArg.getPropertyName().equals(QueryConstants.FIELD_ASPECT)) {
AspectSupport aspectSupport = new AspectSupport();
aspectSupport.setQnameIds(DBQuery.findAspectIds(term, namespaceService, dictionaryService, qnameDAO, false));
builderSupport = aspectSupport;
} else if (propArg.getPropertyName().equals(QueryConstants.FIELD_EXACTTYPE)) {
TypeSupport typeSupport = new TypeSupport();
typeSupport.setQnameIds(DBQuery.findTypeIds(term, namespaceService, dictionaryService, qnameDAO, true));
typeSupport.setCommandType(DBQueryBuilderPredicatePartCommandType.IN);
builderSupport = typeSupport;
} else if (propArg.getPropertyName().equals(QueryConstants.FIELD_EXACTASPECT)) {
AspectSupport aspectSupport = new AspectSupport();
aspectSupport.setQnameIds(DBQuery.findAspectIds(term, namespaceService, dictionaryService, qnameDAO, true));
builderSupport = aspectSupport;
} else {
argument = functionArgs.get(ARG_TOKENISATION_MODE);
AnalysisMode mode = (AnalysisMode) argument.getValue(functionContext);
if (mode != AnalysisMode.IDENTIFIER) {
throw new QueryModelException("Analysis mode not supported for DB " + mode);
}
PropertySupport propertySupport = new PropertySupport();
propertySupport.setValue(term);
QName propertyQName = QName.createQName(DBQuery.expandQName(functionContext.getAlfrescoPropertyName(propArg.getPropertyName()), namespaceService));
propertySupport.setPropertyQName(propertyQName);
propertySupport.setPropertyDataType(DBQuery.getDataTypeDefinition(dictionaryService, propertyQName));
propertySupport.setPair(qnameDAO.getQName(propertyQName));
propertySupport.setJoinCommandType(DBQuery.getJoinCommandType(propertyQName));
propertySupport.setFieldName(DBQuery.getFieldName(dictionaryService, propertyQName, supportBooleanFloatAndDouble));
propertySupport.setCommandType(DBQueryBuilderPredicatePartCommandType.EQUALS);
builderSupport = propertySupport;
}
}
Aggregations