@Override public List<String> getJobNames() { List<String> jobNames = new ArrayList<>(); QueryManager queryMgr = databaseClient.newQueryManager(); ValuesDefinition valuesDef = queryMgr.newValuesDefinition("jobName", SEARCH_OPTIONS_NAME); ValuesHandle results = queryMgr.values(valuesDef, new ValuesHandle()); for (CountedDistinctValue value : results.getValues()) { jobNames.add(value.get("xs:string", String.class)); } return jobNames; }
/** * Fluent setter for the format associated with this handle. * * This handle only supports XML. * * @param format The format, which must be Format.XML or an exception will be raised. * @return The SearchHandle instance on which this method was called. */ public ValuesHandle withFormat(Format format) { setFormat(format); return this; }
@Test public void testValuesAggregatesFiveOccurences() throws KeyManagementException, NoSuchAlgorithmException, IOException, ParserConfigurationException, SAXException, XpathException, TransformerException { System.out.println("Running testValuesAggregatesThreeOccurences"); String[] filenames = { "aggr1.xml", "aggr2.xml", "aggr3.xml", "aggr4.xml" }; String queryOptionName = "aggregatesOpt5Occ.xml"; DatabaseClient client = getDatabaseClient("rest-admin", "x", getConnType()); // write docs for (String filename : filenames) { writeDocumentUsingInputStreamHandle(client, filename, "/values-aggr/", "XML"); } setQueryOption(client, queryOptionName); QueryManager queryMgr = client.newQueryManager(); // create query def ValuesDefinition queryDef = queryMgr.newValuesDefinition("title", "aggregatesOpt5Occ.xml"); queryDef.setAggregate("count"); queryDef.setName("title-val"); // create handle ValuesHandle valuesHandle = new ValuesHandle(); queryMgr.values(queryDef, valuesHandle); AggregateResult[] agg = valuesHandle.getAggregates(); System.out.println(agg.length); System.out.println(agg[0].getValue()); // release client client.release(); }
ValuesHandle vHandle = queryMgr.values(valuesDef, new ValuesHandle()); CountedDistinctValue distinctValues[] = vHandle.getValues(); ArrayList<String> arr = new ArrayList<String>(); arr.add(distinctValues[0].get("value", String.class)); arr.sort(null); System.out.println("ValuesHandle name is " + vHandle.getName().toString()); System.out.println("ValuesHandle length is " + vHandle.getValues().length); assertTrue("ValuesHandle name is incorrect", vHandle.getName().toString().trim().contains("title-val")); assertEquals("ValuesHandle length is incorrect", 3, vHandle.getValues().length); assertTrue("ValuesHandle element 1 is incorrect", arr.get(0).contains("For 1945")); assertTrue("ValuesHandle element 2 is incorrect", arr.get(1).contains("The Bush article"));
@Test public void testValues() { String str = head + lexiconOptions + tail; RawCombinedQueryDefinition rawCombinedQueryDefinition; rawCombinedQueryDefinition = queryMgr .newRawCombinedQueryDefinition(new StringHandle(str).withMimetype("application/xml")); StringHandle stringResults = null; ValuesDefinition vdef = queryMgr.newValuesDefinition("grandchild"); vdef.setQueryDefinition(rawCombinedQueryDefinition); stringResults = queryMgr.tuples(vdef, new StringHandle()); System.out.println(stringResults.get()); ValuesHandle valuesResults = queryMgr.values(vdef, new ValuesHandle()); assertFalse(valuesResults.getMetrics().getTotalTime() == -1); CountedDistinctValue[] values = valuesResults.getValues(); assertNotNull(values); }
new TuplesHandle(), "<values-response xmlns='http://marklogic.com/appservices/search'/>"); validateClosingHandleClosesUnderlyingStream( new ValuesHandle(), "<values-response xmlns='http://marklogic.com/appservices/search'/>"); validateClosingHandleClosesUnderlyingStream( new ValuesListHandle(), "<values-list xmlns='http://marklogic.com/rest-api'/>");
@Override @SuppressWarnings("unchecked") public <T extends ValuesReadHandle> T values(ValuesDefinition valdef, T valueHandle, long start, Transaction transaction) { @SuppressWarnings("rawtypes") HandleImplementation valuesBase = HandleAccessor.checkHandle(valueHandle, "values"); if (valueHandle instanceof ValuesHandle) { ((ValuesHandle) valueHandle).setQueryCriteria(valdef); } Format valuesFormat = valuesBase.getFormat(); switch(valuesFormat) { case UNKNOWN: valuesFormat = Format.XML; break; case JSON: case XML: break; default: throw new UnsupportedOperationException("Only XML and JSON values results are possible."); } String mimetype = valuesFormat.getDefaultMimetype(); long pageLength = (start == -1) ? -1 : getPageLength(); String tid = transaction == null ? null : transaction.getTransactionId(); valuesBase.receiveContent( services.values( valuesBase.receiveAs(), valdef, mimetype, start, pageLength, tid ) ); return valueHandle; }
ValuesHandle valuesHandle = new ValuesHandle(); queryMgr.values(queryDef, valuesHandle); AggregateResult[] agg = valuesHandle.getAggregates(); System.out.println(agg.length); assertEquals("Invalid length", 4, agg.length);
ValuesHandle vHandle = queryMgr.values(valuesDef, new ValuesHandle()); CountedDistinctValue distinctValues[] = vHandle.getValues(); ArrayList<String> arr = new ArrayList<String>(); arr.add(distinctValues[0].get("value", String.class)); arr.sort(null); System.out.println("ValuesHandle name is " + vHandle.getName().toString()); System.out.println("ValuesHandle length is " + vHandle.getValues().length); assertTrue("ValuesHandle name is incorrect", vHandle.getName().toString().trim().contains("Combined-title-val")); assertEquals("ValuesHandle length is incorrect", 3, vHandle.getValues().length); assertTrue("ValuesHandle element 1 is incorrect", arr.get(0).contains("For 1945")); assertTrue("ValuesHandle element 2 is incorrect", arr.get(1).contains("The Bush article"));
@Override @SuppressWarnings("unchecked") public <T extends ValuesReadHandle> T values(ValuesDefinition valdef, T valueHandle, long start, Transaction transaction) { @SuppressWarnings("rawtypes") HandleImplementation valuesBase = HandleAccessor.checkHandle(valueHandle, "values"); if (valueHandle instanceof ValuesHandle) { ((ValuesHandle) valueHandle).setQueryCriteria(valdef); } Format valuesFormat = valuesBase.getFormat(); switch(valuesFormat) { case UNKNOWN: valuesFormat = Format.XML; break; case JSON: case XML: break; default: throw new UnsupportedOperationException("Only XML and JSON values results are possible."); } String mimetype = valuesFormat.getDefaultMimetype(); long pageLength = (start == -1) ? -1 : getPageLength(); String tid = transaction == null ? null : transaction.getTransactionId(); valuesBase.receiveContent( services.values( valuesBase.receiveAs(), valdef, mimetype, start, pageLength, transaction ) ); return valueHandle; }
ValuesHandle valuesHandle = new ValuesHandle(); queryMgr.values(queryDef, valuesHandle); AggregateResult[] agg = valuesHandle.getAggregates(); assertEquals("Wrong counting", "4", agg[0].getValue());
@Test public void testValuesPaging() throws IOException, ParserConfigurationException, SAXException { String optionsName = makeValuesOptions(); QueryManager queryMgr = Common.client.newQueryManager(); queryMgr.setPageLength(2); ValuesDefinition vdef = queryMgr.newValuesDefinition("double", optionsName); ValuesHandle v = queryMgr.values(vdef, new ValuesHandle(), 2); CountedDistinctValue dv[] = v.getValues(); assertNotNull("There should be values", dv); assertEquals("There should be 2 values", 2, dv.length); assertEquals("The first value should be '1.2'", dv[0].get("xs:double", Double.class).toString(), "1.2"); assertEquals("The second value should be '2.2'", dv[1].get("xs:double", Double.class).toString(), "2.2"); Common.adminClient.newServerConfigManager().newQueryOptionsManager().deleteOptions(optionsName); }
/** * Fluent setter for the format associated with this handle. * * This handle only supports XML. * * @param format The format, which must be Format.XML or an exception will be raised. * @return The SearchHandle instance on which this method was called. */ public ValuesHandle withFormat(Format format) { setFormat(format); return this; }
@Test public void testAggregates() throws IOException, ParserConfigurationException, SAXException, ResourceNotFoundException, ForbiddenUserException, FailedRequestException, ResourceNotResendableException { String optionsName = makeValuesOptions(); QueryManager queryMgr = Common.client.newQueryManager(); ValuesDefinition vdef = queryMgr.newValuesDefinition("double", optionsName); vdef.setAggregate("sum", "avg"); vdef.setName("double"); //ValuesListDefinition vldef = queryMgr.newValuesListDefinition("valuesoptions"); //ValuesListHandle vlh = queryMgr.valuesList(vldef, new ValuesListHandle()); ValuesHandle v = queryMgr.values(vdef, new ValuesHandle()); AggregateResult[] agg = v.getAggregates(); assertEquals("There should be 2 aggregates", 2, agg.length); double first = agg[0].get("xs:double", Double.class); assertTrue("Aggregate 1 should be between 11.4 and 12", 11.4 < first && first < 12.0); double second = agg[1].get("xs:double", Double.class); logger.debug("" + second); assertTrue("Aggregate 2 should be between 1.43 and 1.44", 1.43 < second && second < 1.44); Common.adminClient.newServerConfigManager().newQueryOptionsManager().deleteOptions(optionsName); }
ValuesHandle v = queryMgr.values(vdef, new ValuesHandle()); CountedDistinctValue dv[] = v.getValues(); assertNotNull("There should be values", dv); assertEquals("There should be 3 values", 3, dv.length);
ValuesHandle valuesHandle = new ValuesHandle(); queryMgr.values(queryDef, valuesHandle); AggregateResult[] agg = valuesHandle.getAggregates(); System.out.println(agg.length); assertEquals("Invalid length", 4, agg.length); ValuesHandle valuesHandle1 = new ValuesHandle(); queryMgr.values(queryDef1, valuesHandle1); AggregateResult[] agg1 = valuesHandle1.getAggregates();