r1239 - in trunk/wikitty-api: . src/main/java/org/nuiton/wikitty src/main/java/org/nuiton/wikitty/search src/test/java/org/nuiton/wikitty/api src/test/xmi
Author: sletellier Date: 2011-10-25 10:37:08 +0200 (Tue, 25 Oct 2011) New Revision: 1239 Url: http://nuiton.org/repositories/revision/wikitty/1239 Log: - #1785 Add select method to allow specify wikittyId return field - Reactivate test model generation - Include BusinessEntity in search test Modified: trunk/wikitty-api/pom.xml trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyProxy.java trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyService.java trunk/wikitty-api/src/main/java/org/nuiton/wikitty/search/Criteria.java trunk/wikitty-api/src/main/java/org/nuiton/wikitty/search/Search.java trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/AbstractSearchTest.java trunk/wikitty-api/src/test/xmi/wikittytest.zargo Modified: trunk/wikitty-api/pom.xml =================================================================== --- trunk/wikitty-api/pom.xml 2011-10-21 16:21:57 UTC (rev 1238) +++ trunk/wikitty-api/pom.xml 2011-10-25 08:37:08 UTC (rev 1239) @@ -171,7 +171,7 @@ <goal>smart-generate</goal> </goals> </execution> - <!-- <execution> + <execution> <id>test-generation</id> <phase>generate-test-sources</phase> <configuration> @@ -188,7 +188,7 @@ <goals> <goal>smart-generate</goal> </goals> - </execution> --> + </execution> </executions> </plugin> Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyProxy.java =================================================================== --- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyProxy.java 2011-10-21 16:21:57 UTC (rev 1238) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyProxy.java 2011-10-25 08:37:08 UTC (rev 1239) @@ -424,18 +424,16 @@ // extension wanted by BusinessEntity (clazz) // is not in wikitty, then wikitty is not good type // for business - result = null; + dto = null; break; } } - // le break au dessus permet de soritr d'une boucle - // met si result est null il faut sortir de la methode et donc - // sortir de la deuxieme boucle - if (result == null) { - break; - } } - result.add(dto); + + // Add only entity in good types + if (dto != null) { + result.add(dto); + } } } timeLog.log(start, "restore<list>"); @@ -587,37 +585,46 @@ BusinessEntityImpl sample = (BusinessEntityImpl) WikittyUtil.newInstance(clazz); - Wikitty wikitty = sample.getWikitty(); - Collection<String> extensions = wikitty.getExtensionNames(); +// Commented for task : #1785 Add select method to allow specify wikittyId return field +// No restriction is added on criteria, now, type verification is make on restore +// +// Check will be done in restore +// +// Wikitty wikitty = sample.getWikitty(); +// Collection<String> extensions = wikitty.getExtensionNames(); - List<Criteria> serviceCriterias = new ArrayList<Criteria>(criterias.size()); - for (Criteria criteria : criterias) { - // on ajoute la condition sur les extensions dans le critere - // du coup, pour ne pas modifier le critere qui vient en parametre - // il faut creer un nouveau critere ... - Criteria serviceCriteria = null; - if (criteria != null) { - // creation de la nouvelle contrainte - Search search = Search.query(criteria); - search = search.exteq(extensions); +// List<Criteria> serviceCriterias = new ArrayList<Criteria>(criterias.size()); +// for (Criteria criteria : criterias) { +// // on ajoute la condition sur les extensions dans le critere +// // du coup, pour ne pas modifier le critere qui vient en parametre +// // il faut creer un nouveau critere ... +// Criteria serviceCriteria = null; +// if (criteria != null) { +// // creation de la nouvelle contrainte +// Search search = Search.query(criteria); +// search = search.exteq(extensions); +// +// // utilisation de cette nouvelle contrainte sur le nouvel objet +// serviceCriteria = criteria.clone(); +// serviceCriteria.setRestriction(search); +// } +// +// // ajout de ce criteria dans la liste de tous les criteres +// serviceCriterias.add(serviceCriteria); +// +// } - // utilisation de cette nouvelle contrainte sur le nouvel objet - serviceCriteria = criteria.clone(); - serviceCriteria.setRestriction(search); - } - - // ajout de ce criteria dans la liste de tous les criteres - serviceCriterias.add(serviceCriteria); - } - List<PagedResult<String>> pagedResult = wikittyService.findAllByCriteria( - securityToken, serviceCriterias); + securityToken, criterias); // TODO poussin 20110318 optimize cast. Try to cast all pagedResult id // in one call to service. Currently each PagedResult.cast do a call result = new ArrayList<PagedResult<E>>(pagedResult.size()); for (PagedResult<String> p : pagedResult) { - result.add((PagedResult<E>)p.cast(this, sample.getClass(), true)); + +// #1785 Add select method to allow specify wikittyId return field +// autoconvert is set to false to keep only entities in good type + result.add((PagedResult<E>)p.cast(this, sample.getClass(), false)); } } timeLog.log(start, "findAllByCriteria<Business>(List)"); Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyService.java =================================================================== --- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyService.java 2011-10-21 16:21:57 UTC (rev 1238) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyService.java 2011-10-25 08:37:08 UTC (rev 1239) @@ -320,6 +320,32 @@ */ public List<String> findByCriteria(String securityToken, List<Criteria> criteria); +// /** +// * Looking for Wikitty that match criteria. More than one criteria can be +// * passed in parametre, for each criteria in parametre there is a PagedResult +// * associated with the same index. +// * +// * @param securityToken security token +// * @param fqFieldName field name for result +// * @param criteria +// * @return +// */ +// public List<PagedResult<String>> findAllByCriteria( +// String securityToken, String fqFieldName, List<Criteria> criteria); +// +// /** +// * First lonely (or first one) wikitty object that match criteria, if no +// * wikitty found or first retrived is not authorized for the user return +// * null. for each criteria in parametre there is a result +// * associated with the same index. +// * +// * @param securityToken security token +// * @param fqFieldName field name for result +// * @param criteria +// * @return wikitty field name value object or null +// */ +// public List<String> findByCriteria(String securityToken, String fqFieldName, List<Criteria> criteria); + /* * Classification * Most of classification purpose is handle by extension mechanisms Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/search/Criteria.java =================================================================== --- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/search/Criteria.java 2011-10-21 16:21:57 UTC (rev 1238) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/search/Criteria.java 2011-10-25 08:37:08 UTC (rev 1239) @@ -75,6 +75,8 @@ */ protected String name; + protected String select; + /** All restriction on fields. */ protected Restriction restriction; @@ -144,6 +146,10 @@ } } + if (select != null) { + clone.select = select; + } + return clone; } catch (CloneNotSupportedException eee) { throw new WikittyException("Can't clone criteria", eee); @@ -212,6 +218,14 @@ this.name = name; } + public String getSelect() { + return select; + } + + public void setSelect(String select) { + this.select = select; + } + public int getFirstIndex() { return firstIndex; } Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/search/Search.java =================================================================== --- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/search/Search.java 2011-10-21 16:21:57 UTC (rev 1238) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/search/Search.java 2011-10-25 08:37:08 UTC (rev 1239) @@ -623,9 +623,10 @@ } /** + * Add {@link SubSearch} to allow search on association (like sql join) * - * @param foreignFieldName - * @return + * @param foreignFieldName association fieldName + * @return sub query */ public Search associated(String foreignFieldName) { Search search = new SubSearch(foreignFieldName, this); Modified: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/AbstractSearchTest.java =================================================================== --- trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/AbstractSearchTest.java 2011-10-21 16:21:57 UTC (rev 1238) +++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/AbstractSearchTest.java 2011-10-25 08:37:08 UTC (rev 1239) @@ -33,8 +33,12 @@ import org.nuiton.wikitty.WikittyProxy; import org.nuiton.wikitty.WikittyService; import org.nuiton.wikitty.WikittyUtil; +import org.nuiton.wikitty.entities.CategoryEntity; +import org.nuiton.wikitty.entities.CategoryEntityImpl; import org.nuiton.wikitty.entities.ExtensionFactory; import org.nuiton.wikitty.entities.FieldType; +import org.nuiton.wikitty.entities.ProductEntity; +import org.nuiton.wikitty.entities.ProductEntityImpl; import org.nuiton.wikitty.entities.Wikitty; import org.nuiton.wikitty.entities.WikittyExtension; import org.nuiton.wikitty.entities.WikittyImpl; @@ -46,7 +50,9 @@ import java.util.ArrayList; import java.util.Collections; +import java.util.HashSet; import java.util.List; +import java.util.Set; import static org.junit.Assert.assertEquals; @@ -67,6 +73,7 @@ public static final String CATEGORY_NAME = "name"; public static final String VERSION = "3.0"; public static String W_ID =""; + public static String W_ENTITY_ID =""; protected WikittyProxy proxy = new WikittyProxy(getWikittyService()); @@ -118,7 +125,7 @@ product1.setField(EXT_PRODUCT, PRODUCT_NAME, "Paint"); product1.setField(EXT_PRODUCT, PRODUCT_PRICE, 20); product1.setField(EXT_PRODUCT, PRODUCT_CATEGORY, category1.getId()); - List<String> colors1 = new ArrayList<String>(); + Set<String> colors1 = new HashSet<String>(); colors1.add("Blue"); colors1.add("Black"); product1.setField(EXT_PRODUCT, PRODUCT_COLOR, colors1); @@ -130,7 +137,7 @@ product2.setField(EXT_PRODUCT, PRODUCT_NAME, "Screwdriver"); product2.setField(EXT_PRODUCT, PRODUCT_PRICE, 3); product2.setField(EXT_PRODUCT, PRODUCT_CATEGORY, category2.getId()); - List<String> colors2 = new ArrayList<String>(); + Set<String> colors2 = new HashSet<String>(); colors2.add("Red"); colors2.add("Black"); product2.setField(EXT_PRODUCT, PRODUCT_COLOR, colors2); @@ -142,13 +149,57 @@ product3.setField(EXT_PRODUCT, PRODUCT_NAME, "Paint Blue"); product3.setField(EXT_PRODUCT, PRODUCT_PRICE, 22); product3.setField(EXT_PRODUCT, PRODUCT_CATEGORY, category2.getId()); - List<String> colors3 = new ArrayList<String>(); + Set<String> colors3 = new HashSet<String>(); colors3.add("Blue"); product3.setField(EXT_PRODUCT, PRODUCT_COLOR, colors3); proxy.store(product3); W_ID = product3.getId(); + /////////////////////////////////////////////////////////////////////// + // CREATE CATEGORIES ENTITIES // + /////////////////////////////////////////////////////////////////////// + + //Create wikitty category named "Hardware" + CategoryEntity categoryEntity1 = new CategoryEntityImpl(); + categoryEntity1.setName("HardWare"); + proxy.store(categoryEntity1); + + //Create wikitty category named "Wrong category" + CategoryEntity categoryEntity2 = new CategoryEntityImpl(); + categoryEntity2.setName("Wrong category"); + proxy.store(categoryEntity2); + + /////////////////////////////////////////////////////////////////////// + // CREATE PRODUCTS ENTITIES // + /////////////////////////////////////////////////////////////////////// + + //Create product named Paint, price is 20 category is category1 + ProductEntity productEntity1 = new ProductEntityImpl(); + productEntity1.setName("Paint"); + productEntity1.setPrice(20); + productEntity1.setCategoryEntity(categoryEntity1.getWikittyId()); + productEntity1.setColors(colors1); + proxy.store(productEntity1); + + //Create product named Screwdriver, price is 3, category is category2 + ProductEntity productEntity2 = new ProductEntityImpl(); + productEntity2.setName("Screwdriver"); + productEntity2.setPrice(3); + productEntity2.setCategoryEntity(categoryEntity2.getWikittyId()); + productEntity2.setColors(colors2); + proxy.store(productEntity2); + + //Create product named Paint Blue, price is 22, category is category2 + ProductEntity productEntity3 = new ProductEntityImpl(); + productEntity3.setName("Paint Blue"); + productEntity3.setPrice(22); + productEntity3.setCategoryEntity(categoryEntity2.getWikittyId()); + productEntity3.setColors(colors3); + proxy.store(productEntity3); + + W_ENTITY_ID = productEntity3.getWikittyId(); + } protected void assumeNotYetImplementedInMemory() { @@ -212,18 +263,76 @@ } @Test + public void testEntitiesEq() throws Exception { + + Search query = Search.query().eq(ProductEntity.FQ_FIELD_PRODUCTENTITY_PRICE, "3"); + + Criteria eqCriteria = query.criteria(); + + PagedResult<ProductEntity> results = proxy.findAllByCriteria(ProductEntity.class, eqCriteria); + + Assert.assertEquals(1, results.getAll().size()); + + ProductEntity resultW = results.getFirst(); + + Assert.assertEquals("Screwdriver", resultW.getName()); + Assert.assertEquals(3, resultW.getPrice()); + + + //Test using pattern matching + Search query2 = Search.query().eq(ProductEntity.FQ_FIELD_PRODUCTENTITY_NAME, "*dri*"); + + Criteria eqCriteria2 = query2.criteria(); + + PagedResult<ProductEntity> results2 = proxy.findAllByCriteria(ProductEntity.class, eqCriteria2); + + Assert.assertEquals(1, results2.getAll().size()); + + ProductEntity resultW2 = results.getFirst(); + + Assert.assertEquals("Screwdriver", resultW2.getName()); + Assert.assertEquals(3, resultW2.getPrice()); + + //Test using pattern matching + Search query3 = Search.query().eq(ProductEntity.FQ_FIELD_PRODUCTENTITY_NAME, "*dri?er"); + + Criteria eqCriteria3 = query3.criteria(); + + PagedResult<ProductEntity> results3 = proxy.findAllByCriteria(ProductEntity.class, eqCriteria3); + + Assert.assertEquals(1, results3.getAll().size()); + + ProductEntity resultW3 = results.getFirst(); + + Assert.assertEquals("Screwdriver", resultW3.getName()); + Assert.assertEquals(3, resultW3.getPrice()); + } + + @Test public void testNeq() throws Exception { - Search query = Search.query().neq("Product.price", "3"); + Search query = Search.query().exteq(EXT_PRODUCT).neq("Product.price", "3"); Criteria neqCriteria = query.criteria(); PagedResult<Wikitty> results = proxy.findAllByCriteria(neqCriteria); - Assert.assertEquals(4, results.getAll().size()); + Assert.assertEquals(2, results.getAll().size()); } @Test + public void testEntitiesNeq() throws Exception { + Search query = Search.query().exteq(ProductEntity.EXT_PRODUCTENTITY).neq(ProductEntity.FQ_FIELD_PRODUCTENTITY_PRICE, "3"); + + Criteria neqCriteria = query.criteria(); + + PagedResult<ProductEntity> results = proxy.findAllByCriteria(ProductEntity.class, neqCriteria); + + Assert.assertEquals(2, results.getAll().size()); + + } + + @Test public void testBw() throws Exception { Search query = Search.query().bw("Product.price", "3", "5"); @@ -243,6 +352,23 @@ } @Test + public void testEntitiesBw() throws Exception { + + Search query = Search.query().bw(ProductEntity.FQ_FIELD_PRODUCTENTITY_PRICE, "3", "5"); + + Criteria bwCriteria = query.criteria(); + + PagedResult<ProductEntity> results = proxy.findAllByCriteria(ProductEntity.class, bwCriteria); + + Assert.assertEquals(1, results.getAll().size()); + + ProductEntity resultW = results.getFirst(); + + Assert.assertEquals("Screwdriver", resultW.getName()); + Assert.assertEquals(3, resultW.getPrice()); + } + + @Test public void testLt() throws Exception { Search query = Search.query().lt("Product.price", "20"); @@ -262,7 +388,25 @@ } - @Test + @Test + public void testEntitiesLt() throws Exception { + + Search query = Search.query().lt(ProductEntity.FQ_FIELD_PRODUCTENTITY_PRICE, "20"); + + Criteria bwCriteria = query.criteria(); + + PagedResult<ProductEntity> results = proxy.findAllByCriteria(ProductEntity.class, bwCriteria); + + Assert.assertEquals(1, results.getAll().size()); + + ProductEntity resultW = results.getFirst(); + + Assert.assertEquals("Screwdriver", resultW.getName()); + Assert.assertEquals(3, resultW.getPrice()); + + } + + @Test public void testLe() throws Exception { Search query = Search.query().le("Product.price", "20"); @@ -274,7 +418,19 @@ Assert.assertEquals(2, results.getAll().size()); } - @Test + @Test + public void testEntitiesLe() throws Exception { + + Search query = Search.query().le(ProductEntity.FQ_FIELD_PRODUCTENTITY_PRICE, "20"); + + Criteria bwCriteria = query.criteria(); + + PagedResult<ProductEntity> results = proxy.findAllByCriteria(ProductEntity.class, bwCriteria); + + Assert.assertEquals(2, results.getAll().size()); + } + + @Test public void testGt() throws Exception { Search query = Search.query().gt("Product.price", "20"); @@ -294,7 +450,25 @@ } - @Test + @Test + public void testEntitiesGt() throws Exception { + + Search query = Search.query().gt(ProductEntity.FQ_FIELD_PRODUCTENTITY_PRICE, "20"); + + Criteria bwCriteria = query.criteria(); + + PagedResult<ProductEntity> results = proxy.findAllByCriteria(ProductEntity.class, bwCriteria); + + Assert.assertEquals(1, results.getAll().size()); + + ProductEntity resultW = results.getFirst(); + + Assert.assertEquals("Paint Blue", resultW.getName()); + Assert.assertEquals(22, resultW.getPrice()); + + } + + @Test public void testGe() throws Exception { Search query = Search.query().ge("Product.price", "20"); @@ -308,6 +482,19 @@ } @Test + public void testEntitiesGe() throws Exception { + + Search query = Search.query().ge(ProductEntity.FQ_FIELD_PRODUCTENTITY_PRICE, "20"); + + Criteria bwCriteria = query.criteria(); + + PagedResult<ProductEntity> results = proxy.findAllByCriteria(ProductEntity.class, bwCriteria); + + Assert.assertEquals(2, results.getAll().size()); + + } + + @Test public void testContains() throws Exception { Search query = Search.query().contains("Product.price", "3"); @@ -330,6 +517,26 @@ } @Test + public void testEntitiesContains() throws Exception { + + Search query = Search.query().contains(ProductEntity.FQ_FIELD_PRODUCTENTITY_PRICE, "3"); + + Criteria inCriteria = query.criteria(); + + PagedResult<ProductEntity> results = proxy.findAllByCriteria(ProductEntity.class, inCriteria); + + Assert.assertEquals(1, results.getAll().size()); + + ProductEntity resultW = results.getFirst(); + + Assert.assertEquals("Screwdriver", resultW.getName()); + Assert.assertEquals(3, resultW.getPrice()); + + //TODO JC-07-04-2011 do a test with multi-valued field + + } + + @Test public void testIn() throws Exception { Search query = Search.query().in("Product.price", "1", "2", "3", "4", "5"); @@ -349,6 +556,23 @@ } @Test + public void testEntitiesIn() throws Exception { + + Search query = Search.query().in(ProductEntity.FQ_FIELD_PRODUCTENTITY_PRICE, "1", "2", "3", "4", "5"); + + Criteria inCriteria = query.criteria(); + + PagedResult<ProductEntity> results = proxy.findAllByCriteria(ProductEntity.class, inCriteria); + + Assert.assertEquals(1, results.getAll().size()); + + ProductEntity resultW = results.getFirst(); + + Assert.assertEquals("Screwdriver", resultW.getName()); + Assert.assertEquals(3, resultW.getPrice()); + } + + @Test public void testExteq() throws Exception { Search query = Search.query().exteq(EXT_PRODUCT); @@ -360,6 +584,17 @@ } @Test + public void testEntitiesExteq() throws Exception { + Search query = Search.query().exteq(ProductEntity.EXT_PRODUCTENTITY); + + Criteria exteqCriteria = query.criteria(); + + PagedResult<ProductEntity> results = proxy.findAllByCriteria(ProductEntity.class, exteqCriteria); + + Assert.assertEquals(3, results.getAll().size()); + } + + @Test public void testExtneq() throws Exception { Search query = Search.query().extneq(EXT_PRODUCT); @@ -367,7 +602,7 @@ PagedResult<Wikitty> results = proxy.findAllByCriteria(extneqCriteria); - Assert.assertEquals(2, results.getAll().size()); + Assert.assertEquals(7, results.getAll().size()); } @@ -391,33 +626,77 @@ } @Test + public void testEntitiesIdeq() throws Exception { + Search query = Search.query().ideq(W_ENTITY_ID); + + Criteria ideqCriteria = query.criteria(); + + PagedResult<ProductEntity> results = proxy.findAllByCriteria(ProductEntity.class, ideqCriteria); + + Assert.assertEquals(1, results.getAll().size()); + + ProductEntity resultW = results.getFirst(); + + Assert.assertEquals("Paint Blue", resultW.getName()); + Assert.assertEquals(22, resultW.getPrice()); + + } + + @Test public void testIdneq() throws Exception { - Search query = Search.query().idneq(W_ID); + Search query = Search.query().exteq(EXT_PRODUCT).idneq(W_ID); Criteria idneqCriteria = query.criteria(); PagedResult<Wikitty> results = proxy.findAllByCriteria(idneqCriteria); - Assert.assertEquals(4, results.getAll().size()); + Assert.assertEquals(2, results.getAll().size()); } @Test + public void testEntitiesIdneq() throws Exception { + + Search query = Search.query().idneq(W_ENTITY_ID); + + Criteria idneqCriteria = query.criteria(); + + PagedResult<ProductEntity> results = proxy.findAllByCriteria(ProductEntity.class, idneqCriteria); + + Assert.assertEquals(2, results.getAll().size()); + } + + @Test public void testUnlike() throws Exception { // FIXME sletellier 20110504 : Not yet implemented inMemorySearchTest, assuming assumeNotYetImplementedInMemory(); - Search query = Search.query().unlike("Product.name", "*dri*"); + Search query = Search.query().exteq(EXT_PRODUCT).unlike("Product.name", "*dri*"); Criteria likeCriteria = query.criteria(); PagedResult<Wikitty> results = proxy.findAllByCriteria(likeCriteria); - Assert.assertEquals(4, results.getAll().size()); + Assert.assertEquals(2, results.getAll().size()); } @Test + public void testEntitiesUnlike() throws Exception { + + // FIXME sletellier 20110504 : Not yet implemented inMemorySearchTest, assuming + assumeNotYetImplementedInMemory(); + + Search query = Search.query().unlike(ProductEntity.FQ_FIELD_PRODUCTENTITY_NAME, "*dri*"); + + Criteria likeCriteria = query.criteria(); + + PagedResult<ProductEntity> results = proxy.findAllByCriteria(ProductEntity.class, likeCriteria); + + Assert.assertEquals(2, results.getAll().size()); + } + + @Test public void testLike() throws Exception { // FIXME sletellier 20110504 : Not yet implemented inMemorySearchTest, assuming @@ -433,6 +712,21 @@ } @Test + public void testEntitiesLike() throws Exception { + + // FIXME sletellier 20110504 : Not yet implemented inMemorySearchTest, assuming + assumeNotYetImplementedInMemory(); + + Search query = Search.query().like(ProductEntity.FQ_FIELD_PRODUCTENTITY_NAME, "*dri*"); + + Criteria likeCriteria = query.criteria(); + + PagedResult<ProductEntity> results = proxy.findAllByCriteria(ProductEntity.class, likeCriteria); + + Assert.assertEquals(1, results.getAll().size()); + } + + @Test public void testSw() throws Exception { Search query = Search.query().sw("Product.name", "Scre"); @@ -452,18 +746,47 @@ } @Test + public void testEntitiesSw() throws Exception { + Search query = Search.query().sw(ProductEntity.FQ_FIELD_PRODUCTENTITY_NAME, "Scre"); + + Criteria swCriteria = query.criteria(); + + PagedResult<ProductEntity> results = proxy.findAllByCriteria(ProductEntity.class, swCriteria); + + Assert.assertEquals(1, results.getAll().size()); + + ProductEntity resultW = results.getFirst(); + + Assert.assertEquals("Screwdriver", resultW.getName()); + Assert.assertEquals(3, resultW.getPrice()); + + } + + @Test public void testNsw() throws Exception { - Search query = Search.query().nsw("Product.name", "Scre"); + Search query = Search.query().exteq(EXT_PRODUCT).nsw("Product.name", "Scre"); Criteria nswCriteria = query.criteria(); PagedResult<Wikitty> results = proxy.findAllByCriteria(nswCriteria); - Assert.assertEquals(4, results.getAll().size()); + Assert.assertEquals(2, results.getAll().size()); } @Test + public void testEntitiesNsw() throws Exception { + + Search query = Search.query().nsw(ProductEntity.FQ_FIELD_PRODUCTENTITY_NAME, "Scre"); + + Criteria nswCriteria = query.criteria(); + + PagedResult<ProductEntity> results = proxy.findAllByCriteria(ProductEntity.class, nswCriteria); + + Assert.assertEquals(2, results.getAll().size()); + } + + @Test public void testEw() throws Exception { Search query = Search.query().ew("Product.name", "ver"); @@ -484,22 +807,53 @@ } @Test + public void testEntitiesEw() throws Exception { + + Search query = Search.query().ew(ProductEntity.FQ_FIELD_PRODUCTENTITY_NAME, "ver"); + + Criteria ewCriteria = query.criteria(); + + PagedResult<ProductEntity> results = proxy.findAllByCriteria(ProductEntity.class, ewCriteria); + + Assert.assertEquals(1, results.getAll().size()); + + ProductEntity resultW = results.getFirst(); + + Assert.assertEquals("Screwdriver", resultW.getName()); + Assert.assertEquals(3, resultW.getPrice()); + + } + + @Test public void testNotew() throws Exception { - Search query = Search.query().notew("Product.name", "ver"); + Search query = Search.query().exteq(EXT_PRODUCT).notew("Product.name", "ver"); Criteria notewCriteria = query.criteria(); PagedResult<Wikitty> results = proxy.findAllByCriteria(notewCriteria); - Assert.assertEquals(4, results.getAll().size()); + Assert.assertEquals(2, results.getAll().size()); } @Test + public void testEntitiesNotew() throws Exception { + + Search query = Search.query().notew(ProductEntity.FQ_FIELD_PRODUCTENTITY_NAME, "ver"); + + Criteria notewCriteria = query.criteria(); + + PagedResult<ProductEntity> results = proxy.findAllByCriteria(ProductEntity.class, notewCriteria); + + Assert.assertEquals(2, results.getAll().size()); + + } + + @Test public void testKeyword() throws Exception { - Search query = Search.query().keyword("Paint"); + Search query = Search.query().exteq(EXT_PRODUCT).keyword("Paint"); Criteria keywordCriteria = query.criteria(); @@ -510,6 +864,19 @@ } @Test + public void testEntitiesKeyword() throws Exception { + + Search query = Search.query().exteq(ProductEntity.EXT_PRODUCTENTITY).keyword("Paint"); + + Criteria keywordCriteria = query.criteria(); + + PagedResult<ProductEntity> results = proxy.findAllByCriteria(ProductEntity.class, keywordCriteria); + + Assert.assertEquals(2, results.getAll().size()); + + } + + @Test public void testIsNull() throws Exception { Search query = Search.query().isNull("Product.name"); @@ -523,6 +890,19 @@ } @Test + public void testEntitiesIsNull() throws Exception { + + Search query = Search.query().isNull(ProductEntity.FQ_FIELD_PRODUCTENTITY_NAME); + + Criteria isNull = query.criteria(); + + PagedResult<ProductEntity> results = proxy.findAllByCriteria(ProductEntity.class, isNull); + + Assert.assertEquals(0, results.getAll().size()); + + } + + @Test public void testIsNotNull() throws Exception { Search query = Search.query().isNotNull("Product.name"); @@ -536,6 +916,19 @@ } @Test + public void testEntitiesIsNotNull() throws Exception { + + Search query = Search.query().isNotNull(ProductEntity.FQ_FIELD_PRODUCTENTITY_NAME); + + Criteria isNotNull = query.criteria(); + + PagedResult<ProductEntity> results = proxy.findAllByCriteria(ProductEntity.class, isNotNull); + + Assert.assertEquals(3, results.getAll().size()); + + } + + @Test public void testFalse() throws Exception { Search query = Search.query().rFalse(); @@ -549,19 +942,45 @@ } @Test + public void testEntitiesFalse() throws Exception { + + Search query = Search.query().rFalse(); + + Criteria rFalse = query.criteria(); + + PagedResult<ProductEntity> results = proxy.findAllByCriteria(ProductEntity.class, rFalse); + + Assert.assertEquals(0, results.getAll().size()); + + } + + @Test public void testTrue() throws Exception { - Search query = Search.query().rTrue(); + Search query = Search.query().exteq(EXT_PRODUCT).rTrue(); Criteria rTrue = query.criteria(); PagedResult<Wikitty> results = proxy.findAllByCriteria(rTrue); - Assert.assertEquals(5, results.getAll().size()); + Assert.assertEquals(3, results.getAll().size()); } @Test + public void testEntitiesTrue() throws Exception { + + Search query = Search.query().exteq(ProductEntity.EXT_PRODUCTENTITY).rTrue(); + + Criteria rTrue = query.criteria(); + + PagedResult<ProductEntity> results = proxy.findAllByCriteria(ProductEntity.class, rTrue); + + Assert.assertEquals(3, results.getAll().size()); + + } + + @Test public void testAnd() throws Exception { Search query = Search.query().and().bw("Product.price", "15", "25") @@ -576,6 +995,20 @@ } @Test + public void testEntitiesAnd() throws Exception { + + Search query = Search.query().and().bw(ProductEntity.FQ_FIELD_PRODUCTENTITY_PRICE, "15", "25") + .sw(ProductEntity.FQ_FIELD_PRODUCTENTITY_NAME, "Paint"); + + Criteria andCriteria = query.criteria(); + + PagedResult<ProductEntity> results = proxy.findAllByCriteria(ProductEntity.class, andCriteria); + + Assert.assertEquals(2, results.getAll().size()); + + } + + @Test public void testOr() throws Exception { Search query = Search.query(); @@ -591,20 +1024,49 @@ } @Test + public void testEntitiesOr() throws Exception { + + Search query = Search.query(); + + query.or().gt(ProductEntity.FQ_FIELD_PRODUCTENTITY_PRICE, "20").sw(ProductEntity.FQ_FIELD_PRODUCTENTITY_NAME, "Screw"); + + Criteria bwCriteria = query.criteria(); + + PagedResult<ProductEntity> results = proxy.findAllByCriteria(ProductEntity.class, bwCriteria); + + Assert.assertEquals(2, results.getAll().size()); + + } + + @Test public void testNot() throws Exception { Search query = Search.query(); - query.not().ge("Product.price", "20"); + query.exteq(EXT_PRODUCT).not().ge("Product.price", "20"); Criteria bwCriteria = query.criteria(); PagedResult<Wikitty> results = proxy.findAllByCriteria(bwCriteria); - Assert.assertEquals(3, results.getAll().size()); + Assert.assertEquals(1, results.getAll().size()); } @Test + public void testEntitiesNot() throws Exception { + + Search query = Search.query(); + + query.exteq(ProductEntity.EXT_PRODUCTENTITY).not().ge(ProductEntity.FQ_FIELD_PRODUCTENTITY_PRICE, "20"); + + Criteria bwCriteria = query.criteria(); + + PagedResult<ProductEntity> results = proxy.findAllByCriteria(ProductEntity.class, bwCriteria); + + Assert.assertEquals(1, results.getAll().size()); + } + + @Test public void testAssociated() throws Exception { /* Following request mean is : @@ -628,8 +1090,6 @@ Assert.assertEquals("Paint", resultW.getFieldAsString(EXT_PRODUCT, PRODUCT_NAME)); Assert.assertEquals(20, resultW.getFieldAsInt(EXT_PRODUCT, PRODUCT_PRICE)); - - //Test with an associated search that returns nothing query = Search.query().bw("Product.price", "15", "25") .sw("Product.name", "Paint").associated("Product.category") @@ -642,14 +1102,111 @@ Assert.assertEquals(0, results.getAll().size()); } + @Test + public void testEntitiesAssociated() throws Exception { - /** - * <li> monext.monfield - * <li> *.monfield - * <li> monext.monfield.NUMERIC - * <li> *.monfield.NUMERIC - **/ - @Test + /* Following request mean is : + * Looking for any product which price is between 15 and 25, + * and name starts with 'Paint', + * and with an associated category which name is 'Hardware' + */ + + Search query = Search.query().bw(ProductEntity.FQ_FIELD_PRODUCTENTITY_PRICE, "15", "25") + .sw(ProductEntity.FQ_FIELD_PRODUCTENTITY_NAME, "Paint").associated(ProductEntity.FQ_FIELD_PRODUCTENTITY_CATEGORYENTITY) + .eq(CategoryEntity.FQ_FIELD_CATEGORYENTITY_NAME, "HardWare"); + + Criteria associatedCriteria = query.criteria(); + + PagedResult<ProductEntity> results = proxy.findAllByCriteria(ProductEntity.class, associatedCriteria); + + Assert.assertEquals(1, results.getAll().size()); + + ProductEntity resultW = results.getFirst(); + + Assert.assertEquals("Paint", resultW.getName()); + Assert.assertEquals(20, resultW.getPrice()); + + //Test with an associated search that returns nothing + query = Search.query().bw(ProductEntity.FQ_FIELD_PRODUCTENTITY_PRICE, "15", "25") + .sw(ProductEntity.FQ_FIELD_PRODUCTENTITY_NAME, "Paint").associated(ProductEntity.FQ_FIELD_PRODUCTENTITY_CATEGORYENTITY) + .eq(CategoryEntity.FQ_FIELD_CATEGORYENTITY_NAME, "don't return anything"); + + associatedCriteria = query.criteria(); + + results = proxy.findAllByCriteria(ProductEntity.class, associatedCriteria); + + Assert.assertEquals(0, results.getAll().size()); + } + + @Test + public void testSelect() throws Exception { + + // FIXME sletellier 20110504 : Not yet implemented inMemorySearchTest, assuming + assumeNotYetImplementedInMemory(); + + //Test with an associated search that returns nothing + Search query = Search.query().bw("Product.price", "15", "25") + .sw("Product.name", "Paint"); + + Criteria selectCriteria = query.criteria(); + + selectCriteria.setSelect("Product.category"); + + PagedResult<Wikitty> results = proxy.findAllByCriteria(selectCriteria); + + Assert.assertEquals(2, results.getAll().size()); + + //Test with an associated search that returns nothing + query = Search.query().bw("Product.price", "15", "25") + .sw("Product.name", "Paint"); + + selectCriteria = query.criteria(); + + selectCriteria.setSelect("Product.name"); + + results = proxy.findAllByCriteria(selectCriteria); + + Assert.assertEquals(0, results.getAll().size()); + } + + @Test + public void testEntitiesSelect() throws Exception { + + // FIXME sletellier 20110504 : Not yet implemented inMemorySearchTest, assuming + assumeNotYetImplementedInMemory(); + + //Test with an associated search that returns nothing + Search query = Search.query().bw(ProductEntity.FQ_FIELD_PRODUCTENTITY_PRICE, "15", "25") + .sw(ProductEntity.FQ_FIELD_PRODUCTENTITY_NAME, "Paint"); + + Criteria selectCriteria = query.criteria(); + + selectCriteria.setSelect(ProductEntity.FQ_FIELD_PRODUCTENTITY_CATEGORYENTITY); + + PagedResult<CategoryEntity> results = proxy.findAllByCriteria(CategoryEntity.class, selectCriteria); + + Assert.assertEquals(2, results.getAll().size()); + + //Test with an associated search that returns nothing + query = Search.query().bw(ProductEntity.FQ_FIELD_PRODUCTENTITY_PRICE, "15", "25") + .sw(ProductEntity.FQ_FIELD_PRODUCTENTITY_NAME, "Paint"); + + selectCriteria = query.criteria(); + + selectCriteria.setSelect(ProductEntity.FQ_FIELD_PRODUCTENTITY_NAME); + + results = proxy.findAllByCriteria(CategoryEntity.class, selectCriteria); + + Assert.assertEquals(0, results.getAll().size()); + } + + /** + * <li> monext.monfield + * <li> *.monfield + * <li> monext.monfield.NUMERIC + * <li> *.monfield.NUMERIC + **/ + @Test public void testSearchAllEquals() { // FIXME sletellier 20110504 : Not yet implemented inMemorySearchTest, assuming assumeNotYetImplementedInMemory(); @@ -661,7 +1218,7 @@ { Criteria criteria = Search.query().eq("*.name", "HardWare").criteria(); PagedResult<Wikitty> pagedResult = proxy.findAllByCriteria(criteria); - assertEquals(1, pagedResult.size()); + assertEquals(2, pagedResult.size()); } { Criteria criteria = Search.query().eq("Category.name" + WikittyUtil.FQ_FIELD_NAME_SEPARATOR + FieldType.TYPE.STRING, "HardWare").criteria(); @@ -671,8 +1228,40 @@ { Criteria criteria = Search.query().eq("*.name" + WikittyUtil.FQ_FIELD_NAME_SEPARATOR + FieldType.TYPE.STRING, "HardWare").criteria(); PagedResult<Wikitty> pagedResult = proxy.findAllByCriteria(criteria); + assertEquals(2, pagedResult.size()); + } + } + + /** + * <li> monext.monfield + * <li> *.monfield + * <li> monext.monfield.NUMERIC + * <li> *.monfield.NUMERIC + **/ + @Test + public void testEntitiesSearchAllEquals() { + // FIXME sletellier 20110504 : Not yet implemented inMemorySearchTest, assuming + assumeNotYetImplementedInMemory(); + { + Criteria criteria = Search.query().eq(CategoryEntity.FQ_FIELD_CATEGORYENTITY_NAME, "HardWare").criteria(); + PagedResult<CategoryEntity> pagedResult = proxy.findAllByCriteria(CategoryEntity.class, criteria); assertEquals(1, pagedResult.size()); } + { + Criteria criteria = Search.query().eq("*.name", "HardWare").criteria(); + PagedResult<CategoryEntity> pagedResult = proxy.findAllByCriteria(CategoryEntity.class, criteria); + assertEquals(1, pagedResult.size()); + } + { + Criteria criteria = Search.query().eq(CategoryEntity.FQ_FIELD_CATEGORYENTITY_NAME + WikittyUtil.FQ_FIELD_NAME_SEPARATOR + FieldType.TYPE.STRING, "HardWare").criteria(); + PagedResult<CategoryEntity> pagedResult = proxy.findAllByCriteria(CategoryEntity.class, criteria); + assertEquals(1, pagedResult.size()); + } + { + Criteria criteria = Search.query().eq("*.name" + WikittyUtil.FQ_FIELD_NAME_SEPARATOR + FieldType.TYPE.STRING, "HardWare").criteria(); + PagedResult<CategoryEntity> pagedResult = proxy.findAllByCriteria(CategoryEntity.class, criteria); + assertEquals(1, pagedResult.size()); + } } /** @@ -693,7 +1282,7 @@ { Criteria criteria = Search.query().contains("*.colors", "Red").criteria(); PagedResult<Wikitty> pagedResult = proxy.findAllByCriteria(criteria); - assertEquals(1, pagedResult.size()); + assertEquals(2, pagedResult.size()); } { Criteria criteria = Search.query().contains("Product.colors" + WikittyUtil.FQ_FIELD_NAME_SEPARATOR + FieldType.TYPE.STRING, "Red").criteria(); @@ -703,17 +1292,49 @@ { Criteria criteria = Search.query().contains("*.colors" + WikittyUtil.FQ_FIELD_NAME_SEPARATOR + FieldType.TYPE.STRING, "Red").criteria(); PagedResult<Wikitty> pagedResult = proxy.findAllByCriteria(criteria); + assertEquals(2, pagedResult.size()); + } + } + + /** + * <li> monext.monfield + * <li> *.monfield + * <li> monext.monfield.NUMERIC + * <li> *.monfield.NUMERIC + **/ + @Test + public void testEntitiesSearchAllContains() { + // FIXME sletellier 20110504 : Not yet implemented inMemorySearchTest, assuming + assumeNotYetImplementedInMemory(); + { + Criteria criteria = Search.query().contains(ProductEntity.FQ_FIELD_PRODUCTENTITY_COLORS, "Red").criteria(); + PagedResult<ProductEntity> pagedResult = proxy.findAllByCriteria(ProductEntity.class, criteria); assertEquals(1, pagedResult.size()); } + { + Criteria criteria = Search.query().contains("*.colors", "Red").criteria(); + PagedResult<ProductEntity> pagedResult = proxy.findAllByCriteria(ProductEntity.class, criteria); + assertEquals(1, pagedResult.size()); + } + { + Criteria criteria = Search.query().contains(ProductEntity.FQ_FIELD_PRODUCTENTITY_COLORS + WikittyUtil.FQ_FIELD_NAME_SEPARATOR + FieldType.TYPE.STRING, "Red").criteria(); + PagedResult<ProductEntity> pagedResult = proxy.findAllByCriteria(ProductEntity.class, criteria); + assertEquals(1, pagedResult.size()); + } + { + Criteria criteria = Search.query().contains("*.colors" + WikittyUtil.FQ_FIELD_NAME_SEPARATOR + FieldType.TYPE.STRING, "Red").criteria(); + PagedResult<ProductEntity> pagedResult = proxy.findAllByCriteria(ProductEntity.class, criteria); + assertEquals(1, pagedResult.size()); + } } - /** - * <li> monext.monfield - * <li> *.monfield - * <li> monext.monfield.NUMERIC - * <li> *.monfield.NUMERIC - **/ - @Test + /** + * <li> monext.monfield + * <li> *.monfield + * <li> monext.monfield.NUMERIC + * <li> *.monfield.NUMERIC + **/ + @Test public void testSearchAllLike() { // FIXME sletellier 20110504 : Not yet implemented inMemorySearchTest, assuming assumeNotYetImplementedInMemory(); @@ -725,7 +1346,7 @@ { Criteria criteria = Search.query().like("*.name", "*Blue").criteria(); PagedResult<Wikitty> pagedResult = proxy.findAllByCriteria(criteria); - assertEquals(1, pagedResult.size()); + assertEquals(2, pagedResult.size()); } { Criteria criteria = Search.query().like("Product.name" + WikittyUtil.FQ_FIELD_NAME_SEPARATOR + FieldType.TYPE.STRING, "*Blue").criteria(); @@ -735,11 +1356,43 @@ { Criteria criteria = Search.query().like("*.name" + WikittyUtil.FQ_FIELD_NAME_SEPARATOR + FieldType.TYPE.STRING, "*Blue").criteria(); PagedResult<Wikitty> pagedResult = proxy.findAllByCriteria(criteria); + assertEquals(2, pagedResult.size()); + } + } + + /** + * <li> monext.monfield + * <li> *.monfield + * <li> monext.monfield.NUMERIC + * <li> *.monfield.NUMERIC + **/ + @Test + public void testEntitiesSearchAllLike() { + // FIXME sletellier 20110504 : Not yet implemented inMemorySearchTest, assuming + assumeNotYetImplementedInMemory(); + { + Criteria criteria = Search.query().like(ProductEntity.FQ_FIELD_PRODUCTENTITY_NAME, "*Blue").criteria(); + PagedResult<ProductEntity> pagedResult = proxy.findAllByCriteria(ProductEntity.class, criteria); assertEquals(1, pagedResult.size()); } + { + Criteria criteria = Search.query().like("*.name", "*Blue").criteria(); + PagedResult<ProductEntity> pagedResult = proxy.findAllByCriteria(ProductEntity.class, criteria); + assertEquals(1, pagedResult.size()); + } + { + Criteria criteria = Search.query().like(ProductEntity.FQ_FIELD_PRODUCTENTITY_NAME + WikittyUtil.FQ_FIELD_NAME_SEPARATOR + FieldType.TYPE.STRING, "*Blue").criteria(); + PagedResult<ProductEntity> pagedResult = proxy.findAllByCriteria(ProductEntity.class, criteria); + assertEquals(1, pagedResult.size()); + } + { + Criteria criteria = Search.query().like("*.name" + WikittyUtil.FQ_FIELD_NAME_SEPARATOR + FieldType.TYPE.STRING, "*Blue").criteria(); + PagedResult<ProductEntity> pagedResult = proxy.findAllByCriteria(ProductEntity.class, criteria); + assertEquals(1, pagedResult.size()); + } } - @Test + @Test public void testSearchAllLowerCase() { // FIXME implement it in memory assumeNotYetImplementedInMemory(); @@ -775,13 +1428,49 @@ } } - @Test + @Test + public void testEntitiesSearchAllLowerCase() { + // FIXME implement it in memory + assumeNotYetImplementedInMemory(); + { + Criteria criteria = Search.query().eq(CategoryEntity.FQ_FIELD_CATEGORYENTITY_NAME, "HardWare").criteria(); + PagedResult<CategoryEntity> pagedResult = proxy.findAllByCriteria(CategoryEntity.class, criteria); + assertEquals(1, pagedResult.size()); + } + { + Criteria criteria = Search.query().eq(CategoryEntity.FQ_FIELD_CATEGORYENTITY_NAME, "hardware").criteria(); + PagedResult<CategoryEntity> pagedResult = proxy.findAllByCriteria(CategoryEntity.class, criteria); + assertEquals(0, pagedResult.size()); + } + { + Criteria criteria = Search.query().like(CategoryEntity.FQ_FIELD_CATEGORYENTITY_NAME, "HardWare", Like.SearchAs.ToLowerCase).criteria(); + PagedResult<CategoryEntity> pagedResult = proxy.findAllByCriteria(CategoryEntity.class, criteria); + assertEquals(1, pagedResult.size()); + } + { + Criteria criteria = Search.query().like(CategoryEntity.FQ_FIELD_CATEGORYENTITY_NAME, "hardware", Like.SearchAs.ToLowerCase).criteria(); + PagedResult<CategoryEntity> pagedResult = proxy.findAllByCriteria(CategoryEntity.class, criteria); + assertEquals(1, pagedResult.size()); + } + { + Criteria criteria = Search.query().like(CategoryEntity.FQ_FIELD_CATEGORYENTITY_NAME, "HardWare", Like.SearchAs.AsText).criteria(); + PagedResult<CategoryEntity> pagedResult = proxy.findAllByCriteria(CategoryEntity.class, criteria); + assertEquals(1, pagedResult.size()); + } + { + Criteria criteria = Search.query().like(CategoryEntity.FQ_FIELD_CATEGORYENTITY_NAME, "hardware", Like.SearchAs.AsText).criteria(); + PagedResult<CategoryEntity> pagedResult = proxy.findAllByCriteria(CategoryEntity.class, criteria); + assertEquals(1, pagedResult.size()); + } + } + + @Test public void testSearchWithSort() { // FIXME implement it in memory assumeNotYetImplementedInMemory(); { Criteria criteria = Search.query().like("*.name", "*").criteria(); - criteria.setSortAscending(new String[]{"*.name"}); + criteria.setSortAscending("*.name"); try { proxy.findAllByCriteria(criteria); } catch (Exception eee) { @@ -813,8 +1502,7 @@ Collections.sort(expected); { Criteria criteria = Search.query().eq(Element.ELT_EXTENSION, sortableExtName).criteria(); - criteria.setSortAscending(new String[]{ - WikittyUtil.getFQFieldName(sortableExtName, numFieldName)}); + criteria.setSortAscending(WikittyUtil.getFQFieldName(sortableExtName, numFieldName)); PagedResult<Wikitty> result = proxy.findAllByCriteria(criteria); List<Integer> resulted = new ArrayList<Integer>(); @@ -825,7 +1513,6 @@ } } - @Test public void testComplexQueries() throws Exception { //TODO JC-07-04-2011 Write test Modified: trunk/wikitty-api/src/test/xmi/wikittytest.zargo =================================================================== (Binary files differ)
participants (1)
-
sletellier@users.nuiton.org