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; }
@Override public Item next() throws XPathException { try { if (xqs.next()) { return convertXQItem(xqs.getItem(), config); } } catch (XQException ex) { throw new XPathException(ex); } return null; }
@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.size()); out.writeObject(items); } catch (XQException ex) { throw new IOException(ex); } }
@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(); } }
xqpe.bindSequence(new QName("props"), xqc.createSequence(props.iterator())); XQSequence xqs = xqpe.executeQuery(); if (xqs.next()) { long id = xqs.getLong(); xqpe.close();
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"); } }
String result = null; try { if (xqs.next()) { result = xqs.getAtomicValue();