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; }
@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(); } }
@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()); }
@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(); }
@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(); }
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; }
@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(); }
@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(); }
@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()); }
@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(); }
@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(); }
@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); } }
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; }
@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; }
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; }
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; }
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; }
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; }
@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()); } }
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"); } }
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; }
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"); } }
@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()); }
@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(); }
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()); }
@Override public void bindSequence(QName varName, XQSequence value) throws XQException { if (!getVarNames().contains(varName)) { throw new XQException("Unknown variable: " + varName); } super.bindSequence(varName, value); }
@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)); }
@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); }
@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; }
@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(); } }
@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(); }
@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(); }
@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); }
@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); }
@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(); }
@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); }
@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); } }
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; }
/** * @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; }