Search in sources :

Example 6 with ParentSupport

use of org.alfresco.repo.search.impl.querymodel.impl.db.ParentSupport in project alfresco-repository by Alfresco.

the class DBIn 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));
    ListArgument listArgument = (ListArgument) functionArgs.get(ARG_LIST);
    Collection<Serializable> collection = (Collection<Serializable>) listArgument.getValue(functionContext);
    if (propertyArgument.getPropertyName().equals(PropertyIds.PARENT_ID)) {
        ParentSupport parentSupport = new ParentSupport();
        parentSupport.setDbids(DBQuery.getDbids(DBQuery.toStringValues(collection), nodeDAO, tenantService));
        if ((not != null) && (not.equals(Boolean.TRUE))) {
            parentSupport.setCommandType(DBQueryBuilderPredicatePartCommandType.NOTIN);
        } else {
            parentSupport.setCommandType(DBQueryBuilderPredicatePartCommandType.IN);
        }
        builderSupport = parentSupport;
    } else if (propertyArgument.getPropertyName().equals(PropertyIds.OBJECT_ID)) {
        UUIDSupport uuidSupport = new UUIDSupport();
        uuidSupport.setUuids(DBQuery.getUUIDs(DBQuery.toStringValues(collection)));
        if ((not != null) && (not.equals(Boolean.TRUE))) {
            uuidSupport.setCommandType(DBQueryBuilderPredicatePartCommandType.NOTIN);
        } else {
            uuidSupport.setCommandType(DBQueryBuilderPredicatePartCommandType.IN);
        }
        builderSupport = uuidSupport;
    } else if (propertyArgument.getPropertyName().equals(PropertyIds.OBJECT_TYPE_ID)) {
        TypeSupport typeSupport = new TypeSupport();
        ArrayList<Long> typeIds = new ArrayList<Long>();
        for (String typeName : DBQuery.toStringValues(collection)) {
            String alfTypeName = functionContext.getAlfrescoTypeName(typeName);
            typeIds.addAll(DBQuery.findTypeIds(alfTypeName, namespaceService, dictionaryService, qnameDAO, true));
        }
        typeSupport.setQnameIds(typeIds);
        if ((not != null) && (not.equals(Boolean.TRUE))) {
            typeSupport.setCommandType(DBQueryBuilderPredicatePartCommandType.NOTIN);
        } else {
            typeSupport.setCommandType(DBQueryBuilderPredicatePartCommandType.IN);
        }
        builderSupport = typeSupport;
    } else if (propertyArgument.getPropertyName().equals(PropertyIds.BASE_TYPE_ID)) {
        TypeSupport typeSupport = new TypeSupport();
        ArrayList<Long> typeIds = new ArrayList<Long>();
        for (String typeName : DBQuery.toStringValues(collection)) {
            String alfTypeName = functionContext.getAlfrescoTypeName(typeName);
            typeIds.addAll(DBQuery.findTypeIds(alfTypeName, namespaceService, dictionaryService, qnameDAO, false));
        }
        typeSupport.setQnameIds(typeIds);
        if ((not != null) && (not.equals(Boolean.TRUE))) {
            typeSupport.setCommandType(DBQueryBuilderPredicatePartCommandType.NOTIN);
        } else {
            typeSupport.setCommandType(DBQueryBuilderPredicatePartCommandType.IN);
        }
        builderSupport = typeSupport;
    } else if (propertyArgument.getPropertyName().equals(PropertyIds.CONTENT_STREAM_MIME_TYPE)) {
        PropertySupport propertySupport = new PropertySupport();
        propertySupport.setValues(DBQuery.toStringValues(collection));
        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.NOTIN);
        } else {
            propertySupport.setCommandType(DBQueryBuilderPredicatePartCommandType.IN);
        }
        builderSupport = propertySupport;
    } else if (propertyArgument.getPropertyName().equals(PropertyIds.CONTENT_STREAM_LENGTH)) {
        PropertySupport propertySupport = new PropertySupport();
        ArrayList<String> lengths = new ArrayList<String>();
        for (String value : DBQuery.toStringValues(collection)) {
            lengths.add(value);
        }
        propertySupport.setValues(DBQuery.toStringValues(lengths));
        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.NOTIN);
        } else {
            propertySupport.setCommandType(DBQueryBuilderPredicatePartCommandType.IN);
        }
        builderSupport = propertySupport;
    } else {
        PropertySupport propertySupport = new PropertySupport();
        propertySupport.setValues(DBQuery.toStringValues(collection));
        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.NOTIN);
        } else {
            propertySupport.setCommandType(DBQueryBuilderPredicatePartCommandType.IN);
        }
        builderSupport = propertySupport;
    }
}
Also used : Serializable(java.io.Serializable) ListArgument(org.alfresco.repo.search.impl.querymodel.ListArgument) Argument(org.alfresco.repo.search.impl.querymodel.Argument) PropertyArgument(org.alfresco.repo.search.impl.querymodel.PropertyArgument) UUIDSupport(org.alfresco.repo.search.impl.querymodel.impl.db.UUIDSupport) TypeSupport(org.alfresco.repo.search.impl.querymodel.impl.db.TypeSupport) QName(org.alfresco.service.namespace.QName) ArrayList(java.util.ArrayList) ParentSupport(org.alfresco.repo.search.impl.querymodel.impl.db.ParentSupport) Collection(java.util.Collection) PropertyArgument(org.alfresco.repo.search.impl.querymodel.PropertyArgument) PropertySupport(org.alfresco.repo.search.impl.querymodel.impl.db.PropertySupport) ListArgument(org.alfresco.repo.search.impl.querymodel.ListArgument)

Example 7 with ParentSupport

use of org.alfresco.repo.search.impl.querymodel.impl.db.ParentSupport in project alfresco-repository by Alfresco.

the class DBNotEquals 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) {
    setPropertyAndStaticArguments(functionArgs);
    Serializable staticValue = getStaticArgument().getValue(functionContext);
    if (getPropertyName().equals(PropertyIds.PARENT_ID)) {
        ParentSupport parentSupport = new ParentSupport();
        String id = (String) staticValue;
        parentSupport.setDbid(DBQuery.getDbid(id, nodeDAO, tenantService));
        parentSupport.setCommandType(DBQueryBuilderPredicatePartCommandType.NOTEQUALS);
        builderSupport = parentSupport;
    } else if (getPropertyName().equals(PropertyIds.OBJECT_ID)) {
        UUIDSupport uuidSupport = new UUIDSupport();
        uuidSupport.setCommandType(DBQueryBuilderPredicatePartCommandType.NOTEQUALS);
        uuidSupport.setUuid(DBQuery.getUUID((String) staticValue));
        builderSupport = uuidSupport;
    } else if (getPropertyName().equals(PropertyIds.OBJECT_TYPE_ID)) {
        TypeSupport typeSupport = new TypeSupport();
        String typeName = functionContext.getAlfrescoTypeName((String) staticValue);
        typeSupport.setQnameIds(DBQuery.findTypeIds(typeName, namespaceService, dictionaryService, qnameDAO, true));
        typeSupport.setCommandType(DBQueryBuilderPredicatePartCommandType.NOTIN);
        builderSupport = typeSupport;
    } else if (getPropertyName().equals(PropertyIds.BASE_TYPE_ID)) {
        TypeSupport typeSupport = new TypeSupport();
        String typeName = functionContext.getAlfrescoTypeName((String) staticValue);
        typeSupport.setQnameIds(DBQuery.findTypeIds(typeName, namespaceService, dictionaryService, qnameDAO, false));
        typeSupport.setCommandType(DBQueryBuilderPredicatePartCommandType.NOTIN);
        builderSupport = typeSupport;
    } else if (getPropertyName().equals(PropertyIds.CONTENT_STREAM_MIME_TYPE)) {
        PropertySupport propertySupport = new PropertySupport();
        propertySupport.setValue(staticValue.toString());
        QName basePropertyQName = QName.createQName(DBQuery.expandQName(functionContext.getAlfrescoPropertyName(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");
        propertySupport.setCommandType(DBQueryBuilderPredicatePartCommandType.NOTEQUALS);
        propertySupport.setLuceneFunction(functionContext.getLuceneFunction(getFunctionArgument()));
        builderSupport = propertySupport;
    } else if (getPropertyName().equals(PropertyIds.CONTENT_STREAM_LENGTH)) {
        PropertySupport propertySupport = new PropertySupport();
        propertySupport.setValue(staticValue.toString());
        QName basePropertyQName = QName.createQName(DBQuery.expandQName(functionContext.getAlfrescoPropertyName(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");
        propertySupport.setCommandType(DBQueryBuilderPredicatePartCommandType.NOTEQUALS);
        propertySupport.setLuceneFunction(functionContext.getLuceneFunction(getFunctionArgument()));
        builderSupport = propertySupport;
    } else {
        PropertySupport propertySupport = new PropertySupport();
        propertySupport.setValue(staticValue.toString());
        QName propertyQName = QName.createQName(DBQuery.expandQName(functionContext.getAlfrescoPropertyName(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.NOTEQUALS);
        propertySupport.setLuceneFunction(functionContext.getLuceneFunction(getFunctionArgument()));
        builderSupport = propertySupport;
    }
}
Also used : Serializable(java.io.Serializable) UUIDSupport(org.alfresco.repo.search.impl.querymodel.impl.db.UUIDSupport) TypeSupport(org.alfresco.repo.search.impl.querymodel.impl.db.TypeSupport) QName(org.alfresco.service.namespace.QName) ParentSupport(org.alfresco.repo.search.impl.querymodel.impl.db.ParentSupport) PropertySupport(org.alfresco.repo.search.impl.querymodel.impl.db.PropertySupport)

Aggregations

ParentSupport (org.alfresco.repo.search.impl.querymodel.impl.db.ParentSupport)7 PropertySupport (org.alfresco.repo.search.impl.querymodel.impl.db.PropertySupport)6 TypeSupport (org.alfresco.repo.search.impl.querymodel.impl.db.TypeSupport)6 QName (org.alfresco.service.namespace.QName)6 Argument (org.alfresco.repo.search.impl.querymodel.Argument)5 PropertyArgument (org.alfresco.repo.search.impl.querymodel.PropertyArgument)4 UUIDSupport (org.alfresco.repo.search.impl.querymodel.impl.db.UUIDSupport)4 Serializable (java.io.Serializable)3 QueryModelException (org.alfresco.repo.search.impl.querymodel.QueryModelException)3 AnalysisMode (org.alfresco.repo.search.adaptor.lucene.AnalysisMode)2 AspectSupport (org.alfresco.repo.search.impl.querymodel.impl.db.AspectSupport)2 ArrayList (java.util.ArrayList)1 Collection (java.util.Collection)1 ListArgument (org.alfresco.repo.search.impl.querymodel.ListArgument)1