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

项目:XWorld    文件:XMLConfigClientTemplate.java   
public <T> T get(String id, Class<T> clazz) {
    try {
        IXQSession session = DptXMLDBSessionFactory.getXQSession(false);
        checkConn(session);
        StringBuilder query = MappingXqueryManager.getSelectIDQuery(id,
                clazz);
        if (log.isDebugEnabled()) {
            log.debug("查询语句" + query.toString());
        }
        XQSequence sequence = session
                .executeQuerySequence(query.toString());
        Unmarshaller unmarshaller = JAXBUtil
                .createUnMarshallerByClazz(clazz);
        if (sequence.next()) {
            return (T) unmarshaller.unmarshal(new StringReader(sequence
                    .getItemAsString(null)));
        }
    } catch (Exception e) {
        log.debug("查询失败", e);
        throw new XMLDataAccessException("查询失败", e);
    }
    return null;
}
项目: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    文件:JPConverterImpl.java   
@Override
public Sequence convert(Object object, XPathContext context) throws XPathException {
    logger.trace("convert.enter; object: {}", object);
    Sequence result = null;
    if (object instanceof XQItem) {
        try {
            result = convertXQItem((XQItem) object, context.getConfiguration());
        } catch (XQException ex) {
            throw new XPathException(ex);
        }
    } else if (object instanceof XQSequence) {
        XQSequence sequence = (XQSequence) object;
        result = SequenceTool.toMemoSequence(new XQSequenceIterator(sequence, context.getConfiguration()));
    }
    logger.trace("convert.exit; returning: {}", result);
    return result; //convertToItem(object, context.getConfiguration());
}
项目:bagri    文件:SaxonParserTest.java   
@Test
public void testGetBoolean() throws XQException {

       SaxonXQDataSource xqds = new SaxonXQDataSource();
       XQConnection xqc = xqds.getConnection();
    XQExpression xqe = xqc.createExpression();
    xqe.bindObject(new QName("v"), Boolean.valueOf(true), null);
    XQSequence xqs = xqe.executeQuery("declare variable $v external; $v instance of xs:boolean");
    xqs.next();
    assertTrue("expected true but got false", xqs.getBoolean());

    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());

    xqs.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   
public static Map<String, Object> mapFromSequence(XQSequence cs) throws XQException {
    Map<String, Object> result;
    synchronized (cs) {
        if (cs.isScrollable()) {
            cs.beforeFirst();
            result = new HashMap<>(cs.count());
        } else {
            result = new HashMap<>();
        }

        while (cs.next()) {
            XQSequence pair = (XQSequence) cs.getObject();
            pair.beforeFirst();
            pair.next();
            String key = pair.getAtomicValue();
            pair.next();
            Object value = pair.getObject();
            result.put(key, value);
        }
    }
        return result;
}
项目:bagri    文件:BagriXQSequenceTest.java   
@Test
public void testWriteSequence() throws XQException {

    XQExpression xqe = xqc.createExpression();
    XQSequence xqs = xqe.executeQuery("<e>Hello world!</e>");

    StringWriter result = new StringWriter();
    Properties prop = new Properties();
    prop.setProperty("encoding", "UTF-8");

    try {
        xqs.writeSequence(result, prop);
    } catch (XQException e) {
        fail("A-XQS-24.1: writeSequence failed with message: " + e.getMessage());
    }
    assertTrue("A-XQS-24.1: Expects serialized result contains '<e>Hello world!</e>', but it is '" + result.toString() + "'", result.toString().indexOf("<e>Hello world!</e>") != -1);
    xqe.close();
}
项目: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    文件:XQSequenceSerializer.java   
@Override
public void write(ObjectDataOutput out, XQSequence sequence) throws IOException {
    try {
        List<XQItemAccessor> items;
        synchronized (sequence) {
            if (sequence.isScrollable()) {
                sequence.beforeFirst();
                items = new ArrayList<>(sequence.count());
            } else {
                items = new ArrayList<>();
            }
            while (sequence.next()) {
                Object value = sequence.getObject();
                if (value instanceof XQItemAccessor) {
                    items.add((XQItemAccessor) value);
                } else {
                    items.add(sequence.getItem());
                }
            }
        }
        logger.trace("write; writing items: {}", items);
        out.writeObject(items);
    } catch (XQException ex) {
        throw new IOException(ex);
    }
}
项目:XWorld    文件:XQSession.java   
public XQSequence executeQuerySequence(String query) throws XQException{
    log.debug("sequence语句执行begin:"+query);
    XQConnection connection= this.getXqConnection();
    XQSequence sequence = connection.createExpression().executeQuery(query);
    log.debug("sequence语句执行end");
    return sequence;
}
项目:XWorld    文件:XQSession.java   
@Override
public XQSequence executeQuerySequence(String query, Map bind_map)
        throws XQException {
    XQSequence sequence = null;
    XQConnection connection = this.getXqConnection();
    if (bind_map != null && !bind_map.isEmpty()) {
        // bind
        if (bind_map != null && !bind_map.isEmpty()) {
            XQPreparedExpression expression = connection
                    .prepareExpression(query);
            Set<Map.Entry> set = bind_map.entrySet();
            for (Iterator<Map.Entry> it = set.iterator(); it.hasNext();) {
                Map.Entry entry = (Map.Entry) it.next();
                String value = (String) entry.getValue();
                if(value!=null){

                    expression.bindString(new QName((String) entry.getKey()),
                            value, null);
                }
            }
            sequence = expression.executeQuery();
        } else {
            sequence = connection.createExpression().executeQuery(query);
        }
    } else {
        sequence = connection.createExpression().executeQuery(query);
    }
    return sequence;
}
项目:XWorld    文件:XQSession.java   
public XQSequence executeQuerySequence(String query, Map bind_map)
        throws XQException {
    XQSequence sequence = null;
    XQConnection connection = this.getXqConnection();
    if (bind_map != null && !bind_map.isEmpty()) {
        if(log.isDebugEnabled()){
            log.debug("查询参数:"+bind_map);
        }
        // bind
        if (bind_map != null && !bind_map.isEmpty()) {
            XQPreparedExpression expression = connection
                    .prepareExpression(query);
            Set<Map.Entry> set = bind_map.entrySet();
            for (Iterator<Map.Entry> it = set.iterator(); it.hasNext();) {
                Map.Entry entry = (Map.Entry) it.next();
                String value = (String) entry.getValue();
                if(value!=null){
                    expression.bindAtomicValue(new QName((String) entry.getKey()),
                            value, null);
                }
            }
            sequence = expression.executeQuery();
        } else {
            sequence = connection.createExpression().executeQuery(query);
        }
    } else {
        sequence = connection.createExpression().executeQuery(query);
    }
    return sequence;
}
项目:XWorld    文件:XMLConfigClientTemplate.java   
public <T> long count(Class<T> clazz, String where, Object paramObj) {
    IXQSession session = DptXMLDBSessionFactory.getXQSession(false);
    checkConn(session);
    StringBuilder result_query_b = new StringBuilder();
    long result = 0L;
    try {
        StringBuilder query = MappingXqueryManager.getSelectQuery(clazz,
                where);
        DynamicContext context = new DynamicContext();
        context.setParameter(paramObj);
        List bind_list = ExpressionBindUtil.bindParamMap(query.toString(),
                context);
        String result_query = (String) bind_list.get(0);
        Map bind_map = (Map) bind_list.get(1);
        result_query_b.append("let $xworld_xquery:=(");
        result_query_b.append(result_query);
        result_query_b.append(") return (count($xworld_xquery))");
        if (log.isDebugEnabled()) {
            log.debug("查询语句" + result_query_b);
        }
        XQSequence sequence = session.executeQuerySequence(
                result_query_b.toString(), bind_map);
        result = Long.valueOf(sequence.getSequenceAsString(null));
    } catch (Exception e) {
        log.debug("查询失败", e);
        throw new XMLDataAccessException("查询失败  " + result_query_b, e);
    }
    if (log.isDebugEnabled()) {
        log.debug("查询结果:" + result);
    }
    return result;
}
项目:XWorld    文件:XMLConfigClientTemplate.java   
public <T> List<T> queryForList(Class<T> clazz, Integer pageNo,
        Integer pageSize) {
    List<T> list = new ArrayList<T>();
    StringBuilder query = new StringBuilder();
    try {
        IXQSession session = DptXMLDBSessionFactory.getXQSession(false);
        checkConn(session);
        if (pageNo != null && pageSize != null) {
            query.append("subsequence((");
            query.append(MappingXqueryManager.getSelectQuery(clazz));
            query.append("),");
            query.append(pageNo);
            query.append(",");
            query.append(pageSize);
            query.append(")");
            if (log.isDebugEnabled()) {
                log.debug("查询语句" + query.toString());
            }
        } else {
            query = MappingXqueryManager.getSelectQuery(clazz);
        }
        XQSequence sequence = session
                .executeQuerySequence(query.toString());
        Unmarshaller unmarshaller = JAXBUtil
                .createUnMarshallerByClazz(clazz);
        while (sequence.next()) {
            String obj_value = sequence.getItemAsString(null);
            T obj = (T) unmarshaller.unmarshal(new StringReader(obj_value));
            list.add(obj);
        }
    } catch (Exception e) {
        log.debug("查询失败", e);
        throw new XMLDataAccessException("查询失败  " + query.toString(), e);
    }
    if (log.isDebugEnabled()) {
        log.debug("查询结果:" + list);
    }
    return list;
}
项目:XWorld    文件:XMLConfigClientTemplate.java   
public Object delete(String id, Class clazz) {
    try {
        IXQSession session = DptXMLDBSessionFactory.getXQSession(false);
        checkConn(session);

        StringBuilder query = new StringBuilder();
        StringBuilder select_query = MappingXqueryManager.getSelectIDQuery(
                id, clazz);

        query.append("delete nodes ");
        query.append(select_query);

        if (log.isDebugEnabled()) {
            log.debug("删除语句" + query.toString());
        }
        XQSequence sequence = session
                .executeQuerySequence(query.toString());
        Unmarshaller unmarshaller = JAXBUtil
                .createUnMarshallerByClazz(clazz);
        if (sequence.next()) {
            return unmarshaller.unmarshal(new StringReader(sequence
                    .getItemAsString(null)));
        }
    } catch (Exception e) {
        log.debug("删除失败", e);
        throw new XMLDataAccessException("删除失败", e);
    }
    return null;
}
项目:bagri    文件:ResultCursorTest.java   
@Test
public void fetchMapTest() throws Exception {
    Properties props = getDocumentProperties();
    props.setProperty(pn_document_data_format, "MAP");
    long txId = xRepo.getTxManagement().beginTransaction();
    Map<String, Object> map = new HashMap<>();
    map.put("intProp", 10); 
    map.put("boolProp", true);
    map.put("strProp", "ABC");
    DocumentAccessor mDoc = xRepo.getDocumentManagement().storeDocument("map_test", map, props);
    assertNotNull(mDoc);
    assertEquals(txId, mDoc.getTxStart());
    uris.add(mDoc.getUri());
    xRepo.getTxManagement().commitTransaction(txId);

    String query = "declare namespace m=\"http://www.w3.org/2005/xpath-functions/map\";\n" +
            //"declare variable $value external;\n" +
            "for $doc in fn:collection()\n" +
            "where m:get($doc, '@intProp') = 10\n" +
            "return $doc";

    try (ResultCursor<XQItemAccessor> results = query(query, null, null)) {
        Iterator<XQItemAccessor> itr = results.iterator();
        assertTrue(itr.hasNext());
        Map<String, Object> doc = mapFromSequence((XQSequence) itr.next());
        assertNotNull(doc);
        //System.out.println(doc);
        assertEquals(10, doc.get("intProp"));
        assertEquals(true, doc.get("boolProp"));
        assertEquals("ABC", doc.get("strProp"));
        assertFalse(itr.hasNext());
    }
}
项目: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    文件: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    文件:SaxonParserTest.java   
@Test
  public void testSaxon() throws XQException {
      SaxonXQDataSource xqds = new SaxonXQDataSource();
      XQConnection xqc = xqds.getConnection();
XQExpression xqe = xqc.createExpression();
   XQSequence xqs = xqe.executeQuery("<e>Hello world!</e>");
   //XQSequence xqs = xqe.executeQuery("<a b='c'>{5+2}</a>");
      while (xqs.next()) {
          System.out.println(xqs.getItemAsString(null));
      }
      //System.out.println(xqds.getSchemaValidationMode());
  }
项目:bagri    文件:SaxonParserTest.java   
@Test
public void testGetByte() throws XQException {

       SaxonXQDataSource xqds = new SaxonXQDataSource();
       XQConnection xqc = xqds.getConnection();
    XQExpression xqe = xqc.createExpression();
    XQSequence xqs = xqe.executeQuery("xs:byte('1')");
    xqs.next();
    Object o = xqs.getObject();
       assertTrue(o instanceof Byte);
    xqe.close();
}
项目:bagri    文件:XQUtils.java   
public static XQSequence mapToSequence(XQDataFactory factory, Map<String, Object> map) throws XQException {

        List<XQSequence> pairs = new ArrayList<>(); 
        for (Map.Entry<String, Object> e: map.entrySet()) {
            List<XQItemAccessor> pair = new ArrayList<>(2);
            pair.add(factory.createItemFromString(e.getKey(), factory.createAtomicType(XQBASETYPE_STRING)));
            pair.add(factory.createItemFromObject(e.getValue(), factory.createAtomicType(getBaseTypeForObject(e.getValue()))));
            pairs.add(factory.createSequence(pair.iterator()));
        }
        return factory.createSequence(pairs.iterator());
    }
项目:bagri    文件:BagriXQPreparedExpression.java   
@Override
public void bindSequence(QName varName, XQSequence value) throws XQException {
    if (!getVarNames().contains(varName)) {
        throw new XQException("Unknown variable: " + varName);
    }
    super.bindSequence(varName, value);
}
项目:bagri    文件:BagriXQDataFactory.java   
@Override
public XQSequence createSequence(XQSequence sqc) throws XQException {

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

    return new ScrollableXQSequence(this, xqProcessor, getList(sqc));
}
项目:bagri    文件:BagriXQDataFactory.java   
@Override
@SuppressWarnings({ "rawtypes", "unchecked" })
public XQSequence createSequence(Iterator itr) throws XQException {

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

    // shouldn't we check processor props to know type of sequence?
    return new ScrollableXQSequence(this, xqProcessor, copyIterator(itr));
    //return new IterableXQSequence(this, xqProcessor, itr);
}
项目:bagri    文件:BagriXQDataFactory.java   
@SuppressWarnings({ "rawtypes", "unchecked" })
private List getList(XQSequence xqc) throws XQException {
    ArrayList list = new ArrayList();
    boolean hasNext = xqc.isOnItem();
    if (!hasNext) {
        hasNext = xqc.next();
    }
    while (hasNext) {
        list.add(xqc.getItem());
        hasNext = xqc.next();
    }
    return list;
}
项目:bagri    文件:BagriXQAxisTest.java   
@BeforeClass
public static void setUpBeforeClass() throws Exception {

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

    xqds = new BagriXQDataSource();
    xqds.setProperty(BagriXQDataSource.ADDRESS, "localhost:10500");
    xqds.setProperty(BagriXQDataSource.SCHEMA, "default");
    xqds.setProperty(BagriXQDataSource.USER, "guest");
    xqds.setProperty(BagriXQDataSource.PASSWORD, "password");
    xqds.setProperty(BagriXQDataSource.XQ_PROCESSOR, "com.bagri.xquery.saxon.XQProcessorClient");
    xqds.setProperty(BagriXQDataSource.XDM_REPOSITORY, "com.bagri.client.hazelcast.impl.SchemaRepositoryImpl");

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

    XQConnection xqc = xqds.getConnection();
    try {
        XQPreparedExpression xqpe = xqc.prepareExpression(query);
        xqpe.bindString(new QName("sec"), xml, xqc.createAtomicType(XQItemType.XQBASETYPE_STRING));
        XQSequence xqs = xqpe.executeQuery();
        if (xqs.next()) {
            axisId = xqs.getLong();
            xqpe.close();
        } else {
            xqpe.close();
            throw new XQException("no response from store-document function");
        }
    } finally {
        xqc.close();
    }
}
项目:bagri    文件:BagriXQSequenceTest.java   
@Test
public void testGetItem() throws XQException {

    XQExpression xqe = xqc.createExpression();
    XQSequence xqs = xqe.executeQuery("1,2,3,4");
    xqs.next();
    xqs.close();
    try {
        xqs.getItem();
        fail("A-XQS-1.2: closed sequence supports getItem()");
    } catch (XQException e) {
        // Expect an XQException
    }
    xqe.close();
}
项目:bagri    文件:BagriXQSequenceTest.java   
@Test
public void testGetBoolean() throws XQException {

    XQExpression xqe = xqc.createExpression();
    XQSequence xqs = xqe.executeQuery("xs:boolean('true')");
    xqs.next();
    xqs.getItem();
    try {
        xqs.getBoolean();
        fail("A-XQIA-1.4: SCROLLTYPE_FORWARD_ONLY sequence supports getting item twice()");
    } catch (XQException e) {
      // Expect an XQException
    }
    xqe.close();
}
项目:bagri    文件:BagriXQSequenceTest.java   
@Test
public void testCreateSequence() throws XQException {

    XQPreparedExpression xqpe = xqc.prepareExpression("'Hello world!'");

    XQSequence xqsresult = null;
    XQSequence xqs = xqpe.executeQuery();
    try {
        xqsresult = xqc.createSequence(xqs);
    } catch (XQException e) {
        fail("A-XQDF-1.5: createSequence() failed with message: " + e.getMessage());
    }
    String result = xqsresult.getSequenceAsString(null);
    assertTrue("A-XQDF-1.5: Expects serialized result contains 'Hello world!', but it is '" + result + "'", result.indexOf("Hello world!") != -1);
}
项目:bagri    文件:BagriXQItemAccessorTest.java   
@Test
public void testSequence() throws XQException {

    String query = "<e>Hello world!</e>";
    XQExpression xqe = xqc.createExpression();
    XQSequence xqs = xqe.executeQuery(query);
    assertTrue(xqs.next());
    String value = xqs.getItemAsString(null);
    xqe.close();
    assertEquals(query, value);
}
项目:bagri    文件:BagriXQItemAccessorTest.java   
@Test
public void testNamespace() throws XQException {
    XQStaticContext xqsc = xqc.getStaticContext(); 
    xqsc.declareNamespace("foo", "http://www.foo.com");
    XQExpression  xqe = xqc.createExpression(xqsc);
    XQSequence xqs = xqe.executeQuery("<foo:e/>");
    xqe.close();
}
项目:bagri    文件:BagriXQItemAccessorTest.java   
@Test
public void testBasicType() throws XQException {

    XQExpression  xqe = xqc.createExpression();
    XQSequence xqs = xqe.executeQuery("1,2");
    boolean b = xqs.next();
    assertEquals("A-XQS-18.1: next() failed", true, b);
    int type = xqs.getInt();
    assertEquals("A-XQS-18.1: next() failed", 1, type);
}
项目:bagri    文件:XQSequenceSerializer.java   
@Override
public XQSequence read(ObjectDataInput in) throws IOException {
    try {
        //XQItemType type = in.readObject();
        List<XQItemAccessor> items = (List<XQItemAccessor>) in.readObject();
        logger.trace("read; got items: {}", items);
        return xqFactory.createSequence(items.iterator());
    } catch (XQException ex) {
        throw new IOException(ex);
    }
}
项目:translationstudio8    文件:SaxonSearcher.java   
public static ArrayList<String> sort(String xmlns, String fileName, String elementName, boolean isAsc)
        throws XQException {
    URI uri = new File(fileName).toURI();
    String uriPath = uri.getPath();

    ArrayList<String> rowIds = new ArrayList<String>();
    XQDataSource dataSource = new SaxonXQDataSource();

    XQConnection conn = dataSource.getConnection();
    String queryString = "for $file in doc(\'" + uriPath + "')/xliff/file,"
            + " $tu in $file/body//trans-unit order by $tu/" + elementName + " " + (isAsc ? "" : "descending")
            + " return <file original='{$file/@original}' tuid='{$tu/@id}'></file>";
    if (xmlns != null) {
        queryString = "declare default element namespace '" + xmlns + "';" + queryString;
    }
    XQExpression expression = conn.createExpression();
    XQSequence results = expression.executeQuery(queryString);
    while (results.next()) {
        Node node = results.getNode();
        String original = node.getAttributes().getNamedItem("original").getNodeValue();
        String tuid = node.getAttributes().getNamedItem("tuid").getNodeValue();
        String rowId = RowIdUtil.getRowId(fileName, original, tuid);
        rowIds.add(rowId);
    }
    // 释放资源
    results.close();
    expression.close();
    conn.close();

    return rowIds;
}
项目:tmxeditor8    文件:SaxonSearcher.java   
public static ArrayList<String> sort(String xmlns, String fileName, String elementName, boolean isAsc)
        throws XQException {
    URI uri = new File(fileName).toURI();
    String uriPath = uri.getPath();

    ArrayList<String> rowIds = new ArrayList<String>();
    XQDataSource dataSource = new SaxonXQDataSource();

    XQConnection conn = dataSource.getConnection();
    String queryString = "for $file in doc(\'" + uriPath + "')/xliff/file,"
            + " $tu in $file/body//trans-unit order by $tu/" + elementName + " " + (isAsc ? "" : "descending")
            + " return <file original='{$file/@original}' tuid='{$tu/@id}'></file>";
    if (xmlns != null) {
        queryString = "declare default element namespace '" + xmlns + "';" + queryString;
    }
    XQExpression expression = conn.createExpression();
    XQSequence results = expression.executeQuery(queryString);
    while (results.next()) {
        Node node = results.getNode();
        String original = node.getAttributes().getNamedItem("original").getNodeValue();
        String tuid = node.getAttributes().getNamedItem("tuid").getNodeValue();
        String rowId = RowIdUtil.getRowId(fileName, original, tuid);
        rowIds.add(rowId);
    }
    // 释放资源
    results.close();
    expression.close();
    conn.close();

    return rowIds;
}
项目:further-open-core    文件:XQueryServiceXQJImpl.java   
/**
 * @param results
 * @throws XQException
 * @see edu.utah.further.core.xml.xquery.XQueryResultProcessor#process(javax.xml.xquery.XQSequence)
 */
@Override
public String process(final XQSequence results) throws XQException
{
    final Properties serializationProps = newSerializationPropertiesForPrintout();
    final String result = results.getSequenceAsString(serializationProps);
    // if (log.isDebugEnabled())
    // {
    // log.debug("XQuery result:" + NEW_LINE_STRING + result);
    // }
    return result;
}