Search in sources :

Example 1 with ModelMappingCondition

use of com.onespatial.jrc.tns.oml_to_rif.model.alignment.ModelMappingCondition in project hale by halestudio.

the class TestCqlToMappingConditionTranslator method testTranslateMoreComplexLogical.

/**
 * Test that takes a slightly more complex logical expression comprising a
 * nested tree of predicates each comprising a comparison operation. Also it
 * tests the greater than and equals operations, and contains a mix of
 * string, floating-point and integer literals.
 *
 * @throws CQLException
 *             if any errors occurred parsing the CQL string
 * @throws TranslationException
 *             if any errors occurred during the translation
 */
@Test
public void testTranslateMoreComplexLogical() throws CQLException, TranslationException {
    // $NON-NLS-1$
    String cqlPredicate = "ATTR1 < 10.5 AND ATTR2 = 'chocolate' OR ATTR3 > 10";
    ModelMappingCondition result = digester.translate(CQL.toFilter(cqlPredicate));
    assertNotNull(result);
    assertNotNull(result.getRoot());
    assertThat(result.getRoot(), is(instanceOf(OrNode.class)));
    assertNotNull(result.getRoot().getChildren());
    assertThat(result.getRoot().getChildren().size(), is(equalTo(2)));
    assertThat(result.getRoot().getChild(0), is(instanceOf(AndNode.class)));
    AndNode andNode = (AndNode) result.getRoot().getChild(0);
    assertNotNull(andNode.getChildren());
    assertThat(andNode.getChildren().size(), is(equalTo(2)));
    assertThat(andNode.getChild(0), is(instanceOf(LessThanNode.class)));
    LessThanNode lessNode = (LessThanNode) andNode.getChild(0);
    // $NON-NLS-1$ //$NON-NLS-2$
    checkComparisonRightLiteral(lessNode, "ATTR1", "10.5");
    assertThat(andNode.getChild(1), is(instanceOf(EqualToNode.class)));
    EqualToNode equalNode = (EqualToNode) andNode.getChild(1);
    // $NON-NLS-1$ //$NON-NLS-2$
    checkComparisonRightLiteral(equalNode, "ATTR2", "chocolate");
    assertThat(result.getRoot().getChild(1), is(instanceOf(GreaterThanNode.class)));
    GreaterThanNode greaterNode = (GreaterThanNode) result.getRoot().getChild(1);
    // $NON-NLS-1$ //$NON-NLS-2$
    checkComparisonRightLiteral(greaterNode, "ATTR3", "10");
}
Also used : EqualToNode(com.onespatial.jrc.tns.oml_to_rif.model.rif.filter.nonterminal.comparison.EqualToNode) AndNode(com.onespatial.jrc.tns.oml_to_rif.model.rif.filter.nonterminal.logical.AndNode) GreaterThanNode(com.onespatial.jrc.tns.oml_to_rif.model.rif.filter.nonterminal.comparison.GreaterThanNode) LessThanNode(com.onespatial.jrc.tns.oml_to_rif.model.rif.filter.nonterminal.comparison.LessThanNode) ModelMappingCondition(com.onespatial.jrc.tns.oml_to_rif.model.alignment.ModelMappingCondition) Test(org.junit.Test)

Example 2 with ModelMappingCondition

use of com.onespatial.jrc.tns.oml_to_rif.model.alignment.ModelMappingCondition in project hale by halestudio.

the class TestCqlToMappingConditionTranslator method testTranslateAndWithThreeChildren.

/**
 * Tests translating a CQL expression where an 'AND' filter has three child
 * comparison operators.
 *
 * @throws CQLException
 *             if any errors occurred parsing the CQL string
 * @throws TranslationException
 *             if any errors occurred during the translation
 */
@Test
public void testTranslateAndWithThreeChildren() throws CQLException, TranslationException {
    // $NON-NLS-1$
    String cqlPredicate = "ATTR1 < 10.5 AND ATTR2 = 'chocolate' AND ATTR3 > 10";
    ModelMappingCondition result = digester.translate(CQL.toFilter(cqlPredicate));
    assertNotNull(result);
    assertNotNull(result.getRoot());
    assertThat(result.getRoot(), instanceOf(AndNode.class));
    AndNode andNode = (AndNode) result.getRoot();
    assertThat(andNode.getChildren().size(), is(equalTo(2)));
    assertThat(andNode.getChild(0), is(instanceOf(AndNode.class)));
    AndNode nestedAndNode = (AndNode) andNode.getChild(0);
    assertThat(nestedAndNode.getChild(0), is(instanceOf(LessThanNode.class)));
    LessThanNode lessNode = (LessThanNode) nestedAndNode.getChild(0);
    // $NON-NLS-1$ //$NON-NLS-2$
    checkComparisonRightLiteral(lessNode, "ATTR1", "10.5");
    assertThat(nestedAndNode.getChild(1), is(instanceOf(EqualToNode.class)));
    EqualToNode equalNode = (EqualToNode) nestedAndNode.getChild(1);
    // $NON-NLS-1$ //$NON-NLS-2$
    checkComparisonRightLiteral(equalNode, "ATTR2", "chocolate");
    assertThat(andNode.getChild(1), is(instanceOf(GreaterThanNode.class)));
    GreaterThanNode greaterNode = (GreaterThanNode) andNode.getChild(1);
    // $NON-NLS-1$ //$NON-NLS-2$
    checkComparisonRightLiteral(greaterNode, "ATTR3", "10");
}
Also used : EqualToNode(com.onespatial.jrc.tns.oml_to_rif.model.rif.filter.nonterminal.comparison.EqualToNode) AndNode(com.onespatial.jrc.tns.oml_to_rif.model.rif.filter.nonterminal.logical.AndNode) GreaterThanNode(com.onespatial.jrc.tns.oml_to_rif.model.rif.filter.nonterminal.comparison.GreaterThanNode) LessThanNode(com.onespatial.jrc.tns.oml_to_rif.model.rif.filter.nonterminal.comparison.LessThanNode) ModelMappingCondition(com.onespatial.jrc.tns.oml_to_rif.model.alignment.ModelMappingCondition) Test(org.junit.Test)

Example 3 with ModelMappingCondition

use of com.onespatial.jrc.tns.oml_to_rif.model.alignment.ModelMappingCondition in project hale by halestudio.

the class TestCqlToMappingConditionTranslator method testTranslateNegatedEquality.

/**
 * Tests translating a CQL expression that negates the result of a simple
 * equality filter.
 *
 * @throws TranslationException
 *             if any errors occurred during the translation
 * @throws CQLException
 *             if any errors occurred parsing the CQL string
 */
@Test
public void testTranslateNegatedEquality() throws CQLException, TranslationException {
    // $NON-NLS-1$
    String cqlPredicate = "ATTR1 <> '17'";
    ModelMappingCondition result = digester.translate(CQL.toFilter(cqlPredicate));
    assertNotNull(result);
    assertNotNull(result.getRoot());
    assertThat(result.getRoot(), is(instanceOf(NotNode.class)));
    NotNode notNode = (NotNode) result.getRoot();
    assertThat(notNode.getChildren().size(), is(equalTo(1)));
    assertThat(notNode.getChild(0), is(instanceOf(EqualToNode.class)));
    EqualToNode equalNode = (EqualToNode) notNode.getChild(0);
    assertThat(equalNode.getChildren().size(), is(equalTo(0)));
    // $NON-NLS-1$ //$NON-NLS-2$
    checkComparisonRightLiteral(equalNode, "ATTR1", "17");
}
Also used : EqualToNode(com.onespatial.jrc.tns.oml_to_rif.model.rif.filter.nonterminal.comparison.EqualToNode) NotNode(com.onespatial.jrc.tns.oml_to_rif.model.rif.filter.nonterminal.logical.NotNode) ModelMappingCondition(com.onespatial.jrc.tns.oml_to_rif.model.alignment.ModelMappingCondition) Test(org.junit.Test)

Example 4 with ModelMappingCondition

use of com.onespatial.jrc.tns.oml_to_rif.model.alignment.ModelMappingCondition in project hale by halestudio.

the class ModelAlignmentToModelRifTranslator method buildModelSentance.

private ModelSentence buildModelSentance(ModelClassMappingCell classMapping, List<ModelAttributeMappingCell> attributeMappings, List<ModelStaticAssignmentCell> staticAssignments) {
    ModelSentence sentence = new ModelSentence();
    sentence.setSourceClass(// $NON-NLS-1$
    classMapping.getSourceClass().getElementName().getLocalPart().toLowerCase() + "-instance", getName(classMapping.getSourceClass().getElementName()));
    sentence.setTargetClass(// $NON-NLS-1$
    classMapping.getTargetClass().getElementName().getLocalPart().toLowerCase() + "-instance", getName(classMapping.getTargetClass().getElementName()));
    for (ModelMappingCondition condition : classMapping.getMappingConditions()) {
        sentence.addMappingCondition(buildRifMappingCondition(sentence, (AbstractFilterNode) condition.getRoot()));
    }
    for (ModelAttributeMappingCell attributeMapping : attributeMappings) {
        buildPropertyMapping(sentence, attributeMapping);
    }
    for (ModelStaticAssignmentCell staticAssigment : staticAssignments) {
        buildStaticAssignment(sentence, staticAssigment);
    }
    return sentence;
}
Also used : ModelSentence(com.onespatial.jrc.tns.oml_to_rif.model.rif.ModelSentence) AbstractFilterNode(com.onespatial.jrc.tns.oml_to_rif.model.rif.filter.nonterminal.AbstractFilterNode) ModelAttributeMappingCell(com.onespatial.jrc.tns.oml_to_rif.model.alignment.ModelAttributeMappingCell) ModelStaticAssignmentCell(com.onespatial.jrc.tns.oml_to_rif.model.alignment.ModelStaticAssignmentCell) ModelMappingCondition(com.onespatial.jrc.tns.oml_to_rif.model.alignment.ModelMappingCondition)

Example 5 with ModelMappingCondition

use of com.onespatial.jrc.tns.oml_to_rif.model.alignment.ModelMappingCondition in project hale by halestudio.

the class TestCqlToMappingConditionTranslator method testTranslateGeometricContains.

/**
 * Tests translating a CQL expression which includes a geometric 'contains'
 * predicate.
 *
 * @throws CQLException
 *             if any errors occurred parsing the CQL string
 * @throws TranslationException
 *             if any errors occurred during the translation
 */
// @Test
public void testTranslateGeometricContains() throws CQLException, TranslationException {
    // $NON-NLS-1$
    String cqlPredicate = "CONTAINS(ATTR1, ATTR2)";
    ModelMappingCondition result = digester.translate(CQL.toFilter(cqlPredicate));
    assertNotNull(result);
    assertNotNull(result.getRoot());
// TODO finish test assertions
}
Also used : ModelMappingCondition(com.onespatial.jrc.tns.oml_to_rif.model.alignment.ModelMappingCondition)

Aggregations

ModelMappingCondition (com.onespatial.jrc.tns.oml_to_rif.model.alignment.ModelMappingCondition)12 Test (org.junit.Test)8 EqualToNode (com.onespatial.jrc.tns.oml_to_rif.model.rif.filter.nonterminal.comparison.EqualToNode)5 LessThanNode (com.onespatial.jrc.tns.oml_to_rif.model.rif.filter.nonterminal.comparison.LessThanNode)5 GreaterThanNode (com.onespatial.jrc.tns.oml_to_rif.model.rif.filter.nonterminal.comparison.GreaterThanNode)3 AndNode (com.onespatial.jrc.tns.oml_to_rif.model.rif.filter.nonterminal.logical.AndNode)3 FilterNode (com.onespatial.jrc.tns.oml_to_rif.model.rif.filter.nonterminal.FilterNode)2 ModelAttributeMappingCell (com.onespatial.jrc.tns.oml_to_rif.model.alignment.ModelAttributeMappingCell)1 ModelStaticAssignmentCell (com.onespatial.jrc.tns.oml_to_rif.model.alignment.ModelStaticAssignmentCell)1 ModelSentence (com.onespatial.jrc.tns.oml_to_rif.model.rif.ModelSentence)1 AbstractFilterNode (com.onespatial.jrc.tns.oml_to_rif.model.rif.filter.nonterminal.AbstractFilterNode)1 AbstractComparisonNode (com.onespatial.jrc.tns.oml_to_rif.model.rif.filter.nonterminal.comparison.AbstractComparisonNode)1 AbstractGeometricNode (com.onespatial.jrc.tns.oml_to_rif.model.rif.filter.nonterminal.geometric.AbstractGeometricNode)1 WithinNode (com.onespatial.jrc.tns.oml_to_rif.model.rif.filter.nonterminal.geometric.WithinNode)1 NotNode (com.onespatial.jrc.tns.oml_to_rif.model.rif.filter.nonterminal.logical.NotNode)1 OrNode (com.onespatial.jrc.tns.oml_to_rif.model.rif.filter.nonterminal.logical.OrNode)1 AttributeExpressionImpl (org.geotools.filter.AttributeExpressionImpl)1 CompareFilterImpl (org.geotools.filter.CompareFilterImpl)1 GeometryFilterImpl (org.geotools.filter.GeometryFilterImpl)1 LogicFilterImpl (org.geotools.filter.LogicFilterImpl)1