structure = ((CombinedQueryDefinition) queryDef).serialize();
CombinedQueryDefinition combinedQdef = new CombinedQueryBuilderImpl().combine( (RawCombinedQueryDefinition) constrainingQuery, null, null, sparql); Format format = combinedQdef.getFormat(); input = new StringHandle(combinedQdef.serialize()).withFormat(format); } else if ( constrainingQuery instanceof RawStructuredQueryDefinition ) { CombinedQueryDefinition combinedQdef = new CombinedQueryBuilderImpl().combine( (RawStructuredQueryDefinition) constrainingQuery, null, null, sparql); Format format = combinedQdef.getFormat(); input = new StringHandle(combinedQdef.serialize()).withFormat(format); } else if ( constrainingQuery instanceof StringQueryDefinition || constrainingQuery instanceof StructuredQueryDefinition ) CombinedQueryDefinition combinedQdef = new CombinedQueryBuilderImpl().combine( structuredQuery, null, stringQuery, sparql); input = new StringHandle(combinedQdef.serialize()).withMimetype(MIMETYPE_APPLICATION_XML); } else { throw new IllegalArgumentException(
String structure = ((CombinedQueryDefinition) qdef).serialize();
@Test public void buildCombinedQuery() throws Exception { String qtext = "hello"; String collection = "myCollection"; QueryOptionsWriteHandle options = buildOptions(); StructuredQueryBuilder sqb = Common.client.newQueryManager().newStructuredQueryBuilder(); StructuredQueryDefinition structuredQuery = sqb.collection(collection); // NOTICE!! CombinedQueryBuilderImpl is for internal use only for now--it's undocmented and unsupported. CombinedQueryBuilderImpl cqb = new CombinedQueryBuilderImpl(); CombinedQueryDefinition query = cqb.combine(structuredQuery, options, qtext); String expected = buildExpected(qtext, collection); String serialized = query.serialize(); assertXMLEqual("Output not as expected", expected, serialized); PojoRepository<City, Integer> cities = Common.client.newPojoRepository(City.class, Integer.class); PojoQueryBuilder<City> qb = cities.getQueryBuilder(); query = (CombinedQueryDefinition) qb.filteredQuery(qb.word("asciiName", new String[] {"wildcarded"}, 1, "Chittagong*")); expected = "<?xml version=\"1.0\" ?>" + "<search xmlns=\"http://marklogic.com/appservices/search\">" + "<query>" + "<word-query>" + "<json-property>asciiName</json-property><text>Chittagong*</text>" + "<term-option>wildcarded</term-option><weight>1.0</weight>" + "</word-query>" + "</query>" + "<options><search-option>filtered</search-option></options>" + "</search>"; serialized = query.serialize(); assertXMLEqual("Output not as expected", expected, serialized); }