Wikitty-commits
Threads by month
- ----- 2026 -----
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
January 2012
- 4 participants
- 128 discussions
r1299 - in trunk/wikitty-solr/src: main/java/org/nuiton/wikitty/storage/solr test/java/org/nuiton/wikitty/storage/solr
by bpoussin@users.nuiton.org 07 Jan '12
by bpoussin@users.nuiton.org 07 Jan '12
07 Jan '12
Author: bpoussin
Date: 2012-01-07 17:50:21 +0100 (Sat, 07 Jan 2012)
New Revision: 1299
Url: http://nuiton.org/repositories/revision/wikitty/1299
Log:
petit hack pour que le like/unlike/keyword fonctionne comme on le souhaite
Modified:
trunk/wikitty-solr/src/main/java/org/nuiton/wikitty/storage/solr/WikittyQueryVisitorToSolr.java
trunk/wikitty-solr/src/test/java/org/nuiton/wikitty/storage/solr/WikittySearchEngineSolrForQueryTest.java
Modified: trunk/wikitty-solr/src/main/java/org/nuiton/wikitty/storage/solr/WikittyQueryVisitorToSolr.java
===================================================================
--- trunk/wikitty-solr/src/main/java/org/nuiton/wikitty/storage/solr/WikittyQueryVisitorToSolr.java 2012-01-07 16:23:47 UTC (rev 1298)
+++ trunk/wikitty-solr/src/main/java/org/nuiton/wikitty/storage/solr/WikittyQueryVisitorToSolr.java 2012-01-07 16:50:21 UTC (rev 1299)
@@ -342,7 +342,17 @@
@Override
public boolean visitEnter(Keyword o) {
- solrQuery += evalConditionValue(o.getValue());
+ String value = evalConditionValue(o.getValue());
+ // TODO poussin 20120107 impossible de comprendre pourquoi il faut force
+ // la chaine en lower case, ca devrait etre le role de solr/lucene via
+ // la description du schema de mettre la chaine dans la bonne forme
+ // pour la recheche en fonction du type du champs souhaite (ici fulltext)
+ // tant que ca marche pas on force a la main
+ value = value.toLowerCase();
+
+ // pour keyword on ajout automatiquement les *, sinon il faut faire un like
+ value = "*" + value + "*";
+ solrQuery += value;
return false;
}
@@ -383,7 +393,15 @@
element2solr += WikittySolrConstant.SUFFIX_STRING_FULLTEXT;
}
- solrQuery += element2solr + ":" + evalConditionValue(o.getValue());
+ String value = evalConditionValue(o.getValue());
+ // TODO poussin 20120107 impossible de comprendre pourquoi il faut force
+ // la chaine en lower case, ca devrait etre le role de solr/lucene via
+ // la description du schema de mettre la chaine dans la bonne forme
+ // pour la recheche en fonction du type du champs souhaite (ici fulltext)
+ // tant que ca marche pas on force a la main
+ value = value.toLowerCase();
+
+ solrQuery += element2solr + ":" + value;
return false;
}
@@ -400,7 +418,15 @@
element2solr += WikittySolrConstant.SUFFIX_STRING_FULLTEXT;
}
- solrQuery += "-" + element2solr + ":" + evalConditionValue(o.getValue());
+ String value = evalConditionValue(o.getValue());
+ // TODO poussin 20120107 impossible de comprendre pourquoi il faut force
+ // la chaine en lower case, ca devrait etre le role de solr/lucene via
+ // la description du schema de mettre la chaine dans la bonne forme
+ // pour la recheche en fonction du type du champs souhaite (ici fulltext)
+ // tant que ca marche pas on force a la main
+ value = value.toLowerCase();
+
+ solrQuery += "-" + element2solr + ":" + value;
return false;
}
Modified: trunk/wikitty-solr/src/test/java/org/nuiton/wikitty/storage/solr/WikittySearchEngineSolrForQueryTest.java
===================================================================
--- trunk/wikitty-solr/src/test/java/org/nuiton/wikitty/storage/solr/WikittySearchEngineSolrForQueryTest.java 2012-01-07 16:23:47 UTC (rev 1298)
+++ trunk/wikitty-solr/src/test/java/org/nuiton/wikitty/storage/solr/WikittySearchEngineSolrForQueryTest.java 2012-01-07 16:50:21 UTC (rev 1299)
@@ -258,17 +258,46 @@
{
WikittyQuery query = new WikittyQueryMaker()
- .like(WikittyGroup.FQ_FIELD_WIKITTYGROUP_NAME, "Group*")
+ .eq(WikittyGroup.FQ_FIELD_WIKITTYGROUP_NAME, "G*")
.end();
WikittyQueryResult<String> result = client.findAllByQuery(query);
System.out.println("testEq" + result.getAll());
- // FIXME test fail :(. But solr request look like good
- // WikittyGroup.name_s_t:Group*
-// Assert.assertEquals(2, result.size());
+ Assert.assertEquals(2, result.size());
}
+ {
+ WikittyQuery query = new WikittyQueryMaker()
+ .like(WikittyGroup.FQ_FIELD_WIKITTYGROUP_NAME, "*oup*")
+ .end();
+
+ WikittyQueryResult<String> result = client.findAllByQuery(query);
+
+ System.out.println("testLike" + result);
+ Assert.assertEquals(2, result.size());
+ }
+ {
+ WikittyQuery query = new WikittyQueryMaker()
+ .like("*", "Grou*")
+ .end();
+
+ WikittyQueryResult<String> result = client.findAllByQuery(query);
+
+ System.out.println("testLike" + result);
+ Assert.assertEquals(2, result.size());
+ }
+ {
+ WikittyQuery query = new WikittyQueryMaker()
+ .keyword("Gro")
+ .end();
+
+ WikittyQueryResult<String> result = client.findAllByQuery(query);
+
+ System.out.println("testKeyword:" + result);
+ Assert.assertEquals(2, result.size());
+ }
+
}
@Test
1
0
r1298 - trunk/wikitty-solr/src/main/java/org/nuiton/wikitty/storage/solr
by bpoussin@users.nuiton.org 07 Jan '12
by bpoussin@users.nuiton.org 07 Jan '12
07 Jan '12
Author: bpoussin
Date: 2012-01-07 17:23:47 +0100 (Sat, 07 Jan 2012)
New Revision: 1298
Url: http://nuiton.org/repositories/revision/wikitty/1298
Log:
delete debug message
Modified:
trunk/wikitty-solr/src/main/java/org/nuiton/wikitty/storage/solr/ElementModifier.java
Modified: trunk/wikitty-solr/src/main/java/org/nuiton/wikitty/storage/solr/ElementModifier.java
===================================================================
--- trunk/wikitty-solr/src/main/java/org/nuiton/wikitty/storage/solr/ElementModifier.java 2012-01-07 13:48:37 UTC (rev 1297)
+++ trunk/wikitty-solr/src/main/java/org/nuiton/wikitty/storage/solr/ElementModifier.java 2012-01-07 16:23:47 UTC (rev 1298)
@@ -67,7 +67,6 @@
if (log.isDebugEnabled()) {
log.debug("Element: " + element.getValue() + "(" + element.getClass() + ")");
}
- System.out.println("XXXXXElement: " + element.getValue() + "(" + element.getClass() + ")");
String result;
if (element instanceof ElementId) {
result = SOLR_ID;
1
0
Author: bpoussin
Date: 2012-01-07 14:48:37 +0100 (Sat, 07 Jan 2012)
New Revision: 1297
Url: http://nuiton.org/repositories/revision/wikitty/1297
Log:
Evolution #1883: Change Query API to permit use of Select as Value of Terminal condition
maj de la doc
Modified:
trunk/src/site/rst/user/query.rst
Modified: trunk/src/site/rst/user/query.rst
===================================================================
--- trunk/src/site/rst/user/query.rst 2012-01-07 12:23:36 UTC (rev 1296)
+++ trunk/src/site/rst/user/query.rst 2012-01-07 13:48:37 UTC (rev 1297)
@@ -67,12 +67,15 @@
De nombreuses contraintes sont disponibles pour créer vos recherches :
-* Egalité : eq - Vérifie si un champ est égal a une valeur, si le champs est un
- champs texte, il est possible d'ajouter des "*" en début et en fin de la
- chaîne de recherche pour faire l'équivalent d'un startsWith ou endsWith. Si
- vous utilisez WikittyQueryMaker les méthodes sw (startsWith) et ew (endsWith)
- font ce travail pour vous.::
+Egalité : eq
+++++++++++++
+Vérifie si un champ est égal a une valeur, si le champs est un
+champs texte, il est possible d'ajouter des "*" en début et en fin de la
+chaîne de recherche pour faire l'équivalent d'un startsWith ou endsWith. Si
+vous utilisez WikittyQueryMaker les méthodes sw (startsWith) et ew (endsWith)
+font ce travail pour vous.::
+
WikittyQuery q = new WikittyQueryMaker().eq(User.ELEMENT_FIELD_USER_LASTNAME, "poussin").end();
WikittyQuery q = new WikittyQueryMaker().eq(User.ELEMENT_FIELD_USER_LASTNAME, "*ssin").end();
WikittyQuery q = new WikittyQueryMaker().ew(User.ELEMENT_FIELD_USER_LASTNAME, "ssin").end();
@@ -81,10 +84,13 @@
WikittyQuery q = WikittyQueryParser.parse("User.lastname=*ssin");
WikittyQuery q = WikittyQueryParser.parse("User.lastname=*ssin");
-* Non égalité : neq - Vérifie si un champ n'est pas égal a une valeur. De la
- même façon que le eq, il est possible d'ajouter des '*'. Ou d'utiliser les
- méthode notsw et notew.::
+Non égalité : neq
++++++++++++++++++
+Vérifie si un champ n'est pas égal a une valeur. De la
+même façon que le eq, il est possible d'ajouter des '*'. Ou d'utiliser les
+méthode notsw et notew.::
+
WikittyQuery q = new WikittyQueryMaker().ne(User.ELEMENT_FIELD_USER_LASTNAME, "poussin").end();
WikittyQuery q = new WikittyQueryMaker().ne(User.ELEMENT_FIELD_USER_LASTNAME, "*ssin").end();
WikittyQuery q = new WikittyQueryMaker().notew(User.ELEMENT_FIELD_USER_LASTNAME, "ssin").end();
@@ -93,56 +99,74 @@
WikittyQuery q = WikittyQueryParser.parse("User.lastname!=*ssin");
WikittyQuery q = WikittyQueryParser.parse("User.lastname!=*ssin");
-* Contient tous : containsAll - Vérifie si un champ multivalué contient au moins
- une valeur de la liste des valeurs passées en argument::
+Contient tous : containsAll
++++++++++++++++++++++++++++
+Vérifie si un champ multivalué contient au moins une valeur de la liste des
+valeurs passées en argument::
+
WikittyQuery q = new WikittyQueryMaker()
.containsOne(User.ELEMENT_FIELD_USER_LASTNAME, "poussin", "couteau").end();
WikittyQuery q = WikittyQueryParser.parse("User.lastname={poussin, couteau}");
-* Egalité d'extension : exteq - Vérifie si un Wikitty possède une extension::
+Egalité d'extension : exteq
++++++++++++++++++++++++++++
+Vérifie si un Wikitty possède une extension::
+
WikittyQuery q = new WikittyQueryMaker()
.exteq(User.EXT_USER).end();
WikittyQuery q = WikittyQueryParser.parse("extension=User");
-* Non égalité d'extension : extne - Vérifie qu'un Wikitty ne porte pas une
-extension.::
+Non égalité d'extension : extne
++++++++++++++++++++++++++++++++
+Vérifie qu'un Wikitty ne porte pas une extension.::
+
WikittyQuery q = new WikittyQueryMaker()
.extne(User.EXT_USER).end();
WikittyQuery q = WikittyQueryParser.parse("extension!=User");
-* ContainsAll d'extension : extContainsAll - Vérifie si un Wikitty possède toutes
- les extensions::
+ContainsAll d'extension : extContainsAll
+++++++++++++++++++++++++++++++++++++++++
+Vérifie si un Wikitty possède toutes les extensions::
+
WikittyQuery q = new WikittyQueryMaker()
.extContainsAll(User.EXT_USER, Employee.EXT_EMPLOYEE).end();
WikittyQuery q = WikittyQueryParser.parse("extension=[User, Employee]");
-* Égalité d'identifiant : ideq - Vérifie qu'un Wikitty porte l'identifiant::
+Égalité d'identifiant : ideq
+++++++++++++++++++++++++++++
+Vérifie qu'un Wikitty porte l'identifiant::
+
WikittyQuery q = new WikittyQueryMaker()
.ideq(User.EXT_USER).end();
WikittyQuery q = WikittyQueryParser.parse("id=1234567-1234-1234567");
-* Non égalité d'identifiant : idneq - Vérifie qu'un Wikitty ne porte pas
-l'identifiant.::
+Non égalité d'identifiant : idneq
++++++++++++++++++++++++++++++++++
+Vérifie qu'un Wikitty ne porte pas l'identifiant.::
+
WikittyQuery q = new WikittyQueryMaker()
.idne(User.EXT_USER).end();
WikittyQuery q = WikittyQueryParser.parse("id!=1234567-1234-1234567");
-* Similitude : like - Vérifie qu'une chaîne de caractère est égale à une autre
- sans tenir compte de la casse ni des accents. Cette opérateur ne recherche que
- de façon textuelle, vous pouvez ajouter des '*' en début et fin de d'expression::
+Similitude : like
++++++++++++++++++
+Vérifie qu'une chaîne de caractère est égale à une autre
+sans tenir compte de la casse ni des accents. Cette opérateur ne recherche que
+de façon textuelle, vous pouvez ajouter des '*' en début et fin de d'expression::
+
WikittyQuery q = new WikittyQueryMaker()
.like(User.ELEMENT_FIELD_USER_FIRSTNAME, "helene").end();
WikittyQuery q = new WikittyQueryMaker()
@@ -151,10 +175,13 @@
WikittyQuery q = WikittyQueryParser.parse("User.fistname LIKE helene");
WikittyQuery q = WikittyQueryParser.parse("User.fistname LIKE *lene");
-* Non similitude : unlike - Vérifie qu'une chaîne de caractère n'est pas égale à une autre
- sans tenir compte de la casse ni des accents. Cette opérateur ne recherche que
- de façon textuelle, vous pouvez ajouter des '*' en début et fin de d'expression::
+Non similitude : unlike
++++++++++++++++++++++++
+Vérifie qu'une chaîne de caractère n'est pas égale à une autre
+sans tenir compte de la casse ni des accents. Cette opérateur ne recherche que
+de façon textuelle, vous pouvez ajouter des '*' en début et fin de d'expression::
+
WikittyQuery q = new WikittyQueryMaker()
.unlike(User.ELEMENT_FIELD_USER_FIRSTNAME, "helene").end();
WikittyQuery q = new WikittyQueryMaker()
@@ -163,108 +190,144 @@
WikittyQuery q = WikittyQueryParser.parse("User.fistname UNLIKE helene");
WikittyQuery q = WikittyQueryParser.parse("User.fistname UNLIKE *lene");
-* Supérieur strictement : gt - Vérifie qu'un champ est strictement supérieur à
- une valeur. Cette condition s'applique surtout sur les champs de type Date et
- Number::
+Supérieur strictement : gt
+++++++++++++++++++++++++++
+Vérifie qu'un champ est strictement supérieur à
+une valeur. Cette condition s'applique surtout sur les champs de type Date et
+Number::
+
WikittyQuery q = new WikittyQueryMaker()
.gt(User.ELEMENT_FIELD_USER_AGE, 18).end();
WikittyQuery q = WikittyQueryParser.parse("User.age > 18");
-* Supérieur ou égal : ge - Vérifie si un champ est supérieur ou égal à une
-valeur.::
+Supérieur ou égal : ge
+++++++++++++++++++++++
+Vérifie si un champ est supérieur ou égal à une valeur.::
+
WikittyQuery q = new WikittyQueryMaker()
.ge(User.ELEMENT_FIELD_USER_AGE, 18).end();
WikittyQuery q = WikittyQueryParser.parse("User.age >= 18");
-* Inférieur strictement : lt - Vérifie si un champ est strictement inférieur à
-une valeur.::
+Inférieur strictement : lt
+++++++++++++++++++++++++++
+Vérifie si un champ est strictement inférieur à une valeur.::
+
WikittyQuery q = new WikittyQueryMaker()
.lt(User.ELEMENT_FIELD_USER_AGE, 18).end();
WikittyQuery q = WikittyQueryParser.parse("User.age < 18");
-* Inférieur ou égal : le - Vérifie si un champ est inférieur ou égal à une
-valeur.::
+Inférieur ou égal : le
+++++++++++++++++++++++
+Vérifie si un champ est inférieur ou égal à une valeur.::
+
WikittyQuery q = new WikittyQueryMaker()
.le(User.ELEMENT_FIELD_USER_AGE, 18).end();
WikittyQuery q = WikittyQueryParser.parse("User.age <= 18");
-* Entre : bw - Vérifie si un champ est compris entre deux valeurs.::
+Entre : bw
+++++++++++
+Vérifie si un champ est compris entre deux valeurs.::
+
WikittyQuery q = new WikittyQueryMaker()
.bw(Product.ELEMENT_FIELD_PRODUCT_PRICE, 2, 2.50).end();
WikittyQuery q = WikittyQueryParser.parse("Product.price=[2 TO 2.5]");
-* Commence par : sw - Vérifie si un champ de type chaîne commence par une valeur.::
+Commence par : sw
++++++++++++++++++
+Vérifie si un champ de type chaîne commence par une valeur.::
+
WikittyQuery q = new WikittyQueryMaker()
.sw(User.ELEMENT_FIELD_USER_LASTNAME, "pous").end();
WikittyQuery q = WikittyQueryParser.parse("User.lastname=pous*");
-* Ne commence pas par : notsw - Vérifie si un champ de type chaîne ne commence pas
-par une valeur.::
+Ne commence pas par : notsw
++++++++++++++++++++++++++++
+Vérifie si un champ de type chaîne ne commence pas par une valeur.::
+
WikittyQuery q = new WikittyQueryMaker()
.notsw(User.ELEMENT_FIELD_USER_LASTNAME, "pous").end();
WikittyQuery q = WikittyQueryParser.parse("User.lastname!=pous*");
-* Termine par : ew - Vérifie si un champ de type chaîne termine par une valeur.::
+Termine par : ew
+++++++++++++++++
+Vérifie si un champ de type chaîne termine par une valeur.::
+
WikittyQuery q = new WikittyQueryMaker()
.ew(User.ELEMENT_FIELD_USER_LASTNAME, "sin").end();
WikittyQuery q = WikittyQueryParser.parse("User.lastname=sin*");
-* Ne termine pas par : notew - Vérifie si un champs de type chaîne ne termine
-pas par une valeur.::
+Ne termine pas par : notew
+++++++++++++++++++++++++++
+Vérifie si un champs de type chaîne ne termine pas par une valeur.::
+
WikittyQuery q = new WikittyQueryMaker()
.notew(User.ELEMENT_FIELD_USER_LASTNAME, "pous").end();
WikittyQuery q = WikittyQueryParser.parse("User.lastname!=pous*");
-* Mot-clé : keyword - Vérifie si la valeur est présente dans n'importe quel
- champ de n'importe quelle extension en fulltext (pas de prise en compte de la
- casse ou des accents).::
+Mot-clé : keyword
++++++++++++++++++
+Vérifie si la valeur est présente dans n'importe quel
+champ de n'importe quelle extension en fulltext (pas de prise en compte de la
+casse ou des accents).::
+
WikittyQuery q = new WikittyQueryMaker()
.keyword("partout").end();
WikittyQuery q = WikittyQueryParser.parse("partout");
-* Nul : isNull - Vérifie si la valeur d'un champ est nulle::
+Nul : isNull
+++++++++++++
+Vérifie si la valeur d'un champ est nulle::
+
WikittyQuery q = new WikittyQueryMaker()
.isNull(User.ELEMENT_FIELD_USER_LASTNAME).end();
WikittyQuery q = WikittyQueryParser.parse("User.lastname=NULL");
-* Non nul : isNotNull - Vérifie si la valeur d'un champ n'est pas nulle.
+Non nul : isNotNull
++++++++++++++++++++
+Vérifie si la valeur d'un champ n'est pas nulle.
+
WikittyQuery q = new WikittyQueryMaker()
.isNotNull(User.ELEMENT_FIELD_USER_LASTNAME).end();
WikittyQuery q = WikittyQueryParser.parse("User.lastname!=NULL");
-* False : rFalse - retourne toujours faux::
+False : rFalse
+++++++++++++++
+retourne toujours faux::
+
WikittyQuery q = new WikittyQueryMaker()
.rFalse().end();
WikittyQuery q = WikittyQueryParser.parse("FALSE");
-* True : rTrue - retourne toujours vrai::
+True : rTrue
+++++++++++++
+retourne toujours vrai::
WikittyQuery q = new WikittyQueryMaker()
.rTrue().end();
@@ -274,13 +337,16 @@
Les noeuds à sous-requête
-------------------------
-* Les noeuds à sous requêtes permettent de faire des requêtes complexes.
+Les noeuds à sous requêtes permettent de faire des requêtes complexes.
-* Non : not - Résultat inverse de la sous-requête. Permet de faire la négation
- d'une condition. On ne peut ajouter qu'une condition dans un not, il faut
- donc ajouter en premier soit un or, soit un and pour mettre plusieurs
- conditions::
+Non : not
++++++++++
+Résultat inverse de la sous-requête. Permet de faire la négation
+d'une condition. On ne peut ajouter qu'une condition dans un not, il faut
+donc ajouter en premier soit un or, soit un and pour mettre plusieurs
+conditions::
+
WikittyQuery q = new WikittyQueryMaker()
.not().rFalse().end(); // condition toujours vraie
@@ -291,43 +357,45 @@
WikittyQuery q = WikittyQueryParser.parse("NOT(FALSE OR FALSE OR TRUE)");
-* Ou : or - Ou entre les différentes sous-requêtes. On peut ajouter autant
- d'élément dans le or que l'on souhaite, en fait les éléments lui sont ajouté
- tant qu'il n'est pas fermé (close).
+Ou : or
++++++++
+Ou entre les différentes sous-requêtes. On peut ajouter autant
+d'élément dans le or que l'on souhaite, en fait les éléments lui sont ajouté
+tant qu'il n'est pas fermé (close).
+
WikittyQuery q = new WikittyQueryMaker()
.or().rFalse().rTrue().rFalse().end(); // condition toujours vrai
WikittyQuery q = WikittyQueryParser.parse("FALSE OR TRUE OR FALSE");
-* Et : and - Et entre les différentes sous-requêtes. On peut ajouter autant
- d'élément dans le and que l'on souhaite, en fait les éléments lui sont ajouté
- tant qu'il n'est pas fermé (close).
+Et : and
+++++++++
+Et entre les différentes sous-requêtes. On peut ajouter autant
+d'élément dans le and que l'on souhaite, en fait les éléments lui sont ajouté
+tant qu'il n'est pas fermé (close).
+
WikittyQuery q = new WikittyQueryMaker()
.and().rFalse().rTrue().rTrue().end(); // condition toujours fausse
WikittyQuery q = WikittyQueryParser.parse("FALSE AND TRUE AND TRUE");
WikittyQuery q = WikittyQueryParser.parse("FALSE TRUE TRUE");
-* Requête associée : in - Permet d'effectuer des jointures. Cette opérateur lie
- deux requêtes entres elle. Le résultat d'un requête est utilisé comme un
- containsOne dans l'autre. La requête suivante recherche tous les employés
- en CDI, mais seulement ceux dont le nom de leur entreprise contient 'lutin'.::
+Selection : select
+++++++++++++++++++
- WikittyQuery q = new WikittyQueryMaker()
- and()
- .eq("Employee.contract", "CDI")
- .in("Employee.company").like("Company.name", "*Lutin*").end();
+Ajout d'un select pour définir le champs à retourner au
+lieu de l'id. Le select doit toujours être le premier élément de la condition
+ou utilisé à la place d'une valeur.
- WikittyQuery q = WikittyQueryParser.parse(
- "Employee.contract=CDI AND Employee.company in (Company.name LIKE *Lutin*)");
+Attention le select provoque la génération d'une deuxième requête, donc plus il
+y a de select dans une requête plus elle demandera de ressource au serveur et
+donc des temps de réponse plus long.
-* Selection : select - Ajout d'un select pour définir le champs à retourner au
- lieu de l'id. Le select doit toujours être le premier élément de la condition
- ou du in. Dans l'exemple suivant au lieu de retourner l'id des employés
- en CDI, on retourne leur nom. Si deux personnes avait le même nom, ce nom
- ne serait retourné qu'une seule fois.::
+Dans l'exemple suivant au lieu de retourner
+l'id des employés en CDI, on retourne leur nom. Si deux personnes avait le même
+nom, ce nom ne serai retourné qu'une seule fois.::
WikittyQuery q = new WikittyQueryMaker()
select("Employee.name").eq("Employee.contract", "CDI").end();
@@ -335,40 +403,50 @@
WikittyQuery q = WikittyQueryParser.parse(
"SELECT Employee.name WHERE Employee.contract=CDI");
- Il est possible de coupler le select et le in, par exemple pour recherche
- toutes les personnes nés le même jour qu'un évênement qui a eu lieu en france::
+Il est possible de coupler le select et toutes les conditions terminales, par
+exemple pour recherche toutes les personnes nés le même jour qu'un évênement
+qui a eu lieu en france::
WikittyQuery q = new WikittyQueryMaker()
- .in("Person.birthday")
+ .containsOne("Person.birthday")
.select("Event.date").like("Event.country", "france").end();
WikittyQuery q = WikittyQueryParser.parse(
- "Person.birthday IN (SELECT Event.date WHERE Event.country LIKE france)");
+ "Person.birthday={SELECT Event.date WHERE (Event.country LIKE france)}");
Il est possible d'ajouter des fonctions d'aggrégats dans le Select. Dans ce cas
-le résultat retourné ne contient qu'un seul élément. L'aggrégat est fait les élements
-retournés (de first à first+Limit)
+le résultat retourné ne contient qu'un seul élément. L'aggrégat est fait sur les
+élements retournés (de first à first+Limit)
-* AVG fait la moyenne des valeurs, il faut donc que le champs sélectionnés soit
- un Numeric::
+AVG
+~~~
+Fait la moyenne des valeurs, il faut donc que le champs sélectionnés soit
+un Numeric::
+
WikittyQuery q = new WikittyQueryMaker()
.select("Person.age", Aggregate.AVG).eq("Person.firstname", "Jean").end();
-
+
WikittyQuery q = WikittyQueryParser.parse(
"SELECT AVG Person.age WHERE Person.firstname=Jean");
-* COUNT retourne le nombre d'élément retourné::
+COUNT
+~~~~~
+Retourne le nombre d'élément retourné::
+
WikittyQuery q = new WikittyQueryMaker()
.select("Person.age", Aggregate.COUNT).eq("Person.firstname", "Jean").end();
WikittyQuery q = WikittyQueryParser.parse(
"SELECT COUNT Person.age WHERE Person.firstname=Jean");
-* MAX retourne la plus grande valeur. MAX peut-etre utilisé sur tout type de champs
- mais il est plus pertinant sur les champs: Numeric, Date, String::
+MAX
+~~~
+Retourne la plus grande valeur. MAX peut-etre utilisé sur tout type de champs
+mais il est plus pertinant sur les champs: Numeric, Date, String::
+
// on recherche le plus jeune (plus grande date) des personnes s'appelant Jean
WikittyQuery q = new WikittyQueryMaker()
.select("Person.birthday", Aggregate.MAX).eq("Person.firstname", "Jean").end();
@@ -376,9 +454,12 @@
WikittyQuery q = WikittyQueryParser.parse(
"SELECT MAX Person.birthday WHERE Person.firstname=Jean");
-* MIN retourne la plus petite valeur. MIN peut-etre utilisé sur tout type de champs
- mais il est plus pertinant sur les champs: Numeric, Date, String::
+MIN
+~~~
+Retourne la plus petite valeur. MIN peut-etre utilisé sur tout type de champs
+mais il est plus pertinant sur les champs: Numeric, Date, String::
+
// on recherche le plus agé (plus petite date) des personnes s'appelant Jean
WikittyQuery q = new WikittyQueryMaker()
.select("Person.birthday", Aggregate.MIN).eq("Person.firstname", "Jean").end();
@@ -386,9 +467,12 @@
WikittyQuery q = WikittyQueryParser.parse(
"SELECT MIN Person.birthday WHERE Person.firstname=Jean");
-* SUM retourne la somme de tous les nombres. Il faut donc que le champs sélectionné
- soit un Numeric::
+SUM
+~~~
+Retourne la somme de tous les nombres. Il faut donc que le champs sélectionné
+soit un Numeric::
+
// fait la somme des facture depuis le début d'année
WikittyQuery q = new WikittyQueryMaker()
.select("Invoice.amount", Aggregate.SUM).ge("Invoice.date", "01/01/2012").end();
@@ -405,8 +489,11 @@
- pathNode: champs contenant tous les id de noeuds pour atteindre un noeud (du root au noeud lui même inclus)
- depthNode: entier indiquant la profondeur d'un noeud (root=1)
-* Pour avoir tous les attachments de tous les noeuds de tous les arbres::
+Quelques exemples
++++++++++++++++++
+Pour avoir tous les attachments de tous les noeuds de tous les arbres::
+
WikittyQuery q = new WikittyQueryMaker()
.in(Element.ID)
.select(WikittyTreeNode.ELEMENT_FIELD_WIKITTYTREENODE_ATTACHMENT).end();
@@ -414,7 +501,7 @@
WikittyQuery q = WikittyQueryParser.parse(
"id IN (SELECT WikittyTreeNode.attachment)");
-* Pour avoir tous les attachments de tous les noeuds d'un arbre ayant le nom 'MyTree'::
+Pour avoir tous les attachments de tous les noeuds d'un arbre ayant le nom 'MyTree'::
WikittyQuery q = new WikittyQueryMaker()
.in(Element.ID)
@@ -425,8 +512,8 @@
WikittyQuery q = WikittyQueryParser.parse(
"id IN (SELECT WikittyTreeNode.attachment WHERE rootNode IN (WikittyTreeNode.name=MyTree))");
-* Pour avoir tous les attachments d'un sous arbre commencant à un noeud ayant
- le nom "MyBranch" d'un arbre ayant le nom 'MyTree'::
+Pour avoir tous les attachments d'un sous arbre commencant à un noeud ayant
+le nom "MyBranch" d'un arbre ayant le nom 'MyTree'::
WikittyQuery q = new WikittyQueryMaker()
.in(Element.ID)
@@ -441,8 +528,8 @@
WikittyQuery q = WikittyQueryParser.parse("id IN (SELECT WikittyTreeNode.attachment WHERE
+ " rootNode IN (WikittyTreeNode.name=MyTree) AND pathNode IN (WikittyTreeNode.name=MyBranch))");
-* Pour avoir tous les attachments d'un arbre ayant le nom 'MyTree' jusqu'à une
- profondeur de 3 (root, fils, sous fils)::
+Pour avoir tous les attachments d'un arbre ayant le nom 'MyTree' jusqu'à une
+profondeur de 3 (root, fils, sous fils)::
WikittyQuery q = new WikittyQueryMaker()
.in(Element.ID)
@@ -459,36 +546,48 @@
Spécificité de WikittyQueryMaker
--------------------------------
-* Fermeture d'un noeud: close. Lorsqu'on ouvre un element a sous noeud comme
- or, and, not, in, select, il faut pouvoir le fermer pour continuer la
- construction de la condition. Pour cela on utilise close(), qui ferme la
- dernière condition non terminale.::
+conversion de type
+++++++++++++++++++
+Il est possible de passer en argument des méthodes des
+objets qui seront directement converti en leur representation String. Les
+types supportés sont BusinessEntity, Wikitty, Date, Calendar, Number, Boolean.
+Pour un objet Wikitty ou un BusinessEntity on utilise l'id.
+
+Fermeture d'un noeud: close
++++++++++++++++++++++++++++
+
+Lorsqu'on ouvre un element a sous noeud comme
+or, and, il faut pouvoir le fermer pour continuer la
+construction de la condition. Pour cela on utilise close(), qui ferme la
+dernière condition non terminale.::
+
WikittyQuery q = new WikittyQueryMaker()
.and().or()....close(/*fermeture du or*/).close(/*fermeture du and*/)
- .not().and().....end(/*fermeture de tous les elements non ferme (and, not)*/);
+ .not().and().....end(/*fermeture de tous les elements non ferme (and)*/);
-* conversion de type: Il est possible de passer en argument des méthodes des
- objets qui seront directement converti en leur representation String. Les
- types supportés sont BusinessEntity, Wikitty, Date, Calendar, Number, Boolean.
- Pour un objet Wikitty ou un BusinessEntity on utilise l'id.
+wikitty
++++++++
-* wikitty: Normalement si l'on passe un wikitty en parametre de méthode
- de WikittyQueryMaker, la condition se fait sur l'id, mais on peut vouloir
- que le Wikitty soit pris comme exemple de condition (query by exemple)
- Dans ce cas, on peut utiliser::
+Normalement si l'on passe un wikitty en parametre de méthode
+de WikittyQueryMaker, la condition se fait sur l'id (voir conversion de type),
+mais on peut vouloir que le Wikitty soit pris comme exemple de
+condition (query by exemple), dans ce cas, on peut utiliser::
WikittyQuery q = new WikittyQueryMaker()
.wikitty(monWikitty).end();
-* Condition: Il est aussi possible d'ajouter toute une condition déjà
- construite pour l'intégrer à une nouvelle. Dans ce cas cette condition est
- prise comme une boîte noire, c'est à dire comme une condition terminale.::
+Condition
++++++++++
+Il est aussi possible d'ajouter toute une condition déjà
+construite pour l'intégrer à une nouvelle. Dans ce cas cette condition est
+prise comme une boîte noire, c'est à dire comme une condition terminale.::
+
WikittyQuery qold = ...
WikittyQuery q = new WikittyQueryMaker()
- .and().condition(qold).eq(...).end();
+ .and().condition(qold.getCondition()).eq(...).end();
Spécificité de WikittyQueryParser
---------------------------------
@@ -498,16 +597,16 @@
Par exemple si vous utilisez souvent une longue requête comme::
WikittyQuery q = WikittyQueryParser.parse(
- "id IN (SELECT WikittyTreeNode.attachment WHERE"
- + " rootNode IN (WikittyTreeNode.name=MyTree)"
- + " AND pathNode IN (WikittyTreeNode.name=MyBranch))");
+ "id={SELECT WikittyTreeNode.attachment"
+ + " WHERE (rootNode={SELECT ID WHERE (WikittyTreeNode.name=MyTree)}"
+ + " AND pathNode={SELECT ID WHERE (WikittyTreeNode.name=MyBranch)})}");
Vous pouvez faire::
WikittyQueryParser parser = new WikittyQueryParser();
- parser.addAlias("MyAlias", "id IN (SELECT WikittyTreeNode.attachment WHERE"
- + " rootNode IN (WikittyTreeNode.name=MyTree) AND"
- + " pathNode IN (WikittyTreeNode.name=MyBranch))");
+ parser.addAlias("MyAlias", "id={SELECT WikittyTreeNode.attachment"
+ + " WHERE (rootNode={SELECT ID WHERE (WikittyTreeNode.name=MyTree)}"
+ + " AND pathNode={SELECT ID WHERE (WikittyTreeNode.name=MyBranch)})}");
Si maintenant votre requête est::
@@ -517,17 +616,17 @@
Elle sera transformée avant d'être parsée en::
WikittyQuery q = parser.parseQuery(
- "MyExt.field=toto AND id IN (SELECT WikittyTreeNode.attachment"
- + " WHERE rootNode IN (WikittyTreeNode.name=MyTree)"
- + " AND pathNode IN (WikittyTreeNode.name=MyBranch))");
+ "MyExt.field=toto AND id={SELECT WikittyTreeNode.attachment"
+ + " WHERE (rootNode={SELECT ID WHERE (WikittyTreeNode.name=MyTree)}"
+ + " AND pathNode={SELECT ID WHERE (WikittyTreeNode.name=MyBranch)})}");
Vous pouvez aussi paramètrer vos alias, par exemple si le nom de l'arbre et de
la branche doivent varier vous pouvez faire::
WikittyQueryParser parser = new WikittyQueryParser();
- parser.addAlias("MyAlias\(.*, .*\)", "id IN (SELECT WikittyTreeNode.attachment"
- + " WHERE rootNode IN (WikittyTreeNode.name=$1)"
- + " AND pathNode IN (WikittyTreeNode.name=$2))");
+ parser.addAlias("MyAlias\(.*, .*\)", "id={SELECT WikittyTreeNode.attachment"
+ + " WHERE (rootNode={SELECT ID WHERE (WikittyTreeNode.name=$1)}"
+ + " AND pathNode={SELECT ID WHERE (WikittyTreeNode.name=$2)})}");
Vous pourrez donc ensuite écrire::
@@ -537,9 +636,9 @@
Elle sera transformée avant d'être parsée en::
WikittyQuery q = parser.parseQuery(
- "MyExt.field=toto AND id IN (SELECT WikittyTreeNode.attachment"
- + " WHERE rootNode IN (WikittyTreeNode.name=OtherTree)"
- + " AND pathNode IN (WikittyTreeNode.name=OtherBranch))");
+ "MyExt.field=toto AND id={SELECT WikittyTreeNode.attachment"
+ + " WHERE (rootNode={SELECT ID WHERE (WikittyTreeNode.name=OtherTree)}"
+ + " AND pathNode={SELECT ID WHERE (WikittyTreeNode.name=OtherBranch)})}");
Recherche avancée
-----------------
@@ -558,7 +657,7 @@
WikittyQuery q = WikittyQueryParser.parse("*.name==poussin");
Dans ce cas la recherche est une recherche fulltext qui peut-être utilisée
-quel que soit le type du champs. Mais si vous souhaitez restraindre la recherche
+quelque soit le type du champs. Mais si vous souhaitez restraindre la recherche
aux champs d'un certain type vous pouvez ajouter le type à la fin.::
Date _1950 = new Date(...);
1
0
r1296 - trunk/wikitty-solr/src/test/java/org/nuiton/wikitty/storage/solr
by bpoussin@users.nuiton.org 07 Jan '12
by bpoussin@users.nuiton.org 07 Jan '12
07 Jan '12
Author: bpoussin
Date: 2012-01-07 13:23:36 +0100 (Sat, 07 Jan 2012)
New Revision: 1296
Url: http://nuiton.org/repositories/revision/wikitty/1296
Log:
Evolution #1883: Change Query API to permit use of Select as Value of Terminal condition
(reste a mettre a jour la doc)
Modified:
trunk/wikitty-solr/src/test/java/org/nuiton/wikitty/storage/solr/WikittySearchEngineSolrForQueryTest.java
Modified: trunk/wikitty-solr/src/test/java/org/nuiton/wikitty/storage/solr/WikittySearchEngineSolrForQueryTest.java
===================================================================
--- trunk/wikitty-solr/src/test/java/org/nuiton/wikitty/storage/solr/WikittySearchEngineSolrForQueryTest.java 2012-01-07 12:23:12 UTC (rev 1295)
+++ trunk/wikitty-solr/src/test/java/org/nuiton/wikitty/storage/solr/WikittySearchEngineSolrForQueryTest.java 2012-01-07 12:23:36 UTC (rev 1296)
@@ -1,10 +1,7 @@
package org.nuiton.wikitty.storage.solr;
-import java.util.Calendar;
import java.util.Collections;
-import java.util.Date;
import java.util.List;
-import org.apache.commons.lang.time.DateUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.junit.Assert;
1
0
r1295 - trunk/wikitty-solr/src/main/java/org/nuiton/wikitty/storage/solr
by bpoussin@users.nuiton.org 07 Jan '12
by bpoussin@users.nuiton.org 07 Jan '12
07 Jan '12
Author: bpoussin
Date: 2012-01-07 13:23:12 +0100 (Sat, 07 Jan 2012)
New Revision: 1295
Url: http://nuiton.org/repositories/revision/wikitty/1295
Log:
Evolution #1883: Change Query API to permit use of Select as Value of Terminal condition
(reste a mettre a jour la doc)
Modified:
trunk/wikitty-solr/src/main/java/org/nuiton/wikitty/storage/solr/WikittyQueryVisitorToSolr.java
Modified: trunk/wikitty-solr/src/main/java/org/nuiton/wikitty/storage/solr/WikittyQueryVisitorToSolr.java
===================================================================
--- trunk/wikitty-solr/src/main/java/org/nuiton/wikitty/storage/solr/WikittyQueryVisitorToSolr.java 2012-01-07 12:04:11 UTC (rev 1294)
+++ trunk/wikitty-solr/src/main/java/org/nuiton/wikitty/storage/solr/WikittyQueryVisitorToSolr.java 2012-01-07 12:23:12 UTC (rev 1295)
@@ -21,7 +21,6 @@
import org.nuiton.wikitty.query.conditions.False;
import org.nuiton.wikitty.query.conditions.Greater;
import org.nuiton.wikitty.query.conditions.GreaterOrEquals;
-import org.nuiton.wikitty.query.conditions.In;
import org.nuiton.wikitty.query.conditions.Keyword;
import org.nuiton.wikitty.query.conditions.Less;
import org.nuiton.wikitty.query.conditions.LessOrEquals;
@@ -216,39 +215,6 @@
// nothing to do
}
-// @Override
-// public boolean visitEnter(In o) {
-// WikittyQuery q = new WikittyQuery(o.getSubCondition()).setLimit(Integer.MAX_VALUE);
-// WikittyQueryResult<String> result = solrServer.findAllByQuery(tx, q);
-//
-// if (log.isDebugEnabled()) {
-// log.debug("In result: " + result);
-// }
-// if (result.size() == 0) {
-// // si on a pas de resultat, on met false
-// solrQuery += "( *:* - *:* )";
-// } else if (result.size() == 1) {
-// // si on a qu'un resultat sans parenthese
-// solrQuery +=
-// element2solr(o.getElement()) + ":" + value2solr(result.peek());
-// } else {
-// solrQuery += element2solr(o.getElement())
-// + ":(";
-// String sep = "";
-// for(String e : result) {
-// solrQuery += sep + value2solr(e);
-// sep = " OR ";
-// }
-// solrQuery += ")";
-// }
-// return false;
-// }
-//
-// @Override
-// public void visitLeave(In o, boolean enterResult) {
-// // do nothing
-// }
-
@Override
public boolean visitEnter(Not o) {
solrQuery += "NOT(";
1
0
r1294 - trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions
by bpoussin@users.nuiton.org 07 Jan '12
by bpoussin@users.nuiton.org 07 Jan '12
07 Jan '12
Author: bpoussin
Date: 2012-01-07 13:04:11 +0100 (Sat, 07 Jan 2012)
New Revision: 1294
Url: http://nuiton.org/repositories/revision/wikitty/1294
Log:
suppression du In qui ne sert plus
Removed:
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/In.java
Deleted: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/In.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/In.java 2012-01-07 12:01:56 UTC (rev 1293)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/In.java 2012-01-07 12:04:11 UTC (rev 1294)
@@ -1,90 +0,0 @@
-/*
- * #%L
- * Wikitty :: api
- *
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2012 CodeLutin, Benjamin Poussin
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Lesser Public License for more details.
- *
- * You should have received a copy of the GNU General Lesser Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/lgpl-3.0.html>.
- * #L%
- */
-package org.nuiton.wikitty.query.conditions;
-
-import java.util.HashSet;
-import java.util.Set;
-import org.apache.commons.lang.ObjectUtils;
-
-/**
- * In is used to join to Wikitty type.
- *
- * ex:
- * <li> {@link WikittyQueryMaker}.in(myfield).eq(otherwikittyfield, "toto")
- * is equivalent to
- * <li> {@link WikittyQueryMaker}.containsOne(myfield, id1, id2, id3)
- * where [id1, id2, id3] is id retrieved by query eq(otherwikittyfield, "toto")
- *
- * @author poussin
- * @version $Revision$
- * @since 3.3
- *
- * Last update: $Date$
- * by : $Author$
- */
-public class In extends ConditionUnary {
-
- private static final long serialVersionUID = 1L;
-
- protected Element element;
-
- public In(Element element) {
- this.element = element;
- }
-
- public In(Element element, Condition restriction) {
- super(restriction);
- this.element = element;
- }
-
- /**
- * Le In autorise le Select
- * @return
- */
- @Override
- public Set<Class<? extends Condition>> rejectedCondition() {
- Set<Class<? extends Condition>> result =
- new HashSet<Class<? extends Condition>>(super.rejectedCondition());
- // le in autorise le Select
- result.remove(Select.class);
- return result;
- }
-
- public Element getElement() {
- return element;
- }
-
- @Override
- boolean equalsDeep(Object other) {
- boolean result = super.equalsDeep(other);
- if (result) {
- In op = (In)other;
- result = ObjectUtils.equals(this.getElement(), op.getElement());
- }
- return result;
- }
-
-
-}
1
0
07 Jan '12
Author: bpoussin
Date: 2012-01-07 13:01:56 +0100 (Sat, 07 Jan 2012)
New Revision: 1293
Url: http://nuiton.org/repositories/revision/wikitty/1293
Log:
Evolution #1883: Change Query API to permit use of Select as Value of Terminal condition
(reste a mettre a jour la doc)
Added:
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/AbstractCondition.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/ConditionValue.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/ConditionValueString.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/ContainerNaryOperator.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/ContainerOperator.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/ContainerUnaryOperator.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/TerminalNaryOperator.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/TerminalUnaryOperator.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/package-info.java
Removed:
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/TerminalBinaryListOperator.java
Modified:
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/entities/WikittyExtension.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/entities/WikittyImpl.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/WikittyQuery.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/WikittyQueryMaker.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/WikittyQueryParser.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/WikittyQueryVisitor.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/WikittyQueryVisitorCopy.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/WikittyQueryVisitorToString.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/And.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Between.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Condition.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/ContainsAll.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/ContainsOne.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Equals.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Greater.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/GreaterOrEquals.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Keyword.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Less.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/LessOrEquals.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Like.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Not.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/NotEquals.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/NotNull.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Null.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Or.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Select.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/TerminalBinaryOperator.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/TerminalOperator.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/TerminalTernaryOperator.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Unlike.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/storage/WikittySearchEngineHelper.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/storage/WikittySearchEngineInMemory.java
trunk/wikitty-api/src/test/java/org/nuiton/wikitty/query/WikittyQueryTest.java
trunk/wikitty-api/src/test/java/org/nuiton/wikitty/storage/WikittySearchEngineInMemoryTest.java
trunk/wikitty-solr/src/main/java/org/nuiton/wikitty/storage/solr/ElementModifier.java
trunk/wikitty-solr/src/main/java/org/nuiton/wikitty/storage/solr/WikittyQueryVisitorToSolr.java
trunk/wikitty-solr/src/main/java/org/nuiton/wikitty/storage/solr/WikittySearchEngineSolr.java
trunk/wikitty-solr/src/test/java/org/nuiton/wikitty/storage/solr/WikittySearchEngineSolrForQueryTest.java
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/entities/WikittyExtension.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/entities/WikittyExtension.java 2012-01-07 10:37:00 UTC (rev 1292)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/entities/WikittyExtension.java 2012-01-07 12:01:56 UTC (rev 1293)
@@ -238,6 +238,12 @@
return result;
}
+ static public boolean isFqField(String fieldName) {
+ int i = fieldName.indexOf(WikittyUtil.FQ_FIELD_NAME_SEPARATOR);
+ boolean result = i > 0;
+ return result;
+ }
+
/**
* Extract extension name from fully qualified field name
*
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/entities/WikittyImpl.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/entities/WikittyImpl.java 2012-01-07 10:37:00 UTC (rev 1292)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/entities/WikittyImpl.java 2012-01-07 12:01:56 UTC (rev 1293)
@@ -50,6 +50,7 @@
import org.nuiton.wikitty.WikittyException;
import org.nuiton.wikitty.WikittyUtil;
import org.nuiton.wikitty.generator.WikittyTransformerUtil;
+import org.nuiton.wikitty.query.conditions.Element;
/**
* Wikitty implementation.
@@ -906,7 +907,15 @@
*/
@Override
public Object getFqField(String fqFieldName) {
- return fieldValue.get(fqFieldName);
+ Object result;
+ if (Element.ID.getValue().equalsIgnoreCase(fqFieldName)) {
+ result = getId();
+ } else if (Element.ID.getValue().equalsIgnoreCase(fqFieldName)) {
+ result = getExtensionNames();
+ } else {
+ result = fieldValue.get(fqFieldName);
+ }
+ return result;
}
/*
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/WikittyQuery.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/WikittyQuery.java 2012-01-07 10:37:00 UTC (rev 1292)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/WikittyQuery.java 2012-01-07 12:01:56 UTC (rev 1293)
@@ -32,6 +32,7 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.nuiton.wikitty.query.conditions.Condition;
+import org.nuiton.wikitty.query.conditions.Element;
import org.nuiton.wikitty.query.conditions.ElementField;
/**
@@ -87,7 +88,7 @@
/** Facet on condition. */
protected List<FacetQuery> facetQuery;
/** Facet on field. */
- protected List<ElementField> facetField;
+ protected List<Element> facetField;
/**
* if true facet is done on extension name. Extention facet can be found
* in {@link WikittyQueryResult#getFacets()} with key
@@ -96,9 +97,9 @@
protected boolean facetExtension = false;
/** Sort ascending on fields. */
- protected List<ElementField> sortAscending;
+ protected List<Element> sortAscending;
/** Sort descending on fields. */
- protected List<ElementField> sortDescending;
+ protected List<Element> sortDescending;
/** create anonymous query */
@@ -257,9 +258,9 @@
return this;
}
- public List<ElementField> getFacetField() {
+ public List<Element> getFacetField() {
if (facetField == null) {
- facetField = new LinkedList<ElementField>();
+ facetField = new LinkedList<Element>();
}
return facetField;
}
@@ -269,12 +270,12 @@
return this;
}
- public WikittyQuery setFacetField(ElementField ... facetField) {
- this.facetField = new LinkedList<ElementField>(Arrays.asList(facetField));
+ public WikittyQuery setFacetField(Element ... facetField) {
+ this.facetField = new LinkedList<Element>(Arrays.asList(facetField));
return this;
}
- public WikittyQuery setFacetField(List<ElementField> facetField) {
+ public WikittyQuery setFacetField(List<Element> facetField) {
this.facetField = facetField;
return this;
}
@@ -294,9 +295,9 @@
*
* @return field names
*/
- public List<ElementField> getSortAscending() {
+ public List<Element> getSortAscending() {
if (sortAscending == null) {
- sortAscending = new LinkedList<ElementField>();
+ sortAscending = new LinkedList<Element>();
}
return sortAscending;
}
@@ -306,12 +307,12 @@
return this;
}
- public WikittyQuery setSortAscending(ElementField ... sortAscending) {
- this.sortAscending = new LinkedList<ElementField>(Arrays.asList(sortAscending));
+ public WikittyQuery setSortAscending(Element ... sortAscending) {
+ this.sortAscending = new LinkedList<Element>(Arrays.asList(sortAscending));
return this;
}
- public WikittyQuery setSortAscending(List<ElementField> sortAscending) {
+ public WikittyQuery setSortAscending(List<Element> sortAscending) {
this.sortAscending = sortAscending;
return this;
}
@@ -321,24 +322,24 @@
*
* @return field names
*/
- public List<ElementField> getSortDescending() {
+ public List<Element> getSortDescending() {
if (sortDescending == null) {
- sortDescending = new LinkedList<ElementField>();
+ sortDescending = new LinkedList<Element>();
}
return sortDescending;
}
- public WikittyQuery addSortDescending(ElementField ... field) {
+ public WikittyQuery addSortDescending(Element ... field) {
getSortDescending().addAll(Arrays.asList(field));
return this;
}
- public WikittyQuery setSortDescending(ElementField ... sortDescending) {
- this.sortDescending = new LinkedList<ElementField>(Arrays.asList(sortDescending));
+ public WikittyQuery setSortDescending(Element ... sortDescending) {
+ this.sortDescending = new LinkedList<Element>(Arrays.asList(sortDescending));
return this;
}
- public WikittyQuery setSortDescending(List<ElementField> sortDescending) {
+ public WikittyQuery setSortDescending(List<Element> sortDescending) {
this.sortDescending = sortDescending;
return this;
}
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/WikittyQueryMaker.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/WikittyQueryMaker.java 2012-01-07 10:37:00 UTC (rev 1292)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/WikittyQueryMaker.java 2012-01-07 12:01:56 UTC (rev 1293)
@@ -24,10 +24,8 @@
*/
package org.nuiton.wikitty.query;
-import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
-import java.util.Collections;
import java.util.Deque;
import java.util.LinkedList;
import java.util.List;
@@ -41,18 +39,17 @@
import org.nuiton.wikitty.query.conditions.Aggregate;
import org.nuiton.wikitty.query.conditions.And;
import org.nuiton.wikitty.query.conditions.Between;
+import org.nuiton.wikitty.query.conditions.ConditionValue;
import org.nuiton.wikitty.query.conditions.Condition;
+import org.nuiton.wikitty.query.conditions.ConditionValueString;
import org.nuiton.wikitty.query.conditions.ContainsAll;
import org.nuiton.wikitty.query.conditions.ContainsOne;
import org.nuiton.wikitty.query.conditions.Element;
-import org.nuiton.wikitty.query.conditions.ElementExtension;
import org.nuiton.wikitty.query.conditions.ElementField;
-import org.nuiton.wikitty.query.conditions.ElementId;
import org.nuiton.wikitty.query.conditions.Equals;
import org.nuiton.wikitty.query.conditions.False;
import org.nuiton.wikitty.query.conditions.Greater;
import org.nuiton.wikitty.query.conditions.GreaterOrEquals;
-import org.nuiton.wikitty.query.conditions.In;
import org.nuiton.wikitty.query.conditions.Keyword;
import org.nuiton.wikitty.query.conditions.Less;
import org.nuiton.wikitty.query.conditions.LessOrEquals;
@@ -145,41 +142,58 @@
return openStack;
}
- /** Ajout une condition terminal */
+ /**
+ * Ajout une condition
+ *
+ */
protected void addCondition(Condition c) {
+ addCondition(c, false);
+ }
+ /**
+ * Ajout une condition. Si terminal est true, alors quelque soit le type de
+ * cette condition la stack restera inchange apres l'ajout. Cela permet
+ * d'ajouter des conditions non terminale comme des terminales
+ */
+ protected void addCondition(Condition c, boolean terminal) {
Condition parent = getOpenStack().peek();
-
- if (parent == null) {
- // il n'y a rien dans la stack donc rien dans condition, il faut
- // mettre cette condition dedans
- condition = c;
- // on ne met les conditions terminal dans le stack, que lorsque
- // c'est la premiere (cela permet d'indiquer a l'utilisateur
+ if (!terminal) {
+ // on ne met les conditions toujours dans le stack (meme les terminales)
+ // si c'est la premiere cela permet d'indiquer a l'utilisateur
// qu'il faut commencer par un or, and, not car une exception sera
- // levee
+ // levee car non supprimer par le while dans lequel on ne passe pas
+ // car on passe dans le if et non le else (parent == null)
getOpenStack().push(c);
- } else {
- parent.addCondition(c);
}
- }
- /**
- * Ajout d'une condition non terminal (or, and, not, in)
- * @param c
- */
- protected void addOnStack(Condition c) {
- Condition parent = getOpenStack().peek();
- getOpenStack().push(c);
-
if (parent == null) {
// il n'y a rien dans la stack donc rien dans condition, il faut
// mettre cette condition dedans
condition = c;
+ // et on ne depile pas le stack
} else {
+ // se add peut lever une exception si parent n'accepte pas cet enfant
parent.addCondition(c);
+ // on depile toutes les conditions qui n'ont plus besoin de renseignement
+ // sauf si l'ajout a ete force en terminal
+ if (!terminal) {
+ closeIfNecessary();
+ }
}
}
+ protected void closeIfNecessary() {
+ // on depile toutes les conditions qui n'ont plus besoin de renseignement
+ while (getOpenStack().peek() != null
+ && !getOpenStack().peek().waitCondition()) {
+ getOpenStack().poll();
+ }
+ if (getOpenStack().size() == 0) {
+ // we just close last open condition, set stack to null, to prevent
+ // next condition add that is mistake
+ openStack = null;
+ }
+ }
+
///////////////////////////////////////////////////////////////////////////
//
// Q U E R Y F L O W C R E A T I O N
@@ -188,27 +202,23 @@
// eq(Wikitty|Date|Number|Boolean|String)
- /**
- * Convertie une liste d'objet en une liste de String representant
- * les objets
- *
- * @param l
- * @return
- */
- static public List<String> convertToQueryStringList(Collection l) {
- List<String> result;
- if (l == null) {
- result = Collections.emptyList();
+ static protected ConditionValue convertToConditionValue(Object o) {
+ ConditionValue result;
+ if (o instanceof ConditionValue) {
+ result = (ConditionValue)o;
} else {
- result = new ArrayList<String>(l.size());
- for (Object o : l) {
- String s = WikittyUtil.toString(o);
- result.add(s);
- }
+ String s = WikittyUtil.toString(o);
+ result = new ConditionValueString(s);
}
return result;
}
+ public WikittyQueryMaker value(Object value) {
+ ConditionValue v = convertToConditionValue(value);
+ addCondition(v);
+ return this;
+ }
+
/**
* Ajoute une condition, cette condition est prise comme une condition terminal
* Si l'on veut continuer a construire la requete, il faut avoir ajouter
@@ -217,7 +227,7 @@
* @return {@code this} with the {@code c} restriction added.
*/
public WikittyQueryMaker condition(Condition c) {
- addCondition(c);
+ addCondition(c, true);
return this;
}
@@ -265,6 +275,21 @@
}
/**
+ * @see {@link ContainsAll}
+ */
+ public WikittyQueryMaker containsAll(Element element) {
+ addCondition(new ContainsAll(element));
+ return this;
+ }
+
+ /**
+ * @see {@link ContainsAll}
+ */
+ public WikittyQueryMaker containsAll(String element) {
+ return containsAll(new ElementField(element));
+ }
+
+ /**
* Contains.
*
* Search on lists (multivalued fields) that a field contains all the values
@@ -273,6 +298,9 @@
* Ex : The field with value [toto,titi,tutu] contains [titi,tutu] but not
* [titi,tutu,tata]
*
+ * Force l'ajout du containsAll en terminal (il n'y a pas besoin de faire
+ * de {@link #close()}
+ *
* @param element the element on which the restriction is put
* @param values the values to search in the element
* @return {@code this} with the {@code contains} restriction added.
@@ -283,15 +311,17 @@
}
/**
+ * Force l'ajout du containsAll en terminal (il n'y a pas besoin de faire
+ * de {@link #close()}
*
- * @param element
- * @param values
- * @return
* @see {@link ContainsAll}
*/
public <E> WikittyQueryMaker containsAll(Element element, Collection<E> values) {
- addCondition(new ContainsAll(element,
- convertToQueryStringList(values)));
+ containsAll(element);
+ for (E e : values) {
+ value(e);
+ }
+ close();
return this;
}
@@ -304,6 +334,9 @@
*
* Ps : Use wildcards if you search for substrings.
*
+ * Force l'ajout du containsAll en terminal (il n'y a pas besoin de faire
+ * de {@link #close()}
+ *
* @param element the element on which the restriction is put
* @param value1 first value to search in the field
* @param values list of values to search in the field
@@ -318,11 +351,29 @@
}
/**
+ * @see {@link ContainsOne}
+ */
+ public WikittyQueryMaker containsOne(Element element) {
+ addCondition(new ContainsOne(element));
+ return this;
+ }
+
+ /**
+ * @see {@link ContainsOne}
+ */
+ public WikittyQueryMaker containsOne(String element) {
+ return containsOne(new ElementField(element));
+ }
+
+ /**
* Search if a field is contained in the list of values in parameter
*
* Ex : The field with value titi is in [titi,tutu] but not in
* [tutu,tata]
*
+ * Force l'ajout du containsAll en terminal (il n'y a pas besoin de faire
+ * de {@link #close()}
+ *
* @param element the element on which the restriction is put
* @param values list of values the field must be in
* @return {@code this} with the {@code in} restriction added.
@@ -333,15 +384,17 @@
}
/**
+ * Force l'ajout du containsAll en terminal (il n'y a pas besoin de faire
+ * de {@link #close()}
*
- * @param element
- * @param values
- * @return
* @see {@link ContainsOne}
*/
public <E> WikittyQueryMaker containsOne(Element element, Collection<E> values) {
- addCondition(new ContainsOne(element,
- convertToQueryStringList(values)));
+ containsOne(element);
+ for (E e : values) {
+ value(e);
+ }
+ close();
return this;
}
@@ -353,6 +406,9 @@
*
* Ps : Use wildcards in the values if you search for substrings.
*
+ * Force l'ajout du containsAll en terminal (il n'y a pas besoin de faire
+ * de {@link #close()}
+ *
* @param element the element on which the restriction is put
* @param value1 first value the field must be in
* @param values list of values the field must be in
@@ -367,6 +423,14 @@
}
/**
+ * @see {@link Equals}
+ */
+ public WikittyQueryMaker eq(Element element) {
+ addCondition(new Equals(element));
+ return this;
+ }
+
+ /**
* Equals.
*
* Restrict search so that the field value equals the parameter.
@@ -383,14 +447,10 @@
}
/**
- *
- * @param element
- * @param value
- * @return
* @see {@link Equals}
*/
public WikittyQueryMaker eq(Element element, Object value) {
- String s = WikittyUtil.toString(value);
+ ConditionValue s = convertToConditionValue(value);
addCondition(new Equals(element, s));
return this;
}
@@ -445,6 +505,14 @@
}
/**
+ * @see {@link NotEquals}
+ */
+ public WikittyQueryMaker ne(Element element) {
+ addCondition(new NotEquals(element));
+ return this;
+ }
+
+ /**
* Not equals.
*
* Restrict search to elements that are not equals to the value given in
@@ -463,7 +531,7 @@
* @see {@link NotEquals}
*/
public WikittyQueryMaker ne(Element element, Object value) {
- String s = WikittyUtil.toString(value);
+ ConditionValue s = convertToConditionValue(value);
addCondition(new NotEquals(element, s));
return this;
}
@@ -496,6 +564,14 @@
}
/**
+ * @see {@link Greater}
+ */
+ public WikittyQueryMaker gt(Element element) {
+ addCondition(new Greater(element));
+ return this;
+ }
+
+ /**
* Greater than.
*
* Search if an element value is greater than the parameter.
@@ -513,12 +589,20 @@
* @see {@link Greater}
*/
public WikittyQueryMaker gt(Element element, Object value) {
- String s = WikittyUtil.toString(value);
+ ConditionValue s = convertToConditionValue(value);
addCondition(new Greater(element, s));
return this;
}
/**
+ * @see {@link GreaterOrEquals}
+ */
+ public WikittyQueryMaker ge(Element element) {
+ addCondition(new GreaterOrEquals(element));
+ return this;
+ }
+
+ /**
* Greater than or equals.
*
* Search if an element value is greater than or equals to the parameter.
@@ -536,12 +620,20 @@
* @see {@link GreaterOrEquals}
*/
public WikittyQueryMaker ge(Element element, Object value) {
- String s = WikittyUtil.toString(value);
+ ConditionValue s = convertToConditionValue(value);
addCondition(new GreaterOrEquals(element, s));
return this;
}
/**
+ * @see {@link Less}
+ */
+ public WikittyQueryMaker lt(Element element) {
+ addCondition(new Less(element));
+ return this;
+ }
+
+ /**
* Less than.
*
* Search if an element value is less than the parameter.
@@ -559,12 +651,20 @@
* @see {@link Less}
*/
public WikittyQueryMaker lt(Element element, Object value) {
- String s = WikittyUtil.toString(value);
+ ConditionValue s = convertToConditionValue(value);
addCondition(new Less(element, s));
return this;
}
/**
+ * @see {@link LessOrEquals}
+ */
+ public WikittyQueryMaker le(Element element) {
+ addCondition(new LessOrEquals(element));
+ return this;
+ }
+
+ /**
* Less than or equals.
*
* Search if an element value is less than or equals to the parameter.
@@ -582,12 +682,20 @@
* @see {@link LessOrEquals}
*/
public WikittyQueryMaker le(Element element, Object value) {
- String s = WikittyUtil.toString(value);
+ ConditionValue s = convertToConditionValue(value);
addCondition(new LessOrEquals(element, s));
return this;
}
/**
+ * @see {@link Between}
+ */
+ public WikittyQueryMaker bw(Element element) {
+ addCondition(new Between(element));
+ return this;
+ }
+
+ /**
* Between.
*
* Restrict search so that the element value is between the lower and upper
@@ -607,8 +715,8 @@
* @see {@link Between}
*/
public WikittyQueryMaker bw(Element element, Object lowerValue, Object upperValue) {
- String min = WikittyUtil.toString(lowerValue);
- String max = WikittyUtil.toString(upperValue);
+ ConditionValue min = convertToConditionValue(lowerValue);
+ ConditionValue max = convertToConditionValue(upperValue);
addCondition(new Between(element, min, max));
return this;
}
@@ -623,16 +731,15 @@
* @return {@code this} with the {@code sw} restriction added.
* @see {@link Equals}
*/
- public WikittyQueryMaker sw(String fqfield, Object value) {
+ public WikittyQueryMaker sw(String fqfield, String value) {
return sw(new ElementField(fqfield), value);
}
/**
* @see {@link Equals}
*/
- public WikittyQueryMaker sw(Element element, Object value) {
- String s = WikittyUtil.toString(value) + "*";
- addCondition(new Equals(element, s));
+ public WikittyQueryMaker sw(Element element, String value) {
+ addCondition(new Equals(element, value + "*"));
return this;
}
@@ -646,16 +753,15 @@
* @return {@code this} with the {@code nsw} restriction added.
* @see {@link NotEquals}
*/
- public WikittyQueryMaker notsw(String fqfield, Object value) {
+ public WikittyQueryMaker notsw(String fqfield, String value) {
return notsw(new ElementField(fqfield), value);
}
/**
* @see {@link NotEquals}
*/
- public WikittyQueryMaker notsw(Element element, Object value) {
- String s = WikittyUtil.toString(value) + "*";
- addCondition(new NotEquals(element, s));
+ public WikittyQueryMaker notsw(Element element, String value) {
+ addCondition(new NotEquals(element, value + "*"));
return this;
}
@@ -677,8 +783,7 @@
* @see {@link Equals}
*/
public WikittyQueryMaker ew(Element element, Object value) {
- String s = "*" + WikittyUtil.toString(value);
- addCondition(new Equals(element, s));
+ addCondition(new Equals(element, "*" + value));
return this;
}
@@ -700,8 +805,7 @@
* @see {@link NotEquals}
*/
public WikittyQueryMaker notew(Element element, Object value) {
- String s = "*" + WikittyUtil.toString(value);
- addCondition(new NotEquals(element, s));
+ addCondition(new NotEquals(element, "*" + value));
return this;
}
@@ -715,9 +819,24 @@
* @return {@code this} with the {@code keyword} restriction added.
* @see {@link Keyword}
*/
+ public WikittyQueryMaker keyword() {
+ addCondition(new Keyword());
+ return this;
+ }
+
+ /**
+ * Keyword.
+ *
+ * Search if the value in parameter is present in any field of any
+ * extension.
+ *
+ * @param value the value to find.
+ * @return {@code this} with the {@code keyword} restriction added.
+ * @see {@link Keyword}
+ */
public WikittyQueryMaker keyword(Object value) {
- String s = WikittyUtil.toString(value);
- addCondition(new Keyword(s));
+ ConditionValue s = convertToConditionValue(value);
+ addCondition(new Keyword().addCondition(s));
return this;
}
@@ -790,6 +909,14 @@
}
/**
+ * @see {@link Like}
+ */
+ public WikittyQueryMaker like(Element element) {
+ addCondition(new Like(element));
+ return this;
+ }
+
+ /**
* Like.
*
* Check that a string is present in a field. For example "tric" is present
@@ -809,13 +936,21 @@
* @see {@link Like}
*/
public WikittyQueryMaker like(Element element, Object value) {
- String s = WikittyUtil.toString(value);
+ ConditionValue s = convertToConditionValue(value);
Like c = new Like(element, s);
addCondition(c);
return this;
}
/**
+ * @see {@link Unlike}
+ */
+ public WikittyQueryMaker unlike(Element element) {
+ addCondition(new Unlike(element));
+ return this;
+ }
+
+ /**
* Unlike.
*
* @param fqfield the element on which the restriction is put
@@ -824,15 +959,15 @@
* @return {@code this}
* @see {@link Unlike}
*/
- public WikittyQueryMaker unlike(String fqfield, String value) {
+ public WikittyQueryMaker unlike(String fqfield, Object value) {
return unlike(new ElementField(fqfield), value);
}
/**
* @see {@link Unlike}
*/
- public WikittyQueryMaker unlike(Element element, String value) {
- String s = WikittyUtil.toString(value);
+ public WikittyQueryMaker unlike(Element element, Object value) {
+ ConditionValue s = convertToConditionValue(value);
Unlike c = new Unlike(element, s);
addCondition(c);
return this;
@@ -846,7 +981,7 @@
*/
public WikittyQueryMaker not() {
Condition child = new Not();
- addOnStack(child);
+ addCondition(child);
return this;
}
@@ -858,7 +993,7 @@
*/
public WikittyQueryMaker or() {
Condition child = new Or();
- addOnStack(child);
+ addCondition(child);
return this;
}
@@ -870,7 +1005,7 @@
*/
public WikittyQueryMaker and() {
Condition child = new And();
- addOnStack(child);
+ addCondition(child);
return this;
}
@@ -898,51 +1033,48 @@
/*
* @see {@link Select}
*/
- public WikittyQueryMaker select(ElementField element) {
+ public WikittyQueryMaker select(Element element) {
return select(element, null);
}
/*
* @see {@link Select}
*/
- public WikittyQueryMaker select(ElementField element, Aggregate aggregate) {
+ public WikittyQueryMaker select(Element element, Aggregate aggregate) {
Condition child = new Select(element, aggregate);
- addOnStack(child);
+ addCondition(child);
return this;
}
+// /**
+// * Add {@link In} to allow search on association (like sql join).
+// * To close this sub query you must used {@link #close()}
+// * @param foreignFieldName association fieldName
+// * @return {@code this}
+// * @see {@link In}
+// */
+// public WikittyQueryMaker in(String foreignFieldName) {
+// return in(new ElementField(foreignFieldName));
+// }
+//
+// /*
+// * @see {@link In}
+// */
+// public WikittyQueryMaker in(Element element) {
+// Condition child = new In(element);
+// addCondition(child);
+// return this;
+// }
+//
/**
- * Add {@link In} to allow search on association (like sql join).
- * To close this sub query you must used {@link #close()}
- * @param foreignFieldName association fieldName
- * @return {@code this}
- * @see {@link In}
- */
- public WikittyQueryMaker in(String foreignFieldName) {
- return in(new ElementField(foreignFieldName));
- }
-
- /*
- * @see {@link In}
- */
- public WikittyQueryMaker in(Element element) {
- Condition child = new In(element);
- addOnStack(child);
- return this;
- }
-
- /**
* Close last non terminal condition (or, and, not, in).
* <li>ex: WikittyQueryMaker().not().rTrue().close().and().rTrue().rFalse().close().or().rTrue().rFalse().close();
* @return
*/
public WikittyQueryMaker close() {
- getOpenStack().pop();
- if (getOpenStack().size() == 0) {
- // we just close last open condition, set stack to null, to prevent
- // next condition add that is mistake
- openStack = null;
- }
+ getOpenStack().pop(); // on en ferme 1 obligatoirement
+ // on cherche a en fermer plus
+ closeIfNecessary();
return this;
}
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/WikittyQueryParser.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/WikittyQueryParser.java 2012-01-07 10:37:00 UTC (rev 1292)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/WikittyQueryParser.java 2012-01-07 12:01:56 UTC (rev 1293)
@@ -35,6 +35,8 @@
import org.nuiton.wikitty.query.conditions.And;
import org.nuiton.wikitty.query.conditions.Between;
import org.nuiton.wikitty.query.conditions.Condition;
+import org.nuiton.wikitty.query.conditions.ConditionValue;
+import org.nuiton.wikitty.query.conditions.ConditionValueString;
import org.nuiton.wikitty.query.conditions.ContainsAll;
import org.nuiton.wikitty.query.conditions.ContainsOne;
import org.nuiton.wikitty.query.conditions.Element;
@@ -50,19 +52,20 @@
import org.nuiton.wikitty.query.conditions.Not;
import org.nuiton.wikitty.query.conditions.NotEquals;
import org.nuiton.wikitty.query.conditions.Or;
-import org.nuiton.wikitty.query.conditions.In;
import org.nuiton.wikitty.query.conditions.NotNull;
import org.nuiton.wikitty.query.conditions.Null;
import org.nuiton.wikitty.query.conditions.Select;
import org.nuiton.wikitty.query.conditions.True;
import org.nuiton.wikitty.query.conditions.Unlike;
import org.parboiled.BaseParser;
+import org.parboiled.Context;
import org.parboiled.Parboiled;
import org.parboiled.Rule;
import org.parboiled.annotations.BuildParseTree;
import org.parboiled.errors.ErrorUtils;
import org.parboiled.parserunners.RecoveringParseRunner;
import org.parboiled.parserunners.ReportingParseRunner;
+import org.parboiled.parserunners.TracingParseRunner;
import org.parboiled.support.ParseTreeUtils;
import org.parboiled.support.ParsingResult;
import org.parboiled.support.Var;
@@ -145,6 +148,11 @@
public WikittyQueryParser() {
}
+ boolean debug(String text, Context context) {
+ System.out.println("DEBUG("+context.getCurrentIndex()+"):" + text + " nodes:" +context.getSubNodes());
+ return true;
+ }
+
public Map<String, String> getAlias() {
return alias;
}
@@ -203,8 +211,9 @@
WikittyQueryParser parser = Parboiled.createParser(WikittyQueryParser.class);
-// ParsingResult<?> result = new RecoveringParseRunner(parser.start()).run(query);
ParsingResult<?> result = new ReportingParseRunner(parser.start()).run(queryString);
+// ParsingResult<?> result = new TracingParseRunner(parser.start()).run(queryString);
+// ParsingResult<?> result = new RecoveringParseRunner(parser.start()).run(queryString);
if (result.hasErrors() || !result.matched) {
System.out.println("\nParse Errors:\n" + ErrorUtils.printParseErrors(result));
@@ -295,7 +304,7 @@
not(), isNull(), isNotNull(), select(),
eq(), neq(), less(), lesseq(), greater(), greatereq(), like(), notlike(),
between(), containsAll(), containsOne(),
- in(), rTrue(), rFalse(), keyword()
+ rTrue(), rFalse(), keyword()
);
}
@@ -328,7 +337,7 @@
*/
Rule eq() {
return Sequence(field(), push(match()), space(), EQUALS, space(), value(),
- push(new Equals(toElement(pop().toString()), removeQuote(match()))));
+ push(new Equals(toElement(pop(1).toString()), (ConditionValue)pop())));
}
/**
@@ -337,61 +346,57 @@
*/
Rule neq() {
return Sequence(field(), push(match()), space(), NOT_EQUALS, space(), value(),
- push(new NotEquals(toElement(pop().toString()), removeQuote(match()))));
+ push(new NotEquals(toElement(pop(1).toString()), (ConditionValue)pop())));
}
Rule less() {
return Sequence(field(), push(match()), space(), LESS, space(), value(),
- push(new Less(toElement(pop().toString()), removeQuote(match()))));
+ push(new Less(toElement(pop(1).toString()), (ConditionValue)pop())));
}
Rule lesseq() {
return Sequence(field(), push(match()), space(), LESS_OR_EQUALS, space(), value(),
- push(new LessOrEquals(toElement(pop().toString()), removeQuote(match()))));
+ push(new LessOrEquals(toElement(pop(1).toString()), (ConditionValue)pop())));
}
Rule greater() {
return Sequence(field(), push(match()), space(), GREATER, space(), value(),
- push(new Greater(toElement(pop().toString()), removeQuote(match()))));
+ push(new Greater(toElement(pop(1).toString()), (ConditionValue)pop())));
}
Rule greatereq() {
return Sequence(field(), push(match()), space(), GREATER_OR_EQUALS, space(), value(),
- push(new GreaterOrEquals(toElement(pop().toString()), removeQuote(match()))));
+ push(new GreaterOrEquals(toElement(pop(1).toString()), (ConditionValue)pop())));
}
Rule like() {
return Sequence(field(), push(match()), space(), icLIKE, space(), value(),
- push(new Like(toElement(pop().toString()), removeQuote(match()))));
+ push(new Like(toElement(pop(1).toString()), (ConditionValue)pop())));
}
Rule notlike() {
return Sequence(field(), push(match()), space(), icUNLIKE, space(), value(),
- push(new Unlike(toElement(pop().toString()), removeQuote(match()))));
+ push(new Unlike(toElement(pop(1).toString()), (ConditionValue)pop())));
}
Rule between() {
return Sequence(field(), push(match()), space(), EQUALS, space(), SQUARE_BRACKET_OPEN, space(),
- value(), push(removeQuote(match())), space(), icTO, space(),
- value(), push(removeQuote(match())), space(), SQUARE_BRACKET_CLOSE,
- push(new Between(toElement(pop(2).toString()), pop(1).toString(), pop().toString())));
+ value(), space(), icTO, space(),
+ value(), space(), SQUARE_BRACKET_CLOSE,
+ push(new Between(toElement(pop(2).toString()), (ConditionValue)pop(1), (ConditionValue)pop())));
}
Rule containsAll() {
- Var<List<String>> elems = new Var<List<String>>(new LinkedList<String>());
+ Var<List<ConditionValue>> elems = new Var<List<ConditionValue>>(new LinkedList<ConditionValue>());
return Sequence(field(), push(match()), space(), EQUALS, space(), SQUARE_BRACKET_OPEN, space(),
- value(), elems.get().add(removeQuote(match())), space(), ZeroOrMore(COMMA, space(),
- value(), elems.get().add(removeQuote(match())), space()), SQUARE_BRACKET_CLOSE,
+ value(), elems.get().add((ConditionValue)pop()), space(), ZeroOrMore(COMMA, space(),
+ value(), elems.get().add((ConditionValue)pop()), space()), SQUARE_BRACKET_CLOSE,
push(new ContainsAll(toElement(pop().toString()), elems.get())));
}
Rule containsOne() {
- Var<List<String>> elems = new Var<List<String>>(new LinkedList<String>());
+ Var<List<ConditionValue>> elems = new Var<List<ConditionValue>>(new LinkedList<ConditionValue>());
return Sequence(field(), push(match()), space(), EQUALS, space(), CURLY_BRACKET_OPEN, space(),
- value(), elems.get().add(removeQuote(match())), space(), ZeroOrMore(COMMA, space(),
- value(), elems.get().add(removeQuote(match())), space()), CURLY_BRACKET_CLOSE,
+ value(), elems.get().add((ConditionValue)pop()), space(), ZeroOrMore(COMMA, space(),
+ value(), elems.get().add((ConditionValue)pop()), space()), CURLY_BRACKET_CLOSE,
push(new ContainsOne(toElement(pop().toString()), elems.get())));
}
- Rule in() {
- return Sequence(field(), push(match()), space(), icIN, space(), term(),
- push(new In(toElement(pop(1).toString()), (Condition)pop())));
- }
Rule select() {
Var<Aggregate> aggregate = new Var<Aggregate>();
return Sequence(icSELECT, space(), Optional(aggregate(aggregate)), space(), field(), push(match()), space(), icWHERE, space(), term(),
- push(new Select(new ElementField(pop(1).toString()), aggregate.get(), (Condition)pop())));
+ push(new Select(toElement(pop(1).toString()), aggregate.get(), (Condition)pop())));
}
Rule aggregate(Var<Aggregate> aggregate) {
return FirstOf(avg(aggregate), count(aggregate), max(aggregate), min(aggregate), sum(aggregate));
@@ -418,7 +423,7 @@
}
Rule keyword() {
- return Sequence(value(), push(new Keyword(removeQuote(match()))));
+ return Sequence(value(), push(new Keyword().addCondition((ConditionValue)pop())));
}
Rule field() {
@@ -434,9 +439,14 @@
}
Rule value() {
- return FirstOf(field(), StringLiteral());
+ return FirstOf(select(), valueText());
}
+ Rule valueText() {
+ return Sequence(FirstOf(field(), StringLiteral()),
+ push(new ConditionValueString(removeQuote(match()))));
+ }
+
Rule StringLiteral() {
return Sequence(
LITERAL_OPEN,
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/WikittyQueryVisitor.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/WikittyQueryVisitor.java 2012-01-07 10:37:00 UTC (rev 1292)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/WikittyQueryVisitor.java 2012-01-07 12:01:56 UTC (rev 1293)
@@ -25,12 +25,13 @@
package org.nuiton.wikitty.query;
import java.lang.reflect.Method;
+import org.apache.commons.lang.ClassUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.nuiton.wikitty.WikittyException;
import org.nuiton.wikitty.query.conditions.And;
-import org.nuiton.wikitty.query.conditions.In;
import org.nuiton.wikitty.query.conditions.Between;
+import org.nuiton.wikitty.query.conditions.ConditionValueString;
import org.nuiton.wikitty.query.conditions.ContainsAll;
import org.nuiton.wikitty.query.conditions.ContainsOne;
import org.nuiton.wikitty.query.conditions.Equals;
@@ -137,25 +138,11 @@
* @param o
* @return True if we want visit sub-element, otherwize false
*/
- abstract public boolean visitEnter(In o);
/**
- * Leave method is alway called, but evaluation of enter is passed in
- * arguement
- *
- * @param o
- * @param enterOrMiddleResult result returned by visitEnter method
- */
- abstract public void visitLeave(In o, boolean enterOrMiddleResult);
- /**
* True if we want visit sub-element, otherwize false
* @param o
* @return True if we want visit sub-element, otherwize false
*/
- /**
- * True if we want visit sub-element, otherwize false
- * @param o
- * @return True if we want visit sub-element, otherwize false
- */
abstract public boolean visitEnter(Select o);
/**
* Leave method is alway called, but evaluation of enter is passed in
@@ -180,39 +167,41 @@
*/
abstract public void visitLeave(Not o, boolean enterOrMiddleResult);
- abstract public void visit(Between o);
- /**
- * Can be used for id, extension or field
- * @param o
- */
- abstract public void visit(ContainsAll o);
- /**
- * Can be used for id, extension or field
- * @param o
- */
- abstract public void visit(ContainsOne o);
- /**
- * Can be used for id, extension or field
- * @param o
- */
- abstract public void visit(Equals o);
- /**
- * Can be used for id, extension or field
- * @param o
- */
- abstract public void visit(NotEquals o);
+ abstract public boolean visitEnter(Between o);
+ abstract public boolean visitMiddle(Between o);
+ abstract public void visitLeave(Between o, boolean enterOrMiddleResult);
+ abstract public boolean visitEnter(ContainsAll o);
+ abstract public boolean visitMiddle(ContainsAll o);
+ abstract public void visitLeave(ContainsAll o, boolean enterOrMiddleResult);
+ abstract public boolean visitEnter(ContainsOne o);
+ abstract public boolean visitMiddle(ContainsOne o);
+ abstract public void visitLeave(ContainsOne o, boolean enterOrMiddleResult);
+ abstract public boolean visitEnter(Equals o);
+ abstract public void visitLeave(Equals o, boolean enterOrMiddleResult);
+ abstract public boolean visitEnter(NotEquals o);
+ abstract public void visitLeave(NotEquals o, boolean enterOrMiddleResult);
+ abstract public boolean visitEnter(Greater o);
+ abstract public void visitLeave(Greater o, boolean enterOrMiddleResult);
+ abstract public boolean visitEnter(GreaterOrEquals o);
+ abstract public void visitLeave(GreaterOrEquals o, boolean enterOrMiddleResult);
+ abstract public boolean visitEnter(Keyword o);
+ abstract public void visitLeave(Keyword o, boolean enterOrMiddleResult);
+ abstract public boolean visitEnter(Less o);
+ abstract public void visitLeave(Less o, boolean enterOrMiddleResult);
+ abstract public boolean visitEnter(LessOrEquals o);
+ abstract public void visitLeave(LessOrEquals o, boolean enterOrMiddleResult);
+ abstract public boolean visitEnter(Like o);
+ abstract public void visitLeave(Like o, boolean enterOrMiddleResult);
+ abstract public boolean visitEnter(Unlike o);
+ abstract public void visitLeave(Unlike o, boolean enterOrMiddleResult);
+
+ abstract public void visit(Null o);
+ abstract public void visit(NotNull o);
abstract public void visit(False o);
abstract public void visit(True o);
- abstract public void visit(Greater o);
- abstract public void visit(GreaterOrEquals o);
- abstract public void visit(Keyword o);
- abstract public void visit(Less o);
- abstract public void visit(LessOrEquals o);
- abstract public void visit(Like o);
- abstract public void visit(Unlike o);
- abstract public void visit(Null o);
- abstract public void visit(NotNull o);
+ abstract public void visit(ConditionValueString o);
+
abstract public void defaultVisit(Object o);
/**
* True if we want visit sub-element, otherwize false
@@ -237,6 +226,10 @@
abstract public void defaultVisitLeave(Object o, boolean enterOrMiddleResult);
public void visit(Object object) {
+ if (log.isDebugEnabled()) {
+ log.debug(String.format("Visit '%s'",
+ ClassUtils.getShortCanonicalName(object, "null")));
+ }
try {
Method downPolymorphic = this.getClass().getMethod("visit",
new Class[] { object.getClass() });
@@ -259,6 +252,10 @@
}
}
public boolean visitEnter(Object object) {
+ if (log.isDebugEnabled()) {
+ log.debug(String.format("VisitEnter '%s'",
+ ClassUtils.getShortCanonicalName(object, "null")));
+ }
boolean result;
try {
Method downPolymorphic = this.getClass().getMethod("visitEnter",
@@ -284,6 +281,10 @@
}
public boolean visitMiddle(Object object) {
+ if (log.isDebugEnabled()) {
+ log.debug(String.format("VisitMiddle '%s'",
+ ClassUtils.getShortCanonicalName(object, "null")));
+ }
boolean result;
try {
Method downPolymorphic = this.getClass().getMethod("visitMiddle",
@@ -309,6 +310,10 @@
}
public void visitLeave(Object object, boolean enterOrMiddleResult) {
+ if (log.isDebugEnabled()) {
+ log.debug(String.format("VisitLeave '%s'",
+ ClassUtils.getShortCanonicalName(object, "null")));
+ }
try {
Method downPolymorphic = this.getClass().getMethod("visitLeave",
new Class[] { object.getClass(), Boolean.TYPE });
@@ -326,7 +331,7 @@
}
}
catch (NoSuchMethodException eee) {
- log.debug("Can't call specific visit method, call defaultVisitLeave", eee);
+ log.error("Can't call specific visit method, call defaultVisitLeave", eee);
this.defaultVisitLeave(object, enterOrMiddleResult);
}
}
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/WikittyQueryVisitorCopy.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/WikittyQueryVisitorCopy.java 2012-01-07 10:37:00 UTC (rev 1292)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/WikittyQueryVisitorCopy.java 2012-01-07 12:01:56 UTC (rev 1293)
@@ -30,14 +30,14 @@
import org.nuiton.wikitty.query.conditions.And;
import org.nuiton.wikitty.query.conditions.Between;
import org.nuiton.wikitty.query.conditions.Condition;
+import org.nuiton.wikitty.query.conditions.ConditionValueString;
import org.nuiton.wikitty.query.conditions.ContainsAll;
import org.nuiton.wikitty.query.conditions.ContainsOne;
-import org.nuiton.wikitty.query.conditions.ElementField;
+import org.nuiton.wikitty.query.conditions.Element;
import org.nuiton.wikitty.query.conditions.Equals;
import org.nuiton.wikitty.query.conditions.False;
import org.nuiton.wikitty.query.conditions.Greater;
import org.nuiton.wikitty.query.conditions.GreaterOrEquals;
-import org.nuiton.wikitty.query.conditions.In;
import org.nuiton.wikitty.query.conditions.Keyword;
import org.nuiton.wikitty.query.conditions.Less;
import org.nuiton.wikitty.query.conditions.LessOrEquals;
@@ -90,15 +90,15 @@
public boolean visitEnter(WikittyQuery o) {
WikittyQuery q = getQuery();
q.setFacetExtension(q.isFacetExtension());
- q.setFacetField(new ArrayList<ElementField>(o.getFacetField()));
+ q.setFacetField(new ArrayList<Element>(o.getFacetField()));
q.setFacetLimit(o.getFacetLimit());
q.setFacetMinCount(o.getFacetMinCount());
q.setFirst(o.getFirst());
q.setLimit(o.getLimit());
q.setFacetSort(o.getFacetSort());
q.setName(o.getName());
- q.setSortAscending(new ArrayList<ElementField>(o.getSortAscending()));
- q.setSortDescending(new ArrayList<ElementField>(o.getSortDescending()));
+ q.setSortAscending(new ArrayList<Element>(o.getSortAscending()));
+ q.setSortDescending(new ArrayList<Element>(o.getSortDescending()));
for (FacetQuery c : o.getFacetQuery()) {
WikittyQueryVisitorCopy v = new WikittyQueryVisitorCopy();
@@ -114,6 +114,12 @@
}
@Override
+ public void visit(ConditionValueString o) {
+ // not copy o, beacause o is immutable
+ getQueryMaker().value(o);
+ }
+
+ @Override
public boolean visitEnter(And o) {
getQueryMaker().and();
return true;
@@ -153,49 +159,91 @@
@Override
public void visitLeave(Select o, boolean enterOrMiddleResult) {
- getQueryMaker().close();
+ // do nothing, close is automatic
}
@Override
- public boolean visitEnter(In o) {
- getQueryMaker().in(o.getElement());
+ public boolean visitEnter(Not o) {
+ getQueryMaker().not();
return true;
}
@Override
- public void visitLeave(In o, boolean enterResult) {
+ public void visitLeave(Not o, boolean enterResult) {
+ // do nothing, close is automatic
+ }
+
+ @Override
+ public boolean visitEnter(Between o) {
+ getQueryMaker().bw(o.getElement());
+ return true;
+ }
+
+ @Override
+ public boolean visitMiddle(Between o) {
+ // do nothing
+ return true;
+ }
+
+ @Override
+ public void visitLeave(Between o, boolean enterOrMiddleResult) {
+ // do nothing
+ }
+
+ @Override
+ public boolean visitEnter(ContainsAll o) {
+ getQueryMaker().containsAll(o.getElement());
+ return true;
+ }
+
+ @Override
+ public boolean visitMiddle(ContainsAll o) {
+ // do nothing
+ return true;
+ }
+
+ @Override
+ public void visitLeave(ContainsAll o, boolean enterOrMiddleResult) {
getQueryMaker().close();
}
@Override
- public boolean visitEnter(Not o) {
- getQueryMaker().not();
+ public boolean visitEnter(ContainsOne o) {
+ getQueryMaker().containsOne(o.getElement());
return true;
}
@Override
- public void visitLeave(Not o, boolean enterResult) {
+ public boolean visitMiddle(ContainsOne o) {
+ // do nothing
+ return true;
+ }
+
+ @Override
+ public void visitLeave(ContainsOne o, boolean enterOrMiddleResult) {
getQueryMaker().close();
}
@Override
- public void visit(Between o) {
- getQueryMaker().bw(o.getElement(), o.getMin(), o.getMax());
+ public boolean visitEnter(Equals o) {
+ getQueryMaker().eq(o.getElement());
+ return true;
}
@Override
- public void visit(ContainsAll o) {
- getQueryMaker().containsAll(o.getElement(), new ArrayList<String>(o.getValues()));
+ public void visitLeave(Equals o, boolean enterOrMiddleResult) {
+ // do nothing
}
@Override
- public void visit(ContainsOne o) {
- getQueryMaker().containsOne(o.getElement(), new ArrayList<String>(o.getValues()));
+ public boolean visitEnter(NotEquals o) {
+ getQueryMaker().ne(o.getElement());
+ return true;
}
@Override
- public void visit(Equals o) {
- getQueryMaker().eq(o.getElement(), o.getValue());
+ public void visitLeave(NotEquals o, boolean enterOrMiddleResult) {
+ // do nothing
}
@Override
@@ -204,61 +252,98 @@
}
@Override
- public void visit(Greater o) {
- getQueryMaker().gt(o.getElement(), o.getValue());
+ public void visit(True o) {
+ getQueryMaker().rTrue();
}
@Override
- public void visit(GreaterOrEquals o) {
- getQueryMaker().ge(o.getElement(), o.getValue());
+ public boolean visitEnter(Greater o) {
+ getQueryMaker().gt(o.getElement());
+ return true;
}
@Override
- public void visit(Keyword o) {
- getQueryMaker().keyword(o.getValue());
+ public void visitLeave(Greater o, boolean enterOrMiddleResult) {
+ // do nothing
}
@Override
- public void visit(Less o) {
- getQueryMaker().lt(o.getElement(), o.getValue());
+ public boolean visitEnter(GreaterOrEquals o) {
+ getQueryMaker().ge(o.getElement());
+ return true;
}
@Override
- public void visit(LessOrEquals o) {
- getQueryMaker().le(o.getElement(), o.getValue());
+ public void visitLeave(GreaterOrEquals o, boolean enterOrMiddleResult) {
+ // do nothing
}
@Override
- public void visit(Like o) {
- getQueryMaker().like(o.getElement(), o.getValue());
+ public boolean visitEnter(Keyword o) {
+ getQueryMaker().keyword();
+ return true;
}
@Override
- public void visit(NotEquals o) {
- getQueryMaker().ne(o.getElement(), o.getValue());
+ public void visitLeave(Keyword o, boolean enterOrMiddleResult) {
+ // do nothing
}
@Override
- public void visit(Null o) {
- getQueryMaker().isNull(o.getElement());
+ public boolean visitEnter(Less o) {
+ getQueryMaker().lt(o.getElement());
+ return true;
}
@Override
- public void visit(NotNull o) {
- getQueryMaker().isNotNull(o.getElement());
+ public void visitLeave(Less o, boolean enterOrMiddleResult) {
+ // do nothing
}
@Override
- public void visit(True o) {
- getQueryMaker().rTrue();
+ public boolean visitEnter(LessOrEquals o) {
+ getQueryMaker().le(o.getElement());
+ return true;
}
@Override
- public void visit(Unlike o) {
- getQueryMaker().unlike(o.getElement(), o.getValue());
+ public void visitLeave(LessOrEquals o, boolean enterOrMiddleResult) {
+ // do nothing
}
@Override
+ public boolean visitEnter(Like o) {
+ getQueryMaker().like(o.getElement());
+ return true;
+ }
+
+ @Override
+ public void visitLeave(Like o, boolean enterOrMiddleResult) {
+ // do nothing
+ }
+
+ @Override
+ public boolean visitEnter(Unlike o) {
+ getQueryMaker().unlike(o.getElement());
+ return true;
+ }
+
+ @Override
+ public void visitLeave(Unlike o, boolean enterOrMiddleResult) {
+ // do nothing
+ }
+
+ @Override
+ public void visit(Null o) {
+ getQueryMaker().isNull(o.getElement());
+ }
+
+ @Override
+ public void visit(NotNull o) {
+ getQueryMaker().isNotNull(o.getElement());
+ }
+
+ @Override
public void defaultVisit(Object o) {
throw new UnsupportedOperationException(
"Not supported (" + o.getClass().getSimpleName() + ").");
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/WikittyQueryVisitorToString.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/WikittyQueryVisitorToString.java 2012-01-07 10:37:00 UTC (rev 1292)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/WikittyQueryVisitorToString.java 2012-01-07 12:01:56 UTC (rev 1293)
@@ -27,8 +27,8 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.nuiton.wikitty.query.conditions.And;
-import org.nuiton.wikitty.query.conditions.In;
import org.nuiton.wikitty.query.conditions.Between;
+import org.nuiton.wikitty.query.conditions.ConditionValueString;
import org.nuiton.wikitty.query.conditions.ContainsAll;
import org.nuiton.wikitty.query.conditions.ContainsOne;
import org.nuiton.wikitty.query.conditions.Equals;
@@ -68,6 +68,7 @@
public String getText() {
return text;
}
+
@Override
public boolean visitEnter(WikittyQuery o) {
text += o.getName() + "(";
@@ -130,134 +131,188 @@
}
@Override
- public boolean visitEnter(In o) {
- text += o.getElement().getValue() + " " + WikittyQueryParser.IN + WikittyQueryParser.BRACKET_OPEN;
+ public boolean visitEnter(Not o) {
+ text += WikittyQueryParser.NOT + WikittyQueryParser.BRACKET_OPEN;
return true;
}
@Override
- public void visitLeave(In o, boolean enterResult) {
+ public void visitLeave(Not o, boolean enterResult) {
text += WikittyQueryParser.BRACKET_CLOSE;
}
@Override
- public boolean visitEnter(Not o) {
- text += WikittyQueryParser.NOT + WikittyQueryParser.BRACKET_OPEN;
+ public boolean visitEnter(Between o) {
+ text += o.getElement().getValue()
+ + WikittyQueryParser.EQUALS + WikittyQueryParser.SQUARE_BRACKET_OPEN;
return true;
}
@Override
- public void visitLeave(Not o, boolean enterResult) {
- text += WikittyQueryParser.BRACKET_CLOSE;
+ public boolean visitMiddle(Between o) {
+ text += " " + WikittyQueryParser.TO + " ";
+ return true;
}
@Override
- public void visit(Between o) {
- text += o.getElement().getValue()
- + WikittyQueryParser.EQUALS + WikittyQueryParser.SQUARE_BRACKET_OPEN
- + WikittyQueryParser.LITERAL_OPEN
- + o.getMin()
- + WikittyQueryParser.LITERAL_CLOSE
- + " " + WikittyQueryParser.TO + " "
- + WikittyQueryParser.LITERAL_OPEN
- + o.getMax()
- + WikittyQueryParser.LITERAL_CLOSE
- + WikittyQueryParser.SQUARE_BRACKET_CLOSE;
+ public void visitLeave(Between o, boolean enterOrMiddleResult) {
+ text += WikittyQueryParser.SQUARE_BRACKET_CLOSE;
}
@Override
- public void visit(ContainsAll o) {
+ public void visit(ConditionValueString o) {
+ text += WikittyQueryParser.LITERAL_OPEN + o.getValue() + WikittyQueryParser.LITERAL_CLOSE;
+ }
+
+ @Override
+ public boolean visitEnter(ContainsAll o) {
text += o.getElement().getValue()
+ WikittyQueryParser.EQUALS + WikittyQueryParser.SQUARE_BRACKET_OPEN;
- String sep = "";
- for(String e : o.getValues()) {
- text += sep + WikittyQueryParser.LITERAL_OPEN + e + WikittyQueryParser.LITERAL_CLOSE;
- sep = WikittyQueryParser.COMMA;
- }
+ return true;
+ }
+
+ @Override
+ public boolean visitMiddle(ContainsAll o) {
+ text += WikittyQueryParser.COMMA;
+ return true;
+ }
+
+ @Override
+ public void visitLeave(ContainsAll o, boolean enterOrMiddleResult) {
text += WikittyQueryParser.SQUARE_BRACKET_CLOSE;
}
@Override
- public void visit(ContainsOne o) {
+ public boolean visitEnter(ContainsOne o) {
text += o.getElement().getValue()
+ WikittyQueryParser.EQUALS + WikittyQueryParser.CURLY_BRACKET_OPEN;
- String sep = "";
- for(String e : o.getValues()) {
- text += sep + WikittyQueryParser.LITERAL_OPEN + e + WikittyQueryParser.LITERAL_CLOSE;
- sep = WikittyQueryParser.COMMA;
- }
+ return true;
+ }
+
+ @Override
+ public boolean visitMiddle(ContainsOne o) {
+ text += WikittyQueryParser.COMMA;
+ return true;
+ }
+
+ @Override
+ public void visitLeave(ContainsOne o, boolean enterOrMiddleResult) {
text += WikittyQueryParser.CURLY_BRACKET_CLOSE;
}
@Override
- public void visit(Equals o) {
+ public boolean visitEnter(Equals o) {
text += o.getElement().getValue()
- + WikittyQueryParser.EQUALS + WikittyQueryParser.LITERAL_OPEN
- + o.getValue()
- + WikittyQueryParser.LITERAL_CLOSE;
+ + WikittyQueryParser.EQUALS;
+ return true;
}
@Override
+ public void visitLeave(Equals o, boolean enterOrMiddleResult) {
+ // nothing to do
+ }
+
+ @Override
public void visit(False o) {
text += WikittyQueryParser.FALSE;
}
@Override
- public void visit(Greater o) {
+ public boolean visitEnter(Greater o) {
text += o.getElement().getValue()
- + WikittyQueryParser.GREATER + WikittyQueryParser.LITERAL_OPEN
- + o.getValue()
- + WikittyQueryParser.LITERAL_CLOSE;
+ + WikittyQueryParser.GREATER;
+ return true;
}
@Override
- public void visit(GreaterOrEquals o) {
+ public void visitLeave(Greater o, boolean enterOrMiddleResult) {
+ // nothing to do
+ }
+
+ @Override
+ public boolean visitEnter(GreaterOrEquals o) {
text += o.getElement().getValue()
- + WikittyQueryParser.GREATER_OR_EQUALS + WikittyQueryParser.LITERAL_OPEN
- + o.getValue()
- + WikittyQueryParser.LITERAL_CLOSE;
+ + WikittyQueryParser.GREATER_OR_EQUALS;
+ return true;
}
@Override
- public void visit(Keyword o) {
- text += WikittyQueryParser.LITERAL_OPEN
- + o.getValue()
- + WikittyQueryParser.LITERAL_CLOSE;
+ public void visitLeave(GreaterOrEquals o, boolean enterOrMiddleResult) {
+ // nothing to do
}
@Override
- public void visit(Less o) {
+ public boolean visitEnter(Keyword o) {
+ // nothing to do
+ return true;
+ }
+
+ @Override
+ public void visitLeave(Keyword o, boolean enterOrMiddleResult) {
+ // nothing to do
+ }
+
+ @Override
+ public boolean visitEnter(Less o) {
text += o.getElement().getValue()
- + WikittyQueryParser.LESS + WikittyQueryParser.LITERAL_OPEN
- + o.getValue()
- + WikittyQueryParser.LITERAL_CLOSE;
+ + WikittyQueryParser.LESS;
+ return true;
}
@Override
- public void visit(LessOrEquals o) {
+ public void visitLeave(Less o, boolean enterOrMiddleResult) {
+ // nothing to do
+ }
+
+ @Override
+ public boolean visitEnter(LessOrEquals o) {
text += o.getElement().getValue()
- + WikittyQueryParser.LESS_OR_EQUALS + WikittyQueryParser.LITERAL_OPEN
- + o.getValue()
- + WikittyQueryParser.LITERAL_CLOSE;
+ + WikittyQueryParser.LESS_OR_EQUALS;
+ return true;
}
@Override
- public void visit(Like o) {
+ public void visitLeave(LessOrEquals o, boolean enterOrMiddleResult) {
+ // nothing to do
+ }
+
+ @Override
+ public boolean visitEnter(Like o) {
text += o.getElement().getValue()
- + " " + WikittyQueryParser.LIKE + " " + WikittyQueryParser.LITERAL_OPEN
- + o.getValue()
- + WikittyQueryParser.LITERAL_CLOSE;
+ + " " + WikittyQueryParser.LIKE + " ";
+ return true;
}
@Override
- public void visit(NotEquals o) {
+ public void visitLeave(Like o, boolean enterOrMiddleResult) {
+ // nothing to do
+ }
+
+ @Override
+ public boolean visitEnter(Unlike o) {
text += o.getElement().getValue()
- + WikittyQueryParser.NOT_EQUALS + WikittyQueryParser.LITERAL_OPEN
- + o.getValue()
- + WikittyQueryParser.LITERAL_CLOSE;
+ + " " + WikittyQueryParser.UNLIKE + " ";
+ return true;
}
@Override
+ public void visitLeave(Unlike o, boolean enterOrMiddleResult) {
+ // nothing to do
+ }
+
+ @Override
+ public boolean visitEnter(NotEquals o) {
+ text += o.getElement().getValue()
+ + WikittyQueryParser.NOT_EQUALS;
+ return true;
+ }
+
+ @Override
+ public void visitLeave(NotEquals o, boolean enterOrMiddleResult) {
+ // nothing to do
+ }
+
+ @Override
public void visit(Null o) {
text += o.getElement().getValue()
+ WikittyQueryParser.EQUALS + WikittyQueryParser.NULL;
@@ -275,14 +330,6 @@
}
@Override
- public void visit(Unlike o) {
- text += o.getElement().getValue()
- + " " + WikittyQueryParser.UNLIKE + " " + WikittyQueryParser.LITERAL_OPEN
- + o.getValue()
- + WikittyQueryParser.LITERAL_CLOSE;
- }
-
- @Override
public void defaultVisit(Object o) {
throw new UnsupportedOperationException("Not supported:" + o.getClass());
}
Added: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/AbstractCondition.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/AbstractCondition.java (rev 0)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/AbstractCondition.java 2012-01-07 12:01:56 UTC (rev 1293)
@@ -0,0 +1,108 @@
+package org.nuiton.wikitty.query.conditions;
+
+import java.io.Serializable;
+import java.util.HashSet;
+import java.util.Set;
+import org.apache.commons.lang.ClassUtils;
+import org.nuiton.wikitty.WikittyException;
+import org.nuiton.wikitty.query.WikittyQueryVisitor;
+import org.nuiton.wikitty.query.WikittyQueryVisitorCopy;
+import org.nuiton.wikitty.query.WikittyQueryVisitorToString;
+
+/**
+ * This element is a symbolic interface implemented by all operators used to
+ * request contents (And, Or, Not, Equals, NotEquals, EndsWith, ...).
+ *
+ * @author poussin
+ * @version $Revision$
+ * @since 3.3
+ *
+ * Last update: $Date$
+ * by : $Author$
+ */
+public abstract class AbstractCondition implements Condition {
+
+ // serialVersionUID is used for serialization.
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * Default constructor
+ */
+ public AbstractCondition() {
+ super();
+ }
+
+ @Override
+ public Condition copy() {
+ WikittyQueryVisitorCopy v = new WikittyQueryVisitorCopy();
+ accept(v);
+ return v.getCondition();
+ }
+
+ /**
+ * For non terminal condition this method add subCondition.
+ * For terminal this method must return an exception
+ *
+ * When you overriden this method, you must call {@link #checkAddCondition}
+ * in first
+ *
+ * @param c
+ */
+ @Override
+ public Condition addCondition(Condition c) {
+ throw new WikittyException(String.format(
+ "Add condition is not allowed in this condition type '%s'",
+ getClass().getSimpleName()));
+ }
+
+ @Override
+ public void accept(WikittyQueryVisitor visitor) {
+ visitor.visit(this);
+ }
+
+ /**
+ * Equality test based on class equality
+ *
+ * @param other Value to compare
+ */
+ @Override
+ public boolean equals(Object other) {
+ boolean result;
+ if (other == null) {
+ result = false;
+ } else if (this == other) {
+ result = true;
+ }else if (this.getClass().equals(other.getClass())) {
+ result = equalsDeep(other);
+ } else {
+ return false;
+ }
+ return result;
+ }
+
+ /**
+ * Sub class must override this method to check if internal state is same
+ * in two object (this and other)
+ *
+ * @param other other parameter is same type that this object
+ * @return true if other and this are equals
+ */
+ abstract boolean equalsDeep(Object other);
+
+ @Override
+ public int hashCode() {
+ // equals use objects that are not constant through time
+ // then, unable to create hashCode from those objects
+ // returning a constant hash-code
+ return this.getClass().hashCode();
+ }
+
+ @Override
+ public String toString() {
+ WikittyQueryVisitorToString v = new WikittyQueryVisitorToString();
+ accept(v);
+ String result = v.getText();
+ return result;
+ }
+
+}
\ No newline at end of file
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/And.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/And.java 2012-01-07 10:37:00 UTC (rev 1292)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/And.java 2012-01-07 12:01:56 UTC (rev 1293)
@@ -45,7 +45,7 @@
* Last update: $Date$
* by : $Author$
*/
-public class And extends ConditionNary {
+public class And extends ContainerNaryOperator {
private static final long serialVersionUID = 1L;
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Between.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Between.java 2012-01-07 10:37:00 UTC (rev 1292)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Between.java 2012-01-07 12:01:56 UTC (rev 1293)
@@ -44,13 +44,35 @@
/**
* Constructor with all parameters initialized
- *
+ *
* @param element
* @param min
* @param max
*/
+ public Between(Element element) {
+ super(element);
+ }
+
+ /**
+ * Constructor with all parameters initialized
+ *
+ * @param element
+ * @param min
+ * @param max
+ */
public Between(Element element, String min, String max) {
super(element, min, max);
}
+ /**
+ * Constructor with all parameters initialized
+ *
+ * @param element
+ * @param min
+ * @param max
+ */
+ public Between(Element element, ConditionValue min, ConditionValue max) {
+ super(element, min, max);
+ }
+
}
\ No newline at end of file
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Condition.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Condition.java 2012-01-07 10:37:00 UTC (rev 1292)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Condition.java 2012-01-07 12:01:56 UTC (rev 1293)
@@ -25,166 +25,31 @@
package org.nuiton.wikitty.query.conditions;
import java.io.Serializable;
-import java.util.HashSet;
-import java.util.Set;
-import org.apache.commons.lang.ClassUtils;
-import org.nuiton.wikitty.WikittyException;
import org.nuiton.wikitty.query.WikittyQueryVisitor;
-import org.nuiton.wikitty.query.WikittyQueryVisitorToString;
/**
- * This element is a symbolic interface implemented by all operators used to
- * request contents (And, Or, Not, Equals, NotEquals, EndsWith, ...).
*
* @author poussin
* @version $Revision$
- * @since 3.3
*
* Last update: $Date$
* by : $Author$
*/
-public abstract class Condition implements Serializable {
+public interface Condition extends Serializable {
- // serialVersionUID is used for serialization.
- private static final long serialVersionUID = 1L;
+ void accept(WikittyQueryVisitor visitor);
/**
- * Default constructor
- */
- public Condition() {
- super();
- }
-
- /**
- * Retourne la liste des conditions qui ne peuvent pas etre ajoutee
- * a cette condition.
- * Lorsqu'on implante un fils il est preferable de faire une nouvelle
- * collection dans lequel on ajout ou on retire des elements
- * <pre>
- * return new Set(super.rejectedCondition).add/remove(condition.class)
- * </pre>
- * car certain regle sont mises pour toutes
- * les conditions comme l'interdiction d'ajouter un Select.
- *
- * @param c
- */
- public Set<Class<? extends Condition>> rejectedCondition() {
- Set<Class<? extends Condition>> result = new HashSet<Class<? extends Condition>>();
- result.add(Select.class);
- return result;
- }
-
- public void checkAddCondition(Condition c) {
- Class clazz = null;
- if (c != null) {
- clazz = c.getClass();
- }
-
- Set<?> rejected = rejectedCondition();
- if (rejected == null) {
- // tout est rejete
- throw new WikittyException(String.format(
- "Add condition is not allowed in this condition type '%s'",
- getClass().getSimpleName()));
- } else if (rejected.contains(clazz)) {
- throw new WikittyException(String.format(
- "Add condition '%s' is not allowed in this condition type '%s'",
- ClassUtils.getShortCanonicalName(c, "null"),
- getClass().getSimpleName()));
- }
- }
-
- /**
* For non terminal condition this method add subCondition.
- * For terminal this method must return an exception
+ * For terminal this method must accept only {@link ConditionValue}
*
- * When you overriden this method, you must call {@link #checkAddCondition}
- * in first
- *
* @param c
+ * @return this
*/
- public void addCondition(Condition c) {
- throw new WikittyException(String.format(
- "Add condition is not allowed in this condition type '%s'",
- getClass().getSimpleName()));
- }
+ Condition addCondition(Condition c);
- public void accept(WikittyQueryVisitor visitor) {
- visitor.visit(this);
- }
+ Condition copy();
+ boolean waitCondition();
-// /**
-// * Constructor with all parameters initialized
-// *
-// * @param name
-// */
-// public Restriction(RestrictionName name) {
-// this();
-// this.name = name;
-// }
-
-// /**
-// * Return name
-// *
-// * @return
-// */
-// public RestrictionName getName() {
-// return name;
-// }
-//
-// /**
-// * Set a value to parameter name.
-// *
-// * @param name
-// */
-// public void setName(RestrictionName name) {
-// this.name = name;
-// }
-
- /**
- * Equality test based on class equality
- *
- * @param other Value to compare
- */
- @Override
- public boolean equals(Object other) {
- boolean result;
- if (other == null) {
- result = false;
- } else if (this == other) {
- result = true;
- }else if (this.getClass().equals(other.getClass())) {
- result = equalsDeep(other);
- } else {
- return false;
- }
- return result;
- }
-
- /**
- * Sub class must override this method to check if internal state is same
- * in two object (this and other)
- *
- * @param other other parameter is same type that this object
- * @return true if other and this are equals
- */
- abstract boolean equalsDeep(Object other);
-
- @Override
- public int hashCode() {
- // equals use objects that are not constant through time
- // then, unable to create hashCode from those objects
- // returning a constant hash-code
- return this.getClass().hashCode();
- }
-
- @Override
- public String toString() {
- WikittyQueryVisitorToString v = new WikittyQueryVisitorToString();
- accept(v);
- String result = v.getText();
- return result;
- }
-
-}
\ No newline at end of file
+}
Added: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/ConditionValue.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/ConditionValue.java (rev 0)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/ConditionValue.java 2012-01-07 12:01:56 UTC (rev 1293)
@@ -0,0 +1,14 @@
+package org.nuiton.wikitty.query.conditions;
+
+/**
+ * Permet de marker les classes utilisable comme valeur pour une condition terminal
+ *
+ * @author poussin
+ * @version $Revision$
+ *
+ * Last update: $Date$
+ * by : $Author$
+ */
+public interface ConditionValue extends Condition {
+
+}
Added: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/ConditionValueString.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/ConditionValueString.java (rev 0)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/ConditionValueString.java 2012-01-07 12:01:56 UTC (rev 1293)
@@ -0,0 +1,44 @@
+package org.nuiton.wikitty.query.conditions;
+
+import org.apache.commons.lang.ObjectUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ *
+ * @author poussin
+ * @version $Revision$
+ *
+ * Last update: $Date$
+ * by : $Author$
+ */
+public class ConditionValueString extends AbstractCondition implements ConditionValue {
+
+ /** to use log facility, just put in your code: log.info(\"...\"); */
+ static private Log log = LogFactory.getLog(ConditionValueString.class);
+
+ private static final long serialVersionUID = 1L;
+
+ protected String value;
+
+ public ConditionValueString(String value) {
+ this.value = value;
+ }
+
+ public String getValue() {
+ return value;
+ }
+
+ @Override
+ public boolean waitCondition() {
+ return false;
+ }
+
+ @Override
+ boolean equalsDeep(Object other) {
+ ConditionValueString o = (ConditionValueString)other;
+ boolean result = ObjectUtils.equals(this.getValue(), o.getValue());
+ return result;
+ }
+
+}
Added: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/ContainerNaryOperator.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/ContainerNaryOperator.java (rev 0)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/ContainerNaryOperator.java 2012-01-07 12:01:56 UTC (rev 1293)
@@ -0,0 +1,105 @@
+package org.nuiton.wikitty.query.conditions;
+
+import java.util.LinkedList;
+import java.util.List;
+import org.apache.commons.lang.ClassUtils;
+import org.apache.commons.lang.ObjectUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.nuiton.wikitty.WikittyException;
+import org.nuiton.wikitty.query.WikittyQueryVisitor;
+
+/**
+ * Cette classe est la classe parente de tous les objets ayant en interne
+ * une liste de restrictions non terminale (ex: And, Or)
+ *
+ * @author poussin
+ * @version $Revision$
+ * @since 3.3
+ *
+ * Last update: $Date$
+ * by : $Author$
+ */
+public abstract class ContainerNaryOperator extends ContainerOperator {
+
+ /** to use log facility, just put in your code: log.info(\"...\"); */
+ static private Log log = LogFactory.getLog(ContainerNaryOperator.class);
+
+ protected List<Condition> conditions;
+
+ public ContainerNaryOperator() {
+ }
+
+ /**
+ * Initialyse condition with list passed in argument, parameter list is
+ * copied internaly to prevent extern modification
+ *
+ * @param c
+ */
+ public ContainerNaryOperator(List<Condition> c) {
+ this.conditions = new LinkedList<Condition>(c);
+ }
+
+ @Override
+ public boolean waitCondition() {
+ // nary allways wait condition
+ return true;
+ }
+
+ @Override
+ public void accept(WikittyQueryVisitor visitor) {
+ boolean walk = visitor.visitEnter(this);
+ if (walk && conditions != null) {
+ boolean notFirst = false;
+ for (Condition r : conditions) {
+ if (notFirst) {
+ walk = visitor.visitMiddle(this);
+ if (!walk) {
+ // le visiteur demande l'arret de la visite
+ break;
+ }
+ } else {
+ notFirst = true;
+ }
+ r.accept(visitor);
+ }
+ }
+ visitor.visitLeave(this, walk);
+ }
+
+ @Override
+ boolean equalsDeep(Object other) {
+ ContainerNaryOperator op = (ContainerNaryOperator)other;
+ boolean result = ObjectUtils.equals(
+ this.getConditions(), op.getConditions());
+ return result;
+ }
+
+ /**
+ * Return Restriction list. This list is never null, but can be empty
+ * @return
+ */
+ public List<Condition> getConditions() {
+ if (conditions == null) {
+ conditions = new LinkedList<Condition>();
+ }
+ return conditions;
+ }
+
+ @Override
+ public Condition addCondition(Condition c) {
+ if (c != null) {
+ if (c instanceof ConditionValue) {
+ throw new WikittyException(String.format(
+ "Condition (%s) can't have condition '%s' as child",
+ getClass().getSimpleName(),
+ ClassUtils.getShortCanonicalName(c, "null")));
+ } else {
+ getConditions().add(c);
+ }
+ }
+ return this;
+ }
+
+
+}
Added: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/ContainerOperator.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/ContainerOperator.java (rev 0)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/ContainerOperator.java 2012-01-07 12:01:56 UTC (rev 1293)
@@ -0,0 +1,21 @@
+package org.nuiton.wikitty.query.conditions;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ * Permet de marker touts les containers (autorise autre chose qu'un ConditionValue
+ * @author poussin
+ * @version $Revision$
+ *
+ * Last update: $Date$
+ * by : $Author$
+ */
+public abstract class ContainerOperator extends AbstractCondition {
+
+ /** to use log facility, just put in your code: log.info(\"...\"); */
+ static private Log log = LogFactory.getLog(ContainerOperator.class);
+
+ private static final long serialVersionUID = 1L;
+
+}
Added: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/ContainerUnaryOperator.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/ContainerUnaryOperator.java (rev 0)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/ContainerUnaryOperator.java 2012-01-07 12:01:56 UTC (rev 1293)
@@ -0,0 +1,80 @@
+package org.nuiton.wikitty.query.conditions;
+
+import org.apache.commons.lang.ClassUtils;
+import org.apache.commons.lang.ObjectUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.nuiton.wikitty.WikittyException;
+import org.nuiton.wikitty.query.WikittyQueryVisitor;
+
+/**
+ * Cette classe est la classe parente de tous les objets ayant en interne
+ * une restriction non terminale (ex: Not)
+ *
+ * @author poussin
+ * @version $Revision$
+ *
+ * Last update: $Date$
+ * by : $Author$
+ */
+public abstract class ContainerUnaryOperator extends ContainerOperator {
+
+ /** to use log facility, just put in your code: log.info(\"...\"); */
+ static private Log log = LogFactory.getLog(ContainerUnaryOperator.class);
+
+ protected Condition subCondition;
+
+ public ContainerUnaryOperator() {
+ }
+
+ public ContainerUnaryOperator(Condition restriction) {
+ this.subCondition = restriction;
+ }
+
+ @Override
+ public boolean waitCondition() {
+ boolean result = subCondition == null;
+ return result;
+ }
+
+ @Override
+ public Condition addCondition(Condition c) {
+ if (c instanceof ConditionValue) {
+ throw new WikittyException(String.format(
+ "Condition (%s) can't have condition '%s' as child",
+ getClass().getSimpleName(),
+ ClassUtils.getShortCanonicalName(c, "null")));
+ } else {
+ if (subCondition == null) {
+ this.subCondition = c;
+ } else {
+ throw new WikittyException(String.format(
+ "Condition (%s) can't have more than one condition",
+ getClass().getSimpleName()));
+ }
+ }
+ return this;
+ }
+
+ @Override
+ public void accept(WikittyQueryVisitor visitor) {
+ boolean walk = visitor.visitEnter(this);
+ if (walk && subCondition != null) {
+ subCondition.accept(visitor);
+ }
+ visitor.visitLeave(this, walk);
+ }
+
+ @Override
+ boolean equalsDeep(Object other) {
+ ContainerUnaryOperator op = (ContainerUnaryOperator)other;
+ boolean result = ObjectUtils.equals(
+ this.getSubCondition(), op.getSubCondition());
+ return result;
+ }
+
+ public Condition getSubCondition() {
+ return subCondition;
+ }
+
+}
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/ContainsAll.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/ContainsAll.java 2012-01-07 10:37:00 UTC (rev 1292)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/ContainsAll.java 2012-01-07 12:01:56 UTC (rev 1293)
@@ -47,7 +47,7 @@
* Last update: $Date$
* by : $Author$
*/
-public class ContainsAll extends TerminalBinaryListOperator {
+public class ContainsAll extends TerminalNaryOperator {
// serialVersionUID is used for serialization.
private static final long serialVersionUID = 1L;
@@ -58,8 +58,13 @@
* @param element
* @param value
*/
- public ContainsAll(Element element, Collection<String> values) {
+ public ContainsAll(Element element, Collection<ConditionValue> values) {
super(element, values);
}
+ public ContainsAll(Element element) {
+ super(element);
+ }
+
+
}
\ No newline at end of file
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/ContainsOne.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/ContainsOne.java 2012-01-07 10:37:00 UTC (rev 1292)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/ContainsOne.java 2012-01-07 12:01:56 UTC (rev 1293)
@@ -30,14 +30,6 @@
* ContainsOne permet de definir qu'un champs doit avoir au moins une des valeurs
* d'une serie de valeurs. Si cette condition est utilisee avec une seul valeur,
* cela revient a faire un {@link Equals})
- * <p>
- * For example, use:
- * <ul>
- * <li>RestrictionHelper.containsOne( myElement , "value1" )</li>
- * <li>RestrictionHelper.containsOne( myElement , "value1", "value2", ... )</li>
- * <li>RestrictionHelper.containsOne( myElement ,
- * a_list_containing_at_least_one_string )</li>
- * </ul>
*
* @author poussin
* @version $Revision$
@@ -46,7 +38,7 @@
* Last update: $Date$
* by : $Author$
*/
-public class ContainsOne extends TerminalBinaryListOperator {
+public class ContainsOne extends TerminalNaryOperator {
// serialVersionUID is used for serialization.
private static final long serialVersionUID = 1L;
@@ -57,9 +49,12 @@
* @param element
* @param value
*/
- public ContainsOne(Element element, Collection<String> values) {
+ public ContainsOne(Element element, Collection<ConditionValue> values) {
super(element, values);
}
+ public ContainsOne(Element element) {
+ super(element);
+ }
}
\ No newline at end of file
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Equals.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Equals.java 2012-01-07 10:37:00 UTC (rev 1292)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Equals.java 2012-01-07 12:01:56 UTC (rev 1293)
@@ -49,8 +49,16 @@
// serialVersionUID is used for serialization.
private static final long serialVersionUID = 1L;
+ public Equals(Element element) {
+ super(element);
+ }
+
public Equals(Element element, String value) {
super(element, value);
}
+ public Equals(Element element, ConditionValue value) {
+ super(element, value);
+ }
+
}
\ No newline at end of file
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Greater.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Greater.java 2012-01-07 10:37:00 UTC (rev 1292)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Greater.java 2012-01-07 12:01:56 UTC (rev 1293)
@@ -44,8 +44,16 @@
// serialVersionUID is used for serialization.
private static final long serialVersionUID = 1L;
+ public Greater(Element element) {
+ super(element);
+ }
+
public Greater(Element element, String value) {
super(element, value);
}
+ public Greater(Element element, ConditionValue value) {
+ super(element, value);
+ }
+
}
\ No newline at end of file
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/GreaterOrEquals.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/GreaterOrEquals.java 2012-01-07 10:37:00 UTC (rev 1292)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/GreaterOrEquals.java 2012-01-07 12:01:56 UTC (rev 1293)
@@ -44,8 +44,16 @@
// serialVersionUID is used for serialization.
private static final long serialVersionUID = 1L;
+ public GreaterOrEquals(Element element) {
+ super(element);
+ }
+
public GreaterOrEquals(Element element, String value) {
super(element, value);
}
+ public GreaterOrEquals(Element element, ConditionValue value) {
+ super(element, value);
+ }
+
}
\ No newline at end of file
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Keyword.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Keyword.java 2012-01-07 10:37:00 UTC (rev 1292)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Keyword.java 2012-01-07 12:01:56 UTC (rev 1293)
@@ -24,6 +24,9 @@
*/
package org.nuiton.wikitty.query.conditions;
+import org.apache.commons.lang.ClassUtils;
+import org.nuiton.wikitty.WikittyException;
+
/**
* Search keyword in all wikitty. All field is converted to String
* representation and comparaison is done in ignore case mode, if one field
@@ -46,8 +49,34 @@
private static final long serialVersionUID = 1L;
+ public Keyword() {
+ super(ElementField.ALL_FIELD);
+ }
+
public Keyword(String value) {
super(ElementField.ALL_FIELD, value);
}
+ public Keyword(ConditionValueString value) {
+ super(ElementField.ALL_FIELD, value);
+ }
+
+ @Override
+ public Condition addCondition(Condition c) {
+ if (waitCondition()) {
+ if (c instanceof ConditionValueString) {
+ value = (ConditionValueString)c;
+ } else {
+ throw new WikittyException(
+ "Only ConditionValueString can be add to Keyword,"
+ + " but you try to add: "
+ + ClassUtils.getShortCanonicalName(c, "null"));
+ }
+ } else {
+ throw new WikittyException(
+ "Keyword has already value");
+ }
+ return this;
+ }
+
}
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Less.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Less.java 2012-01-07 10:37:00 UTC (rev 1292)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Less.java 2012-01-07 12:01:56 UTC (rev 1293)
@@ -44,8 +44,16 @@
// serialVersionUID is used for serialization.
private static final long serialVersionUID = 1L;
+ public Less(Element element) {
+ super(element);
+ }
+
public Less(Element element, String value) {
super(element, value);
}
+ public Less(Element element, ConditionValue value) {
+ super(element, value);
+ }
+
}
\ No newline at end of file
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/LessOrEquals.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/LessOrEquals.java 2012-01-07 10:37:00 UTC (rev 1292)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/LessOrEquals.java 2012-01-07 12:01:56 UTC (rev 1293)
@@ -42,8 +42,16 @@
// serialVersionUID is used for serialization.
private static final long serialVersionUID = 1L;
+ public LessOrEquals(Element element) {
+ super(element);
+ }
+
public LessOrEquals(Element element, String value) {
super(element, value);
}
+ public LessOrEquals(Element element, ConditionValue value) {
+ super(element, value);
+ }
+
}
\ No newline at end of file
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Like.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Like.java 2012-01-07 10:37:00 UTC (rev 1292)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Like.java 2012-01-07 12:01:56 UTC (rev 1293)
@@ -45,7 +45,15 @@
private static final long serialVersionUID = 1L;
+ public Like(Element element) {
+ super(element);
+ }
+
public Like(Element element, String value) {
super(element, value);
}
+
+ public Like(Element element, ConditionValue value) {
+ super(element, value);
+ }
}
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Not.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Not.java 2012-01-07 10:37:00 UTC (rev 1292)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Not.java 2012-01-07 12:01:56 UTC (rev 1293)
@@ -34,7 +34,7 @@
* Last update: $Date$
* by : $Author$
*/
-public class Not extends ConditionUnary {
+public class Not extends ContainerUnaryOperator {
// serialVersionUID is used for serialization.
private static final long serialVersionUID = 1L;
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/NotEquals.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/NotEquals.java 2012-01-07 10:37:00 UTC (rev 1292)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/NotEquals.java 2012-01-07 12:01:56 UTC (rev 1293)
@@ -48,8 +48,16 @@
// serialVersionUID is used for serialization.
private static final long serialVersionUID = 1L;
+ public NotEquals(Element element) {
+ super(element);
+ }
+
public NotEquals(Element element, String value) {
super(element, value);
}
+ public NotEquals(Element element, ConditionValue value) {
+ super(element, value);
+ }
+
}
\ No newline at end of file
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/NotNull.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/NotNull.java 2012-01-07 10:37:00 UTC (rev 1292)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/NotNull.java 2012-01-07 12:01:56 UTC (rev 1293)
@@ -34,12 +34,12 @@
* Last update: $Date$
* by : $Author$
*/
-public class NotNull extends TerminalBinaryOperator {
+public class NotNull extends TerminalUnaryOperator {
private static final long serialVersionUID = 1L;
public NotNull(Element element) {
- super(element, null);
+ super(element);
}
}
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Null.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Null.java 2012-01-07 10:37:00 UTC (rev 1292)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Null.java 2012-01-07 12:01:56 UTC (rev 1293)
@@ -34,12 +34,12 @@
* Last update: $Date$
* by : $Author$
*/
-public class Null extends TerminalBinaryOperator {
+public class Null extends TerminalUnaryOperator {
private static final long serialVersionUID = 1L;
public Null(Element element) {
- super(element, null);
+ super(element);
}
}
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Or.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Or.java 2012-01-07 10:37:00 UTC (rev 1292)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Or.java 2012-01-07 12:01:56 UTC (rev 1293)
@@ -45,7 +45,7 @@
* Last update: $Date$
* by : $Author$
*/
-public class Or extends ConditionNary {
+public class Or extends ContainerNaryOperator {
// serialVersionUID is used for serialization.
private static final long serialVersionUID = 1L;
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Select.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Select.java 2012-01-07 10:37:00 UTC (rev 1292)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Select.java 2012-01-07 12:01:56 UTC (rev 1293)
@@ -45,28 +45,28 @@
* Last update: $Date$
* by : $Author$
*/
-public class Select extends ConditionUnary {
+public class Select extends ContainerUnaryOperator implements ConditionValue{
private static final long serialVersionUID = 1L;
protected Aggregate aggregate;
- protected ElementField element;
+ protected Element element;
- public Select(ElementField element) {
+ public Select(Element element) {
this.element = element;
}
- public Select(ElementField element, Aggregate aggregate) {
+ public Select(Element element, Aggregate aggregate) {
this.element = element;
this.aggregate = aggregate;
}
- public Select(ElementField element, Condition restriction) {
+ public Select(Element element, Condition restriction) {
super(restriction);
this.element = element;
}
- public Select(ElementField element, Aggregate aggregate, Condition restriction) {
+ public Select(Element element, Aggregate aggregate, Condition restriction) {
super(restriction);
this.element = element;
this.aggregate = aggregate;
@@ -76,7 +76,7 @@
return aggregate;
}
- public ElementField getElement() {
+ public Element getElement() {
return element;
}
Deleted: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/TerminalBinaryListOperator.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/TerminalBinaryListOperator.java 2012-01-07 10:37:00 UTC (rev 1292)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/TerminalBinaryListOperator.java 2012-01-07 12:01:56 UTC (rev 1293)
@@ -1,74 +0,0 @@
-/*
- * #%L
- * Wikitty :: api
- *
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2012 CodeLutin, Benjamin Poussin
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Lesser Public License for more details.
- *
- * You should have received a copy of the GNU General Lesser Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/lgpl-3.0.html>.
- * #L%
- */
-package org.nuiton.wikitty.query.conditions;
-
-import java.util.Collection;
-import org.apache.commons.lang.ObjectUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-/**
- * Classe mere des des operateurs binaire prenant une liste comme valeur possible
- * (ex: ContainsAll, ContainsOne)
- *
- * @author poussin
- * @version $Revision$
- * @since 3.3
- *
- * Last update: $Date$
- * by : $Author$
- */
-public abstract class TerminalBinaryListOperator extends TerminalOperator{
-
- /** to use log facility, just put in your code: log.info(\"...\"); */
- static private Log log = LogFactory.getLog(TerminalBinaryListOperator.class);
-
- private static final long serialVersionUID = 1L;
-
- protected Element element;
- protected Collection<String> values;
-
- public TerminalBinaryListOperator(Element element, Collection<String> values) {
- this.element = element;
- this.values = values;
- }
-
- public Element getElement() {
- return element;
- }
-
- public Collection<String> getValues() {
- return values;
- }
-
- @Override
- boolean equalsDeep(Object other) {
- TerminalBinaryListOperator op = (TerminalBinaryListOperator)other;
- boolean result = ObjectUtils.equals(this.getElement(), op.getElement())
- && ObjectUtils.equals(this.getValues(), op.getValues());
- return result;
- }
-
-}
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/TerminalBinaryOperator.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/TerminalBinaryOperator.java 2012-01-07 10:37:00 UTC (rev 1292)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/TerminalBinaryOperator.java 2012-01-07 12:01:56 UTC (rev 1293)
@@ -24,7 +24,10 @@
*/
package org.nuiton.wikitty.query.conditions;
+import org.apache.commons.lang.ClassUtils;
import org.apache.commons.lang.ObjectUtils;
+import org.nuiton.wikitty.WikittyException;
+import org.nuiton.wikitty.query.WikittyQueryVisitor;
/**
* classe mere des operateurs unaire et binaire. Lorsqu'on l'utilise pour un
@@ -44,7 +47,7 @@
private static final long serialVersionUID = 1L;
protected Element element;
- protected String value;
+ protected ConditionValue value;
/**
* Constructor with all parameters initialized
@@ -52,16 +55,70 @@
* @param element
* @param value
*/
+ public TerminalBinaryOperator(Element element) {
+ this(element, (ConditionValue)null);
+ }
+
+ /**
+ * Constructor with all parameters initialized
+ *
+ * @param element
+ * @param value
+ */
public TerminalBinaryOperator(Element element, String value) {
+ this(element, new ConditionValueString(value));
+ }
+
+ /**
+ * Constructor with all parameters initialized
+ *
+ * @param element
+ * @param value value is internaly copied to prevent external modification
+ */
+ public TerminalBinaryOperator(Element element, ConditionValue value) {
this.element = element;
this.value = value;
}
+ @Override
+ public boolean waitCondition() {
+ boolean result = value == null;
+ return result;
+ }
+
+ @Override
+ public Condition addCondition(Condition c) {
+ if (waitCondition()) {
+ if (c instanceof ConditionValue) {
+ value = (ConditionValue)c;
+ } else {
+ throw new WikittyException(
+ "Only ConditionValue can be add to TerminalBinaryOperator,"
+ + " but you try to add: "
+ + ClassUtils.getShortCanonicalName(c, "null"));
+ }
+ } else {
+ throw new WikittyException(String.format(
+ "Operator (%s) has already value",
+ getClass().getSimpleName()));
+ }
+ return this;
+ }
+
+ @Override
+ public void accept(WikittyQueryVisitor visitor) {
+ boolean walk = visitor.visitEnter(this);
+ if (walk) {
+ value.accept(visitor);
+ }
+ visitor.visitLeave(this, walk);
+ }
+
public Element getElement() {
return element;
}
- public String getValue() {
+ public ConditionValue getValue() {
return value;
}
@@ -73,5 +130,4 @@
return result;
}
-
}
\ No newline at end of file
Added: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/TerminalNaryOperator.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/TerminalNaryOperator.java (rev 0)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/TerminalNaryOperator.java 2012-01-07 12:01:56 UTC (rev 1293)
@@ -0,0 +1,112 @@
+package org.nuiton.wikitty.query.conditions;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import org.apache.commons.lang.ClassUtils;
+import org.apache.commons.lang.ObjectUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.nuiton.wikitty.WikittyException;
+import org.nuiton.wikitty.query.WikittyQueryVisitor;
+
+/**
+ *
+ * @author poussin
+ * @version $Revision$
+ *
+ * Last update: $Date$
+ * by : $Author$
+ */
+public class TerminalNaryOperator extends TerminalOperator {
+
+ /** to use log facility, just put in your code: log.info(\"...\"); */
+ static private Log log = LogFactory.getLog(TerminalNaryOperator.class);
+
+ // serialVersionUID is used for serialization.
+ private static final long serialVersionUID = 1L;
+
+ protected Element element;
+ protected List<ConditionValue> values;
+
+ /**
+ * Constructor with all parameters initialized
+ *
+ * @param element
+ * @param value
+ */
+ public TerminalNaryOperator(Element element) {
+ this(element, (Collection<ConditionValue>)null);
+ }
+
+ /**
+ * Constructor with all parameters initialized
+ *
+ * @param element
+ * @param value value is internaly copied to prevent external modification
+ */
+ public TerminalNaryOperator(Element element, Collection<ConditionValue> values) {
+ this.element = element;
+ if (values != null) {
+ this.values = new ArrayList<ConditionValue>(values);
+ }
+ }
+
+ @Override
+ public boolean waitCondition() {
+ return true;
+ }
+
+ @Override
+ public Condition addCondition(Condition c) {
+ if (c instanceof ConditionValue) {
+ getValues().add((ConditionValue)c);
+ } else {
+ throw new WikittyException(String.format(
+ "Only ConditionValue can be add to %s, but you try to add: %s",
+ this.getClass().getSimpleName(),
+ ClassUtils.getShortCanonicalName(c, "null")));
+ }
+ return this;
+ }
+
+ @Override
+ public void accept(WikittyQueryVisitor visitor) {
+ boolean walk = visitor.visitEnter(this);
+ if (walk && values != null) {
+ boolean notFirst = false;
+ for (Condition r : values) {
+ if (notFirst) {
+ walk = visitor.visitMiddle(this);
+ if (!walk) {
+ // le visiteur demande l'arret de la visite
+ break;
+ }
+ } else {
+ notFirst = true;
+ }
+ r.accept(visitor);
+ }
+ }
+ visitor.visitLeave(this, walk);
+ }
+
+ public Element getElement() {
+ return element;
+ }
+
+ public List<ConditionValue> getValues() {
+ if (values == null) {
+ values = new ArrayList<ConditionValue>();
+ }
+ return values;
+ }
+
+ @Override
+ boolean equalsDeep(Object other) {
+ TerminalNaryOperator op = (TerminalNaryOperator)other;
+ boolean result = ObjectUtils.equals(this.getElement(), op.getElement())
+ && ObjectUtils.equals(this.getValues(), op.getValues());
+ return result;
+ }
+}
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/TerminalOperator.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/TerminalOperator.java 2012-01-07 10:37:00 UTC (rev 1292)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/TerminalOperator.java 2012-01-07 12:01:56 UTC (rev 1293)
@@ -26,6 +26,7 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.nuiton.wikitty.WikittyException;
/**
* Class mere de tous les operateurs terminaux sans parametre
@@ -38,7 +39,7 @@
* Last update: $Date$
* by : $Author$
*/
-public abstract class TerminalOperator extends Condition {
+public abstract class TerminalOperator extends AbstractCondition {
/** to use log facility, just put in your code: log.info(\"...\"); */
static private Log log = LogFactory.getLog(TerminalOperator.class);
@@ -46,6 +47,11 @@
public TerminalOperator() {
}
+ @Override
+ public boolean waitCondition() {
+ return false;
+ }
+
/**
* Pour les operateurs sans paramatre, le {@link Restriction#equals} est
* suffisant car il verifie deja que les classes des objets sont idendiques
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/TerminalTernaryOperator.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/TerminalTernaryOperator.java 2012-01-07 10:37:00 UTC (rev 1292)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/TerminalTernaryOperator.java 2012-01-07 12:01:56 UTC (rev 1293)
@@ -24,9 +24,12 @@
*/
package org.nuiton.wikitty.query.conditions;
+import org.apache.commons.lang.ClassUtils;
import org.apache.commons.lang.ObjectUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.nuiton.wikitty.WikittyException;
+import org.nuiton.wikitty.query.WikittyQueryVisitor;
/**
* Classe mere des operateurs ternaire (ex: Between)
@@ -46,24 +49,73 @@
private static final long serialVersionUID = 1L;
protected Element element;
- protected String min;
- protected String max;
+ protected ConditionValue min;
+ protected ConditionValue max;
+ public TerminalTernaryOperator(Element element) {
+ this(element, (ConditionValue)null, (ConditionValue)null);
+ }
+
public TerminalTernaryOperator(Element element, String min, String max) {
+ this(element, new ConditionValueString(min), new ConditionValueString(max));
+ }
+
+ public TerminalTernaryOperator(Element element, ConditionValue min, ConditionValue max) {
this.element = element;
this.min = min;
this.max = max;
}
+ @Override
+ public boolean waitCondition() {
+ boolean result = min == null || max == null;
+ return result;
+ }
+
+ @Override
+ public Condition addCondition(Condition c) {
+ if (waitCondition()) {
+ if (c instanceof ConditionValue) {
+ if (min == null) {
+ min = (ConditionValue)c;
+ } else {
+ max = (ConditionValue)c;
+ }
+ } else {
+ throw new WikittyException(
+ "Only ConditionValue can be add to TerminalTernaryOperator,"
+ + " but you try to add: "
+ + ClassUtils.getShortCanonicalName(c, "null"));
+ }
+ } else {
+ throw new WikittyException(
+ "TerminalTernaryOperator has already min and max value");
+ }
+ return this;
+ }
+
+ @Override
+ public void accept(WikittyQueryVisitor visitor) {
+ boolean walk = visitor.visitEnter(this);
+ if (walk) {
+ min.accept(visitor);
+ walk = visitor.visitMiddle(this);
+ if (walk) {
+ max.accept(visitor);
+ }
+ }
+ visitor.visitLeave(this, walk);
+ }
+
public Element getElement() {
return element;
}
- public String getMin() {
+ public ConditionValue getMin() {
return min;
}
- public String getMax() {
+ public ConditionValue getMax() {
return max;
}
Added: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/TerminalUnaryOperator.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/TerminalUnaryOperator.java (rev 0)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/TerminalUnaryOperator.java 2012-01-07 12:01:56 UTC (rev 1293)
@@ -0,0 +1,51 @@
+package org.nuiton.wikitty.query.conditions;
+
+import org.apache.commons.lang.ObjectUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ *
+ * @author poussin
+ * @version $Revision$
+ *
+ * Last update: $Date$
+ * by : $Author$
+ */
+public class TerminalUnaryOperator extends TerminalOperator {
+
+ /** to use log facility, just put in your code: log.info(\"...\"); */
+ static private Log log = LogFactory.getLog(TerminalUnaryOperator.class);
+
+ // serialVersionUID is used for serialization.
+ private static final long serialVersionUID = 1L;
+
+ protected Element element;
+
+ /**
+ * Constructor with all parameters initialized
+ *
+ * @param element
+ * @param value value is internaly copied to prevent external modification
+ */
+ public TerminalUnaryOperator(Element element) {
+ this.element = element;
+ }
+
+ @Override
+ public boolean waitCondition() {
+ // unary don't has value, then never wait for condition
+ return false;
+ }
+
+ public Element getElement() {
+ return element;
+ }
+
+ @Override
+ boolean equalsDeep(Object other) {
+ TerminalUnaryOperator op = (TerminalUnaryOperator)other;
+ boolean result = ObjectUtils.equals(this.getElement(), op.getElement());
+ return result;
+ }
+}
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Unlike.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Unlike.java 2012-01-07 10:37:00 UTC (rev 1292)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Unlike.java 2012-01-07 12:01:56 UTC (rev 1293)
@@ -40,8 +40,16 @@
// serialVersionUID is used for serialization.
private static final long serialVersionUID = 1L;
+ public Unlike(Element element) {
+ super(element);
+ }
+
public Unlike(Element element, String value) {
super(element, value);
}
-
+
+ public Unlike(Element element, ConditionValue value) {
+ super(element, value);
+ }
+
}
Added: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/package-info.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/package-info.java (rev 0)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/package-info.java 2012-01-07 12:01:56 UTC (rev 1293)
@@ -0,0 +1,65 @@
+/**
+ * Hierarchie
+ * <ul>
+ * <li> {@link Condition}
+ * <ul>
+ * <li> {@link ContainerOperator} les operateurs qui contiennent d'autre operateur
+ * <ul>
+ * <li> {@link ContainerUnaryOperator} ne contient qu'un fils
+ * <ul>
+ * <li> {@link Not}
+ * <li> {@link Select}
+ * </ul>
+ * <li> {@link ContainerNaryOperator} contient N fils, et doivent
+ * explicitement etre ferme via un close dans
+ * {@link org.nuiton.wikitty.query.WikittyQueryMaker#close}
+ * <ul>
+ * <li> {@link And}
+ * <li> {@link Or}
+ * </ul>
+ * </ul>
+ * </ul>
+ * </ul>
+ * <ul>
+ * <li> {@link TerminalOperator} ni champs, ni valeur
+ * <li> {@link True}
+ * <li> {@link False}
+ * <li> {@link TerminalUnaryOperator} un champs seulement
+ * <ul>
+ * <li> {@link Null}
+ * <li> {@link NotNull}
+ * </ul>
+ * <li> {@link TerminalBinaryOperator} un champs et une valeur
+ * <ul>
+ * <li> {@link Equals}
+ * <li> {@link Greater}
+ * <li> {@link GreaterOrEquals}
+ * <li> {@link Keyword} binary car automatiquement sur tous les champs
+ * <li> {@link Less}
+ * <li> {@link LessOrEquals}
+ * <li> {@link Like}
+ * <li> {@link NotEquals}
+ * </ul>
+ * <li> {@link TerminalTernaryOperator} un champs, et deux valeur
+ * <ul>
+ * <li> {@link Between}
+ * </ul>
+ * <li> {@link TerminalNaryOperator} un champs et N valeurs, et doivent
+ * explicitement etre ferme via un close dans
+ * {@link org.nuiton.wikitty.query.WikittyQueryMaker#close} si les
+ * valeur ne sont pas passee au moment de la construction
+ * <ul>
+ * <li> {@link ContainsAll}
+ * <li> {@link ContainsOne}
+ * </ul>
+ * </ul>
+ * <ul>
+ * <li> {@link ConditionValue} les valeurs possibles pour un champs
+ * <ul>
+ * <li> {@link ConditionValueString}
+ * <li> {@link Select}
+ * </ul>
+ * </ul>
+ * </ul>
+ */
+package org.nuiton.wikitty.query.conditions;
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/storage/WikittySearchEngineHelper.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/storage/WikittySearchEngineHelper.java 2012-01-07 10:37:00 UTC (rev 1292)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/storage/WikittySearchEngineHelper.java 2012-01-07 12:01:56 UTC (rev 1293)
@@ -29,6 +29,7 @@
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
+import javax.swing.text.html.parser.DTDConstants;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.nuiton.wikitty.WikittyException;
@@ -39,6 +40,8 @@
import org.nuiton.wikitty.query.WikittyQuery;
import org.nuiton.wikitty.query.WikittyQueryMaker;
import org.nuiton.wikitty.query.WikittyQueryResult;
+import org.nuiton.wikitty.query.conditions.Condition;
+import org.nuiton.wikitty.query.conditions.Element;
import org.nuiton.wikitty.query.conditions.Select;
import org.nuiton.wikitty.services.WikittyTransaction;
@@ -78,16 +81,22 @@
// n'a pas les meme limites que les autres facette
Select select = (Select)query.getCondition();
- String extName = WikittyExtension.extractExtensionName(
- select.getElement().getValue());
- WikittyQueryMaker newCond = new WikittyQueryMaker()
- .and()
- .exteq(extName)
- .condition(select.getSubCondition());
+ Condition newCond;
+ if(WikittyExtension.isFqField(select.getElement().getValue())) {
+ String extName = WikittyExtension.extractExtensionName(
+ select.getElement().getValue());
+ newCond = new WikittyQueryMaker()
+ .and()
+ .exteq(extName)
+ .condition(select.getSubCondition())
+ .getCondition();
+ } else {
+ newCond = select.getSubCondition();
+ }
// copy de la query pour les facettes
WikittyQuery queryFacet = query.copy();
- queryFacet.setCondition(newCond.getCondition());
+ queryFacet.setCondition(newCond);
queryFacet.setLimit(0);
// copy de la query pour le select
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/storage/WikittySearchEngineInMemory.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/storage/WikittySearchEngineInMemory.java 2012-01-07 10:37:00 UTC (rev 1292)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/storage/WikittySearchEngineInMemory.java 2012-01-07 12:01:56 UTC (rev 1293)
@@ -39,15 +39,11 @@
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.apache.commons.collections.Bag;
-import org.apache.commons.collections.BagUtils;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.collections.Factory;
-import org.apache.commons.collections.Predicate;
import org.apache.commons.collections.bag.HashBag;
import org.apache.commons.collections.map.LazyMap;
-import org.apache.commons.collections.map.LazySortedMap;
-import org.apache.commons.collections.map.PredicatedMap;
-import org.apache.commons.collections.set.PredicatedSet;
+import org.apache.commons.lang.ClassUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -64,10 +60,11 @@
import org.nuiton.wikitty.query.WikittyQueryResultTreeNode;
import org.nuiton.wikitty.query.WikittyQueryVisitor;
import org.nuiton.wikitty.query.conditions.Condition;
+import org.nuiton.wikitty.query.conditions.ConditionValue;
+import org.nuiton.wikitty.query.conditions.ConditionValueString;
import org.nuiton.wikitty.query.conditions.ContainsAll;
import org.nuiton.wikitty.query.conditions.ContainsOne;
import org.nuiton.wikitty.query.conditions.ElementExtension;
-import org.nuiton.wikitty.query.conditions.ElementField;
import org.nuiton.wikitty.query.conditions.ElementId;
import org.nuiton.wikitty.query.conditions.Equals;
import org.nuiton.wikitty.query.conditions.Greater;
@@ -191,7 +188,7 @@
}
// create facet field
- for (ElementField e : query.getFacetField()) {
+ for (org.nuiton.wikitty.query.conditions.Element e : query.getFacetField()) {
String fqf = e.getValue();
Object value = w.getFqField(fqf);
topic.get(fqf).add(value);
@@ -241,6 +238,8 @@
}
}
+ // TODO poussin 20120106 faire le tri des resultats en fonction de ce qui est demande
+
result = new WikittyQueryResult<String>(query.getName(),
first, totalResult, query.getCondition().toString(), facets.getFacets(), ids);
}
@@ -281,7 +280,7 @@
this.w = w;
}
- /**
+ /**
* Interface permettant de verifier une condition sur deux collections
*/
static private interface Predicate {
@@ -765,6 +764,10 @@
return result;
}
+ @Override
+ public void visit(ConditionValueString o) {
+ // do nothing
+ }
@Override
public boolean visitEnter(WikittyQuery o) {
@@ -866,39 +869,62 @@
// do nothing
}
- @Override
- public boolean visitEnter(org.nuiton.wikitty.query.conditions.In o) {
- boolean evalResult = false;
- String fqfieldName = o.getElement().getValue();
+ protected List<String> evalConditionValueAsList(List<ConditionValue> o) {
+ List<String> result = new ArrayList<String>(o.size());
+ for (ConditionValue c : o) {
+ result.addAll(evalConditionValueAsList(c));
+ }
+ return result;
+ }
- // il faut que le champs exist, mais tout type de champs convient
- // maintenant qu'il est possible de faire un select
- if (w.hasField(fqfieldName)) {
-
- //Get sub-restriction
- Condition sub = o.getSubCondition();
-
- WikittyQuery query = new WikittyQuery(sub);
-
- //find everything that validate the sub-restriction
- WikittyQueryResult<String> associatedResult =
+ protected List<String> evalConditionValueAsList(ConditionValue o) {
+ List<String> result = new ArrayList<String>();
+ if (o instanceof Select) {
+ WikittyQuery query = new WikittyQuery(o);
+ // eval select
+ WikittyQueryResult<String> selectResult =
searchEngine.findAllByQuery(tx, query);
-
- List<String> associatedList = associatedResult.getAll();
-
- //Check that my field is contained in the sub-restriction results.
- evalResult = check(ContainsOnePredicate, o.getElement(), associatedList);
+ result.addAll(selectResult.getAll());
+ } else if (o instanceof ConditionValueString) {
+ result.add(((ConditionValueString)o).getValue());
+ } else {
+ throw new WikittyException(String.format(
+ "ConditionValue type unsupported %s",
+ ClassUtils.getShortCanonicalName(o, "null")));
}
-
- evalStack.push(evalResult);
+ return result;
- // on ne parcours pas la sous requete
- return false;
}
-
- @Override
- public void visitLeave(org.nuiton.wikitty.query.conditions.In o, boolean enterOrMiddleResult) {
- // nothing to do
+ protected String evalConditionValue(ConditionValue o) {
+ String result;
+ if (o instanceof Select) {
+ WikittyQuery query = new WikittyQuery(o);
+ // eval select
+ WikittyQueryResult<String> selectResult =
+ searchEngine.findAllByQuery(tx, query);
+ if (selectResult.size() == 0) {
+ throw new WikittyException(String.format(
+ "Select return no result query was '%s' transformed to '%s'",
+ o.toString(),
+ selectResult.getQueryString()));
+ } else if (selectResult.size() > 1) {
+ if (log.isWarnEnabled()) {
+ log.warn(String.format(
+ "Select return more than one result, only first"
+ + " is used. Query was '%s' transformed to '%s'",
+ o.toString(),
+ selectResult.getQueryString()));
+ }
+ }
+ result = selectResult.peek();
+ } else if (o instanceof ConditionValueString) {
+ result = ((ConditionValueString)o).getValue();
+ } else {
+ throw new WikittyException(String.format(
+ "ConditionValue type unsupported %s",
+ ClassUtils.getShortCanonicalName(o, "null")));
+ }
+ return result;
}
@Override
@@ -915,53 +941,105 @@
}
@Override
- public void visit(org.nuiton.wikitty.query.conditions.Between o) {
+ public boolean visitEnter(org.nuiton.wikitty.query.conditions.Between o) {
boolean result = false;
Collection expected = new ArrayList(2);
- expected.add(o.getMin());
- expected.add(o.getMax());
+ expected.add(evalConditionValue(o.getMin()));
+ expected.add(evalConditionValue(o.getMax()));
result = check(BetweenPredicate, o.getElement(), expected);
evalStack.push(result);
+ return false;
}
@Override
- public void visit(ContainsAll o) {
+ public boolean visitMiddle(org.nuiton.wikitty.query.conditions.Between o) {
+ // do nothing
+ return false;
+ }
+
+ @Override
+ public void visitLeave(org.nuiton.wikitty.query.conditions.Between o, boolean enterOrMiddleResult) {
+ // do nothing
+ }
+
+ @Override
+ public boolean visitEnter(ContainsAll o) {
boolean result = false;
- result = check(ContainsAllPredicate, o.getElement(), o.getValues());
+ result = check(ContainsAllPredicate, o.getElement(),
+ evalConditionValueAsList(o.getValues()));
evalStack.push(result);
+ return false;
}
@Override
- public void visit(ContainsOne o) {
+ public boolean visitMiddle(ContainsAll o) {
+ // do nothing
+ return false;
+ }
+
+ @Override
+ public void visitLeave(ContainsAll o, boolean enterOrMiddleResult) {
+ // do nothing
+ }
+
+ @Override
+ public boolean visitEnter(ContainsOne o) {
boolean result = false;
- result = check(ContainsOnePredicate, o.getElement(), o.getValues());
+ result = check(ContainsOnePredicate, o.getElement(),
+ evalConditionValueAsList(o.getValues()));
evalStack.push(result);
+ return false;
}
@Override
- public void visit(Equals o) {
+ public boolean visitMiddle(ContainsOne o) {
+ // do nothing
+ return false;
+ }
+
+ @Override
+ public void visitLeave(ContainsOne o, boolean enterOrMiddleResult) {
+ // do nothing
+ }
+
+ @Override
+ public boolean visitEnter(Equals o) {
boolean result = false;
- result = check(EqualsPredicate, o.getElement(), o.getValue());
+ result = check(EqualsPredicate, o.getElement(),
+ evalConditionValue(o.getValue()));
evalStack.push(result);
+ return false;
}
@Override
- public void visit(NotEquals o) {
+ public void visitLeave(Equals o, boolean enterOrMiddleResult) {
+ // do nothing
+ }
+
+ @Override
+ public boolean visitEnter(NotEquals o) {
boolean result = false;
- result = check(NotEqualsPredicate, o.getElement(), o.getValue());
+ result = check(NotEqualsPredicate, o.getElement(),
+ evalConditionValue(o.getValue()));
evalStack.push(result);
+ return false;
}
@Override
+ public void visitLeave(NotEquals o, boolean enterOrMiddleResult) {
+ // do nothing
+ }
+
+ @Override
public void visit(org.nuiton.wikitty.query.conditions.False o) {
evalStack.push(Boolean.FALSE);
}
@@ -972,73 +1050,127 @@
}
@Override
- public void visit(Greater o) {
+ public boolean visitEnter(Greater o) {
boolean result = false;
- result = check(GreaterPredicate, o.getElement(), o.getValue());
+ result = check(GreaterPredicate, o.getElement(),
+ evalConditionValue(o.getValue()));
evalStack.push(result);
+ return false;
}
@Override
- public void visit(GreaterOrEquals o) {
+ public void visitLeave(Greater o, boolean enterOrMiddleResult) {
+ // do nothing
+ }
+
+ @Override
+ public boolean visitEnter(GreaterOrEquals o) {
boolean result = false;
- result = check(GreaterOrEqualsPredicate, o.getElement(), o.getValue());
+ result = check(GreaterOrEqualsPredicate, o.getElement(),
+ evalConditionValue(o.getValue()));
evalStack.push(result);
+ return false;
}
@Override
- public void visit(org.nuiton.wikitty.query.conditions.Keyword o) {
+ public void visitLeave(GreaterOrEquals o, boolean enterOrMiddleResult) {
+ // do nothing
+ }
+
+ @Override
+ public boolean visitEnter(org.nuiton.wikitty.query.conditions.Keyword o) {
boolean result = false;
- result = check(KeywordPredicate, o.getElement(), o.getValue());
+ result = check(KeywordPredicate, o.getElement(),
+ evalConditionValue(o.getValue()));
evalStack.push(result);
+ return false;
}
@Override
- public void visit(Less o) {
+ public void visitLeave(org.nuiton.wikitty.query.conditions.Keyword o, boolean enterOrMiddleResult) {
+ // do nothing
+ }
+
+ @Override
+ public boolean visitEnter(Less o) {
boolean result = false;
- result = check(LessPredicate, o.getElement(), o.getValue());
+ result = check(LessPredicate, o.getElement(),
+ evalConditionValue(o.getValue()));
evalStack.push(result);
+ return false;
}
@Override
- public void visit(LessOrEquals o) {
+ public void visitLeave(Less o, boolean enterOrMiddleResult) {
+ // do nothing
+ }
+
+ @Override
+ public boolean visitEnter(LessOrEquals o) {
boolean result = false;
- result = check(LessOrEqualsPredicate, o.getElement(), o.getValue());
+ result = check(LessOrEqualsPredicate, o.getElement(),
+ evalConditionValue(o.getValue()));
evalStack.push(result);
+ return false;
}
@Override
- public void visit(Like o) {
+ public void visitLeave(LessOrEquals o, boolean enterOrMiddleResult) {
boolean result = false;
- result = check(LikePredicate, o.getElement(), o.getValue());
+ result = check(LessOrEqualsPredicate, o.getElement(),
+ evalConditionValue(o.getValue()));
evalStack.push(result);
}
@Override
- public void visit(Unlike o) {
+ public boolean visitEnter(Like o) {
boolean result = false;
- result = check(UnlikePredicate, o.getElement(), o.getValue());
+ result = check(LikePredicate, o.getElement(),
+ evalConditionValue(o.getValue()));
evalStack.push(result);
+ return false;
}
+ @Override
+ public void visitLeave(Like o, boolean enterOrMiddleResult) {
+ // do nothing
+ }
+
@Override
+ public boolean visitEnter(Unlike o) {
+ boolean result = false;
+
+ result = check(UnlikePredicate, o.getElement(),
+ evalConditionValue(o.getValue()));
+
+ evalStack.push(result);
+ return false;
+ }
+
+ @Override
+ public void visitLeave(Unlike o, boolean enterOrMiddleResult) {
+ // do nothing
+ }
+
+ @Override
public void visit(org.nuiton.wikitty.query.conditions.Null o) {
boolean result = false;
- result = check(NullPredicate, o.getElement(), o.getValue());
+ result = check(NullPredicate, o.getElement(), null);
evalStack.push(result);
}
@@ -1047,7 +1179,7 @@
public void visit(NotNull o) {
boolean result = false;
- result = check(NotNullPredicate, o.getElement(), o.getValue());
+ result = check(NotNullPredicate, o.getElement(), null);
evalStack.push(result);
}
Modified: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/query/WikittyQueryTest.java
===================================================================
--- trunk/wikitty-api/src/test/java/org/nuiton/wikitty/query/WikittyQueryTest.java 2012-01-07 10:37:00 UTC (rev 1292)
+++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/query/WikittyQueryTest.java 2012-01-07 12:01:56 UTC (rev 1293)
@@ -51,17 +51,20 @@
public void testParseAliasAndTree() throws Exception {
WikittyQueryParser parser = new WikittyQueryParser();
parser.addAlias("MyAlias\\((.*), (.*)\\)",
- "id IN (SELECT WikittyTreeNode.attachment"
- + " WHERE rootNode IN (WikittyTreeNode.name=$1)"
- + " AND pathNode IN (WikittyTreeNode.name=$2))");
+ "id={SELECT WikittyTreeNode.attachment"
+ + " WHERE (rootNode={SELECT ID WHERE (WikittyTreeNode.name=$1)}"
+ + " AND pathNode={SELECT ID WHERE (WikittyTreeNode.name=$2)})}");
+ WikittyQueryParser.parse("WikittyGroup.name=Group*");
+ WikittyQueryParser.parse("WikittyGroup.name=Group* AND id=toto");
+
WikittyQuery q1 = parser.parseQuery(
"WikittyGroup.name=Group* AND MyAlias(OtherTree, OtherBranch)");
WikittyQuery q2 = parser.parseQuery(
- "WikittyGroup.name=Group* AND id IN (SELECT WikittyTreeNode.attachment"
- + " WHERE rootNode IN (WikittyTreeNode.name=OtherTree)"
- + " AND pathNode IN (WikittyTreeNode.name=OtherBranch))");
+ "WikittyGroup.name=Group* AND id={SELECT WikittyTreeNode.attachment"
+ + " WHERE (rootNode={SELECT ID WHERE (WikittyTreeNode.name=OtherTree)}"
+ + " AND pathNode={SELECT ID WHERE (WikittyTreeNode.name=OtherBranch)})}");
System.out.println("Q1:" + q1);
System.out.println("Q2:" + q2);
@@ -86,9 +89,9 @@
{
WikittyQuery query = new WikittyQueryMaker().bw("ext.field", 0, 10).end();
String queryString = query.getCondition().toString();
+ System.out.println("queryString:" + queryString);
WikittyQuery queryParsed = WikittyQueryParser.parse(queryString);
String queryParsedString = queryParsed.getCondition().toString();
- System.out.println("queryString:" + queryString);
System.out.println("queryParsed:" + queryParsedString);
Assert.assertEquals(query, queryParsed);
Assert.assertEquals(queryString, queryParsedString);
@@ -334,7 +337,13 @@
Assert.assertEquals(queryString, queryParsedString);
}
{
- WikittyQuery query = new WikittyQueryMaker().not().and().eq("ext.field", 1).eq("ext.field", 2).close().close().end();
+ WikittyQuery query = new WikittyQueryMaker()
+ .not()
+ .and()
+ .eq("ext.field", 1)
+ .eq("ext.field", 2)
+ .close()
+ .end();
String queryString = query.getCondition().toString();
WikittyQuery queryParsed = WikittyQueryParser.parse(queryString);
String queryParsedString = queryParsed.getCondition().toString();
@@ -387,12 +396,15 @@
cc.notsw("ext.field", "pasdebut");
cc.notew("ext.field", "pasfin");
cc.not();
- cc.rFalse();
- cc.close();
+ cc.rFalse();
cc.or();
- cc.eq("ext.field", w);
- cc.not().and().eq("ext.field", 1).eq("ext.field", 2).close().close();
- cc.eq("ext.field", "truc");
+ cc.eq("ext.field", w);
+ cc.not()
+ .and()
+ .eq("ext.field", 1)
+ .eq("ext.field", 2)
+ .close();
+ cc.eq("ext.field", "truc");
cc.close();
WikittyQuery query = cc.end();
Modified: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/storage/WikittySearchEngineInMemoryTest.java
===================================================================
--- trunk/wikitty-api/src/test/java/org/nuiton/wikitty/storage/WikittySearchEngineInMemoryTest.java 2012-01-07 10:37:00 UTC (rev 1292)
+++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/storage/WikittySearchEngineInMemoryTest.java 2012-01-07 12:01:56 UTC (rev 1293)
@@ -40,6 +40,7 @@
import org.nuiton.wikitty.query.WikittyQuery;
import org.nuiton.wikitty.query.WikittyQueryMaker;
import org.nuiton.wikitty.query.WikittyQueryResult;
+import org.nuiton.wikitty.query.conditions.Element;
/**
*
@@ -96,7 +97,8 @@
{
// recherche des labels
- WikittyQuery q = new WikittyQueryMaker().eq(WikittyLabel.FQ_FIELD_WIKITTYLABEL_LABELS, "toutou").end();
+ WikittyQuery q = new WikittyQueryMaker()
+ .eq(WikittyLabel.FQ_FIELD_WIKITTYLABEL_LABELS, "toutou").end();
WikittyQueryResult<String> result = se.findAllByQuery(null, q);
// seul l1 doit etre retrouve
Assert.assertEquals(1, result.size());
@@ -124,7 +126,8 @@
{
// recherche des du keyword 'ou'
- WikittyQuery q = new WikittyQueryMaker().and().exteq(WikittyGroup.EXT_WIKITTYGROUP).keyword("ou").end();
+ WikittyQuery q = new WikittyQueryMaker()
+ .and().exteq(WikittyGroup.EXT_WIKITTYGROUP).keyword("ou").end();
WikittyQueryResult<String> result = se.findAllByQuery(null, q);
// g1, g2, g3 doivent etre retrouve mais pas l1 (pas la bonne extension)
Assert.assertEquals(3, result.size());
@@ -134,7 +137,8 @@
{
// recherche des labels
- WikittyQuery q = new WikittyQueryMaker().isNull(WikittyLabel.FQ_FIELD_WIKITTYLABEL_LABELS).end();
+ WikittyQuery q = new WikittyQueryMaker()
+ .isNull(WikittyLabel.FQ_FIELD_WIKITTYLABEL_LABELS).end();
WikittyQueryResult<String> result = se.findAllByQuery(null, q);
// seul l2 doit etre retrouve
Assert.assertEquals(1, result.size());
@@ -142,7 +146,8 @@
}
{
- WikittyQuery q = new WikittyQueryMaker().like(WikittyGroup.FQ_FIELD_WIKITTYGROUP_NAME, "*P2").end();
+ WikittyQuery q = new WikittyQueryMaker()
+ .like(WikittyGroup.FQ_FIELD_WIKITTYGROUP_NAME, "*P2").end();
WikittyQueryResult<String> result = se.findAllByQuery(null, q);
// seul g2 doit etre retrouve
Assert.assertEquals(1, result.size());
@@ -150,7 +155,8 @@
}
{
- WikittyQuery q = new WikittyQueryMaker().ew(WikittyGroup.FQ_FIELD_WIKITTYGROUP_NAME, "p2").end();
+ WikittyQuery q = new WikittyQueryMaker()
+ .ew(WikittyGroup.FQ_FIELD_WIKITTYGROUP_NAME, "p2").end();
WikittyQueryResult<String> result = se.findAllByQuery(null, q);
// seul g2 doit etre retrouve
Assert.assertEquals(1, result.size());
@@ -159,8 +165,9 @@
{ // test join
WikittyQuery q = new WikittyQueryMaker()
- .in(WikittyGroup.FQ_FIELD_WIKITTYGROUP_MEMBERS)
- .eq(WikittyLabel.FQ_FIELD_WIKITTYLABEL_LABELS, "titi")
+ .containsOne(WikittyGroup.FQ_FIELD_WIKITTYGROUP_MEMBERS)
+ .select(Element.ID)
+ .eq(WikittyLabel.FQ_FIELD_WIKITTYLABEL_LABELS, "titi")
.end();
WikittyQueryResult<String> result = se.findAllByQuery(null, q);
// g1, g3 doivent etre retrouve via le join
@@ -172,9 +179,10 @@
{ // test join
WikittyQuery q = new WikittyQueryMaker()
.or()
- .ideq(g2.getWikittyId())
- .in(WikittyGroup.FQ_FIELD_WIKITTYGROUP_MEMBERS)
- .eq(WikittyLabel.FQ_FIELD_WIKITTYLABEL_LABELS, "titi")
+ .ideq(g2.getWikittyId())
+ .containsOne(WikittyGroup.FQ_FIELD_WIKITTYGROUP_MEMBERS)
+ .select(Element.ID)
+ .eq(WikittyLabel.FQ_FIELD_WIKITTYLABEL_LABELS, "titi")
.end();
WikittyQueryResult<String> result = se.findAllByQuery(null, q);
// g1, g2, g3 doivent etre retrouve (g2 via ideq, et g1, g3 via le join)
@@ -186,9 +194,11 @@
{ // test join
WikittyQuery q = new WikittyQueryMaker()
.and()
- .not().ideq(g1.getWikittyId()).close()
- .in(WikittyGroup.FQ_FIELD_WIKITTYGROUP_MEMBERS)
- .eq(WikittyLabel.FQ_FIELD_WIKITTYLABEL_LABELS, "titi")
+ .not()
+ .ideq(g1.getWikittyId())
+ .containsOne(WikittyGroup.FQ_FIELD_WIKITTYGROUP_MEMBERS)
+ .select(Element.ID)
+ .eq(WikittyLabel.FQ_FIELD_WIKITTYLABEL_LABELS, "titi")
.end();
WikittyQueryResult<String> result = se.findAllByQuery(null, q);
// g3 doit etre retrouve via le join, et g1 est exclue via la not(ideq)
Modified: trunk/wikitty-solr/src/main/java/org/nuiton/wikitty/storage/solr/ElementModifier.java
===================================================================
--- trunk/wikitty-solr/src/main/java/org/nuiton/wikitty/storage/solr/ElementModifier.java 2012-01-07 10:37:00 UTC (rev 1292)
+++ trunk/wikitty-solr/src/main/java/org/nuiton/wikitty/storage/solr/ElementModifier.java 2012-01-07 12:01:56 UTC (rev 1293)
@@ -67,6 +67,7 @@
if (log.isDebugEnabled()) {
log.debug("Element: " + element.getValue() + "(" + element.getClass() + ")");
}
+ System.out.println("XXXXXElement: " + element.getValue() + "(" + element.getClass() + ")");
String result;
if (element instanceof ElementId) {
result = SOLR_ID;
Modified: trunk/wikitty-solr/src/main/java/org/nuiton/wikitty/storage/solr/WikittyQueryVisitorToSolr.java
===================================================================
--- trunk/wikitty-solr/src/main/java/org/nuiton/wikitty/storage/solr/WikittyQueryVisitorToSolr.java 2012-01-07 10:37:00 UTC (rev 1292)
+++ trunk/wikitty-solr/src/main/java/org/nuiton/wikitty/storage/solr/WikittyQueryVisitorToSolr.java 2012-01-07 12:01:56 UTC (rev 1293)
@@ -1,7 +1,8 @@
package org.nuiton.wikitty.storage.solr;
-import org.apache.commons.lang.StringEscapeUtils;
-import org.apache.commons.lang.StringUtils;
+import java.util.ArrayList;
+import java.util.List;
+import org.apache.commons.lang.ClassUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.nuiton.wikitty.WikittyException;
@@ -11,6 +12,8 @@
import org.nuiton.wikitty.query.conditions.And;
import org.nuiton.wikitty.query.conditions.Between;
import org.nuiton.wikitty.query.conditions.Condition;
+import org.nuiton.wikitty.query.conditions.ConditionValue;
+import org.nuiton.wikitty.query.conditions.ConditionValueString;
import org.nuiton.wikitty.query.conditions.ContainsAll;
import org.nuiton.wikitty.query.conditions.ContainsOne;
import org.nuiton.wikitty.query.conditions.Element;
@@ -53,7 +56,7 @@
static private Log log = LogFactory.getLog(WikittyQueryVisitorToSolr.class);
protected WikittyTransaction tx;
- protected WikittySearchEngineSolr solrServer;
+ protected WikittySearchEngineSolr searchEngine;
protected ElementModifier elementModifier;
protected String solrQuery = "";
@@ -65,7 +68,7 @@
public WikittyQueryVisitorToSolr(WikittyTransaction tx,
WikittySearchEngineSolr solrServer, ElementModifier elementModifier) {
this.tx = tx;
- this.solrServer = solrServer;
+ this.searchEngine = solrServer;
this.elementModifier = elementModifier;
}
@@ -74,7 +77,7 @@
return result;
}
- private String value2solr(String value) {
+ private String escape2solr(String value) {
String result;
if (value != null) {
final String LUCENE_REPLACE_PATTERN = "\\+" + "|-" + "|&&" + "|\\|"
@@ -90,7 +93,73 @@
return result;
}
+ protected List<String> evalConditionValueAsList(List<ConditionValue> o) {
+ List<String> result = new ArrayList<String>(o.size());
+ for (ConditionValue c : o) {
+ result.addAll(evalConditionValueAsList(c));
+ }
+ return result;
+ }
+
+ protected List<String> evalConditionValueAsList(ConditionValue o) {
+ List<String> result = new ArrayList<String>();
+ if (o instanceof Select) {
+ WikittyQuery query = new WikittyQuery(o);
+ // eval select
+ WikittyQueryResult<String> selectResult =
+ searchEngine.findAllByQuery(tx, query);
+ for (String s : selectResult) {
+ result.add(escape2solr(s));
+ }
+ } else if (o instanceof ConditionValueString) {
+ result.add(escape2solr(((ConditionValueString)o).getValue()));
+ } else {
+ throw new WikittyException(String.format(
+ "ConditionValue type unsupported %s",
+ ClassUtils.getShortCanonicalName(o, "null")));
+ }
+ return result;
+
+ }
+ protected String evalConditionValue(ConditionValue o) {
+ String result;
+ if (o instanceof Select) {
+ WikittyQuery query = new WikittyQuery(o);
+ // eval select
+ WikittyQueryResult<String> selectResult =
+ searchEngine.findAllByQuery(tx, query);
+ if (selectResult.size() == 0) {
+ throw new WikittyException(String.format(
+ "Select return no result query was '%s' transformed to '%s'",
+ o.toString(),
+ selectResult.getQueryString()));
+ } else if (selectResult.size() > 1) {
+ if (log.isWarnEnabled()) {
+ log.warn(String.format(
+ "Select return more than one result, only first"
+ + " is used. Query was '%s' transformed to '%s'",
+ o.toString(),
+ selectResult.getQueryString()));
+ }
+ }
+ result = selectResult.peek();
+ } else if (o instanceof ConditionValueString) {
+ result = ((ConditionValueString)o).getValue();
+ } else {
+ throw new WikittyException(String.format(
+ "ConditionValue type unsupported %s",
+ ClassUtils.getShortCanonicalName(o, "null")));
+ }
+ result = escape2solr(result);
+ return result;
+ }
+
@Override
+ public void visit(ConditionValueString o) {
+ // do nothing
+ }
+
+ @Override
public boolean visitEnter(WikittyQuery o) {
// do nothing
return true;
@@ -147,40 +216,40 @@
// nothing to do
}
- @Override
- public boolean visitEnter(In o) {
- WikittyQuery q = new WikittyQuery(o.getSubCondition()).setLimit(Integer.MAX_VALUE);
- WikittyQueryResult<String> result = solrServer.findAllByQuery(tx, q);
+// @Override
+// public boolean visitEnter(In o) {
+// WikittyQuery q = new WikittyQuery(o.getSubCondition()).setLimit(Integer.MAX_VALUE);
+// WikittyQueryResult<String> result = solrServer.findAllByQuery(tx, q);
+//
+// if (log.isDebugEnabled()) {
+// log.debug("In result: " + result);
+// }
+// if (result.size() == 0) {
+// // si on a pas de resultat, on met false
+// solrQuery += "( *:* - *:* )";
+// } else if (result.size() == 1) {
+// // si on a qu'un resultat sans parenthese
+// solrQuery +=
+// element2solr(o.getElement()) + ":" + value2solr(result.peek());
+// } else {
+// solrQuery += element2solr(o.getElement())
+// + ":(";
+// String sep = "";
+// for(String e : result) {
+// solrQuery += sep + value2solr(e);
+// sep = " OR ";
+// }
+// solrQuery += ")";
+// }
+// return false;
+// }
+//
+// @Override
+// public void visitLeave(In o, boolean enterResult) {
+// // do nothing
+// }
- if (log.isDebugEnabled()) {
- log.debug("In result: " + result);
- }
- if (result.size() == 0) {
- // si on a pas de resultat, on met false
- solrQuery += "( *:* - *:* )";
- } else if (result.size() == 1) {
- // si on a qu'un resultat sans parenthese
- solrQuery +=
- element2solr(o.getElement()) + ":" + value2solr(result.peek());
- } else {
- solrQuery += element2solr(o.getElement())
- + ":(";
- String sep = "";
- for(String e : result) {
- solrQuery += sep + value2solr(e);
- sep = " OR ";
- }
- solrQuery += ")";
- }
- return false;
- }
-
@Override
- public void visitLeave(In o, boolean enterResult) {
- // do nothing
- }
-
- @Override
public boolean visitEnter(Not o) {
solrQuery += "NOT(";
return true;
@@ -192,109 +261,189 @@
}
@Override
- public void visit(Between o) {
+ public boolean visitEnter(Between o) {
solrQuery += element2solr(o.getElement())
- + ":[" + value2solr(o.getMin()) + " TO " + value2solr(o.getMax()) + "]";
+ + ":[" + evalConditionValue(o.getMin()) + " TO " + evalConditionValue(o.getMax()) + "]";
+ return false;
}
@Override
- public void visit(ContainsAll o) {
+ public boolean visitMiddle(Between o) {
+ // to nothing
+ return true;
+ }
+
+ @Override
+ public void visitLeave(Between o, boolean enterOrMiddleResult) {
+ // do nothing
+ }
+
+ @Override
+ public boolean visitEnter(ContainsAll o) {
solrQuery += element2solr(o.getElement())
+ ":(";
String sep = "";
- for(String e : o.getValues()) {
- solrQuery += sep + value2solr(e);
+ for(String e : evalConditionValueAsList(o.getValues())) {
+ solrQuery += sep + e;
sep = " AND ";
}
solrQuery += ")";
+ return false;
}
@Override
- public void visit(ContainsOne o) {
+ public boolean visitMiddle(ContainsAll o) {
+ // do nothing
+ return false;
+ }
+
+ @Override
+ public void visitLeave(ContainsAll o, boolean enterOrMiddleResult) {
+ // do nothing
+ }
+
+ @Override
+ public boolean visitEnter(ContainsOne o) {
solrQuery += element2solr(o.getElement())
+ ":(";
String sep = "";
- for(String e : o.getValues()) {
- solrQuery += sep + value2solr(e);
+ for(String e : evalConditionValueAsList(o.getValues())) {
+ solrQuery += sep + e;
sep = " OR ";
}
solrQuery += ")";
+ return false;
}
@Override
- public void visit(Equals o) {
+ public boolean visitMiddle(ContainsOne o) {
+ // do nothing
+ return false;
+ }
+
+ @Override
+ public void visitLeave(ContainsOne o, boolean enterOrMiddleResult) {
+ // do nothing
+ }
+
+ @Override
+ public boolean visitEnter(Equals o) {
solrQuery += element2solr(o.getElement())
- + ":" + value2solr(o.getValue());
+ + ":" + evalConditionValue(o.getValue());
+ return false;
}
@Override
- public void visit(NotEquals o) {
- solrQuery += "-" + element2solr(o.getElement())
- + ":" + value2solr(o.getValue());
+ public void visitLeave(Equals o, boolean enterOrMiddleResult) {
+ // do nothing
}
@Override
- public void visit(True o) {
- solrQuery += "( *:* )";
+ public boolean visitEnter(NotEquals o) {
+ solrQuery += "-" + element2solr(o.getElement())
+ + ":" + evalConditionValue(o.getValue());
+ return false;
}
@Override
- public void visit(False o) {
- solrQuery += "( *:* - *:* )";
+ public void visitLeave(NotEquals o, boolean enterOrMiddleResult) {
+ // do nothing
}
@Override
- public void visit(Greater o) {
+ public boolean visitEnter(Greater o) {
solrQuery += element2solr(o.getElement())
- + ":{" + value2solr(o.getValue()) + " TO *}";
+ + ":{" + evalConditionValue(o.getValue()) + " TO *}";
+ return false;
}
@Override
- public void visit(GreaterOrEquals o) {
+ public void visitLeave(Greater o, boolean enterOrMiddleResult) {
+ // do nothing
+ }
+
+ @Override
+ public boolean visitEnter(GreaterOrEquals o) {
solrQuery += element2solr(o.getElement())
- + ":[" + value2solr(o.getValue()) + " TO *]";
+ + ":[" + evalConditionValue(o.getValue()) + " TO *]";
+ return false;
}
@Override
- public void visit(Keyword o) {
- solrQuery += value2solr(o.getValue());
+ public void visitLeave(GreaterOrEquals o, boolean enterOrMiddleResult) {
+ // do nothing
}
@Override
- public void visit(Less o) {
+ public boolean visitEnter(Keyword o) {
+ solrQuery += evalConditionValue(o.getValue());
+ return false;
+ }
+
+ @Override
+ public void visitLeave(Keyword o, boolean enterOrMiddleResult) {
+ // do nothing
+ }
+
+ @Override
+ public boolean visitEnter(Less o) {
solrQuery += element2solr(o.getElement())
- + ":{* TO " + value2solr(o.getValue()) + "}";
+ + ":{* TO " + evalConditionValue(o.getValue()) + "}";
+ return false;
}
@Override
- public void visit(LessOrEquals o) {
+ public void visitLeave(Less o, boolean enterOrMiddleResult) {
+ // do nothing
+ }
+
+ @Override
+ public boolean visitEnter(LessOrEquals o) {
solrQuery += element2solr(o.getElement())
- + ":[* TO " + value2solr(o.getValue()) + "]";
+ + ":[* TO " + evalConditionValue(o.getValue()) + "]";
+ return false;
}
@Override
- public void visit(Like o) {
+ public void visitLeave(LessOrEquals o, boolean enterOrMiddleResult) {
+ // do nothing
+ }
+
+ @Override
+ public boolean visitEnter(Like o) {
String element2solr = element2solr(o.getElement());
if (element2solr.endsWith(WikittySolrConstant.SUFFIX_STRING)) { // is string
// FIXME poussin 20111230 check la config solr et peut etre utiliser le lowercase ?
element2solr += WikittySolrConstant.SUFFIX_STRING_FULLTEXT;
}
- solrQuery += element2solr + ":" + value2solr(o.getValue());
+ solrQuery += element2solr + ":" + evalConditionValue(o.getValue());
+ return false;
}
@Override
- public void visit(Unlike o) {
+ public void visitLeave(Like o, boolean enterOrMiddleResult) {
+ // do nothing
+ }
+
+ @Override
+ public boolean visitEnter(Unlike o) {
String element2solr = element2solr(o.getElement());
if (element2solr.endsWith(WikittySolrConstant.SUFFIX_STRING)) { // is string
// FIXME poussin 20111230 check la config solr et peut etre utiliser le lowercase ?
element2solr += WikittySolrConstant.SUFFIX_STRING_FULLTEXT;
}
- solrQuery += "-" + element2solr + ":" + value2solr(o.getValue());
+ solrQuery += "-" + element2solr + ":" + evalConditionValue(o.getValue());
+ return false;
}
@Override
+ public void visitLeave(Unlike o, boolean enterOrMiddleResult) {
+ // do nothing
+ }
+
+ @Override
public void visit(Null o) {
solrQuery += WikittySolrConstant.SOLR_NULL_FIELD
+ o.getElement().getValue() + ":true";
@@ -307,6 +456,16 @@
}
@Override
+ public void visit(True o) {
+ solrQuery += "( *:* )";
+ }
+
+ @Override
+ public void visit(False o) {
+ solrQuery += "( *:* - *:* )";
+ }
+
+ @Override
public void defaultVisit(Object o) {
throw new UnsupportedOperationException("Not supported:" + o.getClass());
}
Modified: trunk/wikitty-solr/src/main/java/org/nuiton/wikitty/storage/solr/WikittySearchEngineSolr.java
===================================================================
--- trunk/wikitty-solr/src/main/java/org/nuiton/wikitty/storage/solr/WikittySearchEngineSolr.java 2012-01-07 10:37:00 UTC (rev 1292)
+++ trunk/wikitty-solr/src/main/java/org/nuiton/wikitty/storage/solr/WikittySearchEngineSolr.java 2012-01-07 12:01:56 UTC (rev 1293)
@@ -75,6 +75,7 @@
import org.nuiton.wikitty.query.WikittyQueryMaker;
import org.nuiton.wikitty.query.WikittyQueryResult;
import org.nuiton.wikitty.query.WikittyQueryResultTreeNode;
+import org.nuiton.wikitty.query.conditions.Element;
import org.nuiton.wikitty.query.conditions.ElementField;
import org.nuiton.wikitty.query.conditions.Select;
import org.nuiton.wikitty.search.Search;
@@ -688,18 +689,18 @@
querySolr.setRows(limit);
// Add sorting
- List<ElementField> sortAscending = query.getSortAscending();
+ List<Element> sortAscending = query.getSortAscending();
if(sortAscending != null) {
- for (ElementField sort : sortAscending) {
+ for (Element sort : sortAscending) {
String tranform = elementModifier.convertToSolr(transaction, sort);
tranform += WikittySolrConstant.SUFFIX_SORTABLE;
querySolr.addSortField(tranform, SolrQuery.ORDER.asc);
}
}
- List<ElementField> sortDescending = query.getSortDescending();
+ List<Element> sortDescending = query.getSortDescending();
if(sortDescending != null) {
- for (ElementField sort : sortDescending) {
+ for (Element sort : sortDescending) {
String tranform = elementModifier.convertToSolr(transaction, sort);
tranform += WikittySolrConstant.SUFFIX_SORTABLE;
querySolr.addSortField(tranform, SolrQuery.ORDER.desc);
@@ -708,7 +709,7 @@
// Add faceting
boolean isFacetExtension = query.isFacetExtension();
- List<ElementField> facetField = query.getFacetField();
+ List<Element> facetField = query.getFacetField();
List<FacetQuery> facetQuery = query.getFacetQuery();
// use to map query string to criteria facet name
@@ -728,7 +729,7 @@
// field facetisation
if (facetField != null) {
- for (ElementField fqfieldName : facetField) {
+ for (Element fqfieldName : facetField) {
String tranform = elementModifier.convertToSolr(transaction, fqfieldName);
querySolr.addFacetField(tranform);
}
Modified: trunk/wikitty-solr/src/test/java/org/nuiton/wikitty/storage/solr/WikittySearchEngineSolrForQueryTest.java
===================================================================
--- trunk/wikitty-solr/src/test/java/org/nuiton/wikitty/storage/solr/WikittySearchEngineSolrForQueryTest.java 2012-01-07 10:37:00 UTC (rev 1292)
+++ trunk/wikitty-solr/src/test/java/org/nuiton/wikitty/storage/solr/WikittySearchEngineSolrForQueryTest.java 2012-01-07 12:01:56 UTC (rev 1293)
@@ -305,7 +305,7 @@
WikittyQuery query = new WikittyQueryMaker()
.and()
.exteq(WikittyGroup.EXT_WIKITTYGROUP)
- .in(WikittyGroup.FQ_FIELD_WIKITTYGROUP_NAME)
+ .containsOne(WikittyGroup.FQ_FIELD_WIKITTYGROUP_NAME)
.select(WikittyLabel.FQ_FIELD_WIKITTYLABEL_LABELS)
.end();
@@ -320,17 +320,17 @@
public void testQueryOnTree() throws Exception {
WikittyQueryParser parser = new WikittyQueryParser();
parser.addAlias("MyAlias\\((.*), (.*)\\)",
- "id IN (SELECT WikittyTreeNode.attachment"
- + " WHERE (rootNode IN (WikittyTreeNode.name=$1)"
- + " AND pathNode IN (WikittyTreeNode.name=$2)))");
+ "id={SELECT WikittyTreeNode.attachment"
+ + " WHERE (rootNode={SELECT ID WHERE (WikittyTreeNode.name=$1)}"
+ + " AND pathNode={SELECT ID WHERE (WikittyTreeNode.name=$2)})}");
WikittyQuery q1 = parser.parseQuery(
"WikittyGroup.name=Group* AND MyAlias(OtherTree, OtherBranch)");
WikittyQuery q2 = parser.parseQuery(
- "WikittyGroup.name=Group* AND id IN (SELECT WikittyTreeNode.attachment"
- + " WHERE (rootNode IN (WikittyTreeNode.name=OtherTree)"
- + " AND pathNode IN (WikittyTreeNode.name=OtherBranch)))");
+ "WikittyGroup.name=Group* AND id={SELECT WikittyTreeNode.attachment"
+ + " WHERE (rootNode={SELECT ID WHERE (WikittyTreeNode.name=OtherTree)}"
+ + " AND pathNode={SELECT ID WHERE (WikittyTreeNode.name=OtherBranch)})}");
System.out.println("Q1:" + q1);
System.out.println("Q2:" + q2);
@@ -366,14 +366,14 @@
{
WikittyQuery q0 = parser.parseQuery(
- "rootNode IN (WikittyTreeNode.name=OtherTree) AND pathNode IN (WikittyTreeNode.name=OtherBranch)");
+ "rootNode={SELECT ID WHERE (WikittyTreeNode.name=OtherTree)} AND pathNode={SELECT ID WHERE (WikittyTreeNode.name=OtherBranch)}");
System.out.println("qO: " + q0);
WikittyQueryResult<String> q0Result = client.findAllByQuery(q0);
System.out.println("q0Result:" + q0Result);
}
{
WikittyQuery q0 = parser.parseQuery(
- "SELECT WikittyTreeNode.attachment WHERE (rootNode IN (WikittyTreeNode.name=OtherTree) AND pathNode IN (WikittyTreeNode.name=OtherBranch))")
+ "SELECT WikittyTreeNode.attachment WHERE (rootNode={SELECT ID WHERE (WikittyTreeNode.name=OtherTree)} AND pathNode={SELECT ID WHERE (WikittyTreeNode.name=OtherBranch)})")
.addFacetField(WikittyTreeNode.ELEMENT_FIELD_WIKITTYTREENODE_ATTACHMENT);
System.out.println("qO: " + q0);
WikittyQueryResult<String> q0Result = client.findAllByQuery(q0);
@@ -381,14 +381,6 @@
}
{
WikittyQuery q0 = parser.parseQuery(
- "rootNode IN (WikittyTreeNode.name=OtherTree) AND pathNode IN (WikittyTreeNode.name=OtherBranch)")
- .addFacetField(WikittyTreeNode.ELEMENT_FIELD_WIKITTYTREENODE_ATTACHMENT);
- System.out.println("qO: " + q0);
- WikittyQueryResult<String> q0Result = client.findAllByQuery(q0);
- System.out.println("q0Result:" + q0Result);
- }
- {
- WikittyQuery q0 = parser.parseQuery(
"SELECT WikittyTreeNode.attachment WHERE (ID={branch, leaf})")
.addFacetField(WikittyTreeNode.ELEMENT_FIELD_WIKITTYTREENODE_ATTACHMENT);
System.out.println("qO: " + q0);
1
0
r1292 - in trunk: src/site/rst wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions wikitty-solr/src/main/java/org/nuiton/wikitty/storage/solr
by bpoussin@users.nuiton.org 07 Jan '12
by bpoussin@users.nuiton.org 07 Jan '12
07 Jan '12
Author: bpoussin
Date: 2012-01-07 11:37:00 +0100 (Sat, 07 Jan 2012)
New Revision: 1292
Url: http://nuiton.org/repositories/revision/wikitty/1292
Log:
reelle suppression de fichier qui ne devrait plus exister
Removed:
trunk/src/site/rst/DevDoc.rst
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/ConditionNary.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/ConditionUnary.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Join.java
trunk/wikitty-solr/src/main/java/org/nuiton/wikitty/storage/solr/WikittyQueryParser.java
Deleted: trunk/src/site/rst/DevDoc.rst
===================================================================
--- trunk/src/site/rst/DevDoc.rst 2012-01-06 17:09:23 UTC (rev 1291)
+++ trunk/src/site/rst/DevDoc.rst 2012-01-07 10:37:00 UTC (rev 1292)
@@ -1,51 +0,0 @@
-.. -
-.. * #%L
-.. * Wikitty
-.. *
-.. * $Id$
-.. * $HeadURL$
-.. * %%
-.. * Copyright (C) 2009 - 2010 CodeLutin
-.. * %%
-.. * This program is free software: you can redistribute it and/or modify
-.. * it under the terms of the GNU Lesser General Public License as
-.. * published by the Free Software Foundation, either version 3 of the
-.. * License, or (at your option) any later version.
-.. *
-.. * This program is distributed in the hope that it will be useful,
-.. * but WITHOUT ANY WARRANTY; without even the implied warranty of
-.. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-.. * GNU General Lesser Public License for more details.
-.. *
-.. * You should have received a copy of the GNU General Lesser Public
-.. * License along with this program. If not, see
-.. * <http://www.gnu.org/licenses/lgpl-3.0.html>.
-.. * #L%
-.. -
-=========================
-Documentation développeur
-=========================
-
-Si vous souhaitez utiliser le module de cache en même temps que le module
-de sécurité, cela implique une bonne utilisation et de faire attention à certaine
-chose. Il faut faire attention qu'un utilisateur qui a récupéré un objet ne le
-rende pas disponible à un autre utilisateur au travers du cache.
-Il faut donc que la couche de sécurité soit toujours au dessus de la couche de
-cache.
-
-De la même façon, si l'on a mis du cache côté client dans certain cas, il faudra
-aussi remettre la couche de sécurité. Cela arrive si le côté client est
-multi-utilisateur. Si ce n'est pas le cas, il n'est pas nécessaire de le faire.
-
-::
-
- +--------------+ +--------------+
- proxy ------->| sécurité |<----+ | sécurité |<------ Proxy
- +--------------+ | +--------------+
- | cache | | | cache |
- +--------------+ | +--------------+
- | notification | | | notification |
- +--------------+ | +--------------+
- | WS Impl | +----| WS Hessian |
- +--------------+ +--------------+
- serveur client
Deleted: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/ConditionNary.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/ConditionNary.java 2012-01-06 17:09:23 UTC (rev 1291)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/ConditionNary.java 2012-01-07 10:37:00 UTC (rev 1292)
@@ -1,114 +0,0 @@
-/*
- * #%L
- * Wikitty :: api
- *
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2012 CodeLutin, Benjamin Poussin
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Lesser Public License for more details.
- *
- * You should have received a copy of the GNU General Lesser Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/lgpl-3.0.html>.
- * #L%
- */
-package org.nuiton.wikitty.query.conditions;
-
-import java.util.LinkedList;
-import java.util.List;
-import org.apache.commons.lang.ObjectUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.nuiton.wikitty.query.WikittyQueryVisitor;
-
-/**
- * Cette classe est la classe parente de tous les objets ayant en interne
- * une liste de restrictions non terminale (ex: And, Or)
- *
- * @author poussin
- * @version $Revision$
- * @since 3.3
- *
- * Last update: $Date$
- * by : $Author$
- */
-public abstract class ConditionNary extends Condition {
-
- /** to use log facility, just put in your code: log.info(\"...\"); */
- static private Log log = LogFactory.getLog(ConditionNary.class);
-
- protected List<Condition> conditions;
-
- public ConditionNary() {
- }
-
- /**
- * Initialyse condition with list passed in argument, parameter list is
- * copied internaly to prevent extern modification
- *
- * @param c
- */
- public ConditionNary(List<Condition> c) {
- this.conditions = new LinkedList<Condition>(c);
- }
-
- @Override
- public void accept(WikittyQueryVisitor visitor) {
- boolean walk = visitor.visitEnter(this);
- if (walk && conditions != null) {
- boolean notFirst = false;
- for (Condition r : conditions) {
- if (notFirst) {
- walk = visitor.visitMiddle(this);
- if (!walk) {
- // le visiteur demande l'arret de la visite
- break;
- }
- } else {
- notFirst = true;
- }
- r.accept(visitor);
- }
- }
- visitor.visitLeave(this, walk);
- }
-
- @Override
- boolean equalsDeep(Object other) {
- ConditionNary op = (ConditionNary)other;
- boolean result = ObjectUtils.equals(
- this.getConditions(), op.getConditions());
- return result;
- }
-
- /**
- * Return Restriction list. This list is never null, but can be empty
- * @return
- */
- public List<Condition> getConditions() {
- if (conditions == null) {
- conditions = new LinkedList<Condition>();
- }
- return conditions;
- }
-
- @Override
- public void addCondition(Condition c) {
- if (c != null) {
- checkAddCondition(c);
- getConditions().add(c);
- }
- }
-
-
-}
Deleted: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/ConditionUnary.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/ConditionUnary.java 2012-01-06 17:09:23 UTC (rev 1291)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/ConditionUnary.java 2012-01-07 10:37:00 UTC (rev 1292)
@@ -1,90 +0,0 @@
-/*
- * #%L
- * Wikitty :: api
- *
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2012 CodeLutin, Benjamin Poussin
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Lesser Public License for more details.
- *
- * You should have received a copy of the GNU General Lesser Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/lgpl-3.0.html>.
- * #L%
- */
-package org.nuiton.wikitty.query.conditions;
-
-import org.apache.commons.lang.ObjectUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.nuiton.wikitty.WikittyException;
-import org.nuiton.wikitty.query.WikittyQueryVisitor;
-
-/**
- * Cette classe est la classe parente de tous les objets ayant en interne
- * une restriction non terminale (ex: Not)
- *
- * @author poussin
- * @version $Revision$
- *
- * Last update: $Date$
- * by : $Author$
- */
-public abstract class ConditionUnary extends Condition {
-
- /** to use log facility, just put in your code: log.info(\"...\"); */
- static private Log log = LogFactory.getLog(ConditionUnary.class);
-
- protected Condition subCondition;
-
- public ConditionUnary() {
- }
-
- public ConditionUnary(Condition restriction) {
- this.subCondition = restriction;
- }
-
- @Override
- public void addCondition(Condition c) {
- checkAddCondition(c);
- if (subCondition == null) {
- this.subCondition = c;
- } else {
- throw new WikittyException(String.format(
- "ConditionUnary (%s) can't have more than one condition",
- getClass().getSimpleName()));
- }
- }
-
- @Override
- public void accept(WikittyQueryVisitor visitor) {
- boolean walk = visitor.visitEnter(this);
- if (walk && subCondition != null) {
- subCondition.accept(visitor);
- }
- visitor.visitLeave(this, walk);
- }
-
- @Override
- boolean equalsDeep(Object other) {
- ConditionUnary op = (ConditionUnary)other;
- boolean result = ObjectUtils.equals(
- this.getSubCondition(), op.getSubCondition());
- return result;
- }
-
- public Condition getSubCondition() {
- return subCondition;
- }
-
-}
Deleted: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Join.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Join.java 2012-01-06 17:09:23 UTC (rev 1291)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Join.java 2012-01-07 10:37:00 UTC (rev 1292)
@@ -1,75 +0,0 @@
-/*
- * #%L
- * Wikitty :: api
- *
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2012 CodeLutin, Benjamin Poussin
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Lesser Public License for more details.
- *
- * You should have received a copy of the GNU General Lesser Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/lgpl-3.0.html>.
- * #L%
- */
-package org.nuiton.wikitty.query.conditions;
-
-import org.apache.commons.lang.ObjectUtils;
-
-/**
- * Join is used to join to Wikitty type.
- *
- * ex:
- * <li> {@link WikittyQueryMaker}.join(myfield).eq(otherwikittyfield, "toto")
- * is equivalent to
- * <li> {@link WikittyQueryMaker}.containsOne(myfield, id1, id2, id3)
- * where [id1, id2, id3] is id retrieved by query eq(otherwikittyfield, "toto")
- *
- * @author poussin
- * @version $Revision$
- * @since 3.3
- *
- * Last update: $Date$
- * by : $Author$
- */
-public class Join extends ConditionUnary {
-
- private static final long serialVersionUID = 1L;
-
- protected Element element;
-
- public Join(Element element) {
- this.element = element;
- }
-
- public Join(Element element, Condition restriction) {
- super(restriction);
- this.element = element;
- }
-
- public Element getElement() {
- return element;
- }
-
- @Override
- boolean equalsDeep(Object other) {
- boolean result = super.equalsDeep(other);
- if (result) {
- Join op = (Join)other;
- result = ObjectUtils.equals(this.getElement(), op.getElement());
- }
- return result;
- }
-
-
-}
Deleted: trunk/wikitty-solr/src/main/java/org/nuiton/wikitty/storage/solr/WikittyQueryParser.java
===================================================================
--- trunk/wikitty-solr/src/main/java/org/nuiton/wikitty/storage/solr/WikittyQueryParser.java 2012-01-06 17:09:23 UTC (rev 1291)
+++ trunk/wikitty-solr/src/main/java/org/nuiton/wikitty/storage/solr/WikittyQueryParser.java 2012-01-07 10:37:00 UTC (rev 1292)
@@ -1,102 +0,0 @@
-/*
- * #%L
- * Wikitty :: wikitty-solr-impl
- *
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2009 - 2010 CodeLutin
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Lesser Public License for more details.
- *
- * You should have received a copy of the GNU General Lesser Public
- * License along with this program. If not, see
- * <http://www.gnu.org/licenses/lgpl-3.0.html>.
- * #L%
- */
-package org.nuiton.wikitty.storage.solr;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.lucene.queryParser.ParseException;
-import org.apache.lucene.queryParser.QueryParser;
-import org.apache.lucene.search.Query;
-import org.apache.solr.common.params.CommonParams;
-import org.apache.solr.common.params.SolrParams;
-import org.apache.solr.common.util.NamedList;
-import org.apache.solr.request.SolrQueryRequest;
-import org.apache.solr.search.LuceneQParserPlugin;
-import org.apache.solr.search.QParser;
-import org.apache.solr.search.QueryParsing;
-import org.apache.solr.search.SolrQueryParser;
-
-/**
- * Add allow leading wildcard
- * setAllowLeadingWildcard(true);
- * <br>Example: <code>{!wikitty q.op=AND df=text sort='price asc'}myfield:foo +bar -baz</code>
- * More information @see LuceneQParserPlugin
- */
-public class WikittyQueryParser extends LuceneQParserPlugin {
-
- public static String NAME = "wikitty";
-
- @Override
- public void init(NamedList args) {
- }
-
- @Override
- public QParser createParser(String qstr, SolrParams localParams, SolrParams params, SolrQueryRequest req) {
- return new SolrQParser(qstr, localParams, params, req);
- }
-
- static public class SolrQParser extends QParser {
-
- static private Log log = LogFactory.getLog(SolrQParser.class);
- String sortStr;
- SolrQueryParser lparser;
-
- public SolrQParser(String qstr, SolrParams localParams, SolrParams params, SolrQueryRequest req) {
- super(qstr, localParams, params, req);
- }
-
- @Override
- public Query parse() throws ParseException {
-
- String defaultField = getParam(CommonParams.DF);
- if (defaultField == null) {
- // TODO poussin 20101216 normalement on devrait retrouver cette
- // valeur dans la config. Mais en fait a chaque fois on passe
- // ici car defaultField est null :( alors que dans schema.xml
- // on a bien defini le defaultField :(
- defaultField = WikittySolrConstant.SOLR_FULLTEXT;
- }
-
- lparser = new SolrQueryParser(this, defaultField);
- lparser.setAllowLeadingWildcard(true);
-
- String opParam = getParam(QueryParsing.OP);
- if (opParam != null) {
- lparser.setDefaultOperator("AND".equals(opParam) ? QueryParser.Operator.AND : QueryParser.Operator.OR);
- }
-
- String qstr = getString();
- if (log.isDebugEnabled()) {
- log.debug("Query parse : " + qstr);
- }
- return lparser.parse(qstr);
- }
-
- @Override
- public String[] getDefaultHighlightFields() {
- return new String[]{lparser.getField()};
- }
- }
-}
1
0
r1291 - in trunk/wikitty-api/src: main/java/org/nuiton/wikitty main/java/org/nuiton/wikitty/query main/java/org/nuiton/wikitty/query/conditions main/java/org/nuiton/wikitty/storage test/java/org/nuiton/wikitty test/java/org/nuiton/wikitty/query test/java/org/nuiton/wikitty/storage
by echatellier@users.nuiton.org 06 Jan '12
by echatellier@users.nuiton.org 06 Jan '12
06 Jan '12
Author: echatellier
Date: 2012-01-06 18:09:23 +0100 (Fri, 06 Jan 2012)
New Revision: 1291
Url: http://nuiton.org/repositories/revision/wikitty/1291
Log:
Add header
Modified:
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyClient.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/FacetQuery.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/FacetSortType.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/FacetTopic.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/FacetTopicCountComparator.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/FacetTopicNameComparator.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/WikittyQuery.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/WikittyQueryMaker.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/WikittyQueryParser.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/WikittyQueryResult.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/WikittyQueryResultTreeNode.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/WikittyQueryVisitor.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/WikittyQueryVisitorCopy.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/WikittyQueryVisitorToString.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Aggregate.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/And.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Between.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Condition.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/ConditionNary.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/ConditionUnary.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/ContainsAll.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Element.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/ElementExtension.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/ElementField.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/ElementId.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/ElementNode.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/False.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Greater.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/GreaterOrEquals.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/In.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Join.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Keyword.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Less.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/LessOrEquals.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Like.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Not.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/NotEquals.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/NotNull.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Null.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Or.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Select.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/TerminalBinaryListOperator.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/TerminalBinaryOperator.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/TerminalOperator.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/TerminalTernaryOperator.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/True.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Unlike.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/storage/WikittySearchEngineHelper.java
trunk/wikitty-api/src/test/java/org/nuiton/wikitty/WikittyUtilTest.java
trunk/wikitty-api/src/test/java/org/nuiton/wikitty/query/WikittyQueryTest.java
trunk/wikitty-api/src/test/java/org/nuiton/wikitty/storage/WikittySearchEngineInMemoryTest.java
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyClient.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyClient.java 2012-01-06 17:04:24 UTC (rev 1290)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyClient.java 2012-01-06 17:09:23 UTC (rev 1291)
@@ -1,3 +1,27 @@
+/*
+ * #%L
+ * Wikitty :: api
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 CodeLutin, Benjamin Poussin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
package org.nuiton.wikitty;
import java.io.Serializable;
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/FacetQuery.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/FacetQuery.java 2012-01-06 17:04:24 UTC (rev 1290)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/FacetQuery.java 2012-01-06 17:09:23 UTC (rev 1291)
@@ -1,3 +1,27 @@
+/*
+ * #%L
+ * Wikitty :: api
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 CodeLutin, Benjamin Poussin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
package org.nuiton.wikitty.query;
import org.apache.commons.logging.Log;
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/FacetSortType.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/FacetSortType.java 2012-01-06 17:04:24 UTC (rev 1290)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/FacetSortType.java 2012-01-06 17:09:23 UTC (rev 1291)
@@ -1,3 +1,27 @@
+/*
+ * #%L
+ * Wikitty :: api
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 CodeLutin, Benjamin Poussin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
package org.nuiton.wikitty.query;
import java.util.Comparator;
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/FacetTopic.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/FacetTopic.java 2012-01-06 17:04:24 UTC (rev 1290)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/FacetTopic.java 2012-01-06 17:09:23 UTC (rev 1291)
@@ -1,3 +1,27 @@
+/*
+ * #%L
+ * Wikitty :: api
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 CodeLutin, Benjamin Poussin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
package org.nuiton.wikitty.query;
import java.io.Serializable;
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/FacetTopicCountComparator.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/FacetTopicCountComparator.java 2012-01-06 17:04:24 UTC (rev 1290)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/FacetTopicCountComparator.java 2012-01-06 17:09:23 UTC (rev 1291)
@@ -1,3 +1,27 @@
+/*
+ * #%L
+ * Wikitty :: api
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 CodeLutin, Benjamin Poussin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
package org.nuiton.wikitty.query;
import java.util.Comparator;
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/FacetTopicNameComparator.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/FacetTopicNameComparator.java 2012-01-06 17:04:24 UTC (rev 1290)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/FacetTopicNameComparator.java 2012-01-06 17:09:23 UTC (rev 1291)
@@ -1,3 +1,27 @@
+/*
+ * #%L
+ * Wikitty :: api
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 CodeLutin, Benjamin Poussin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
package org.nuiton.wikitty.query;
import java.util.Comparator;
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/WikittyQuery.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/WikittyQuery.java 2012-01-06 17:04:24 UTC (rev 1290)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/WikittyQuery.java 2012-01-06 17:09:23 UTC (rev 1291)
@@ -1,3 +1,27 @@
+/*
+ * #%L
+ * Wikitty :: api
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 CodeLutin, Benjamin Poussin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
package org.nuiton.wikitty.query;
import java.io.Serializable;
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/WikittyQueryMaker.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/WikittyQueryMaker.java 2012-01-06 17:04:24 UTC (rev 1290)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/WikittyQueryMaker.java 2012-01-06 17:09:23 UTC (rev 1291)
@@ -1,3 +1,27 @@
+/*
+ * #%L
+ * Wikitty :: api
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 CodeLutin, Benjamin Poussin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
package org.nuiton.wikitty.query;
import java.util.ArrayList;
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/WikittyQueryParser.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/WikittyQueryParser.java 2012-01-06 17:04:24 UTC (rev 1290)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/WikittyQueryParser.java 2012-01-06 17:09:23 UTC (rev 1291)
@@ -1,3 +1,27 @@
+/*
+ * #%L
+ * Wikitty :: api
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 CodeLutin, Benjamin Poussin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
package org.nuiton.wikitty.query;
import java.util.LinkedHashMap;
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/WikittyQueryResult.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/WikittyQueryResult.java 2012-01-06 17:04:24 UTC (rev 1290)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/WikittyQueryResult.java 2012-01-06 17:09:23 UTC (rev 1291)
@@ -1,3 +1,27 @@
+/*
+ * #%L
+ * Wikitty :: api
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 CodeLutin, Benjamin Poussin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
package org.nuiton.wikitty.query;
import java.io.Serializable;
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/WikittyQueryResultTreeNode.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/WikittyQueryResultTreeNode.java 2012-01-06 17:04:24 UTC (rev 1290)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/WikittyQueryResultTreeNode.java 2012-01-06 17:09:23 UTC (rev 1291)
@@ -1,3 +1,27 @@
+/*
+ * #%L
+ * Wikitty :: api
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 CodeLutin, Benjamin Poussin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
package org.nuiton.wikitty.query;
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/WikittyQueryVisitor.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/WikittyQueryVisitor.java 2012-01-06 17:04:24 UTC (rev 1290)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/WikittyQueryVisitor.java 2012-01-06 17:09:23 UTC (rev 1291)
@@ -1,3 +1,27 @@
+/*
+ * #%L
+ * Wikitty :: api
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 CodeLutin, Benjamin Poussin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
package org.nuiton.wikitty.query;
import java.lang.reflect.Method;
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/WikittyQueryVisitorCopy.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/WikittyQueryVisitorCopy.java 2012-01-06 17:04:24 UTC (rev 1290)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/WikittyQueryVisitorCopy.java 2012-01-06 17:09:23 UTC (rev 1291)
@@ -1,3 +1,27 @@
+/*
+ * #%L
+ * Wikitty :: api
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 CodeLutin, Benjamin Poussin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
package org.nuiton.wikitty.query;
import java.util.ArrayList;
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/WikittyQueryVisitorToString.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/WikittyQueryVisitorToString.java 2012-01-06 17:04:24 UTC (rev 1290)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/WikittyQueryVisitorToString.java 2012-01-06 17:09:23 UTC (rev 1291)
@@ -1,3 +1,27 @@
+/*
+ * #%L
+ * Wikitty :: api
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 CodeLutin, Benjamin Poussin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
package org.nuiton.wikitty.query;
import org.apache.commons.logging.Log;
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Aggregate.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Aggregate.java 2012-01-06 17:04:24 UTC (rev 1290)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Aggregate.java 2012-01-06 17:09:23 UTC (rev 1291)
@@ -1,3 +1,27 @@
+/*
+ * #%L
+ * Wikitty :: api
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 CodeLutin, Benjamin Poussin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
package org.nuiton.wikitty.query.conditions;
/**
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/And.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/And.java 2012-01-06 17:04:24 UTC (rev 1290)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/And.java 2012-01-06 17:09:23 UTC (rev 1291)
@@ -1,3 +1,27 @@
+/*
+ * #%L
+ * Wikitty :: api
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 CodeLutin, Benjamin Poussin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
package org.nuiton.wikitty.query.conditions;
import java.util.Arrays;
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Between.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Between.java 2012-01-06 17:04:24 UTC (rev 1290)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Between.java 2012-01-06 17:09:23 UTC (rev 1291)
@@ -1,3 +1,27 @@
+/*
+ * #%L
+ * Wikitty :: api
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 CodeLutin, Benjamin Poussin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
package org.nuiton.wikitty.query.conditions;
/**
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Condition.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Condition.java 2012-01-06 17:04:24 UTC (rev 1290)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Condition.java 2012-01-06 17:09:23 UTC (rev 1291)
@@ -1,3 +1,27 @@
+/*
+ * #%L
+ * Wikitty :: api
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 CodeLutin, Benjamin Poussin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
package org.nuiton.wikitty.query.conditions;
import java.io.Serializable;
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/ConditionNary.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/ConditionNary.java 2012-01-06 17:04:24 UTC (rev 1290)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/ConditionNary.java 2012-01-06 17:09:23 UTC (rev 1291)
@@ -1,3 +1,27 @@
+/*
+ * #%L
+ * Wikitty :: api
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 CodeLutin, Benjamin Poussin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
package org.nuiton.wikitty.query.conditions;
import java.util.LinkedList;
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/ConditionUnary.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/ConditionUnary.java 2012-01-06 17:04:24 UTC (rev 1290)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/ConditionUnary.java 2012-01-06 17:09:23 UTC (rev 1291)
@@ -1,3 +1,27 @@
+/*
+ * #%L
+ * Wikitty :: api
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 CodeLutin, Benjamin Poussin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
package org.nuiton.wikitty.query.conditions;
import org.apache.commons.lang.ObjectUtils;
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/ContainsAll.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/ContainsAll.java 2012-01-06 17:04:24 UTC (rev 1290)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/ContainsAll.java 2012-01-06 17:09:23 UTC (rev 1291)
@@ -1,3 +1,27 @@
+/*
+ * #%L
+ * Wikitty :: api
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 CodeLutin, Benjamin Poussin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
package org.nuiton.wikitty.query.conditions;
import java.util.Collection;
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Element.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Element.java 2012-01-06 17:04:24 UTC (rev 1290)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Element.java 2012-01-06 17:09:23 UTC (rev 1291)
@@ -1,3 +1,27 @@
+/*
+ * #%L
+ * Wikitty :: api
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 CodeLutin, Benjamin Poussin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
package org.nuiton.wikitty.query.conditions;
import java.io.Serializable;
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/ElementExtension.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/ElementExtension.java 2012-01-06 17:04:24 UTC (rev 1290)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/ElementExtension.java 2012-01-06 17:09:23 UTC (rev 1291)
@@ -1,3 +1,27 @@
+/*
+ * #%L
+ * Wikitty :: api
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 CodeLutin, Benjamin Poussin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
package org.nuiton.wikitty.query.conditions;
import org.apache.commons.logging.Log;
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/ElementField.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/ElementField.java 2012-01-06 17:04:24 UTC (rev 1290)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/ElementField.java 2012-01-06 17:09:23 UTC (rev 1291)
@@ -1,3 +1,27 @@
+/*
+ * #%L
+ * Wikitty :: api
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 CodeLutin, Benjamin Poussin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
package org.nuiton.wikitty.query.conditions;
import org.apache.commons.logging.Log;
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/ElementId.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/ElementId.java 2012-01-06 17:04:24 UTC (rev 1290)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/ElementId.java 2012-01-06 17:09:23 UTC (rev 1291)
@@ -1,3 +1,27 @@
+/*
+ * #%L
+ * Wikitty :: api
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 CodeLutin, Benjamin Poussin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
package org.nuiton.wikitty.query.conditions;
import org.apache.commons.logging.Log;
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/ElementNode.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/ElementNode.java 2012-01-06 17:04:24 UTC (rev 1290)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/ElementNode.java 2012-01-06 17:09:23 UTC (rev 1291)
@@ -1,3 +1,27 @@
+/*
+ * #%L
+ * Wikitty :: api
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 CodeLutin, Benjamin Poussin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
package org.nuiton.wikitty.query.conditions;
import org.apache.commons.logging.Log;
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/False.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/False.java 2012-01-06 17:04:24 UTC (rev 1290)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/False.java 2012-01-06 17:09:23 UTC (rev 1291)
@@ -1,3 +1,27 @@
+/*
+ * #%L
+ * Wikitty :: api
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 CodeLutin, Benjamin Poussin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
package org.nuiton.wikitty.query.conditions;
/**
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Greater.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Greater.java 2012-01-06 17:04:24 UTC (rev 1290)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Greater.java 2012-01-06 17:09:23 UTC (rev 1291)
@@ -1,3 +1,27 @@
+/*
+ * #%L
+ * Wikitty :: api
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 CodeLutin, Benjamin Poussin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
package org.nuiton.wikitty.query.conditions;
import org.nuiton.wikitty.query.WikittyQueryMaker;
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/GreaterOrEquals.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/GreaterOrEquals.java 2012-01-06 17:04:24 UTC (rev 1290)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/GreaterOrEquals.java 2012-01-06 17:09:23 UTC (rev 1291)
@@ -1,3 +1,27 @@
+/*
+ * #%L
+ * Wikitty :: api
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 CodeLutin, Benjamin Poussin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
package org.nuiton.wikitty.query.conditions;
import org.nuiton.wikitty.query.WikittyQueryMaker;
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/In.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/In.java 2012-01-06 17:04:24 UTC (rev 1290)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/In.java 2012-01-06 17:09:23 UTC (rev 1291)
@@ -1,3 +1,27 @@
+/*
+ * #%L
+ * Wikitty :: api
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 CodeLutin, Benjamin Poussin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
package org.nuiton.wikitty.query.conditions;
import java.util.HashSet;
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Join.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Join.java 2012-01-06 17:04:24 UTC (rev 1290)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Join.java 2012-01-06 17:09:23 UTC (rev 1291)
@@ -1,3 +1,27 @@
+/*
+ * #%L
+ * Wikitty :: api
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 CodeLutin, Benjamin Poussin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
package org.nuiton.wikitty.query.conditions;
import org.apache.commons.lang.ObjectUtils;
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Keyword.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Keyword.java 2012-01-06 17:04:24 UTC (rev 1290)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Keyword.java 2012-01-06 17:09:23 UTC (rev 1291)
@@ -1,3 +1,27 @@
+/*
+ * #%L
+ * Wikitty :: api
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 CodeLutin, Benjamin Poussin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
package org.nuiton.wikitty.query.conditions;
/**
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Less.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Less.java 2012-01-06 17:04:24 UTC (rev 1290)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Less.java 2012-01-06 17:09:23 UTC (rev 1291)
@@ -1,3 +1,27 @@
+/*
+ * #%L
+ * Wikitty :: api
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 CodeLutin, Benjamin Poussin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
package org.nuiton.wikitty.query.conditions;
import org.nuiton.wikitty.query.WikittyQueryMaker;
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/LessOrEquals.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/LessOrEquals.java 2012-01-06 17:04:24 UTC (rev 1290)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/LessOrEquals.java 2012-01-06 17:09:23 UTC (rev 1291)
@@ -1,3 +1,27 @@
+/*
+ * #%L
+ * Wikitty :: api
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 CodeLutin, Benjamin Poussin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
package org.nuiton.wikitty.query.conditions;
/**
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Like.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Like.java 2012-01-06 17:04:24 UTC (rev 1290)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Like.java 2012-01-06 17:09:23 UTC (rev 1291)
@@ -1,3 +1,27 @@
+/*
+ * #%L
+ * Wikitty :: api
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 CodeLutin, Benjamin Poussin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
package org.nuiton.wikitty.query.conditions;
/**
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Not.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Not.java 2012-01-06 17:04:24 UTC (rev 1290)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Not.java 2012-01-06 17:09:23 UTC (rev 1291)
@@ -1,3 +1,27 @@
+/*
+ * #%L
+ * Wikitty :: api
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 CodeLutin, Benjamin Poussin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
package org.nuiton.wikitty.query.conditions;
/**
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/NotEquals.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/NotEquals.java 2012-01-06 17:04:24 UTC (rev 1290)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/NotEquals.java 2012-01-06 17:09:23 UTC (rev 1291)
@@ -1,3 +1,27 @@
+/*
+ * #%L
+ * Wikitty :: api
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 CodeLutin, Benjamin Poussin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
package org.nuiton.wikitty.query.conditions;
/**
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/NotNull.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/NotNull.java 2012-01-06 17:04:24 UTC (rev 1290)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/NotNull.java 2012-01-06 17:09:23 UTC (rev 1291)
@@ -1,3 +1,27 @@
+/*
+ * #%L
+ * Wikitty :: api
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 CodeLutin, Benjamin Poussin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
package org.nuiton.wikitty.query.conditions;
/**
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Null.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Null.java 2012-01-06 17:04:24 UTC (rev 1290)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Null.java 2012-01-06 17:09:23 UTC (rev 1291)
@@ -1,3 +1,27 @@
+/*
+ * #%L
+ * Wikitty :: api
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 CodeLutin, Benjamin Poussin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
package org.nuiton.wikitty.query.conditions;
/**
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Or.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Or.java 2012-01-06 17:04:24 UTC (rev 1290)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Or.java 2012-01-06 17:09:23 UTC (rev 1291)
@@ -1,3 +1,27 @@
+/*
+ * #%L
+ * Wikitty :: api
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 CodeLutin, Benjamin Poussin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
package org.nuiton.wikitty.query.conditions;
import java.util.Arrays;
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Select.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Select.java 2012-01-06 17:04:24 UTC (rev 1290)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Select.java 2012-01-06 17:09:23 UTC (rev 1291)
@@ -1,3 +1,27 @@
+/*
+ * #%L
+ * Wikitty :: api
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 CodeLutin, Benjamin Poussin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
package org.nuiton.wikitty.query.conditions;
import org.apache.commons.lang.ObjectUtils;
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/TerminalBinaryListOperator.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/TerminalBinaryListOperator.java 2012-01-06 17:04:24 UTC (rev 1290)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/TerminalBinaryListOperator.java 2012-01-06 17:09:23 UTC (rev 1291)
@@ -1,3 +1,27 @@
+/*
+ * #%L
+ * Wikitty :: api
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 CodeLutin, Benjamin Poussin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
package org.nuiton.wikitty.query.conditions;
import java.util.Collection;
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/TerminalBinaryOperator.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/TerminalBinaryOperator.java 2012-01-06 17:04:24 UTC (rev 1290)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/TerminalBinaryOperator.java 2012-01-06 17:09:23 UTC (rev 1291)
@@ -1,3 +1,27 @@
+/*
+ * #%L
+ * Wikitty :: api
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 CodeLutin, Benjamin Poussin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
package org.nuiton.wikitty.query.conditions;
import org.apache.commons.lang.ObjectUtils;
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/TerminalOperator.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/TerminalOperator.java 2012-01-06 17:04:24 UTC (rev 1290)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/TerminalOperator.java 2012-01-06 17:09:23 UTC (rev 1291)
@@ -1,3 +1,27 @@
+/*
+ * #%L
+ * Wikitty :: api
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 CodeLutin, Benjamin Poussin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
package org.nuiton.wikitty.query.conditions;
import org.apache.commons.logging.Log;
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/TerminalTernaryOperator.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/TerminalTernaryOperator.java 2012-01-06 17:04:24 UTC (rev 1290)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/TerminalTernaryOperator.java 2012-01-06 17:09:23 UTC (rev 1291)
@@ -1,3 +1,27 @@
+/*
+ * #%L
+ * Wikitty :: api
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 CodeLutin, Benjamin Poussin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
package org.nuiton.wikitty.query.conditions;
import org.apache.commons.lang.ObjectUtils;
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/True.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/True.java 2012-01-06 17:04:24 UTC (rev 1290)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/True.java 2012-01-06 17:09:23 UTC (rev 1291)
@@ -1,3 +1,27 @@
+/*
+ * #%L
+ * Wikitty :: api
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 CodeLutin, Benjamin Poussin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
package org.nuiton.wikitty.query.conditions;
/**
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Unlike.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Unlike.java 2012-01-06 17:04:24 UTC (rev 1290)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/query/conditions/Unlike.java 2012-01-06 17:09:23 UTC (rev 1291)
@@ -1,3 +1,27 @@
+/*
+ * #%L
+ * Wikitty :: api
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 CodeLutin, Benjamin Poussin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
package org.nuiton.wikitty.query.conditions;
/**
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/storage/WikittySearchEngineHelper.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/storage/WikittySearchEngineHelper.java 2012-01-06 17:04:24 UTC (rev 1290)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/storage/WikittySearchEngineHelper.java 2012-01-06 17:09:23 UTC (rev 1291)
@@ -1,3 +1,27 @@
+/*
+ * #%L
+ * Wikitty :: api
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 CodeLutin, Benjamin Poussin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
package org.nuiton.wikitty.storage;
import java.math.BigDecimal;
Modified: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/WikittyUtilTest.java
===================================================================
--- trunk/wikitty-api/src/test/java/org/nuiton/wikitty/WikittyUtilTest.java 2012-01-06 17:04:24 UTC (rev 1290)
+++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/WikittyUtilTest.java 2012-01-06 17:09:23 UTC (rev 1291)
@@ -1,3 +1,27 @@
+/*
+ * #%L
+ * Wikitty :: api
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 CodeLutin, Benjamin Poussin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
package org.nuiton.wikitty;
import java.util.Date;
Modified: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/query/WikittyQueryTest.java
===================================================================
--- trunk/wikitty-api/src/test/java/org/nuiton/wikitty/query/WikittyQueryTest.java 2012-01-06 17:04:24 UTC (rev 1290)
+++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/query/WikittyQueryTest.java 2012-01-06 17:09:23 UTC (rev 1291)
@@ -1,3 +1,27 @@
+/*
+ * #%L
+ * Wikitty :: api
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 CodeLutin, Benjamin Poussin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
package org.nuiton.wikitty.query;
import java.util.Date;
Modified: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/storage/WikittySearchEngineInMemoryTest.java
===================================================================
--- trunk/wikitty-api/src/test/java/org/nuiton/wikitty/storage/WikittySearchEngineInMemoryTest.java 2012-01-06 17:04:24 UTC (rev 1290)
+++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/storage/WikittySearchEngineInMemoryTest.java 2012-01-06 17:09:23 UTC (rev 1291)
@@ -1,3 +1,27 @@
+/*
+ * #%L
+ * Wikitty :: api
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2012 CodeLutin, Benjamin Poussin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
package org.nuiton.wikitty.storage;
import java.util.Arrays;
1
0
r1290 - trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator
by echatellier@users.nuiton.org 06 Jan '12
by echatellier@users.nuiton.org 06 Jan '12
06 Jan '12
Author: echatellier
Date: 2012-01-06 18:04:24 +0100 (Fri, 06 Jan 2012)
New Revision: 1290
Url: http://nuiton.org/repositories/revision/wikitty/1290
Log:
Update documentation
Modified:
trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyAbstractGenerator.java
trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyContractGenerator.java
trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyDTOGenerator.java
trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyHelperGenerator.java
trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyImplementationGenerator.java
trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyMetaTransformer.java
trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyPurifierTransformer.java
Modified: trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyAbstractGenerator.java
===================================================================
--- trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyAbstractGenerator.java 2012-01-06 16:53:56 UTC (rev 1289)
+++ trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyAbstractGenerator.java 2012-01-06 17:04:24 UTC (rev 1290)
@@ -51,6 +51,8 @@
/*{generator option: writeString = +}*/
/**
+ * Wikitty abstract class generator.
+ *
* @plexus.component role="org.nuiton.eugene.Template" role-hint="org.nuiton.wikitty.generator.WikittyAbstractGenerator"
*/
public class WikittyAbstractGenerator extends ObjectModelTransformerToJava {
@@ -336,6 +338,22 @@
}
}
+ /**
+ * Methode de génération des methodes (avec corps) qui permet de generer
+ * des methodes avec des nom (et corps) différent suivant si on l'appel
+ * pour générer le operation de la classe actuelle ou celles de ses
+ * super classes.
+ *
+ * @param businessEntity class du modèle
+ * @param abstractClass class a générer
+ * @param attribute attribut dont on veut generer les opérations
+ * @param getterSetterName le nom du getter (peut etre différent du nom
+ * de l'attribut dans le cas d'un heritage multiples)
+ * @param helperClassName le nom du helper qui gere l'acces au parametre
+ * (celui de la classe courante ou un de ses supper class)
+ * @param helperGetterSetterName le nom du getter a appeler pour le helper
+ * concerné
+ */
protected void addOperationWithName(ObjectModelClass businessEntity, ObjectModelClass abstractClass,
ObjectModelAttribute attribute, String getterSetterName, String helperClassName, String helperGetterSetterName) {
Modified: trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyContractGenerator.java
===================================================================
--- trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyContractGenerator.java 2012-01-06 16:53:56 UTC (rev 1289)
+++ trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyContractGenerator.java 2012-01-06 17:04:24 UTC (rev 1290)
@@ -51,6 +51,8 @@
/*{generator option: writeString = +}*/
/**
+ * Wikitty interface générator.
+ *
* @plexus.component role="org.nuiton.eugene.Template" role-hint="org.nuiton.wikitty.generator.WikittyContractGenerator"
*/
public class WikittyContractGenerator extends ObjectModelTransformerToJava {
@@ -258,7 +260,18 @@
processedEntities.add(businessEntity);
}
- protected void addOperationWithName(ObjectModelInterface contract, ObjectModelAttribute attribute, String attributeName) {
+ /**
+ * Methode de génération des methodes (sans corps) qui permet de generer
+ * des methodes avec des nom différent suivant si on l'appel
+ * pour générer le operation de la classe actuelle ou celles de ses
+ * super classes.
+ *
+ * @param contract class a générer
+ * @param attribute attribut dont on veut generer les opérations
+ * @param getterSetterName le nom du getter (peut etre différent du nom
+ * de l'attribut dans le cas d'un heritage multiples)
+ */
+ protected void addOperationWithName(ObjectModelInterface contract, ObjectModelAttribute attribute, String getterSetterName) {
String attributeType = WikittyTransformerUtil.generateResultType(attribute, false);
if (attribute.getMaxMultiplicity() > 1 || attribute.getMaxMultiplicity() == -1) {
// attributed is a collection, we will generate operations get, add, remove and clear
@@ -269,38 +282,38 @@
// now, for this attribute, we will generate add, remove and clear methods
// adding operations to contract
- String getterName = "get" + StringUtils.capitalize(attributeName);
+ String getterName = "get" + StringUtils.capitalize(getterSetterName);
ObjectModelOperation getter = addOperation(contract, getterName, attributeTypeCollectionStrict);
setDocumentation(getter, attribute.getDocumentation());
- String setterName = "set" + StringUtils.capitalize(attributeName);
+ String setterName = "set" + StringUtils.capitalize(getterSetterName);
ObjectModelOperation setter = addOperation(contract, setterName, "void");
- addParameter(setter, attributeTypeCollectionStrict, attributeName);
+ addParameter(setter, attributeTypeCollectionStrict, getterSetterName);
- String addAllName = "addAll" + StringUtils.capitalize(attributeName);
+ String addAllName = "addAll" + StringUtils.capitalize(getterSetterName);
ObjectModelOperation addAll = addOperation(contract, addAllName, "void");
- addParameter(addAll, attributeTypeCollectionGeneric, attributeName);
+ addParameter(addAll, attributeTypeCollectionGeneric, getterSetterName);
- String addName = "add" + StringUtils.capitalize(attributeName);
+ String addName = "add" + StringUtils.capitalize(getterSetterName);
ObjectModelOperation adder = addOperation(contract, addName, "void");
addParameter(adder, attributeTypeVarargs, "element");
- String removeName = "remove" + StringUtils.capitalize(attributeName);
+ String removeName = "remove" + StringUtils.capitalize(getterSetterName);
ObjectModelOperation remover = addOperation(contract, removeName, "void");
addParameter(remover, attributeTypeVarargs, "element");
- String clearName = "clear" + StringUtils.capitalize(attributeName);
+ String clearName = "clear" + StringUtils.capitalize(getterSetterName);
addOperation(contract, clearName, "void");
} else {
// attribute is not a collection, we generate a getter and a setter
- String getterName = "get" + StringUtils.capitalize(attributeName);
+ String getterName = "get" + StringUtils.capitalize(getterSetterName);
ObjectModelOperation getter = addOperation(contract, getterName, attributeType);
setDocumentation(getter, attribute.getDocumentation());
- String setterName = "set" + StringUtils.capitalize(attributeName);
+ String setterName = "set" + StringUtils.capitalize(getterSetterName);
ObjectModelOperation setter = addOperation(contract, setterName, "void");
- addParameter(setter, attributeType, attributeName);
+ addParameter(setter, attributeType, getterSetterName);
}
}
Modified: trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyDTOGenerator.java
===================================================================
--- trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyDTOGenerator.java 2012-01-06 16:53:56 UTC (rev 1289)
+++ trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyDTOGenerator.java 2012-01-06 17:04:24 UTC (rev 1290)
@@ -5,7 +5,7 @@
* $Id$
* $HeadURL$
* %%
- * Copyright (C) 2010 CodeLutin
+ * Copyright (C) 2010 - 2012 CodeLutin, Chatellier Eric
* %%
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as
@@ -28,7 +28,6 @@
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
-import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
@@ -39,7 +38,6 @@
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.nuiton.eugene.Transformer;
import org.nuiton.eugene.java.ObjectModelTransformerToJava;
import org.nuiton.eugene.models.object.ObjectModel;
import org.nuiton.eugene.models.object.ObjectModelAttribute;
@@ -54,6 +52,8 @@
/*{generator option: writeString = +}*/
/**
+ * Wikitty DTO générator.
+ *
* @plexus.component role="org.nuiton.eugene.Template" role-hint="org.nuiton.wikitty.generator.WikittyDTOGenerator"
*/
public class WikittyDTOGenerator extends ObjectModelTransformerToJava {
Modified: trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyHelperGenerator.java
===================================================================
--- trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyHelperGenerator.java 2012-01-06 16:53:56 UTC (rev 1289)
+++ trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyHelperGenerator.java 2012-01-06 17:04:24 UTC (rev 1290)
@@ -5,7 +5,7 @@
* $Id$
* $HeadURL$
* %%
- * Copyright (C) 2009 - 2010 CodeLutin, Benjamin Poussin
+ * Copyright (C) 2009 - 2012 CodeLutin, Benjamin Poussin, Chatellier Eric
* %%
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as
@@ -44,6 +44,8 @@
/*{generator option: writeString = +}*/
/**
+ * Wikitty helper generator.
+ *
* @plexus.component role="org.nuiton.eugene.Template" role-hint="org.nuiton.wikitty.generator.WikittyHelperGenerator"
*/
public class WikittyHelperGenerator extends ObjectModelTransformerToJava {
Modified: trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyImplementationGenerator.java
===================================================================
--- trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyImplementationGenerator.java 2012-01-06 16:53:56 UTC (rev 1289)
+++ trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyImplementationGenerator.java 2012-01-06 17:04:24 UTC (rev 1290)
@@ -5,7 +5,7 @@
* $Id$
* $HeadURL$
* %%
- * Copyright (C) 2009 - 2010 CodeLutin, Benjamin Poussin
+ * Copyright (C) 2009 - 2012 CodeLutin, Benjamin Poussin, Chatellier Eric
* %%
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as
@@ -47,6 +47,8 @@
/*{generator option: writeString = +}*/
/**
+ * Wikitty implementation class generator.
+ *
* @plexus.component role="org.nuiton.eugene.Template" role-hint="org.nuiton.wikitty.generator.WikittyImplementationGenerator"
*/
public class WikittyImplementationGenerator extends ObjectModelTransformerToJava {
Modified: trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyMetaTransformer.java
===================================================================
--- trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyMetaTransformer.java 2012-01-06 16:53:56 UTC (rev 1289)
+++ trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyMetaTransformer.java 2012-01-06 17:04:24 UTC (rev 1290)
@@ -30,6 +30,11 @@
import org.nuiton.eugene.models.object.ObjectModel;
import org.nuiton.eugene.models.object.ObjectModelClass;
+//TODO 20100610 use filter with /*[]*/
+/*{generator option: writeString = }*/
+/*{generator option: parentheses = false}*/
+/*{generator option: writeString = +}*/
+
/**
* Wikitty generation steps :
* <ol>
@@ -47,12 +52,6 @@
* @author bleny
* @plexus.component role="org.nuiton.eugene.Template" role-hint="org.nuiton.wikitty.generator.WikittyMetaGenerator"
*/
-
-// TODO 20100610 use filter with /*[]*/
-/*{generator option: writeString = }*/
-/*{generator option: parentheses = false}*/
-/*{generator option: writeString = +}*/
-
public class WikittyMetaTransformer extends AbstractMetaTransformer<ObjectModel> {
private static final Log log = LogFactory.getLog(WikittyMetaTransformer.class);
Modified: trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyPurifierTransformer.java
===================================================================
--- trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyPurifierTransformer.java 2012-01-06 16:53:56 UTC (rev 1289)
+++ trunk/wikitty-generators/src/main/java/org/nuiton/wikitty/generator/WikittyPurifierTransformer.java 2012-01-06 17:04:24 UTC (rev 1290)
@@ -158,7 +158,10 @@
* @param source the class to clone from the source model
* @param cloneDocumentation flag to add documentation if some found in model
* @return the clone of the given class
+ *
+ * @deprecated echatellier 20120106 must be moved to super class : ObjectModelTransformer
*/
+ @Deprecated
public ObjectModelClass cloneClass(ObjectModelClass source,
boolean cloneDocumentation) {
ObjectModelClass outputClass =
@@ -192,7 +195,10 @@
* @param source the classifier to clone from the source model
* @param cloneDocumentation flag to add documentation if some found in model
* @return the clone of the given classifier
+ *
+ * @deprecated echatellier 20120106 must be moved to super class : ObjectModelTransformer
*/
+ @Deprecated
public ObjectModelClassifier cloneClassifier(ObjectModelClassifier source,
boolean cloneDocumentation) {
ObjectModelClassifier clone = null;
@@ -217,7 +223,10 @@
* @param source the interface to clone from the source model
* @param cloneDocumentation flag to add documentation if some found in model
* @return the clone of the given interface
+ *
+ * @deprecated echatellier 20120106 must be moved to super class : ObjectModelTransformer
*/
+ @Deprecated
public ObjectModelInterface cloneInterface(ObjectModelInterface source,
boolean cloneDocumentation) {
ObjectModelInterface outputInterface =
@@ -237,7 +246,10 @@
* @param source the enumeration to clone from the source model
* @param cloneDocumentation flag to add documentation if some found in model
* @return the clone of the given enumeration
+ *
+ * @deprecated echatellier 20120106 must be moved to super class : ObjectModelTransformer
*/
+ @Deprecated
public ObjectModelEnumeration cloneEnumeration(ObjectModelEnumeration source,
boolean cloneDocumentation) {
ObjectModelEnumeration outputEnumeration =
@@ -263,7 +275,10 @@
* @param source the classifier to clone from the source model
* @param destination where to clone the given source one
* @param copyDocumentation flag to add documentation if some found in model
+ *
+ * @deprecated echatellier 20120106 must be moved to super class : ObjectModelTransformer
*/
+ @Deprecated
protected void cloneClassifier(ObjectModelClassifier source,
ObjectModelClassifier destination,
boolean copyDocumentation) {
@@ -295,7 +310,10 @@
* @param cloneDocumentation flag to add documentation if some found in model
* @param modifiers extra modifiers
* @return the new operation created in destination classifier
+ *
+ * @deprecated echatellier 20120106 must be moved to super class : ObjectModelTransformer
*/
+ @Deprecated
public ObjectModelOperation cloneOperation(ObjectModelOperation source,
ObjectModelClassifier destination,
boolean cloneDocumentation,
@@ -327,7 +345,10 @@
*
* @param source the source element
* @param destination the destination element
+ *
+ * @deprecated echatellier 20120106 must be moved to super class : ObjectModelTransformer
*/
+ @Deprecated
protected void cloneTagValues(ObjectModelElement source,
ObjectModelElement destination) {
Map<String, String> tags = source.getTagValues();
@@ -340,7 +361,10 @@
*
* @param source
* @param destination
+ *
+ * @deprecated echatellier 20120106 must be moved to super class : ObjectModelTransformer
*/
+ @Deprecated
protected void cloneStereotypes(ObjectModelClassifier source,
ObjectModelClassifier destination) {
@@ -360,7 +384,10 @@
* @param cloneDocumentation flag to add documentation if some found in model
* @param modifiers extra modifiers
* @return the new operation created in destination classifier
+ *
+ * @deprecated echatellier 20120106 must be moved to super class : ObjectModelTransformer
*/
+ @Deprecated
public ObjectModelOperation cloneOperationSignature(ObjectModelOperation source,
ObjectModelClassifier destination,
boolean cloneDocumentation,
@@ -400,7 +427,10 @@
* @param cloneDocumentation flag to add documentation if some found in model
* @param modifiers extra modifiers
* @return the clone attribute
+ *
+ * @deprecated echatellier 20120106 must be moved to super class : ObjectModelTransformer
*/
+ @Deprecated
protected ObjectModelAttribute cloneAttribute(ObjectModelAttribute source,
ObjectModelClassifier destination,
boolean cloneDocumentation,
1
0