Java 类javax.xml.xquery.XQItemType 实例源码

项目:bagri    文件:ClientApp.java   
public void storeSecCommand() throws XQException {

        String dName = "..\\..\\etc\\samples\\tpox\\";
        String xml;
        try {
            xml = readTextFile(dName + "security5621.xml");
        } catch (IOException ex) {
            throw new XQException(ex.getMessage());
        }

        XQExpression xqe = xqc.createExpression();
        xqe.bindString(new QName("doc"), xml, xqc.createAtomicType(XQItemType.XQBASETYPE_STRING));
        xqe.executeCommand("storeDocument($doc)");
        // todo: get XDMDocument back somehow..
        // XDMDocument doc = (XDMDocument) ...
        xqe.close();
    }
项目:bagri    文件:XQJClientApp.java   
@Override
public String readDocument(String uri) throws XQException {

    String query = "declare namespace bgdb=\"http://bagridb.com/bdb\";\n" +
            "declare variable $uri external;\n" + 
            "let $doc := bgdb:get-document-content($uri)\n" +
            "return $doc\n";

    XQPreparedExpression xqpe = xqConn.prepareExpression(query);
    xqpe.bindString(new QName("uri"), uri, xqConn.createAtomicType(XQItemType.XQBASETYPE_ANYURI));
    XQResultSequence xqs = xqpe.executeQuery();
    String result = null;
    if (xqs.next()) {
        result = xqs.getItemAsString(null);
    }
    return result;
}
项目:bagri    文件:XQJClientApp.java   
@Override
public void deleteDocument(String uri) throws XQException {

    String query = "declare namespace bgdb=\"http://bagridb.com/bdb\";\n" +
            "declare variable $uri external;\n" + 
            "let $uri := bgdb:remove-document($uri)\n" + 
            "return $uri\n";

    XQPreparedExpression xqpe = xqConn.prepareExpression(query);
    xqpe.bindString(new QName("uri"), uri, xqConn.createAtomicType(XQItemType.XQBASETYPE_ANYURI));
    XQSequence xqs = xqpe.executeQuery();
    String result = null;
    try {
        if (xqs.next()) {
            result = xqs.getAtomicValue();
        }
        if (!uri.equals(result)) {
            throw new XQException("got no result from bgdb:remove-document function");
        }
    } finally {
        xqpe.close();
        xqs.close();
    }
}
项目:bagri    文件:EmbeddedApp.java   
public void storeSecCommand() throws XQException {

        String dName = "..\\..\\etc\\samples\\tpox\\";
        String xml;
        try {
            xml = readTextFile(dName + "security5621.xml");
        } catch (IOException ex) {
            throw new XQException(ex.getMessage());
        }

        XQExpression xqe = xqc.createExpression();
        xqe.bindString(new QName("doc"), xml, xqc.createAtomicType(XQItemType.XQBASETYPE_STRING));
        xqe.executeCommand("storeDocument($doc)");
        // todo: get XDMDocument back somehow..
        // XDMDocument doc = (XDMDocument) ...
        xqe.close();
    }
项目:bagri    文件:SaxonParserTest.java   
@Test
public void testBinding() throws XQException {
       SaxonXQDataSource xqds = new SaxonXQDataSource();
       XQConnection xqc = xqds.getConnection();
    XQPreparedExpression xqpe = xqc.prepareExpression("declare variable $v external; $v");
    xqpe.bindString(new QName("v"), "Hello world!", xqc.createAtomicType(XQItemType.XQBASETYPE_STRING));
    XQSequence xqs = xqpe.executeQuery();
    assertTrue(xqs.next());
    assertEquals("Hello world!", xqs.getAtomicValue());
    xqpe.close();

    xqpe = xqc.prepareExpression("declare variable $v external; $v");
    xqpe.bindString(new QName("v"), "Hello", xqc.createAtomicType(XQItemType.XQBASETYPE_NCNAME));
    xqs = xqpe.executeQuery();
    xqs.next();
    assertEquals("A-XQDC-1.7: Successful bindXXX.", XQItemType.XQITEMKIND_ATOMIC, xqs.getItemType().getItemKind());
    assertEquals("A-XQDC-1.7: Successful bindXXX.", XQItemType.XQBASETYPE_NCNAME, xqs.getItemType().getBaseType());
    assertEquals("A-XQDC-1.7: Successful bindXXX.", "Hello", xqs.getObject());
    xqpe.close(); 
}
项目:bagri    文件:XQUtils.java   
/**
    * constructs XQJ item type for the w3c {@link Node} instance provided
    * 
    * @param factory the XQJ data factory to produce XQ item type
    * @param node w3c XML Node instance
    * @return XQ item type
    * @throws XQException in case of processing error
    */
public static XQItemType getTypeForNode(XQDataFactory factory, org.w3c.dom.Node node) throws XQException {
    switch (node.getNodeType()) {
        case Node.DOCUMENT_NODE:
            return factory.createDocumentType();
        case Node.DOCUMENT_FRAGMENT_NODE:
            return factory.createDocumentType();
        case Node.ELEMENT_NODE: 
            return factory.createElementType(new QName(node.getNodeName()), XQItemType.XQBASETYPE_ANYTYPE);
        case Node.ATTRIBUTE_NODE:
            return factory.createAttributeType(new QName(node.getNodeName()), XQItemType.XQBASETYPE_ANYSIMPLETYPE);
        case Node.COMMENT_NODE:
            return factory.createCommentType();
        case Node.PROCESSING_INSTRUCTION_NODE:
            return factory.createProcessingInstructionType(null);
        case  Node.TEXT_NODE:
            return factory.createTextType();
        default: 
            return factory.createNodeType();
    }
}
项目:bagri    文件:MapBuilderTest.java   
@Test
public void testBuildManual() throws Exception {
    ModelManagement model = new ModelManagementImpl();
    List<Data> data = new ArrayList<>();
    //data.add(new Data(new Path("", "/map", NodeKind.document, 1, 0, 4, XQItemType.XQBASETYPE_ANYTYPE, Occurrence.onlyOne), new Element(new int[] {}, null)));
    data.add(new Data(new Path("/firstName", "/", NodeKind.attribute, 2, 1, 2, XQItemType.XQBASETYPE_STRING, Occurrence.onlyOne), new Element(new int[] {1}, "John")));
    data.add(new Data(new Path("/lastName", "/", NodeKind.attribute, 3, 1, 3, XQItemType.XQBASETYPE_STRING, Occurrence.onlyOne), new Element(new int[] {2}, "Smith")));
    data.add(new Data(new Path("/age", "/", NodeKind.attribute, 4, 1, 4, XQItemType.XQBASETYPE_LONG, Occurrence.onlyOne), new Element(new int[] {3}, new Long(25))));
    MapBuilder builder = new MapBuilder(model);
    Map<String, Object> content = builder.buildContent(data);
    System.out.println(content);
    assertNotNull(content);
    assertEquals("John", content.get("firstName"));
    assertEquals("Smith", content.get("lastName"));
    assertEquals(25L, content.get("age"));
}
项目:bagri    文件:BagriXQStaticContext.java   
@Override
public void setContextItemStaticType(XQItemType contextItemType) throws XQException {

    if (contextItemType == null) {
        this.type = null;
    } else {
        QName typeName = null;
        if (XQUtils.isBaseTypeSupported(contextItemType.getItemKind())) {
            typeName = contextItemType.getTypeName();
        } else {
            // ???
        }
        QName nodeName = null;
        if (XQUtils.isNodeNameSupported(contextItemType.getItemKind())) {
            nodeName = contextItemType.getNodeName();
        }
        this.type = new BagriXQItemType(contextItemType.getBaseType(), contextItemType.getItemKind(),
                nodeName, typeName, contextItemType.isElementNillable(), contextItemType.getSchemaURI());
    }
}
项目:bagri    文件:BagriXQPreparedExpression.java   
@Override
public XQSequenceType getStaticVariableType(QName name) throws XQException {

    checkState(ex_expression_closed);
    if (name == null) {
        throw new XQException("name is null");
    }
    if (getVarNames().contains(name)) {
        // where can I get var type??
        XQItemType type;
        XQItemAccessor acc = (XQItemAccessor) getBindings().get(name);
        if (acc != null) {
            type = acc.getItemType();
        } else {
            type = connection.createItemType();
        }
        return new BagriXQSequenceType(type, OCC_ZERO_OR_MORE);
    }
    throw new XQException("Static variable [" + name + "] does not exist");
}
项目:bagri    文件:BagriXQDataFactory.java   
@Override
public XQItem createItemFromAtomicValue(String value, XQItemType type) throws XQException {

    checkState(ex_connection_closed);
    if (type == null) {
        throw new XQException("value is null");
    }
    if (value == null) {
        throw new XQException("type is null");
    }
    if (!isAtomicType(type.getBaseType())) {
        throw new XQException("type is not atomic");
    }
    if (!((BagriXQItemType) type).isValueCompatible(value)) {
        throw new XQException("Value is not compatible");
    } 
    return new BagriXQItem(xqProcessor, type, value);
}
项目:bagri    文件:BagriXQDataFactory.java   
@Override
public XQItem createItemFromDocument(XMLStreamReader value, XQItemType type) throws XQException {

    checkState(ex_connection_closed);
    if (value == null) {
        throw new XQException("StreamReader is null");
    }

    String content;
    try {
        content = XMLUtils.sourceToString(new StAXSource(value), null);
    } catch (IOException ex) {
        throw new XQException(ex.getMessage());
    }
    return createItemFromDocument(content, null, type);
}
项目:bagri    文件:BagriXQDataFactory.java   
@Override
public XQItem createItemFromDocument(Source value, XQItemType type) throws XQException {

    checkState(ex_connection_closed);
    if (value == null) {
        throw new XQException("Source is null");
    }

    String content;
    try {
        content = XMLUtils.sourceToString(value, null);
    } catch (IOException ex) {
        throw new XQException(ex.getMessage());
    }
    return createItemFromDocument(content, null, type);
}
项目:bagri    文件:BagriXQDataFactory.java   
@Override
public XQItem createItemFromDocument(Reader value, String baseURI, XQItemType type) throws XQException {

    checkState(ex_connection_closed);
    if (value == null) {
        throw new XQException("value is null");
    }

    String content;
    try {
        content = XMLUtils.textToString(value);
    } catch (IOException ex) {
        throw new XQException(ex.getMessage());
    }
    return createItemFromDocument(content, baseURI, type);
}
项目:bagri    文件:BagriXQDataFactory.java   
@Override
public XQItem createItemFromDocument(InputStream value, String baseURI, XQItemType type) throws XQException {

    checkState(ex_connection_closed);
    if (value == null) {
        throw new XQException("value is null");
    }

    String content;
    try {
        content = XMLUtils.textToString(value);
    } catch (IOException ex) {
        throw new XQException(ex.getMessage());
    }
    return createItemFromDocument(content, baseURI, type);
}
项目:bagri    文件:BagriXQDataFactory.java   
@Override
public XQItem createItemFromNode(Node value, XQItemType type) throws XQException {

    checkState(ex_connection_closed);
    if (value == null) {
        throw new XQException("Node value is null");
    }
    if (type == null) {
        return new BagriXQItem(xqProcessor, createNodeType(), value); 
    } else { 
        if (!((BagriXQItemType) type).isNodeCompatible(value)) {
            throw new XQException("Node type and value are not compatible");
        } 
        return new BagriXQItem(xqProcessor, type, value); 
    }
}
项目:bagri    文件:BagriXQDataFactory.java   
@Override
public XQItem createItemFromObject(Object value, XQItemType type) throws XQException {

    checkState(ex_connection_closed);
    if (value == null) {
        throw new XQException("value is null");
    }
    if (type == null) {
        type = XQUtils.getTypeForObject(this, value); 
    } else {
        if (!XQUtils.isTypeValueCompatible(type.getBaseType(), value)) {
            throw new XQException("Value is not compatible");
        } 
    }
    return new BagriXQItem(xqProcessor, type, value);
}
项目:bagri    文件:BagriXQDataFactory.java   
@Override
public XQSequenceType createSequenceType(XQItemType type, int occurence) throws XQException {

    checkState(ex_connection_closed);
    if (type == null) {
        if (occurence == XQSequenceType.OCC_EMPTY) {
            return new BagriXQSequenceType(type, occurence);
        }
        throw new XQException("Occurence must be OCC_EMPTY");
    } else {
        if (occurence == XQSequenceType.OCC_EMPTY) {
            throw new XQException("Occurence must be not OCC_EMPTY");
        }
        if (occurence == XQSequenceType.OCC_ZERO_OR_ONE || occurence == XQSequenceType.OCC_EXACTLY_ONE
                || occurence == XQSequenceType.OCC_ZERO_OR_MORE || occurence == XQSequenceType.OCC_ONE_OR_MORE) {
            return new BagriXQSequenceType(type, occurence);
        }
        throw new XQException("Wrong occurence value: " + occurence);
    }
}
项目:bagri    文件:BagriXQItemAccessorTest.java   
@Test
public void testGetDouble() throws XQException {

    XQPreparedExpression xqpe = xqc.prepareExpression("declare variable $v external; $v");
    try {
        xqpe.bindDouble(new QName("v"), 1d, xqc.createAtomicType(XQItemType.XQBASETYPE_DOUBLE));
    } catch (XQException e) {
        fail("A-XQDC-1.7: bindDouble() failed with message: " + e.getMessage());
    }
    XQSequence xqs = xqpe.executeQuery();
    xqs.next();
    assertEquals("A-XQDC-1.7: Successful bindXXX.", XQItemType.XQITEMKIND_ATOMIC, xqs.getItemType().getItemKind());
    assertEquals("A-XQDC-1.7: Successful bindXXX.", XQItemType.XQBASETYPE_DOUBLE, xqs.getItemType().getBaseType());
    assertTrue("A-XQDC-1.7: Successful bindXXX.", 1d == xqs.getDouble());
    xqpe.close(); 
}
项目:bagri    文件:BagriXQItemAccessorTest.java   
@Test
public void testGetBoolean() throws XQException {

    XQExpression xqe = xqc.createExpression();
    xqe.bindObject(new QName("v"), Boolean.valueOf(true), null);
    xqe.bindBoolean(new QName("v"), true, xqc.createAtomicType(XQItemType.XQBASETYPE_BOOLEAN));
    XQSequence xqs = xqe.executeQuery("declare variable $v external; $v instance of xs:boolean");
    xqs.next();
    assertTrue("expected true but got false", xqs.getBoolean());
    //xqe.close();

    //xqe = xqc.createExpression();
    xqe.bindObject(new QName("v"), new Byte((byte)1), null);
    xqs = xqe.executeQuery("declare variable $v external; $v instance of xs:byte");
    xqs.next();
    assertTrue("expected true (byte) but got false", xqs.getBoolean());
}
项目:bagri    文件:BagriXQItemAccessorTest.java   
@Test
public void testBinding() throws XQException {
    XQPreparedExpression xqpe = xqc.prepareExpression("declare variable $v external; $v");
    xqpe.bindString(new QName("v"), "Hello world!", xqc.createAtomicType(XQItemType.XQBASETYPE_STRING));
    XQSequence xqs = xqpe.executeQuery();
    assertTrue(xqs.next());
    assertEquals("Hello world!", xqs.getAtomicValue());
    xqpe.close();

    xqpe = xqc.prepareExpression("declare variable $v external; $v");
    xqpe.bindString(new QName("v"), "Hello", xqc.createAtomicType(XQItemType.XQBASETYPE_NCNAME));
    xqs = xqpe.executeQuery();
    xqs.next();
    assertEquals("A-XQDC-1.7: Successful bindXXX.", XQItemType.XQITEMKIND_ATOMIC, xqs.getItemType().getItemKind());
    assertEquals("A-XQDC-1.7: Successful bindXXX.", XQItemType.XQBASETYPE_NCNAME, xqs.getItemType().getBaseType());
    assertEquals("A-XQDC-1.7: Successful bindXXX.", "Hello", xqs.getObject());
    xqpe.close(); 
}
项目:bagri    文件:BagriXQDataSourceTest.java   
@Test
public void testStoreSecurity() throws XQException {

    String dName = "../etc/samples/tpox/";
    String xml;
    try {
        xml = readTextFile(dName + "security1500.xml");
    } catch (IOException ex) {
        throw new XQException(ex.getMessage());
    }

    String query = "declare namespace bgdb=\"http://bagridb.com/bdb\";\n" +
            "declare variable $url external;\n" + 
            "declare variable $xml external;\n" + 
            "let $id := bgdb:store-document($url, $xml)\n" +
            "return $id\n";
    XQConnection xqc = xqds.getConnection();
    XQPreparedExpression xqpe = xqc.prepareExpression(query);
    xqpe.bindString(new QName("url"), "security1500.xml", xqc.createAtomicType(XQItemType.XQBASETYPE_ANYURI));
    xqpe.bindString(new QName("xml"), xml, xqc.createAtomicType(XQItemType.XQBASETYPE_STRING));
    XQSequence xqs = xqpe.executeQuery();
    assertTrue(xqs.next());
    xqs.close();
    xqpe.close();
}
项目:bagri    文件:ConcurrentModelMgmntTest.java   
@Override
public Integer call() throws Exception {
    Path path = mm.translatePath("/{http://tpox-benchmark.com/security}Security", 
            "/{http://tpox-benchmark.com/security}Security", ///{http://tpox-benchmark.com/security}Symbol/text()", 
            NodeKind.element, 0, XQItemType.XQBASETYPE_ANYTYPE, Occurrence.onlyOne);
            //NodeKind.text, XQItemType.XQBASETYPE_STRING, Occurrence.onlyOne);
    return path.getPathId();
}
项目:bagri    文件:ClientApp.java   
private long storeXmlDocument(String fileName) throws XQException {

    String dName = "..\\..\\etc\\samples\\tpox\\";
    String xml;
    try {
        xml = readTextFile(dName + fileName);
    } catch (IOException ex) {
        throw new XQException(ex.getMessage());
    }

    String query = "declare namespace bgdb=\"http://bagridb.com/bdb\";\n" +
            "declare variable $uri external;\n" + 
            "declare variable $xml external;\n" + 
            "declare variable $props external;\n" + 
            "let $id := bgdb:store-document($uri, $xml, $props)\n" +
            "return $id\n";

    XQPreparedExpression xqpe = xqc.prepareExpression(query);
    xqpe.bindString(new QName("uri"), "65538.xml", xqc.createAtomicType(XQItemType.XQBASETYPE_ANYURI));
    xqpe.bindString(new QName("xml"), xml, xqc.createAtomicType(XQItemType.XQBASETYPE_STRING));
    List<String> props = new ArrayList<>(4);
    props.add(pn_document_data_format + "=xml");
    props.add(pn_document_collections + "=CLN_Custom, CLN_Security");
    xqpe.bindSequence(new QName("props"), xqc.createSequence(props.iterator()));
    XQSequence xqs = xqpe.executeQuery();
    if (xqs.next()) {
        long id = xqs.getLong();
        xqpe.close();
        xqs.close();
        return id;
    } else {
        xqpe.close();
        xqs.close();
        throw new XQException("no response from store-document function");
    }
}
项目:bagri    文件:ClientApp.java   
public void removeSecCommand(long docId) throws XQException {

        XQExpression xqe = xqc.createExpression();
        xqe.bindLong(new QName("docId"), docId, xqc.createAtomicType(XQItemType.XQBASETYPE_LONG));
        xqe.executeCommand("removeDocument($docId)");
        xqe.close();
    }
项目:bagri    文件:XQJClientApp.java   
private String storeDocument(String uri, String content) throws XQException {

    String query = "declare namespace bgdb=\"http://bagridb.com/bdb\";\n" +
            "declare variable $uri external;\n" + 
            "declare variable $xml external;\n" + 
            "let $props := map {'" + pn_document_data_format + "': 'XML'}\n" +
            "let $uri := bgdb:store-document($uri, $xml, $props)\n" +
            "return $uri\n";

    XQPreparedExpression xqpe = xqConn.prepareExpression(query);
    xqpe.bindString(new QName("uri"), uri, xqConn.createAtomicType(XQItemType.XQBASETYPE_ANYURI));
    xqpe.bindString(new QName("xml"), content, xqConn.createAtomicType(XQItemType.XQBASETYPE_STRING));
    //List<String> prop = new ArrayList<>();
    //prop.add(pn_document_data_format);
    //prop.add("XML");
    //XQSequence sq = xqConn.createSequence(prop.iterator());
    //List props = new ArrayList();
    //props.add(sq);

    //xqpe.bindSequence(new QName("props"), xqConn.createSequence(props.iterator()));
    //xqpe.bindObject(new QName("props"), props, 
    //      xqConn.createSequenceType(
    //      xqConn.createSequenceType(xqConn.createAtomicType(XQItemType.XQBASETYPE_STRING), XQSequenceType.OCC_ONE_OR_MORE), 
    //      XQSequenceType.OCC_ZERO_OR_MORE));
    XQSequence xqs = xqpe.executeQuery();
    String result = null;
    try {
        if (xqs.next()) {
            result = xqs.getAtomicValue();
        }
    } finally {
        xqpe.close();
        xqs.close();
    }
    return result;
}
项目:bagri    文件:EmbeddedApp.java   
private long storeXmlDocument(String fileName) throws XQException {

    String dName = "..\\..\\etc\\samples\\tpox\\";
    String xml;
    try {
        xml = readTextFile(dName + fileName);
    } catch (IOException ex) {
        throw new XQException(ex.getMessage());
    }

    String query = "declare namespace bgdb=\"http://bagridb.com/bdb\";\n" +
            "declare variable $sec external;\n\n" + 
            //"return bgdb:store-document($sec)\n";
            "for $id in bgdb:store-document($sec)\n" +
            "return $id\n";

    XQPreparedExpression xqpe = xqc.prepareExpression(query);
    xqpe.bindString(new QName("sec"), xml, xqc.createAtomicType(XQItemType.XQBASETYPE_STRING));
    XQSequence xqs = xqpe.executeQuery();
    if (xqs.next()) {
        long result = xqs.getLong();
        xqpe.close();
        return result;
    } else {
        xqpe.close();
        throw new XQException("no response from store-document function");
    }
}
项目:bagri    文件:EmbeddedApp.java   
public void removeSecCommand(long docId) throws XQException {

        XQExpression xqe = xqc.createExpression();
        xqe.bindLong(new QName("docId"), docId, xqc.createAtomicType(XQItemType.XQBASETYPE_LONG));
        xqe.executeCommand("removeDocument($docId)");
        xqe.close();
    }
项目:bagri    文件:BagriXQJPlugin.java   
private void bindParams(Map<String, Parameter> params, XQDynamicContext xqe) throws XQException {
    for (Map.Entry<String, Parameter> e: params.entrySet()) {
        Parameter param = e.getValue();
        //if ("properties".equals(param.getType())) {
            // create and bind sequence with properties
        //  Properties props;
        //  try {
        //      props = propsFromString(param.getName());
        //  } catch (IOException ex) {
        //      logger.warn("bindParams.error; " + ex, ex);
        //      continue;
        //  }

            //XQItemType type = getConnection().createAtomicType(baseType, typeName, null);
            //XQSequence seq = getConnection().createSequence((java.util.Iterator) null);
            //xqe.bindSequence(new QName(e.getKey()), seq);
        //  XQSequenceType type = getConnection().createSequenceType(getConnection().createItemType(), XQSequenceType.OCC_ZERO_OR_MORE);
                    //getConnection().createSequenceType(
                    //      getConnection().createAtomicType(XQItemType.XQBASETYPE_STRING), XQSequenceType.OCC_ZERO_OR_MORE), XQSequenceType.OCC_ZERO_OR_MORE);
            //xqe.bindObject(new QName(e.getKey()), props, type);
        //} else {
            QName typeName = new QName(xs_ns, param.getType(), xs_prefix);
            int baseType = getBaseTypeForTypeName(typeName);
            XQItemType type = getConnection().createAtomicType(baseType, typeName, null);
            //xqe.bindAtomicValue(new QName(e.getKey()), param.getName(), type);
            xqe.bindObject(new QName(e.getKey()), getAtomicValue(baseType, param.getName()), type);
        //}
    }
}
项目:bagri    文件:XQUtils.java   
/**
    * constructs XQJ item type for the {@code value} specified
    * 
    * @param factory the XQJ data factory to produce XQ item type
    * @param value the value to get item type from
    * @return XQ item type 
    * @throws XQException in case of construction error
    */
public static XQItemType getTypeForObject(XQDataFactory factory, Object value) throws XQException {

    if (value instanceof org.w3c.dom.Node) {
        return getTypeForNode(factory, (org.w3c.dom.Node) value);
    }

    int baseType = getBaseTypeForObject(value);
    return factory.createAtomicType(baseType, getTypeName(baseType), null);
}
项目:bagri    文件:JsonpModeler.java   
private void processField(Path parent, String path, String field, JsonObject object, Occurrence occ) throws BagriException {

        // it can be an array also!
        String type = object.getString("type", null);
        if (type != null) {
            if (!path.endsWith("/")) {
                path += "/";
            }
            String next = path + field;
            switch (type) {
                case "array":
                    Path array = modelMgr.translatePath(parent.getRoot(), next, NodeKind.array, parent.getPathId(), XQItemType.XQBASETYPE_ANYTYPE, occ);
                    JsonObject items = object.getJsonObject("items");
                    processField(array, path, field + "/", items, occ);
                    break;
                case "boolean":
                    modelMgr.translatePath(parent.getRoot(), next, NodeKind.attribute, parent.getPathId(), XQItemType.XQBASETYPE_BOOLEAN, occ);
                    break;
                case "integer":
                    modelMgr.translatePath(parent.getRoot(), next, NodeKind.attribute, parent.getPathId(), XQItemType.XQBASETYPE_LONG, occ);
                    break;
                case "number":
                    modelMgr.translatePath(parent.getRoot(), next, NodeKind.attribute, parent.getPathId(), XQItemType.XQBASETYPE_DECIMAL, occ);
                    break;
                case "object":
                    Path element = modelMgr.translatePath(parent.getRoot(), next, NodeKind.element, parent.getPathId(), XQItemType.XQBASETYPE_ANYTYPE, occ);
                    processObject(element, next, object);
                    break;
                case "string":
                    modelMgr.translatePath(parent.getRoot(), next, NodeKind.attribute, parent.getPathId(), XQItemType.XQBASETYPE_STRING, occ);
                    break;
            }
        }
    }
项目:bagri    文件:XmlStaxParser.java   
boolean appendCharacters() throws BagriException {
    if (chars.length() > 0) {
        String content = chars.toString();
        // normalize xml content.. what if it is already normalized??
        content = content.replaceAll("&", "&amp;");
        // trim left/right ? this is schema-dependent. trim if schema-type 
        // is xs:token, for instance..
        addData("text()", NodeKind.text, content, XQItemType.XQBASETYPE_ANYATOMICTYPE, Occurrence.zeroOrOne); 
        chars.delete(0, chars.length());
        return true;
    }
    return false;
}
项目:bagri    文件:XmlStaxParser.java   
@Override
public void endElement() throws BagriException {
    if (!appendCharacters()) {
        if (isTopEmpty()) {
            addData("text()", NodeKind.text, Null._null, XQItemType.XQBASETYPE_ANYATOMICTYPE, Occurrence.zeroOrOne);
        }
    }
    super.endElement();
}
项目:bagri    文件:XmlModeler.java   
private int getBaseType(XSTypeDefinition std) {
    if (std == null) {
        return XQItemType.XQBASETYPE_ANYSIMPLETYPE;
    }
    if (xs_ns.equals(std.getNamespace())) {
        QName qn = new QName(std.getNamespace(), std.getName());
        int type = getBaseTypeForTypeName(qn);
        logger.trace("getBaseType; returning {} for type {}", type, std.getName());
        return type;
    }
    return getBaseType(std.getBaseType());
}
项目:bagri    文件:JsonpBuilderTest.java   
@Test
public void testBuildManual() throws Exception {
    ModelManagement model = new ModelManagementImpl();
    // to prepare model:
    //XmlStaxParser parser = new XmlStaxParser(model);
    //List<Data> data = parser.parse(json);
    //data.clear();
    List<Data> data = new ArrayList<>();
    data.add(new Data(new Path("", "/", NodeKind.document, 1, 0, 25, XQItemType.XQBASETYPE_ANYTYPE, Occurrence.onlyOne), new Element(new int[] {}, null)));
    data.add(new Data(new Path("/firstName", "/", NodeKind.attribute, 2, 1, 2, XQItemType.XQBASETYPE_STRING, Occurrence.onlyOne), new Element(new int[] {1}, "John")));
    data.add(new Data(new Path("/lastName", "/", NodeKind.attribute, 3, 1, 3, XQItemType.XQBASETYPE_STRING, Occurrence.onlyOne), new Element(new int[] {2}, "Smith")));
    data.add(new Data(new Path("/age", "/", NodeKind.attribute, 4, 1, 4, XQItemType.XQBASETYPE_LONG, Occurrence.onlyOne), new Element(new int[] {3}, new Long(25))));
    data.add(new Data(new Path("/address", "/", NodeKind.element, 5, 1, 9, XQItemType.XQBASETYPE_ANYTYPE, Occurrence.onlyOne), new Element(new int[] {4}, null)));
    data.add(new Data(new Path("/address/streetAddress", "/", NodeKind.attribute, 6, 5, 6, XQItemType.XQBASETYPE_STRING, Occurrence.onlyOne), new Element(new int[] {4, 1}, "21 2nd Street")));
    data.add(new Data(new Path("/address/city", "/", NodeKind.attribute, 7, 5, 7, XQItemType.XQBASETYPE_STRING, Occurrence.onlyOne), new Element(new int[] {4, 2}, "New York")));
    data.add(new Data(new Path("/address/state", "/", NodeKind.attribute, 8, 5, 8, XQItemType.XQBASETYPE_STRING, Occurrence.onlyOne), new Element(new int[] {4, 3}, "NY")));
    data.add(new Data(new Path("/address/postalCode", "/", NodeKind.attribute, 9, 5, 9, XQItemType.XQBASETYPE_STRING, Occurrence.onlyOne), new Element(new int[] {4, 4}, "10021")));
    data.add(new Data(new Path("/phoneNumber", "/", NodeKind.array, 10, 1, 14, XQItemType.XQBASETYPE_ANYTYPE, Occurrence.zeroOrOne), new Element(new int[] {5}, null)));
    data.add(new Data(new Path("/phoneNumber/", "/", NodeKind.element, 11, 10, 14, XQItemType.XQBASETYPE_ANYTYPE, Occurrence.oneOrMany), new Element(new int[] {5, 1}, null)));
    data.add(new Data(new Path("/phoneNumber/type", "/", NodeKind.attribute, 12, 11, 12, XQItemType.XQBASETYPE_STRING, Occurrence.onlyOne), new Element(new int[] {5, 1, 1}, "home")));
    data.add(new Data(new Path("/phoneNumber/number", "/", NodeKind.attribute, 13, 11, 13, XQItemType.XQBASETYPE_STRING, Occurrence.onlyOne), new Element(new int[] {5, 1, 2}, "212 555-1234")));
    data.add(new Data(new Path("/phoneNumber/", "/", NodeKind.element, 11, 10, 14, XQItemType.XQBASETYPE_ANYTYPE, Occurrence.oneOrMany), new Element(new int[] {5, 2}, null)));
    data.add(new Data(new Path("/phoneNumber/type", "/", NodeKind.attribute, 12, 11, 12, XQItemType.XQBASETYPE_STRING, Occurrence.onlyOne), new Element(new int[] {5, 2, 1}, "fax")));
    data.add(new Data(new Path("/phoneNumber/number", "/", NodeKind.attribute, 13, 11, 13, XQItemType.XQBASETYPE_STRING, Occurrence.onlyOne), new Element(new int[] {5, 2, 2}, "646 555-4567")));
    data.add(new Data(new Path("/phoneNumber/comment", "/", NodeKind.attribute, 14, 11, 14, XQItemType.XQBASETYPE_STRING, Occurrence.onlyOne), new Element(new int[] {5, 2, 3}, Null._null)));
    data.add(new Data(new Path("/gender", "/", NodeKind.element, 15, 1, 16, XQItemType.XQBASETYPE_ANYTYPE, Occurrence.onlyOne), new Element(new int[] {6}, null)));
    data.add(new Data(new Path("/gender/type", "/", NodeKind.attribute, 16, 15, 16, XQItemType.XQBASETYPE_STRING, Occurrence.onlyOne), new Element(new int[] {6, 1}, "male")));
    //System.out.println(data);
    JsonpBuilder builder = new JsonpBuilder(model);
    Properties props = new Properties();
    props.setProperty(JsonGenerator.PRETTY_PRINTING, "true");
    builder.init(props);
    String content = builder.buildContent(data);
    System.out.println(content);
    assertNotNull(content);
    // now compare content vs xml..
    //assertEquals(xml, content);
}
项目:bagri    文件:JsonpBuilderTest.java   
@Test
public void testBuildManualSparse() throws Exception {
    ModelManagement model = new ModelManagementImpl();
    // to prepare model:
    JsonpParser parser = new JsonpParser(model);
    ParseResults results = parser.parse(json); 
    List<Data> data = results.getResults();
    data.clear();
    data = new ArrayList<>();
    //data.add(new Data(new Path("", "/", NodeKind.document, 1, 0, 25, XQItemType.XQBASETYPE_ANYTYPE, Occurrence.onlyOne), new Element(new int[] {}, null)));
    data.add(new Data(new Path("/firstName", "/", NodeKind.attribute, 2, 1, 2, XQItemType.XQBASETYPE_STRING, Occurrence.onlyOne), new Element(new int[] {1}, "John")));
    data.add(new Data(new Path("/lastName", "/", NodeKind.attribute, 3, 1, 3, XQItemType.XQBASETYPE_STRING, Occurrence.onlyOne), new Element(new int[] {2}, "Smith")));
    data.add(new Data(new Path("/age", "/", NodeKind.attribute, 4, 1, 4, XQItemType.XQBASETYPE_LONG, Occurrence.onlyOne), new Element(new int[] {3}, new Long(25))));
    data.add(new Data(new Path("/address/streetAddress", "/", NodeKind.attribute, 6, 5, 6, XQItemType.XQBASETYPE_STRING, Occurrence.onlyOne), new Element(new int[] {4, 1}, "21 2nd Street")));
    data.add(new Data(new Path("/address/city", "/", NodeKind.attribute, 7, 5, 7, XQItemType.XQBASETYPE_STRING, Occurrence.onlyOne), new Element(new int[] {4, 2}, "New York")));
    data.add(new Data(new Path("/address/state", "/", NodeKind.attribute, 8, 5, 8, XQItemType.XQBASETYPE_STRING, Occurrence.onlyOne), new Element(new int[] {4, 3}, "NY")));
    data.add(new Data(new Path("/address/postalCode", "/", NodeKind.attribute, 9, 5, 9, XQItemType.XQBASETYPE_STRING, Occurrence.onlyOne), new Element(new int[] {4, 4}, "10021")));
    data.add(new Data(new Path("/phoneNumber/type", "/", NodeKind.attribute, 12, 11, 12, XQItemType.XQBASETYPE_STRING, Occurrence.onlyOne), new Element(new int[] {5, 1, 1}, "home")));
    data.add(new Data(new Path("/phoneNumber/number", "/", NodeKind.attribute, 13, 11, 13, XQItemType.XQBASETYPE_STRING, Occurrence.onlyOne), new Element(new int[] {5, 1, 2}, "212 555-1234")));
    data.add(new Data(new Path("/phoneNumber/type", "/", NodeKind.attribute, 12, 11, 12, XQItemType.XQBASETYPE_STRING, Occurrence.onlyOne), new Element(new int[] {5, 2, 1}, "fax")));
    data.add(new Data(new Path("/phoneNumber/number", "/", NodeKind.attribute, 13, 11, 13, XQItemType.XQBASETYPE_STRING, Occurrence.onlyOne), new Element(new int[] {5, 2, 2}, "646 555-4567")));
    data.add(new Data(new Path("/phoneNumber/comment", "/", NodeKind.attribute, 14, 11, 14, XQItemType.XQBASETYPE_STRING, Occurrence.onlyOne), new Element(new int[] {5, 2, 3}, Null._null)));
    data.add(new Data(new Path("/gender/type", "/", NodeKind.attribute, 16, 15, 16, XQItemType.XQBASETYPE_STRING, Occurrence.onlyOne), new Element(new int[] {6, 1}, "male")));
    //System.out.println(data);
    JsonpBuilder builder = new JsonpBuilder(model);
    Properties props = new Properties();
    props.setProperty(JsonGenerator.PRETTY_PRINTING, "true");
    builder.init(props);
    Map<DataKey, Elements> dataMap = JsonpBuilder.dataToElements(data);
    String content = builder.buildContent(dataMap);
    System.out.println(content);
    assertNotNull(content);
    // now compare content vs xml..
    //assertEquals(xml, content);
}
项目:bagri    文件:BagriXQDataFactory.java   
@Override
public XQItemType createAtomicType(int baseType, QName typeName, URI schemaURI) throws XQException {

    checkState(ex_connection_closed);
    if (baseType == XQBASETYPE_UNTYPED || baseType == XQBASETYPE_ANYTYPE ||
        baseType == XQBASETYPE_IDREFS || baseType == XQBASETYPE_NMTOKENS ||
        baseType == XQBASETYPE_ENTITIES || baseType == XQBASETYPE_ANYSIMPLETYPE) {

        throw new XQException("Wrong base type: " + baseType); 
    }
    return new BagriXQItemType(baseType, XQITEMKIND_ATOMIC, null, typeName, false, schemaURI);
}
项目:bagri    文件:BagriXQDataFactory.java   
@Override
public XQItemType createAttributeType(QName nodeName, int baseType, QName typeName, URI schemaURI) throws XQException {

    checkState(ex_connection_closed);
    if (baseType == XQBASETYPE_UNTYPED || baseType == XQBASETYPE_ANYTYPE) {
        throw new XQException("Wrong base type: " + baseType);
    }
    return new BagriXQItemType(baseType, XQITEMKIND_ATTRIBUTE, nodeName, typeName, false, schemaURI);
}
项目:bagri    文件:BagriXQDataFactory.java   
@Override
public XQItemType createDocumentElementType(XQItemType elementType) throws XQException {

    checkState(ex_connection_closed);
    if (elementType == null) {
        throw new XQException("provided elementType is null");
    } 
    if (elementType.getItemKind() !=  XQITEMKIND_ELEMENT) {
        throw new XQException("provided elementType has wrong kind: " + elementType);
    }
    return new BagriXQItemType(elementType.getBaseType(), XQITEMKIND_DOCUMENT_ELEMENT, elementType.getNodeName(), 
            elementType.getTypeName(), false, null); 
}
项目:bagri    文件:BagriXQDataFactory.java   
@Override
public XQItemType createDocumentSchemaElementType(XQItemType elementType) throws XQException {

    checkState(ex_connection_closed);
    return new BagriXQItemType(XQBASETYPE_ANYTYPE, XQITEMKIND_DOCUMENT_SCHEMA_ELEMENT, elementType.getNodeName(), 
            elementType.getTypeName(), elementType.isElementNillable(), elementType.getSchemaURI());

}
项目:bagri    文件:BagriXQDataFactory.java   
@Override
public XQItem createItemFromBoolean(boolean value, XQItemType type) throws XQException {

    checkState(ex_connection_closed);
    if (type == null || type.getBaseType() == XQBASETYPE_BOOLEAN) {
        return new BagriXQItem(xqProcessor, new BagriXQItemType(XQBASETYPE_BOOLEAN, XQITEMKIND_ATOMIC, null, getTypeName(XQBASETYPE_BOOLEAN), false, null), value);
    } 
    throw new XQException("wrong boolean type: " + type + "(" + type.getBaseType() + ")");
}