@Override public boolean visitEnter(ContainsAll o) { getQueryMaker().containsAll(o.getElement()); return true; }
@Test public void testQueryMakerContainsAll() throws IOException { importBooks(); // add 13 livres { WikittyQuery query = new WikittyQueryMaker() .containsAll(Product.ELEMENT_FIELD_PRODUCT_COLORS, Arrays.asList("white", "black")).end(); WikittyQueryResult<Product> results = wikittyClient.findAllByQuery(Product.class, query); Assert.assertEquals(2, results.getTotalResult()); Assert.assertEquals(2, results.getAll().size()); } // with empty list, result must contains nothing // http://www.nuiton.org/issues/3735 // Anomalie #3735: containsOne and containsAll with an empty collection returns all objects but no object should have been returned { WikittyQuery query = new WikittyQueryMaker() .containsAll(Product.ELEMENT_FIELD_PRODUCT_COLORS, Arrays.asList()).end(); WikittyQueryResult<Product> results = wikittyClient.findAllByQuery(Product.class, query); Assert.assertEquals(0, results.getTotalResult()); Assert.assertEquals(0, results.getAll().size()); } }
/** * Ajoute une contrainte qui cree les conditions en prenant comme exemple * l'objet passer en parametre. Seuls les champs non null sont utilises ainsi * que la liste des extensions de l'objet * * @param w le wikitty a prendre comme exemple * @return {@code this} with the {@code w} restriction added. */ public M wikitty(Wikitty w) { WikittyQueryMaker result = new WikittyQueryMaker().and(); // result object must have same extension that wikitty example result.extContainsAll(w.getExtensionNames()); for (String fqfieldName : w.fieldNames()) { Object value = w.getFqField(fqfieldName); if (value != null) { FieldType type = w.getFieldType(fqfieldName); if (type.isCollection()) { result.containsAll(fqfieldName, (Collection<?>)value); } else { result.eq(fqfieldName, value); } } } addCondition(result.getCondition()); return this.asM(); }
WikittyQuery query = new WikittyQueryMaker().containsAll("ext.field", new Date(), new Date()).end(); String queryString = query.getCondition().toString(); WikittyQuery queryParsed = WikittyQueryParser.parse(queryString);
cc.containsAll("ext.field", new Date(), new Date()); cc.extContainsAll("ext1", "ext2"); cc.eq("ext.field", w);