Search in sources :

Example 6 with EqualFilter

use of com.evolveum.midpoint.prism.query.EqualFilter in project midpoint by Evolveum.

the class ItemValueRestriction method findOperationForFilter.

protected ItemRestrictionOperation findOperationForFilter(ValueFilter filter) throws QueryException {
    ItemRestrictionOperation operation;
    if (filter instanceof EqualFilter) {
        operation = ItemRestrictionOperation.EQ;
    } else if (filter instanceof GreaterFilter) {
        GreaterFilter gf = (GreaterFilter) filter;
        operation = gf.isEquals() ? ItemRestrictionOperation.GE : ItemRestrictionOperation.GT;
    } else if (filter instanceof LessFilter) {
        LessFilter lf = (LessFilter) filter;
        operation = lf.isEquals() ? ItemRestrictionOperation.LE : ItemRestrictionOperation.LT;
    } else if (filter instanceof SubstringFilter) {
        SubstringFilter substring = (SubstringFilter) filter;
        if (substring.isAnchorEnd()) {
            operation = ItemRestrictionOperation.ENDS_WITH;
        } else if (substring.isAnchorStart()) {
            operation = ItemRestrictionOperation.STARTS_WITH;
        } else {
            operation = ItemRestrictionOperation.SUBSTRING;
        }
    } else {
        throw new QueryException("Can't translate filter '" + filter + "' to operation.");
    }
    return operation;
}
Also used : QueryException(com.evolveum.midpoint.repo.sql.query.QueryException) SubstringFilter(com.evolveum.midpoint.prism.query.SubstringFilter) EqualFilter(com.evolveum.midpoint.prism.query.EqualFilter) GreaterFilter(com.evolveum.midpoint.prism.query.GreaterFilter) LessFilter(com.evolveum.midpoint.prism.query.LessFilter)

Example 7 with EqualFilter

use of com.evolveum.midpoint.prism.query.EqualFilter in project midpoint by Evolveum.

the class PageForgotPassword method createDynamicFormQuery.

private ObjectQuery createDynamicFormQuery(Form form) {
    DynamicFormPanel<UserType> userDynamicPanel = (DynamicFormPanel<UserType>) form.get(createComponentPath(ID_DYNAMIC_LAYOUT, ID_DYNAMIC_FORM));
    List<ItemPath> filledItems = userDynamicPanel.getChangedItems();
    PrismObject<UserType> user;
    try {
        user = userDynamicPanel.getObject();
    } catch (SchemaException e1) {
        getSession().error(getString("pageForgetPassword.message.usernotfound"));
        throw new RestartResponseException(PageForgotPassword.class);
    }
    List<EqualFilter> filters = new ArrayList<>();
    for (ItemPath path : filledItems) {
        PrismProperty property = user.findProperty(path);
        EqualFilter filter = EqualFilter.createEqual(path, property.getDefinition(), null);
        filter.setValue(property.getAnyValue().clone());
        filters.add(filter);
    }
    return ObjectQuery.createObjectQuery(AndFilter.createAnd((List) filters));
}
Also used : SchemaException(com.evolveum.midpoint.util.exception.SchemaException) ArrayList(java.util.ArrayList) PrismProperty(com.evolveum.midpoint.prism.PrismProperty) DynamicFormPanel(com.evolveum.midpoint.web.component.prism.DynamicFormPanel) RestartResponseException(org.apache.wicket.RestartResponseException) EqualFilter(com.evolveum.midpoint.prism.query.EqualFilter) List(java.util.List) ArrayList(java.util.ArrayList) SearchResultList(com.evolveum.midpoint.schema.SearchResultList) UserType(com.evolveum.midpoint.xml.ns._public.common.common_3.UserType) ItemPath(com.evolveum.midpoint.prism.path.ItemPath)

Example 8 with EqualFilter

use of com.evolveum.midpoint.prism.query.EqualFilter in project midpoint by Evolveum.

the class PrismAsserts method assertEqualsFilter.

public static void assertEqualsFilter(ObjectFilter objectFilter, QName expectedFilterDef, QName expectedTypeName, ItemPath path) {
    assertEquals("Wrong filter class", EqualFilter.class, objectFilter.getClass());
    EqualFilter filter = (EqualFilter) objectFilter;
    //we don't have definition in all situation..this is almost OK..it will be computed dynamicaly
    if (filter.getDefinition() != null) {
        assertEquals("Wrong filter definition element name", expectedFilterDef, filter.getDefinition().getName());
        assertEquals("Wrong filter definition type", expectedTypeName, filter.getDefinition().getTypeName());
    }
    assertPathEquivalent("Wrong filter path", path, filter.getFullPath());
}
Also used : EqualFilter(com.evolveum.midpoint.prism.query.EqualFilter)

Example 9 with EqualFilter

use of com.evolveum.midpoint.prism.query.EqualFilter in project midpoint by Evolveum.

the class TestParseResource method assertResourcePrism.

private void assertResourcePrism(PrismObject<ResourceType> resource, boolean isSimple) throws SchemaException {
    PrismContext prismContext = getPrismContext();
    AssertJUnit.assertEquals("Wrong oid (prism)", TestConstants.RESOURCE_OID, resource.getOid());
    //		assertEquals("Wrong version", "42", resource.getVersion());
    PrismObjectDefinition<ResourceType> resourceDefinition = resource.getDefinition();
    assertNotNull("No resource definition", resourceDefinition);
    PrismAsserts.assertObjectDefinition(resourceDefinition, new QName(SchemaConstantsGenerated.NS_COMMON, "resource"), ResourceType.COMPLEX_TYPE, ResourceType.class);
    assertEquals("Wrong class in resource", ResourceType.class, resource.getCompileTimeClass());
    ResourceType resourceType = resource.asObjectable();
    assertNotNull("asObjectable resulted in null", resourceType);
    assertPropertyValue(resource, "name", PrismTestUtil.createPolyString("Embedded Test OpenDJ"));
    assertPropertyDefinition(resource, "name", PolyStringType.COMPLEX_TYPE, 0, 1);
    if (!isSimple) {
        assertPropertyValue(resource, "namespace", TestConstants.RESOURCE_NAMESPACE);
        assertPropertyDefinition(resource, "namespace", DOMUtil.XSD_ANYURI, 0, 1);
    }
    PrismReference connectorRef = resource.findReference(ResourceType.F_CONNECTOR_REF);
    assertNotNull("No connectorRef", connectorRef);
    PrismReferenceValue connectorRefVal = connectorRef.getValue();
    assertNotNull("No connectorRef value", connectorRefVal);
    assertEquals("Wrong type in connectorRef value", ConnectorType.COMPLEX_TYPE, connectorRefVal.getTargetType());
    SearchFilterType filter = connectorRefVal.getFilter();
    assertNotNull("No filter in connectorRef value", filter);
    if (!isSimple) {
        ObjectFilter objectFilter = QueryConvertor.parseFilter(filter, ConnectorType.class, prismContext);
        assertTrue("Wrong kind of filter: " + objectFilter, objectFilter instanceof EqualFilter);
        EqualFilter equalFilter = (EqualFilter) objectFilter;
        // should be extension/x:extConnType
        ItemPath path = equalFilter.getPath();
        PrismAsserts.assertPathEqualsExceptForPrefixes("Wrong filter path", namespaces ? new ItemPath(new QName("extension"), new QName("http://x/", "extConnType")) : new ItemPath(new QName("extension"), new QName("extConnType")), path);
        PrismPropertyValue filterValue = (PrismPropertyValue) equalFilter.getValues().get(0);
        assertEquals("Wrong filter value", "org.identityconnectors.ldap.LdapConnector", ((RawType) filterValue.getValue()).getParsedRealValue(String.class).trim());
    //assertEquals("Wrong filter value", "org.identityconnectors.ldap.LdapConnector", ((String) filterValue.getValue()).trim());
    }
    EvaluationTimeType resolutionTime = connectorRefVal.getResolutionTime();
    if (isSimple) {
        assertEquals("Wrong resolution time in connectorRef value", EvaluationTimeType.RUN, resolutionTime);
    } else {
        assertEquals("Wrong resolution time in connectorRef value", EvaluationTimeType.IMPORT, resolutionTime);
    }
    PrismContainer<?> configurationContainer = resource.findContainer(ResourceType.F_CONNECTOR_CONFIGURATION);
    assertContainerDefinition(configurationContainer, "configuration", ConnectorConfigurationType.COMPLEX_TYPE, 1, 1);
    PrismContainerValue<?> configContainerValue = configurationContainer.getValue();
    List<Item<?, ?>> configItems = configContainerValue.getItems();
    assertEquals("Wrong number of config items", isSimple ? 1 : 4, configItems.size());
    PrismContainer<?> ldapConfigPropertiesContainer = configurationContainer.findContainer(ICFC_CONFIGURATION_PROPERTIES);
    assertNotNull("No icfcldap:configurationProperties container", ldapConfigPropertiesContainer);
    PrismContainerDefinition<?> ldapConfigPropertiesContainerDef = ldapConfigPropertiesContainer.getDefinition();
    assertNotNull("No icfcldap:configurationProperties container definition", ldapConfigPropertiesContainerDef);
    assertEquals("icfcldap:configurationProperties container definition maxOccurs", 1, ldapConfigPropertiesContainerDef.getMaxOccurs());
    List<Item<?, ?>> ldapConfigPropItems = ldapConfigPropertiesContainer.getValue().getItems();
    assertEquals("Wrong number of ldapConfigPropItems items", 7, ldapConfigPropItems.size());
    PrismContainer<Containerable> schemaContainer = resource.findContainer(ResourceType.F_SCHEMA);
    if (isSimple) {
        assertNull("Schema sneaked in", schemaContainer);
    } else {
        assertNotNull("No schema container", schemaContainer);
    }
    PrismContainer<?> schemaHandlingContainer = resource.findContainer(ResourceType.F_SCHEMA_HANDLING);
    if (isSimple) {
        assertNull("SchemaHandling sneaked in", schemaHandlingContainer);
    } else {
        assertNotNull("No schemaHandling container", schemaHandlingContainer);
    }
    if (!isSimple) {
        PrismProperty<SynchronizationType> synchronizationProp = resource.findProperty(ResourceType.F_SYNCHRONIZATION);
        SynchronizationType synchronizationType = synchronizationProp.getRealValue();
        ObjectSynchronizationType objectSynchronizationType = synchronizationType.getObjectSynchronization().get(0);
        List<ConditionalSearchFilterType> correlations = objectSynchronizationType.getCorrelation();
        assertEquals("Wrong number of correlation expressions", 1, correlations.size());
        ConditionalSearchFilterType correlationFilterType = correlations.get(0);
        System.out.println("\nCorrelation filter");
        System.out.println(correlationFilterType.debugDump());
        ObjectFilter objectFilter = QueryConvertor.parseFilter(correlationFilterType.serializeToXNode(), prismContext);
        PrismAsserts.assertAssignableFrom(EqualFilter.class, objectFilter);
        EqualFilter equalsFilter = (EqualFilter) objectFilter;
        equalsFilter.getFullPath();
        assertNull("Unexpected values in correlation expression", equalsFilter.getValues());
        ExpressionWrapper expression = equalsFilter.getExpression();
        assertNotNull("No expressions in correlation expression", expression);
        ExpressionType expressionType = (ExpressionType) expression.getExpression();
        assertEquals("Wrong number of expression evaluators in correlation expression", 1, expressionType.getExpressionEvaluator().size());
        ItemPathType itemPathType = (ItemPathType) expressionType.getExpressionEvaluator().get(0).getValue();
        // $account/c:attributes/my:yyy
        PrismAsserts.assertPathEqualsExceptForPrefixes("path in correlation expression", namespaces ? new ItemPath(new NameItemPathSegment(new QName("account"), true), new NameItemPathSegment(new QName(SchemaConstantsGenerated.NS_COMMON, "attributes")), new NameItemPathSegment(new QName("http://myself.me/schemas/whatever", "yyy"))) : new ItemPath(new NameItemPathSegment(new QName("account"), true), new NameItemPathSegment(new QName("attributes")), new NameItemPathSegment(new QName("yyy"))), itemPathType.getItemPath());
    //PrismAsserts.assertAllParsedNodes(expression);
    // TODO
    }
}
Also used : NameItemPathSegment(com.evolveum.midpoint.prism.path.NameItemPathSegment) EqualFilter(com.evolveum.midpoint.prism.query.EqualFilter) SearchFilterType(com.evolveum.prism.xml.ns._public.query_3.SearchFilterType) QName(javax.xml.namespace.QName) ObjectFilter(com.evolveum.midpoint.prism.query.ObjectFilter) ItemPath(com.evolveum.midpoint.prism.path.ItemPath)

Example 10 with EqualFilter

use of com.evolveum.midpoint.prism.query.EqualFilter in project midpoint by Evolveum.

the class TestFilterExpression method test152EvaluateExpressionEmployeeTypeDefaultsCaptain.

@Test
public void test152EvaluateExpressionEmployeeTypeDefaultsCaptain() throws Exception {
    final String TEST_NAME = "test152EvaluateExpressionEmployeeTypeDefaultsCaptain";
    TestUtil.displayTestTile(TEST_NAME);
    // GIVEN
    OperationResult result = new OperationResult(TestFilterExpression.class.getName() + "." + TEST_NAME);
    Task task = taskManager.createTaskInstance(TEST_NAME);
    ObjectFilter filter = evaluateExpressionAssertFilter("expression-employeeType-filter-defaults.xml", "CAPTAIN", EqualFilter.class, task, result);
    EqualFilter equalFilter = (EqualFilter) filter;
    PrismAsserts.assertValues("Wrong values in filter", equalFilter.getValues(), "CAPTAIN");
    executeFilter(filter, 1, task, result);
}
Also used : Task(com.evolveum.midpoint.task.api.Task) OperationResult(com.evolveum.midpoint.schema.result.OperationResult) EqualFilter(com.evolveum.midpoint.prism.query.EqualFilter) ObjectFilter(com.evolveum.midpoint.prism.query.ObjectFilter) Test(org.testng.annotations.Test) AbstractInternalModelIntegrationTest(com.evolveum.midpoint.model.impl.AbstractInternalModelIntegrationTest)

Aggregations

EqualFilter (com.evolveum.midpoint.prism.query.EqualFilter)10 ItemPath (com.evolveum.midpoint.prism.path.ItemPath)4 ObjectFilter (com.evolveum.midpoint.prism.query.ObjectFilter)4 OperationResult (com.evolveum.midpoint.schema.result.OperationResult)4 AbstractInternalModelIntegrationTest (com.evolveum.midpoint.model.impl.AbstractInternalModelIntegrationTest)3 Task (com.evolveum.midpoint.task.api.Task)3 SchemaException (com.evolveum.midpoint.util.exception.SchemaException)3 ArrayList (java.util.ArrayList)3 QName (javax.xml.namespace.QName)3 Test (org.testng.annotations.Test)3 SubstringFilter (com.evolveum.midpoint.prism.query.SubstringFilter)2 QueryException (com.evolveum.midpoint.repo.sql.query.QueryException)2 List (java.util.List)2 RefinedAttributeDefinition (com.evolveum.midpoint.common.refinery.RefinedAttributeDefinition)1 PrismProperty (com.evolveum.midpoint.prism.PrismProperty)1 PrismPropertyValue (com.evolveum.midpoint.prism.PrismPropertyValue)1 PrismValue (com.evolveum.midpoint.prism.PrismValue)1 NameItemPathSegment (com.evolveum.midpoint.prism.path.NameItemPathSegment)1 PolyString (com.evolveum.midpoint.prism.polystring.PolyString)1 ComparativeFilter (com.evolveum.midpoint.prism.query.ComparativeFilter)1