Search in sources :

Example 6 with Path

use of org.whole.lang.queries.model.Path in project whole by wholeplatform.

the class PojoNormalizerVisitor method createDefaultTemplateInProperties.

public static void createDefaultTemplateInProperties(Library entity, IBindingManager bindings) {
    Path findAllPropertiesWithoutTemplate = (Path) PojoTemplateManager.instance().create("findAllPropertiesWithoutTemplate");
    bindings.wEnterScope();
    for (Property property : BehaviorUtils.<Property>compileAndLazyEvaluate(findAllPropertiesWithoutTemplate, entity, bindings)) property.setTemplate((Name) EntityUtils.clone(bindings.wGet("name")));
    bindings.wExitScope();
}
Also used : Path(org.whole.lang.queries.model.Path) Property(org.whole.lang.pojo.model.Property) Name(org.whole.lang.pojo.model.Name)

Example 7 with Path

use of org.whole.lang.queries.model.Path in project whole by wholeplatform.

the class XmlNormalizerBuilderTest method testNormalizationWithCDataSectMerge.

@Test
public void testNormalizationWithCDataSectMerge() {
    try {
        // create queries
        Path findNestedContent = (Path) XmlNormalizerBuilderTemplateManager.instance().create("findNestedContent");
        Path findMissingContentEntities = (Path) XmlNormalizerBuilderTemplateManager.instance().create("findMissingContentEntities");
        Path findConsecutiveCharDataOrCDataSect = (Path) XmlNormalizerBuilderTemplateManager.instance().create("findConsecutiveCharDataOrCDataSect");
        // create normalized sample xml model
        SampleXmlModel sampleXmlModelTemplate = new SampleXmlModel();
        Document xmlDocument = sampleXmlModelTemplate.create();
        IBindingManager parameters = BindingManagerFactory.instance.createArguments();
        parameters.wDefValue("mergeCDataSect", true);
        ModelBuilderOperation mop = new ModelBuilderOperation();
        XmlNormalizerBuilderOperation xnop = new XmlNormalizerBuilderOperation(mop, parameters);
        sampleXmlModelTemplate.apply(xnop);
        Document normalizedXmlDocument = (Document) mop.wGetResult();
        // no nested Content
        IEntityIterator<IEntity> iterator = BehaviorUtils.compileAndLazyEvaluate(findNestedContent, normalizedXmlDocument);
        assertFalse(iterator.hasNext());
        // no nested implied Content
        iterator = BehaviorUtils.compileAndLazyEvaluate(findMissingContentEntities, normalizedXmlDocument);
        assertFalse(iterator.hasNext());
        // no consecutive CharData
        iterator = BehaviorUtils.compileAndLazyEvaluate(findConsecutiveCharDataOrCDataSect, normalizedXmlDocument);
        assertFalse(iterator.hasNext());
        // no CDataSect at all
        iterator = IteratorFactory.descendantOrSelfMatcherIterator().withPattern(XmlEntityDescriptorEnum.CDataSect);
        iterator.reset(normalizedXmlDocument);
        assertFalse(iterator.hasNext());
        // both normalization strategies must yield the same result
        assertTrue(Matcher.match(normalizedXmlDocument, NormalizerOperation.normalize(xmlDocument, parameters)));
    } catch (Exception e) {
        fail();
    }
}
Also used : Path(org.whole.lang.queries.model.Path) ModelBuilderOperation(org.whole.lang.builders.ModelBuilderOperation) XmlNormalizerBuilderOperation(org.whole.lang.xml.codebase.XmlNormalizerBuilderOperation) IEntity(org.whole.lang.model.IEntity) IBindingManager(org.whole.lang.bindings.IBindingManager) Document(org.whole.lang.xml.model.Document) Test(org.junit.Test)

Example 8 with Path

use of org.whole.lang.queries.model.Path in project whole by wholeplatform.

the class XmlNormalizerBuilderTest method testNormalizationWithoutCDataSectMerge.

@Test
public void testNormalizationWithoutCDataSectMerge() {
    try {
        // create queries
        Path findNestedContent = (Path) XmlNormalizerBuilderTemplateManager.instance().create("findNestedContent");
        Path findMissingContentEntities = (Path) XmlNormalizerBuilderTemplateManager.instance().create("findMissingContentEntities");
        Path findConsecutiveCharDataOrCDataSect = (Path) XmlNormalizerBuilderTemplateManager.instance().create("findConsecutiveCharDataOrCDataSect");
        // create sample xml model
        SampleXmlModel sampleXmlModelTemplate = new SampleXmlModel();
        Document xmlDocument = sampleXmlModelTemplate.create();
        // has nested Content
        IEntityIterator<IEntity> iterator = BehaviorUtils.compileAndLazyEvaluate(findNestedContent, xmlDocument);
        assertTrue(iterator.hasNext());
        // has nested implied Content
        iterator = BehaviorUtils.compileAndLazyEvaluate(findMissingContentEntities, xmlDocument);
        assertTrue(iterator.hasNext());
        // has consecutive CharData or consecutive CDataSect
        iterator = BehaviorUtils.compileAndLazyEvaluate(findConsecutiveCharDataOrCDataSect, xmlDocument);
        assertTrue(iterator.hasNext());
        // create normalized sample xml model
        ModelBuilderOperation mop = new ModelBuilderOperation();
        XmlNormalizerBuilderOperation xnop = new XmlNormalizerBuilderOperation(mop);
        sampleXmlModelTemplate.apply(xnop);
        Document normalizedXmlDocument = (Document) mop.wGetResult();
        // no nested Content
        iterator = BehaviorUtils.compileAndLazyEvaluate(findNestedContent, normalizedXmlDocument);
        assertFalse(iterator.hasNext());
        // no nested implied Content
        iterator = BehaviorUtils.compileAndLazyEvaluate(findMissingContentEntities, normalizedXmlDocument);
        assertFalse(iterator.hasNext());
        // no consecutive CharData or consecutive CDataSect
        iterator = BehaviorUtils.compileAndLazyEvaluate(findConsecutiveCharDataOrCDataSect, normalizedXmlDocument);
        assertFalse(iterator.hasNext());
        // both normalization strategies must yield the same result
        assertTrue(Matcher.match(normalizedXmlDocument, NormalizerOperation.normalize(xmlDocument)));
    } catch (Exception e) {
        fail();
    }
}
Also used : Path(org.whole.lang.queries.model.Path) ModelBuilderOperation(org.whole.lang.builders.ModelBuilderOperation) IEntity(org.whole.lang.model.IEntity) XmlNormalizerBuilderOperation(org.whole.lang.xml.codebase.XmlNormalizerBuilderOperation) Document(org.whole.lang.xml.model.Document) Test(org.junit.Test)

Example 9 with Path

use of org.whole.lang.queries.model.Path in project whole by wholeplatform.

the class QueriesUtils method createRootPath.

public static Path createRootPath(IEntity entity) {
    QueriesEntityFactory qef = QueriesEntityFactory.instance;
    Path path = qef.createPath(0);
    IEntity parent = null;
    IEntityIterator<IEntity> iterator = IteratorFactory.ancestorOrSelfReverseIterator();
    iterator.reset(entity);
    if (CommonsEntityDescriptorEnum.RootFragment.equals(iterator.lookahead().wGetEntityDescriptor()))
        iterator.next();
    for (IEntity child : iterator) {
        if (parent != null)
            path.wAdd(EntityUtils.isSimple(parent) ? qef.createFeatureStep(CommonsDataTypePersistenceParser.unparseFeatureDescriptor(parent.wGetFeatureDescriptor(child))) : qef.createFilter(qef.createChildStep(), qef.createIndexTest(qef.createIntLiteral(parent.wIndexOf(child)))));
        parent = child;
    }
    return path;
}
Also used : Path(org.whole.lang.queries.model.Path) IEntity(org.whole.lang.model.IEntity) QueriesEntityFactory(org.whole.lang.queries.factories.QueriesEntityFactory)

Example 10 with Path

use of org.whole.lang.queries.model.Path in project whole by wholeplatform.

the class PojoNormalizerVisitor method createDefaultTemplateInParameters.

public static void createDefaultTemplateInParameters(Library entity, IBindingManager bindings) {
    Path findAllParametersWithoutTemlate = (Path) PojoTemplateManager.instance().create("findAllParametersWithoutTemlate");
    Path findParameterTemplate = (Path) PojoTemplateManager.instance().create("findPropertyTemplate");
    bindings.wEnterScope();
    for (Parameter parameter : BehaviorUtils.<Parameter>compileAndLazyEvaluate(findAllParametersWithoutTemlate, entity, bindings)) {
        PojoDeclaration pojo = (PojoDeclaration) bindings.wGet("pojo");
        Name name = BehaviorUtils.<Name>evaluateFirstResult(findParameterTemplate, pojo, bindings);
        if (name != null)
            parameter.setTemplate(EntityUtils.clone(name));
    }
    bindings.wExitScope();
}
Also used : Path(org.whole.lang.queries.model.Path) PojoDeclaration(org.whole.lang.pojo.model.PojoDeclaration) Parameter(org.whole.lang.pojo.model.Parameter) Name(org.whole.lang.pojo.model.Name)

Aggregations

Path (org.whole.lang.queries.model.Path)10 IEntity (org.whole.lang.model.IEntity)4 Test (org.junit.Test)2 ModelBuilderOperation (org.whole.lang.builders.ModelBuilderOperation)2 ArrayType (org.whole.lang.pojo.model.ArrayType)2 CollectionType (org.whole.lang.pojo.model.CollectionType)2 MapType (org.whole.lang.pojo.model.MapType)2 Name (org.whole.lang.pojo.model.Name)2 Parameter (org.whole.lang.pojo.model.Parameter)2 PojoDeclaration (org.whole.lang.pojo.model.PojoDeclaration)2 PrimitiveType (org.whole.lang.pojo.model.PrimitiveType)2 ProductDeclaration (org.whole.lang.pojo.model.ProductDeclaration)2 ReferenceType (org.whole.lang.pojo.model.ReferenceType)2 Type (org.whole.lang.pojo.model.Type)2 QueriesEntityFactory (org.whole.lang.queries.factories.QueriesEntityFactory)2 XmlNormalizerBuilderOperation (org.whole.lang.xml.codebase.XmlNormalizerBuilderOperation)2 Document (org.whole.lang.xml.model.Document)2 HashSet (java.util.HashSet)1 IBindingManager (org.whole.lang.bindings.IBindingManager)1 Grammar (org.whole.lang.grammars.model.Grammar)1