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
- 1653 discussions
08 Apr '11
Author: jcouteau
Date: 2011-04-08 11:43:14 +0200 (Fri, 08 Apr 2011)
New Revision: 766
Url: http://nuiton.org/repositories/revision/wikitty/766
Log:
* Remove Like and Unlike search
* Create False search
* Add tests for each kind of search
* Associated search do not throw exception when nothing found
* All kind of searches now implemented in InMemorySearchEngine
Added:
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/search/operators/False.java
trunk/wikitty-solr-impl/src/test/java/org/nuiton/wikitty/storage/solr/SolrSearch2Test.java
Removed:
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/search/operators/Like.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/search/operators/Unlike.java
Modified:
trunk/src/site/rst/user/generation.rst.vm
trunk/src/site/site_fr.xml
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/search/RestrictionHelper.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/search/Search.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/search/operators/RestrictionName.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/storage/WikittySearchEngineInMemory.java
trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/AbstractSearchTest.java
trunk/wikitty-solr-impl/src/main/java/org/nuiton/wikitty/storage/solr/Restriction2Solr.java
trunk/wikitty-solr-impl/src/main/java/org/nuiton/wikitty/storage/solr/WikittySearchEngineSolr.java
trunk/wikitty-solr-impl/src/test/java/org/nuiton/wikitty/storage/solr/SolrSearchTest.java
Modified: trunk/src/site/rst/user/generation.rst.vm
===================================================================
--- trunk/src/site/rst/user/generation.rst.vm 2011-04-07 15:53:15 UTC (rev 765)
+++ trunk/src/site/rst/user/generation.rst.vm 2011-04-08 09:43:14 UTC (rev 766)
@@ -89,6 +89,13 @@
La génération est effectuée ensuite à chaque fois que vous lancez un build.
+Vous pourriez être étonné que le lien entre vos entités soit représenté par une
+chaîne de caractère. En fait, dans vos entité Wikitty, un lien vers un autre
+Wikitty estreprésenté par son identifiant qui est une chaîne de caractères.
+Ainsi, un getXXXXX vous retournera l'identifiant d'un Wikitty qu'il faudra
+récupérer en passant par le proxy. Vous pouvez alors utiliser le cache pour
+limiter les appels côté serveur.
+
Subtilités de modélisation
==========================
Modified: trunk/src/site/site_fr.xml
===================================================================
--- trunk/src/site/site_fr.xml 2011-04-07 15:53:15 UTC (rev 765)
+++ trunk/src/site/site_fr.xml 2011-04-08 09:43:14 UTC (rev 766)
@@ -59,6 +59,8 @@
<item name="Migration" href="user/migration.html"/>
<item name="Hessian" href="user/hessian.html"/>
<item name="Sécurité" href="user/security.html"/>
+ <item name="Recherche" href="user/search.html"/>
+ <item name="FAQ" href="user/faq.html"/>
</menu>
<menu name="Developpeur">
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/search/RestrictionHelper.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/search/RestrictionHelper.java 2011-04-07 15:53:15 UTC (rev 765)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/search/RestrictionHelper.java 2011-04-08 09:43:14 UTC (rev 766)
@@ -24,18 +24,17 @@
*/
package org.nuiton.wikitty.search;
+import org.nuiton.wikitty.search.operators.False;
import org.nuiton.wikitty.search.operators.RestrictionName;
import org.nuiton.wikitty.search.operators.Restriction;
import org.nuiton.wikitty.search.operators.StartsWith;
import org.nuiton.wikitty.search.operators.Not;
-import org.nuiton.wikitty.search.operators.Like;
import org.nuiton.wikitty.search.operators.EndsWith;
import org.nuiton.wikitty.search.operators.And;
import org.nuiton.wikitty.search.operators.Or;
import org.nuiton.wikitty.search.operators.Less;
import org.nuiton.wikitty.search.operators.Greater;
import org.nuiton.wikitty.search.operators.GreaterOrEqual;
-import org.nuiton.wikitty.search.operators.Unlike;
import org.nuiton.wikitty.search.operators.NotEquals;
import org.nuiton.wikitty.search.operators.LessOrEqual;
import org.nuiton.wikitty.search.operators.Keyword;
@@ -90,24 +89,6 @@
return eq;
}
- public static Restriction like(Element element, String value, Like.SearchAs searchAs) {
- Like like = new Like();
- like.setName(RestrictionName.LIKE);
- like.setElement(element);
- like.setValue(value);
- like.setSearchAs(searchAs);
- return like;
- }
-
- public static Restriction unlike(Element element, String value, Like.SearchAs searchAs) {
- Unlike unlike = new Unlike();
- unlike.setName(RestrictionName.UNLIKE);
- unlike.setElement(element);
- unlike.setValue(value);
- unlike.setSearchAs(searchAs);
- return unlike;
- }
-
public static Restriction neq(Element element, String value) {
NotEquals neq = new NotEquals();
neq.setName(RestrictionName.NOT_EQUALS);
@@ -278,6 +259,12 @@
return isNotNull;
}
+ public static False isFalse() {
+ False falseRestriction = new False();
+ falseRestriction.setName(RestrictionName.FALSE);
+ return falseRestriction;
+ }
+
static ThreadLocal<SimpleDateFormat> myFormats = new ThreadLocal<SimpleDateFormat>() {
@Override
protected SimpleDateFormat initialValue() {
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/search/Search.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/search/Search.java 2011-04-07 15:53:15 UTC (rev 765)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/search/Search.java 2011-04-08 09:43:14 UTC (rev 766)
@@ -25,7 +25,6 @@
package org.nuiton.wikitty.search;
import org.nuiton.wikitty.search.operators.Restriction;
-import org.nuiton.wikitty.search.operators.Like;
import org.nuiton.wikitty.search.operators.SubSearch;
import org.nuiton.wikitty.search.operators.Element;
import java.util.ArrayList;
@@ -159,7 +158,8 @@
* Contains.
*
* @param element
- * @param value
+ * @param value1
+ * @param values
* @return
*/
public Search contains(String element, String value1, String ... values) {
@@ -185,7 +185,8 @@
* Contains.
*
* @param element
- * @param value
+ * @param value1
+ * @param values
* @return
*/
public Search in(String element, String value1, String ... values) {
@@ -209,7 +210,6 @@
/**
* Looking find specific extension
*
- * @param element
* @param value
* @return {@code this}
*/
@@ -221,7 +221,6 @@
/**
* Looking find specific id
*
- * @param element
* @param value
* @return {@code this}
*/
@@ -247,7 +246,6 @@
/**
* Equals each collection elements.
*
- * @param element
* @param values
* @return {@code this}
*/
@@ -259,44 +257,6 @@
}
/**
- * Like.
- *
- * @param element
- * @param value
- * @param searchAs
- * @return {@code this}
- */
- public Search like(String element, String value, Like.SearchAs searchAs) {
- restrictions.add(RestrictionHelper.like(elt(element), value, searchAs));
- return this;
- }
-
- public Search like(String element, String value) {
- restrictions.add(RestrictionHelper.like(
- elt(element), value, Like.SearchAs.AsText));
- return this;
- }
-
- /**
- * Unlike.
- *
- * @param element
- * @param value
- * @param searchAs
- * @return {@code this}
- */
- public Search unlike(String element, String value, Like.SearchAs searchAs) {
- restrictions.add(RestrictionHelper.unlike(elt(element), value, searchAs));
- return this;
- }
-
- public Search unlike(String element, String value) {
- restrictions.add(RestrictionHelper.unlike(
- elt(element), value, Like.SearchAs.AsText));
- return this;
- }
-
- /**
* Not equals.
*
* @param element
@@ -311,7 +271,6 @@
/**
* Not equals.
*
- * @param element
* @param value
* @return {@code this}
*/
@@ -320,10 +279,9 @@
return this;
}
- /**
+ /**
* Not equals.
*
- * @param element
* @param value
* @return {@code this}
*/
@@ -381,11 +339,12 @@
}
/**
- * Between.
+ * Restrict search so that the element value is between lower and upper
+ * values (it can also be equals)
*
- * @param element
- * @param lowerValue
- * @param upperValue
+ * @param element the element you put the restriction on
+ * @param lowerValue the lower bound
+ * @param upperValue the upper bound
* @return {@code this}
*/
public Search bw(String element, String lowerValue, String upperValue) {
@@ -477,6 +436,16 @@
}
/**
+ * False.
+ *
+ * @return {@code this}
+ */
+ public Search isFalse() {
+ restrictions.add(RestrictionHelper.isFalse());
+ return this;
+ }
+
+ /**
* Not (sub query).
*
* @return sub query
Added: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/search/operators/False.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/search/operators/False.java (rev 0)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/search/operators/False.java 2011-04-08 09:43:14 UTC (rev 766)
@@ -0,0 +1,46 @@
+package org.nuiton.wikitty.search.operators;
+
+import java.io.Serializable;
+
+/**
+ * User: couteau
+ * Date: 08/04/11
+ */
+public class False extends Restriction implements Serializable {
+
+ // serialVersionUID is used for serialization.
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * Default constructor
+ */
+ public False() {
+ super();
+ }
+
+ /**
+ * Equality test based attributes values
+ *
+ * @param other Value to compare
+ */
+ public boolean equals(Object other) {
+ if (this == other) {
+ return true;
+ }
+ if (!(other instanceof False)) {
+ return false;
+ }
+
+ final False falseOther = (False) other;
+
+ return super.equals(falseOther);
+ }
+
+ 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 Greater.class.hashCode();
+ }
+
+}
\ No newline at end of file
Deleted: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/search/operators/Like.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/search/operators/Like.java 2011-04-07 15:53:15 UTC (rev 765)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/search/operators/Like.java 2011-04-08 09:43:14 UTC (rev 766)
@@ -1,58 +0,0 @@
-/*
- * #%L
- * Wikitty :: api
- *
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2009 - 2010 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.search.operators;
-
-import java.io.Serializable;
-
-/**
- * Like is use on String field type, to precise some particularity on search.
- *
- * @author ruchaud
- * @version $Revision$
- *
- * Last update: $Date$
- * by : $Author$
- */
-public class Like extends BinaryOperator implements Serializable {
-
- // serialVersionUID is used for serialization.
- private static final long serialVersionUID = 1L;
-
- public enum SearchAs {AsText, ToLowerCase};
- protected SearchAs searchAs;
-
- public Like() {
- }
-
- public SearchAs getSearchAs() {
- return searchAs;
- }
-
- public void setSearchAs(SearchAs searchAs) {
- this.searchAs = searchAs;
- }
-
-}
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/search/operators/RestrictionName.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/search/operators/RestrictionName.java 2011-04-07 15:53:15 UTC (rev 765)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/search/operators/RestrictionName.java 2011-04-08 09:43:14 UTC (rev 766)
@@ -32,8 +32,6 @@
*/
public enum RestrictionName {
EQUALS,
- LIKE,
- UNLIKE,
NOT_EQUALS,
LESS,
LESS_OR_EQUAL,
Deleted: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/search/operators/Unlike.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/search/operators/Unlike.java 2011-04-07 15:53:15 UTC (rev 765)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/search/operators/Unlike.java 2011-04-08 09:43:14 UTC (rev 766)
@@ -1,59 +0,0 @@
-/*
- * #%L
- * Wikitty :: api
- *
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2009 - 2010 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.search.operators;
-
-import java.io.Serializable;
-
-import org.nuiton.wikitty.search.operators.Like.SearchAs;
-
-/**
- * UnLike is use on String field type, to precise some particularity on search
- * (case insensitive for example).
- *
- * @author martel
- * @version $Revision$
- *
- * Last update: $Date$
- * by : $Author$
- */
-public class Unlike extends BinaryOperator implements Serializable {
-
- // serialVersionUID is used for serialization.
- private static final long serialVersionUID = 1L;
-
- protected SearchAs searchAs;
-
- public Unlike() {
- }
-
- public SearchAs getSearchAs() {
- return searchAs;
- }
-
- public void setSearchAs(SearchAs searchAs) {
- this.searchAs = searchAs;
- }
-
-}
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 2011-04-07 15:53:15 UTC (rev 765)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/storage/WikittySearchEngineInMemory.java 2011-04-08 09:43:14 UTC (rev 766)
@@ -24,12 +24,17 @@
*/
package org.nuiton.wikitty.storage;
+import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
import java.util.Map.Entry;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
import org.nuiton.wikitty.WikittyException;
+import org.nuiton.wikitty.WikittyUtil;
import org.nuiton.wikitty.entities.FieldType;
import org.nuiton.wikitty.entities.FieldType.TYPE;
import org.nuiton.wikitty.entities.Wikitty;
@@ -38,9 +43,17 @@
import org.nuiton.wikitty.search.TreeNodeResult;
import org.nuiton.wikitty.search.operators.And;
import org.nuiton.wikitty.search.operators.AssociatedRestriction;
+import org.nuiton.wikitty.search.operators.Between;
import org.nuiton.wikitty.search.operators.BinaryOperator;
+import org.nuiton.wikitty.search.operators.Contains;
import org.nuiton.wikitty.search.operators.Element;
+import org.nuiton.wikitty.search.operators.In;
+import org.nuiton.wikitty.search.operators.Keyword;
+import org.nuiton.wikitty.search.operators.Not;
+import org.nuiton.wikitty.search.operators.Null;
+import org.nuiton.wikitty.search.operators.Or;
import org.nuiton.wikitty.search.operators.Restriction;
+import org.nuiton.wikitty.search.operators.RestrictionName;
import org.nuiton.wikitty.services.WikittyTransaction;
public class WikittySearchEngineInMemory implements WikittySearchEngine {
@@ -72,19 +85,52 @@
Restriction restriction, Wikitty w) {
if (restriction instanceof BinaryOperator) {
BinaryOperator binOp = (BinaryOperator) restriction;
- if (binOp.getElement().getName().equals(Element.ELT_EXTENSION)) {
- return w.hasExtension(binOp.getValue());
- }
+
String fqfieldName = binOp.getElement().getName();
+
+ //Checks on extensions
if (Element.ELT_EXTENSION.equals(fqfieldName)) {
- return true;
+ boolean checked = false;
+
+ switch (restriction.getName()) {
+ case NOT_EQUALS:
+ checked = !w.getExtensionNames().contains(binOp.getValue());
+ break;
+ case EQUALS:
+ checked = w.getExtensionNames().contains(binOp.getValue());
+ break;
+ }
+
+ return checked;
+
+ //Checks on id
} else if (Element.ELT_ID.equals(fqfieldName)) {
- return w.getId().equals(binOp.getValue());
- } // si les wikitty n'ont meme pas l'extension concerné
+
+ boolean checked = false;
+
+ switch (restriction.getName()) {
+ case NOT_EQUALS:
+ checked = !w.getId().equals(binOp.getValue());
+ break;
+ case EQUALS:
+ checked = w.getId().equals(binOp.getValue());
+ break;
+ }
+
+ return checked;
+ }
+
+ // si les wikitty n'ont meme pas l'extension concerné
// Le check restriction, ne doit pas tester les champs
// si les wikitty n'ont meme pas l'extension concerné
String[] extName = fqfieldName.split("\\.");
if (!w.hasField(extName[0], extName[1])) {
+
+ //return true in case of not equals
+ if (RestrictionName.NOT_EQUALS == restriction.getName()) {
+ return true;
+ }
+
return false;
}
// recupere la valeur dans le wikitty
@@ -104,9 +150,21 @@
}
value = t.getValidValue(value);
boolean checked = false;
+
switch (restriction.getName()) {
case EQUALS:
- checked = value.equals(o);
+ if (value instanceof String && o instanceof String) {
+
+ String pattern = (String)value;
+ pattern = pattern.replace("*","\\p{ASCII}*");
+ pattern = pattern.replace("?","\\p{ASCII}");
+
+ Pattern p = Pattern.compile(pattern);
+ Matcher m = p.matcher((String)o);
+ checked = m.matches();
+ } else {
+ checked = value.equals(o);
+ }
break;
case LESS:
checked = ((Comparable) o).compareTo(value) < 0;
@@ -137,6 +195,86 @@
break;
}
return checked;
+ } else if (restriction instanceof Null) {
+ Null nullRes = (Null) restriction;
+
+ String fqfieldName = nullRes.getFieldName();
+
+ //check my wikitty got the right extension before doing anything.
+ String[] extName = fqfieldName.split("\\.");
+ if (!w.hasField(extName[0], extName[1])) {
+ return false;
+ }
+ // get the value in the wikitty
+ Object o = w.getFqField(fqfieldName);
+
+ //No null on extensions, always return false
+ if (fqfieldName.equals(Element.ELT_EXTENSION)) {
+ return false;
+ }
+
+ //No null on ids, always return false
+ if (fqfieldName.equals(Element.ELT_ID)) {
+ return false;
+ }
+
+ boolean checked = false;
+
+ switch (nullRes.getName()) {
+ case IS_NULL:
+ checked = (o == null);
+ break;
+ case IS_NOT_NULL:
+ checked = (o != null);
+ break;
+ }
+
+ return checked;
+
+ } else if (restriction instanceof In) {
+ In in = (In) restriction;
+ String fqfieldName = in.getElement().getName();
+ String testedValue = String.valueOf(w.getFqField(fqfieldName));
+ for (String value : in.getValue()){
+ if (testedValue.equals(value)) {
+ return true;
+ }
+ }
+
+ return false;
+
+ } else if (restriction instanceof Contains) {
+ Contains contains = (Contains) restriction;
+
+ String fqfieldName = contains.getElement().getName();
+ List<String> values = contains.getValue();
+
+ String extension = WikittyUtil.getExtensionNameFromFQFieldName(fqfieldName);
+ String fieldName = WikittyUtil.getFieldNameFromFQFieldName(fqfieldName);
+
+ if (!w.hasField(extension, fieldName)) {
+ return false;
+ }
+
+ // Get field as string and then split it to take into account not
+ // multivalued fields.
+ String testedValuesAsString = w.getFieldAsString(extension, fieldName);
+
+ if('[' == testedValuesAsString.charAt(0)){
+ testedValuesAsString = testedValuesAsString.substring(1, testedValuesAsString.length());
+ }
+
+ List<String> testedValues = Arrays.asList(testedValuesAsString.split(","));
+
+
+ for (Object value : values){
+ if (!testedValues.contains(String.valueOf(value))) {
+ return false;
+ }
+ }
+
+ return true;
+
} else if (restriction instanceof And) {
And and = (And) restriction;
for (Restriction sub : and.getRestrictions()) {
@@ -145,6 +283,30 @@
}
}
return true;
+ } else if (restriction instanceof Or) {
+ Or or = (Or) restriction;
+ for (Restriction sub : or.getRestrictions()) {
+ if (checkRestriction(transaction, sub, w)) {
+ return true;
+ }
+ }
+ return false;
+ } else if (restriction instanceof Keyword) {
+ Keyword keyword = (Keyword) restriction;
+
+ String value = keyword.getValue();
+
+ for(String fieldName : w.getAllFieldNames()) {
+ String testedValue = String.valueOf(w.getFqField(fieldName));
+ if (testedValue.contains(value)) {
+ return true;
+ }
+ }
+ return false;
+ } else if (restriction instanceof Not) {
+ Not or = (Not) restriction;
+ Restriction sub = or.getRestriction();
+ return !checkRestriction(transaction, sub, w);
} else if (restriction instanceof AssociatedRestriction) {
AssociatedRestriction ass = (AssociatedRestriction) restriction;
@@ -172,7 +334,62 @@
//Check that my field is contained in the sub-restriction results.
return associatedList.contains(String.valueOf(o));
- } else {
+ } else if (restriction instanceof Between) {
+
+ Between op = (Between) restriction;
+
+ Object max = op.getMax();
+ Object min = op.getMin();
+
+ //No between on extensions, always return false
+ if (op.getElement().getName().equals(Element.ELT_EXTENSION)) {
+ return false;
+ }
+
+ //No between on ids, always return false
+ if (op.getElement().getName().equals(Element.ELT_ID)) {
+ return false;
+ }
+
+ String fqfieldName = op.getElement().getName();
+
+ // si les wikitty n'ont meme pas l'extension concerné
+ // Le check restriction, ne doit pas tester les champs
+ // si les wikitty n'ont meme pas l'extension concerné
+ String[] extName = fqfieldName.split("\\.");
+ if (!w.hasField(extName[0], extName[1])) {
+ return false;
+ }
+
+ // recupere la valeur dans le wikitty
+ Object o = w.getFqField(fqfieldName);
+
+ // recupere le type de la valeur
+ FieldType t = w.getFieldType(fqfieldName);
+
+ if (!(min instanceof Collection) && t.isCollection()) {
+ // on doit encapsuler dans une collection, car la creation
+ // de la requete ajoute autant de v == o && ... que de valeurs
+ // dans la collection (champs multi-value solr). Mais
+ // dans le inmemory on doit retrouve des collections et non pas
+ // des objets seuls :(
+ min = Collections.singleton(min);
+ }
+ min = t.getValidValue(min);
+
+ if (!(max instanceof Collection) && t.isCollection()) {
+ // on doit encapsuler dans une collection, car la creation
+ // de la requete ajoute autant de v == o && ... que de valeurs
+ // dans la collection (champs multi-value solr). Mais
+ // dans le inmemory on doit retrouve des collections et non pas
+ // des objets seuls :(
+ max = Collections.singleton(max);
+ }
+ max = t.getValidValue(max);
+
+ return ((Comparable) o).compareTo(min) >= 0
+ && ((Comparable) o).compareTo(max) <= 0;
+ } else{
throw new UnsupportedOperationException(restriction.getName() + " Search Not yet implemented");
}
}
Modified: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/AbstractSearchTest.java
===================================================================
--- trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/AbstractSearchTest.java 2011-04-07 15:53:15 UTC (rev 765)
+++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/AbstractSearchTest.java 2011-04-08 09:43:14 UTC (rev 766)
@@ -6,7 +6,6 @@
import org.nuiton.wikitty.WikittyProxy;
import org.nuiton.wikitty.WikittyService;
import org.nuiton.wikitty.entities.ExtensionFactory;
-import org.nuiton.wikitty.entities.FieldFactory;
import org.nuiton.wikitty.entities.FieldType;
import org.nuiton.wikitty.entities.Wikitty;
import org.nuiton.wikitty.entities.WikittyExtension;
@@ -28,6 +27,7 @@
public static final String PRODUCT_CATEGORY = "category";
public static final String CATEGORY_NAME = "name";
public static final String VERSION = "1.0";
+ public static String W_ID ="";
protected WikittyProxy proxy = new WikittyProxy(getWikittyService());
@@ -96,9 +96,411 @@
product3.setField(EXT_PRODUCT, PRODUCT_CATEGORY, category2.getId());
proxy.store(product3);
+ W_ID = product3.getId();
+
}
@Test
+ public void testEq() throws Exception {
+
+ Search query = Search.query().eq("Product.price", "3");
+
+ Criteria eqCriteria = query.criteria();
+
+ PagedResult<Wikitty> results = proxy.findAllByCriteria(eqCriteria);
+
+ Assert.assertEquals(1, results.getAll().size());
+
+ Wikitty resultW = results.getFirst();
+
+ Assert.assertEquals("Screwdriver", resultW.getFieldAsString(EXT_PRODUCT,
+ PRODUCT_NAME));
+ Assert.assertEquals(3, resultW.getFieldAsInt(EXT_PRODUCT,
+ PRODUCT_PRICE));
+
+
+ //Test using pattern matching
+ Search query2 = Search.query().eq("Product.name", "*dri*");
+
+ Criteria eqCriteria2 = query2.criteria();
+
+ PagedResult<Wikitty> results2 = proxy.findAllByCriteria(eqCriteria2);
+
+ Assert.assertEquals(1, results2.getAll().size());
+
+ Wikitty resultW2 = results.getFirst();
+
+ Assert.assertEquals("Screwdriver", resultW2.getFieldAsString(EXT_PRODUCT,
+ PRODUCT_NAME));
+ Assert.assertEquals(3, resultW2.getFieldAsInt(EXT_PRODUCT,
+ PRODUCT_PRICE));
+
+ //Test using pattern matching
+ Search query3 = Search.query().eq("Product.name", "*dri?er");
+
+ Criteria eqCriteria3 = query3.criteria();
+
+ PagedResult<Wikitty> results3 = proxy.findAllByCriteria(eqCriteria3);
+
+ Assert.assertEquals(1, results3.getAll().size());
+
+ Wikitty resultW3 = results.getFirst();
+
+ Assert.assertEquals("Screwdriver", resultW3.getFieldAsString(EXT_PRODUCT,
+ PRODUCT_NAME));
+ Assert.assertEquals(3, resultW3.getFieldAsInt(EXT_PRODUCT,
+ PRODUCT_PRICE));
+ }
+
+ @Test
+ public void testNeq() throws Exception {
+ Search query = Search.query().neq("Product.price", "3");
+
+ Criteria neqCriteria = query.criteria();
+
+ PagedResult<Wikitty> results = proxy.findAllByCriteria(neqCriteria);
+
+ Assert.assertEquals(4, results.getAll().size());
+
+ }
+
+ @Test
+ public void testBw() throws Exception {
+
+ Search query = Search.query().bw("Product.price", "3", "5");
+
+ Criteria bwCriteria = query.criteria();
+
+ PagedResult<Wikitty> results = proxy.findAllByCriteria(bwCriteria);
+
+ Assert.assertEquals(1, results.getAll().size());
+
+ Wikitty resultW = results.getFirst();
+
+ Assert.assertEquals("Screwdriver", resultW.getFieldAsString(EXT_PRODUCT,
+ PRODUCT_NAME));
+ Assert.assertEquals(3, resultW.getFieldAsInt(EXT_PRODUCT,
+ PRODUCT_PRICE));
+ }
+
+ @Test
+ public void testLt() throws Exception {
+
+ Search query = Search.query().lt("Product.price", "20");
+
+ Criteria bwCriteria = query.criteria();
+
+ PagedResult<Wikitty> results = proxy.findAllByCriteria(bwCriteria);
+
+ Assert.assertEquals(1, results.getAll().size());
+
+ Wikitty resultW = results.getFirst();
+
+ Assert.assertEquals("Screwdriver", resultW.getFieldAsString(EXT_PRODUCT,
+ PRODUCT_NAME));
+ Assert.assertEquals(3, resultW.getFieldAsInt(EXT_PRODUCT,
+ PRODUCT_PRICE));
+
+ }
+
+ @Test
+ public void testLe() throws Exception {
+
+ Search query = Search.query().le("Product.price", "20");
+
+ Criteria bwCriteria = query.criteria();
+
+ PagedResult<Wikitty> results = proxy.findAllByCriteria(bwCriteria);
+
+ Assert.assertEquals(2, results.getAll().size());
+ }
+
+ @Test
+ public void testGt() throws Exception {
+
+ Search query = Search.query().gt("Product.price", "20");
+
+ Criteria bwCriteria = query.criteria();
+
+ PagedResult<Wikitty> results = proxy.findAllByCriteria(bwCriteria);
+
+ Assert.assertEquals(1, results.getAll().size());
+
+ Wikitty resultW = results.getFirst();
+
+ Assert.assertEquals("Paint Blue", resultW.getFieldAsString(EXT_PRODUCT,
+ PRODUCT_NAME));
+ Assert.assertEquals(22, resultW.getFieldAsInt(EXT_PRODUCT,
+ PRODUCT_PRICE));
+
+ }
+
+ @Test
+ public void testGe() throws Exception {
+
+ Search query = Search.query().ge("Product.price", "20");
+
+ Criteria bwCriteria = query.criteria();
+
+ PagedResult<Wikitty> results = proxy.findAllByCriteria(bwCriteria);
+
+ Assert.assertEquals(2, results.getAll().size());
+
+ }
+
+ @Test
+ public void testContains() throws Exception {
+
+ Search query = Search.query().contains("Product.price", "3");
+
+ Criteria inCriteria = query.criteria();
+
+ PagedResult<Wikitty> results = proxy.findAllByCriteria(inCriteria);
+
+ Assert.assertEquals(1, results.getAll().size());
+
+ Wikitty resultW = results.getFirst();
+
+ Assert.assertEquals("Screwdriver", resultW.getFieldAsString(EXT_PRODUCT,
+ PRODUCT_NAME));
+ Assert.assertEquals(3, resultW.getFieldAsInt(EXT_PRODUCT,
+ PRODUCT_PRICE));
+
+ //TODO JC-07-04-2011 do a test with multi-valued field
+
+ }
+
+ @Test
+ public void testIn() throws Exception {
+
+ Search query = Search.query().in("Product.price","1","2","3","4","5");
+
+ Criteria inCriteria = query.criteria();
+
+ PagedResult<Wikitty> results = proxy.findAllByCriteria(inCriteria);
+
+ Assert.assertEquals(1, results.getAll().size());
+
+ Wikitty resultW = results.getFirst();
+
+ Assert.assertEquals("Screwdriver", resultW.getFieldAsString(EXT_PRODUCT,
+ PRODUCT_NAME));
+ Assert.assertEquals(3, resultW.getFieldAsInt(EXT_PRODUCT,
+ PRODUCT_PRICE));
+ }
+
+ @Test
+ public void testExteq() throws Exception {
+ Search query = Search.query().exteq(EXT_PRODUCT);
+
+ Criteria exteqCriteria = query.criteria();
+
+ PagedResult<Wikitty> results = proxy.findAllByCriteria(exteqCriteria);
+
+ Assert.assertEquals(3, results.getAll().size());
+ }
+
+ @Test
+ public void testExtneq() throws Exception {
+ Search query = Search.query().extneq(EXT_PRODUCT);
+
+ Criteria extneqCriteria = query.criteria();
+
+ PagedResult<Wikitty> results = proxy.findAllByCriteria(extneqCriteria);
+
+ Assert.assertEquals(2, results.getAll().size());
+
+ }
+
+ @Test
+ public void testIdeq() throws Exception {
+ Search query = Search.query().ideq(W_ID);
+
+ Criteria ideqCriteria = query.criteria();
+
+ PagedResult<Wikitty> results = proxy.findAllByCriteria(ideqCriteria);
+
+ Assert.assertEquals(1, results.getAll().size());
+
+ Wikitty resultW = results.getFirst();
+
+ Assert.assertEquals("Paint Blue", resultW.getFieldAsString(EXT_PRODUCT,
+ PRODUCT_NAME));
+ Assert.assertEquals(22, resultW.getFieldAsInt(EXT_PRODUCT,
+ PRODUCT_PRICE));
+
+ }
+
+ @Test
+ public void testIdneq() throws Exception {
+
+ Search query = Search.query().idneq(W_ID);
+
+ Criteria idneqCriteria = query.criteria();
+
+ PagedResult<Wikitty> results = proxy.findAllByCriteria(idneqCriteria);
+
+ Assert.assertEquals(4, results.getAll().size());
+ }
+
+ @Test
+ public void testUnlike() throws Exception {
+ /*Search query = Search.query().unlike("Product.name", "*dri*");
+
+ Criteria likeCriteria = query.criteria();
+
+ PagedResult<Wikitty> results = proxy.findAllByCriteria(likeCriteria);
+
+ Assert.assertEquals(4, results.getAll().size());*/
+ }
+
+ @Test
+ public void testSw() throws Exception {
+ Search query = Search.query().sw("Product.name", "Scre");
+
+ Criteria swCriteria = query.criteria();
+
+ PagedResult<Wikitty> results = proxy.findAllByCriteria(swCriteria);
+
+ Assert.assertEquals(1, results.getAll().size());
+
+ Wikitty resultW = results.getFirst();
+
+ Assert.assertEquals("Screwdriver", resultW.getFieldAsString(EXT_PRODUCT,
+ PRODUCT_NAME));
+ Assert.assertEquals(3, resultW.getFieldAsInt(EXT_PRODUCT,
+ PRODUCT_PRICE));
+
+ }
+
+ @Test
+ public void testNsw() throws Exception {
+
+ Search query = Search.query().nsw("Product.name", "Scre");
+
+ Criteria nswCriteria = query.criteria();
+
+ PagedResult<Wikitty> results = proxy.findAllByCriteria(nswCriteria);
+
+ Assert.assertEquals(4, results.getAll().size());
+ }
+
+ @Test
+ public void testEw() throws Exception {
+
+ Search query = Search.query().ew("Product.name", "ver");
+
+ Criteria ewCriteria = query.criteria();
+
+ PagedResult<Wikitty> results = proxy.findAllByCriteria(ewCriteria);
+
+ Assert.assertEquals(1, results.getAll().size());
+
+ Wikitty resultW = results.getFirst();
+
+ Assert.assertEquals("Screwdriver", resultW.getFieldAsString(EXT_PRODUCT,
+ PRODUCT_NAME));
+ Assert.assertEquals(3, resultW.getFieldAsInt(EXT_PRODUCT,
+ PRODUCT_PRICE));
+
+ }
+
+ @Test
+ public void testNotew() throws Exception {
+
+ Search query = Search.query().notew("Product.name", "ver");
+
+ Criteria notewCriteria = query.criteria();
+
+ PagedResult<Wikitty> results = proxy.findAllByCriteria(notewCriteria);
+
+ Assert.assertEquals(4, results.getAll().size());
+
+ }
+
+ @Test
+ public void testKeyword() throws Exception {
+
+ Search query = Search.query().keyword("Paint");
+
+ Criteria keywordCriteria = query.criteria();
+
+ PagedResult<Wikitty> results = proxy.findAllByCriteria(keywordCriteria);
+
+ Assert.assertEquals(2, results.getAll().size());
+
+ }
+
+ @Test
+ public void testIsNull() throws Exception {
+
+ Search query = Search.query().isNull("Product.name");
+
+ Criteria isNull = query.criteria();
+
+ PagedResult<Wikitty> results = proxy.findAllByCriteria(isNull);
+
+ Assert.assertEquals(0, results.getAll().size());
+
+ }
+
+ @Test
+ public void testIsNotNull() throws Exception {
+
+ Search query = Search.query().isNotNull("Product.name");
+
+ Criteria isNotNull = query.criteria();
+
+ PagedResult<Wikitty> results = proxy.findAllByCriteria(isNotNull);
+
+ Assert.assertEquals(3, results.getAll().size());
+
+ }
+
+ @Test
+ public void testAnd() throws Exception {
+
+ Search query = Search.query().and().bw("Product.price", "15", "25")
+ .sw("Product.name", "Paint");
+
+ Criteria andCriteria = query.criteria();
+
+ PagedResult<Wikitty> results = proxy.findAllByCriteria(andCriteria);
+
+ Assert.assertEquals(2, results.getAll().size());
+
+ }
+
+ @Test
+ public void testOr() throws Exception {
+
+ Search query = Search.query();
+
+ query.or().gt("Product.price", "20").sw("Product.name", "Screw");
+
+ Criteria bwCriteria = query.criteria();
+
+ PagedResult<Wikitty> results = proxy.findAllByCriteria(bwCriteria);
+
+ Assert.assertEquals(2, results.getAll().size());
+
+ }
+
+ @Test
+ public void testNot() throws Exception {
+
+ Search query = Search.query();
+
+ query.not().ge("Product.price", "20");
+
+ Criteria bwCriteria = query.criteria();
+
+ PagedResult<Wikitty> results = proxy.findAllByCriteria(bwCriteria);
+
+ Assert.assertEquals(3, results.getAll().size());
+ }
+
+ @Test
public void testAssociated() throws Exception {
/* Following request mean is :
@@ -108,12 +510,10 @@
*/
Search query = Search.query().bw("Product.price", "15", "25")
- .sw("Product.name", "Paint");
-
- Search associatedSearch = query.associated("Product.category")
+ .sw("Product.name", "Paint").associated("Product.category")
.eq("Category.name", "Hardware");
- Criteria associatedCriteria = associatedSearch.criteria();
+ Criteria associatedCriteria = query.criteria();
PagedResult<Wikitty> results = proxy.findAllByCriteria(associatedCriteria);
@@ -123,7 +523,27 @@
Assert.assertEquals("Paint", resultW.getFieldAsString(EXT_PRODUCT, PRODUCT_NAME));
Assert.assertEquals(20, resultW.getFieldAsInt(EXT_PRODUCT, PRODUCT_PRICE));
+
+
+
+ //Test with an associated search that returns nothing
+ query = Search.query().bw("Product.price", "15", "25")
+ .sw("Product.name", "Paint").associated("Product.category")
+ .eq("Category.name", "don't return anything");
+
+ associatedCriteria = query.criteria();
+
+ results = proxy.findAllByCriteria(associatedCriteria);
+
+ Assert.assertEquals(0, results.getAll().size());
}
+ @Test
+ public void testComplexQueries() throws Exception {
+ //TODO JC-07-04-2011 Write test
+ }
+
+ //TODO JC-07-04-2011 Write test on sortBy, facets, and with other types (date,...)
+
public abstract WikittyService getWikittyService();
}
Modified: trunk/wikitty-solr-impl/src/main/java/org/nuiton/wikitty/storage/solr/Restriction2Solr.java
===================================================================
--- trunk/wikitty-solr-impl/src/main/java/org/nuiton/wikitty/storage/solr/Restriction2Solr.java 2011-04-07 15:53:15 UTC (rev 765)
+++ trunk/wikitty-solr-impl/src/main/java/org/nuiton/wikitty/storage/solr/Restriction2Solr.java 2011-04-08 09:43:14 UTC (rev 766)
@@ -49,15 +49,12 @@
import org.nuiton.wikitty.search.operators.Keyword;
import org.nuiton.wikitty.search.operators.Less;
import org.nuiton.wikitty.search.operators.LessOrEqual;
-import org.nuiton.wikitty.search.operators.Like;
import org.nuiton.wikitty.search.operators.Not;
import org.nuiton.wikitty.search.operators.NotEquals;
import org.nuiton.wikitty.search.operators.Or;
import org.nuiton.wikitty.search.operators.Restriction;
import org.nuiton.wikitty.search.RestrictionHelper;
import org.nuiton.wikitty.search.operators.StartsWith;
-import org.nuiton.wikitty.search.operators.Unlike;
-import org.nuiton.wikitty.search.operators.Like.SearchAs;
import org.nuiton.wikitty.search.operators.Null;
/**
@@ -94,9 +91,9 @@
this.fieldModifer = fieldModifer;
}
- public String toSolr(Restriction restriction) {
+ /*public String toSolr(Restriction restriction) {
return toSolr(restriction, null);
- }
+ }*/
public String toSolr(Restriction restriction, SolrServer solr)
throws WikittyException {
@@ -108,22 +105,16 @@
return false2solr();
case NOT:
Not not = (Not) restriction;
- return not2solr(not);
+ return not2solr(not, solr);
case AND:
And and = (And) restriction;
- return and2solr(and);
+ return and2solr(and, solr);
case OR:
Or or = (Or) restriction;
- return or2solr(or);
+ return or2solr(or, solr);
case EQUALS:
Equals eq = (Equals) restriction;
return eq2solr(eq);
- case LIKE:
- Like like = (Like) restriction;
- return like2solr(like);
- case UNLIKE:
- Unlike unlike = (Unlike) restriction;
- return unlike2solr(unlike);
case NOT_EQUALS:
NotEquals neq = (NotEquals) restriction;
return neq2solr(neq);
@@ -199,7 +190,7 @@
}
private String associated2solr(AssociatedRestriction associated, SolrServer solr) throws WikittyException {
- String subQuery = toSolr( associated.getRestriction() );
+ String subQuery = toSolr( associated.getRestriction(), solr);
SolrQuery query = new SolrQuery(WikittySolrConstant.SOLR_QUERY_PARSER + subQuery);
query.setRows(MAX_SUBQUERY_RESULT);
QueryResponse resp = null;
@@ -210,12 +201,11 @@
}
SolrDocumentList solrResults = resp.getResults();
- Restriction generatedRestriction = null;
+ Restriction generatedRestriction;
long size = solrResults.size();
if ( size == 0 ) {
- throw new WikittyException("Associated " + associated.getElement().getName() + " do not retrieved any result");
- }
- if ( size == 1 ) {
+ generatedRestriction = RestrictionHelper.isFalse();
+ } else if ( size == 1 ) {
generatedRestriction = RestrictionHelper.eq( associated.getElement(),
(String) solrResults.get(0).getFieldValue(WikittySolrConstant.SOLR_ID) );
} else {
@@ -234,17 +224,17 @@
} else {
and = RestrictionHelper.and( Arrays.asList(new Restriction[]{ associated.getParentRestrictionDto(), generatedRestriction }) );
}
- return toSolr(and);
+ return toSolr(and, solr);
}
- private String not2solr(Not not) throws WikittyException {
+ private String not2solr(Not not, SolrServer solr) throws WikittyException {
if (not.getRestriction() == null) {
throw new WikittyException( "not.restriction" );
}
- return "( *:* - " + toSolr(not.getRestriction()) + " )";
+ return "( *:* - " + toSolr(not.getRestriction(), solr) + " )";
}
- private String and2solr(And and) throws WikittyException {
+ private String and2solr(And and, SolrServer solr) throws WikittyException {
if (and.getRestrictions() == null) {
throw new WikittyException( "and.restrictions is null" );
}
@@ -255,16 +245,16 @@
StringBuffer result = new StringBuffer();
for (Restriction restriction : and.getRestrictions()) {
if (first) {
- result.append("( ").append(toSolr(restriction));
+ result.append("( ").append(toSolr(restriction, solr));
first = false;
} else {
- result.append(" AND ").append(toSolr(restriction));
+ result.append(" AND ").append(toSolr(restriction, solr));
}
}
return result.append(" )").toString();
}
- private String or2solr(Or or) throws WikittyException {
+ private String or2solr(Or or, SolrServer solr) throws WikittyException {
if (or.getRestrictions() == null) {
throw new WikittyException("or.restrictions is null");
}
@@ -280,7 +270,7 @@
} else {
result.append(" OR ");
}
- result.append(toSolr(restriction));
+ result.append(toSolr(restriction, solr));
}
return result.append(" )").toString();
}
@@ -289,54 +279,6 @@
return element2solr(eq.getElement()) + ":" + value2solr(eq.getValue());
}
- private String like2solr(Like like) throws WikittyException {
- SearchAs searchAs = like.getSearchAs();
- String element2solr = element2solr(like.getElement());
- if(element2solr.endsWith(WikittySolrConstant.SUFFIX_STRING)) { // is string
- switch(searchAs) {
- case AsText:
- element2solr += WikittySolrConstant.SUFFIX_STRING_FULLTEXT;
- break;
- case ToLowerCase:
- element2solr += WikittySolrConstant.SUFFIX_STRING_LOWERCASE;
- break;
- }
- }
-
- // Warning if you need add searchAs, AsText and ToLowerCase need search
- // at lowercase
- String value2solr = value2solr(like.getValue());
- if(!element2solr.endsWith(WikittySolrConstant.SUFFIX_DATE)) { // is not date
- value2solr = value2solr.toLowerCase();
- }
-
- return element2solr + ":" + value2solr;
- }
-
- private String unlike2solr(Unlike unlike) throws WikittyException {
- SearchAs searchAs = unlike.getSearchAs();
- String element2solr = element2solr(unlike.getElement());
- if(element2solr.endsWith(WikittySolrConstant.SUFFIX_STRING)) { // is string
- switch(searchAs) {
- case AsText:
- element2solr += WikittySolrConstant.SUFFIX_STRING_FULLTEXT;
- break;
- case ToLowerCase:
- element2solr += WikittySolrConstant.SUFFIX_STRING_LOWERCASE;
- break;
- }
- }
-
- // Warning if you need add searchAs, AsText and ToLowerCase need search
- // at lowercase
- String value2solr = value2solr(unlike.getValue());
- if(!element2solr.endsWith(WikittySolrConstant.SUFFIX_DATE)) { // is not date
- value2solr = value2solr.toLowerCase();
- }
-
- return "-" + element2solr + ":" + value2solr;
- }
-
private String neq2solr(NotEquals neq)
throws WikittyException {
return "-" + element2solr(neq.getElement()) + ":"
Modified: trunk/wikitty-solr-impl/src/main/java/org/nuiton/wikitty/storage/solr/WikittySearchEngineSolr.java
===================================================================
--- trunk/wikitty-solr-impl/src/main/java/org/nuiton/wikitty/storage/solr/WikittySearchEngineSolr.java 2011-04-07 15:53:15 UTC (rev 765)
+++ trunk/wikitty-solr-impl/src/main/java/org/nuiton/wikitty/storage/solr/WikittySearchEngineSolr.java 2011-04-08 09:43:14 UTC (rev 766)
@@ -695,7 +695,7 @@
if (facetCriteria != null) {
for (Criteria facet : facetCriteria) {
String queryFacet =
- restriction2Solr.toSolr(facet.getRestriction());
+ restriction2Solr.toSolr(facet.getRestriction(), solrServer);
facetQueryToName.put(queryFacet, facet.getName());
query.addFacetQuery(queryFacet);
}
Added: trunk/wikitty-solr-impl/src/test/java/org/nuiton/wikitty/storage/solr/SolrSearch2Test.java
===================================================================
--- trunk/wikitty-solr-impl/src/test/java/org/nuiton/wikitty/storage/solr/SolrSearch2Test.java (rev 0)
+++ trunk/wikitty-solr-impl/src/test/java/org/nuiton/wikitty/storage/solr/SolrSearch2Test.java 2011-04-08 09:43:14 UTC (rev 766)
@@ -0,0 +1,27 @@
+package org.nuiton.wikitty.storage.solr;
+
+import org.nuiton.wikitty.WikittyConfig;
+import org.nuiton.wikitty.WikittyService;
+import org.nuiton.wikitty.api.AbstractSearchTest;
+
+/**
+ * User: couteau
+ * Date: 06/04/11
+ */
+public class SolrSearch2Test extends AbstractSearchTest {
+
+ WikittyService service;
+
+ @Override
+ public WikittyService getWikittyService() {
+
+ if (service == null) {
+ WikittyConfig config = new WikittyConfig();
+ service = new WikittyServiceSolr(config);
+ }
+
+ service.clear(null);
+
+ return service;
+ }
+}
\ No newline at end of file
Modified: trunk/wikitty-solr-impl/src/test/java/org/nuiton/wikitty/storage/solr/SolrSearchTest.java
===================================================================
--- trunk/wikitty-solr-impl/src/test/java/org/nuiton/wikitty/storage/solr/SolrSearchTest.java 2011-04-07 15:53:15 UTC (rev 765)
+++ trunk/wikitty-solr-impl/src/test/java/org/nuiton/wikitty/storage/solr/SolrSearchTest.java 2011-04-08 09:43:14 UTC (rev 766)
@@ -49,7 +49,6 @@
import org.nuiton.wikitty.entities.WikittyGroup;
import org.nuiton.wikitty.entities.WikittyGroupImpl;
import org.nuiton.wikitty.search.operators.Element;
-import org.nuiton.wikitty.search.operators.Like.SearchAs;
import org.nuiton.wikitty.search.RestrictionHelper;
import org.nuiton.wikitty.search.Search;
@@ -351,33 +350,6 @@
}
@Test
- public void testSearchNonSensitive() throws Exception {
-
- Criteria criteria = Search.query()
- .like("Test.name_s", "cHaIsE", SearchAs.ToLowerCase)
- .criteria()
- .setFirstIndex(0).setEndIndex(Criteria.ALL_ELEMENTS);
-
- PagedResult<String> result = ws.findAllByCriteria(null, criteria)[0];
- List<String> list = result.getAll();
- assertEquals(1, list.size());
-
- Wikitty w = ws.restore(null, list.get(0));
- assertEquals("chaise", w.getFieldAsString("Test", "name"));
- assertEquals(113311, w.getFieldAsInt("Test", "amount"));
- assertEquals(AbstractTestConformance.parse("26/09/2009"), w.getFieldAsDate("Test", "buildDate"));
-
- criteria = Search.query()
- .unlike("Test.name_s", "cHaIsE", SearchAs.ToLowerCase)
- .criteria()
- .setFirstIndex(0).setEndIndex(Criteria.ALL_ELEMENTS);
-
- result = ws.findAllByCriteria(null, criteria)[0];
- list = result.getAll();
- assertEquals(12, list.size());
- }
-
- @Test
public void testFindAllByExample() throws Exception {
Wikitty example = new WikittyImpl();
example.addExtension(extProduct);
@@ -463,7 +435,7 @@
// on ignore ce test car le like toLowercase devrait disparaitre et pour l'instant il ne marche pas :(
// @Ignore
- @Test
+ /*@Test
public void testLikeSearch() throws Exception {
Criteria criteria = Search.query().like("Category.name", "hArDwArE").criteria();
PagedResult<String> pagedResult = ws.findAllByCriteria(null, criteria)[0];
@@ -487,11 +459,11 @@
criteria = Search.query().like("Test.description", "helped").criteria();
pagedResult = ws.findAllByCriteria(null, criteria)[0];
assertEquals(1, pagedResult.getNumFound());
- }
+ }*/
// on ignore ce test car le like toLowercase devrait disparaitre et pour l'instant il ne marche pas :(
// @Ignore
- @Test
+/* @Test
public void testLikeStrict() throws Exception {
Criteria criteria = Search.query()
@@ -514,7 +486,7 @@
result = ws.findAllByCriteria(null, criteria)[0];
list = result.getAll();
assertEquals(5, list.size());
- }
+ }*/
/** test that doing a search with a date criteria is possible */
@Test
@@ -613,10 +585,10 @@
// avec accent specifiquement sur le champs name
// mais sans accent pour la recherche
// et et majuscule
- Criteria criteria = Search.query().like(
+ /*Criteria criteria = Search.query().like(
WikittyGroup.FQ_FIELD_WIKITTYGROUP_NAME, "CECA").criteria();
PagedResult<String> result = ws.findAllByCriteria(null, criteria)[0];
- Assert.assertEquals(1, result.size());
+ Assert.assertEquals(1, result.size());*/
}
}
}
1
0
r765 - trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication
by mfortun@users.nuiton.org 07 Apr '11
by mfortun@users.nuiton.org 07 Apr '11
07 Apr '11
Author: mfortun
Date: 2011-04-07 17:53:15 +0200 (Thu, 07 Apr 2011)
New Revision: 765
Url: http://nuiton.org/repositories/revision/wikitty/765
Log:
Static before visibility, method for operation delete.
Checkout and import complete with the basics, need to check error case.
Modified:
trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublication.java
Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublication.java
===================================================================
--- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublication.java 2011-04-07 12:29:34 UTC (rev 764)
+++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublication.java 2011-04-07 15:53:15 UTC (rev 765)
@@ -4,51 +4,71 @@
import java.io.FileReader;
import java.io.FileWriter;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
import java.util.Properties;
+
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.nuiton.util.ApplicationConfig;
import org.nuiton.util.ArgumentsParserException;
+import org.nuiton.util.StringUtil;
import org.nuiton.wikitty.WikittyProxy;
import org.nuiton.wikitty.entities.Wikitty;
import org.nuiton.wikitty.entities.WikittyLabel;
import org.nuiton.wikitty.publication.entities.WikittyPubData;
import org.nuiton.wikitty.publication.entities.WikittyPubText;
import org.nuiton.wikitty.search.Criteria;
-import org.nuiton.wikitty.search.PagedResult;
import org.nuiton.wikitty.search.Search;
-///XXX a faire avec applicationConfig faire des trucs et des machins
-/// objectif mercredi ça affiche les trucs depuis le repo
-/// et ça lit en local aussi
-
public class WikittyPublication {
/** to use log facility, just put in your code: log.info(\"...\"); */
final static private Log log = LogFactory.getLog(WikittyPublication.class);
- protected static WikittyPublicationFileSystem wikittyServiceFileSystem;
- protected static ApplicationConfig applicationConfig;
- protected static WikittyProxy proxyWS;
+ static protected WikittyPublicationFileSystem wikittyServiceFileSystem;
+ static protected ApplicationConfig applicationConfig;
+ static protected WikittyProxy proxyWS;
/*
* static string for allias, wrong named attribut TODO mfortun-2011-04-06
* need to set better name
*/
- public static String WITTY_SERVICE_KEY = "wikitty.service.server.url";
- public static String NO_RECURSION_KEY = "norecursion";
- public static String DIRECTORY_KEY = "directory";
- public static String HESSIAN_PROTOCOL_KEY = "hessian";
+ static public String WITTY_SERVICE_KEY = "wikitty.service.server.url";
+ static public String NO_RECURSION_KEY = "norecursion";
+ static public String DIRECTORY_KEY = "directory";
+ static public String HESSIAN_PROTOCOL_KEY = "hessian";
- public static String PROPERTY_DIRECTORY = ".wp";
- public static String WIKITTYPUBLICATION_PROPERTIES_FILE = "ws.properties";
+ static public String DEFAULT_PROPERTY_NAME_SEP = ".";
+ static public String PROPERTY_DIRECTORY = ".wp";
+ static public String WIKITTYPUBLICATION_PROPERTIES_FILE = "ws.properties";
+
+ /*
+ * Need a different file for id and meta information about wikittiesFiles
+ * because with this solution we can simply read the ids with props.keySet()
+ */
+ static public String WIKITTY_ID_PROPERTIES_FILE = "ids.properties";
+ static public String WIKITTY_FILE_META_PROPERTIES_FILE = "meta.properties";
+
+ /*
+ * in the WIKITTY_FILE_META_PROP ERTIES_FILE the keys for version are:
+ * filename + META_SUFFIX_KEY_VERSION we save the id too because with this
+ * solution un case of delete we can easily read the id and make operation
+ * on the wikitty
+ */
+ static public String META_SUFFIX_KEY_VERSION = "version";
+ static public String META_SUFFIX_KEY_CHECKSUM = "checksum";
+ static public String META_SUFFIX_KEY_ID = "id";
+
+ static public String META_CURRENT_LABEL = "current.label";
+ static public String META_SUB_LABEL = "sub.label";
+
/**
* @param args
* @throws ArgumentsParserException
*/
- public static void main(String[] args) throws Exception {
+ static public void main(String[] args) throws Exception {
/*
*
@@ -132,7 +152,7 @@
/**
* Method that import the content of a directory into a wikitty service
*/
- public static void importToWikitty() throws Exception {
+ static public void importToWikitty() throws Exception {
boolean noRecur = applicationConfig
.getOptionAsBoolean(NO_RECURSION_KEY);
@@ -167,7 +187,7 @@
* TODO mfortun-2011-04-05 just prototyping, remove when really implements
* the method linked: importToWikitty
*/
- public static void printDirectory(File dir, boolean recur) {
+ static public void printDirectory(File dir, boolean recur) {
System.out.println("<dir " + dir.getName() + ">");
for (File child : dir.listFiles()) {
@@ -191,7 +211,7 @@
* boolean id the directory have to be harvest
* @return list of harvested file
*/
- protected static List<File> listFile(File starts, boolean recursivly) {
+ static protected List<File> listFile(File starts, boolean recursivly) {
ArrayList<File> result = new ArrayList<File>();
result.add(starts);
for (File child : starts.listFiles()) {
@@ -210,7 +230,7 @@
* Method that checkout a label recursivly or not into a local directory
* from a wikitty service
*/
- public static void checkoutFromWikitty(String label) throws Exception {
+ static public void checkoutFromWikitty(String label) throws Exception {
boolean noRecur = applicationConfig
.getOptionAsBoolean(NO_RECURSION_KEY);
@@ -296,7 +316,7 @@
/**
* Relocate the default url of the wikitty service
*/
- public static void relocateWikitty() throws Exception {
+ static public void relocateWikitty() throws Exception {
/*
* log.info("checkout : wikittyservice: " + wikittyService +
@@ -349,12 +369,6 @@
props.store(new FileWriter(propertiesFile), "");
/*
- * Properties props=new Properties(); props.load(new FileReader(new
- * File("/home/Manou/temp.properties")));
- * applicationConfig.setOptions(props);
- */
-
- /*
* on va commencer par vérifier les arguments ''wp relocate [nouvelle
* url du WikittyService par defaut] [directory a relocaliser]'' on doit
* avoir trois string dans le unparsed: url et directory
@@ -365,7 +379,7 @@
/**
* commit the current wikittyworkspace into a wikitty service
*/
- public static void commitToWikitty() throws Exception {
+ static public void commitToWikitty() throws Exception {
File dir = applicationConfig.getOptionAsFile(DIRECTORY_KEY);
@@ -451,7 +465,7 @@
*
* @throws Exception
*/
- public static void deleteFromWikitty(File toDelete) throws Exception {
+ static public void deleteFromWikitty(File toDelete) throws Exception {
// check args
if (null == toDelete || !toDelete.exists()) {
@@ -518,7 +532,7 @@
/**
* update the current workspace from a wikitty
*/
- public static void updateFromWikitty() throws Exception {
+ static public void updateFromWikitty() throws Exception {
File dir = applicationConfig.getOptionAsFile(DIRECTORY_KEY);
@@ -583,7 +597,7 @@
* @return File the directory container of the master property file
* @throws Exception
*/
- protected static File searchWikittyPublicationHomeDir(File start)
+ static protected File searchWikittyPublicationHomeDir(File start)
throws Exception {
if (start != null && start.exists() && start.isDirectory()) {
@@ -610,4 +624,69 @@
}
}
+ static protected HashMap<String, String> deleteFile(File toDelete)
+ throws Exception {
+ HashMap<String, String> result = new HashMap<String, String>();
+
+ String pathToProperty = toDelete.getCanonicalFile() + File.separator
+ + PROPERTY_DIRECTORY + File.separator;
+ // load properties files
+ File metaFile = new File(pathToProperty
+ + WIKITTY_FILE_META_PROPERTIES_FILE);
+ Properties metaProperties = new Properties();
+ metaProperties.load(new FileReader(metaFile));
+
+ File idFile = new File(pathToProperty + WIKITTY_ID_PROPERTIES_FILE);
+ Properties idProperties = new Properties();
+ idProperties.load(new FileReader(idFile));
+
+ if (toDelete.isDirectory()) {
+ for (File child : toDelete.listFiles()) {
+ if (child.isDirectory()
+ && !child.getName().equals(PROPERTY_DIRECTORY)) {
+ result.putAll(deleteFile(child));
+ }
+ }
+ // remove label from current label list
+ /*
+ * TODO mfortun-2011-04-07 it's ugly change this, if we keep the
+ * property linked
+ */
+ String[] currents = StringUtil.split(
+ metaProperties.getProperty(META_SUB_LABEL), ",");
+ ArrayList<String> subLabel = new ArrayList<String>();
+ for (String sub : currents) {
+ if (!sub.endsWith(toDelete.getName())) {
+ subLabel.add(sub);
+ }
+ }
+ String subLabelResult = StringUtil.join(subLabel, ",", true);
+ metaProperties.put(META_SUB_LABEL, subLabelResult);
+
+ } else {
+
+ String id = metaProperties.getProperty(toDelete.getName()
+ + DEFAULT_PROPERTY_NAME_SEP + META_SUFFIX_KEY_ID);
+ String label = metaProperties.getProperty(META_CURRENT_LABEL);
+
+ result.put(id, label);
+ // remove from properties
+ idProperties.remove(id);
+
+ metaProperties.remove(toDelete.getName()
+ + DEFAULT_PROPERTY_NAME_SEP + META_SUFFIX_KEY_ID);
+ metaProperties.remove(toDelete.getName()
+ + DEFAULT_PROPERTY_NAME_SEP + META_SUFFIX_KEY_CHECKSUM);
+ metaProperties.remove(toDelete.getName()
+ + DEFAULT_PROPERTY_NAME_SEP + META_SUFFIX_KEY_VERSION);
+ }
+
+ metaProperties.store(new FileWriter(metaFile), "");
+ idProperties.store(new FileWriter(idFile), "");
+
+ toDelete.delete();
+ return result;
+
+ }
+
}
1
0
r764 - trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication
by mfortun@users.nuiton.org 07 Apr '11
by mfortun@users.nuiton.org 07 Apr '11
07 Apr '11
Author: mfortun
Date: 2011-04-07 14:29:34 +0200 (Thu, 07 Apr 2011)
New Revision: 764
Url: http://nuiton.org/repositories/revision/wikitty/764
Log:
change protyping code to real method in the 'main' class, add a method in my wikitty service to convert ObjectToWikitty
Modified:
trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublication.java
trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublicationFileSystem.java
Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublication.java
===================================================================
--- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublication.java 2011-04-06 15:52:16 UTC (rev 763)
+++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublication.java 2011-04-07 12:29:34 UTC (rev 764)
@@ -11,6 +11,13 @@
import org.nuiton.util.ApplicationConfig;
import org.nuiton.util.ArgumentsParserException;
import org.nuiton.wikitty.WikittyProxy;
+import org.nuiton.wikitty.entities.Wikitty;
+import org.nuiton.wikitty.entities.WikittyLabel;
+import org.nuiton.wikitty.publication.entities.WikittyPubData;
+import org.nuiton.wikitty.publication.entities.WikittyPubText;
+import org.nuiton.wikitty.search.Criteria;
+import org.nuiton.wikitty.search.PagedResult;
+import org.nuiton.wikitty.search.Search;
///XXX a faire avec applicationConfig faire des trucs et des machins
/// objectif mercredi ça affiche les trucs depuis le repo
@@ -125,7 +132,7 @@
/**
* Method that import the content of a directory into a wikitty service
*/
- public static void importToWikitty() {
+ public static void importToWikitty() throws Exception {
boolean noRecur = applicationConfig
.getOptionAsBoolean(NO_RECURSION_KEY);
@@ -136,21 +143,24 @@
+ noRecur + " directory= " + dir.getAbsolutePath());
// usage: wp --norecursion --ws http://truc.com import --dir /home/Manou
- /*
- * Ici il y aura une moulinette pour la création des wikittys des
- * nouveaux fichiers. Possible de faire la même moulinette au niveau des
- * commits, update et tout ça puisque on pourra faire la différence des
- * fichiers envoyés, déclaré en tant que wikitty et ceux qui éxiste,
- * risque d'avoir une mauvaise cohésion ? cohérence ?
- */
+ // real code:
+ wikittyServiceFileSystem = new WikittyPublicationFileSystem(dir);
+ proxyWS = new WikittyProxy(applicationConfig);
- /*
- * TODO mfortun-2011-04-05 just prototyping, remove when really
- * implements the method
- */
- System.out.println("import :\n");
- printDirectory(dir, !noRecur);
+ // load the list of file
+ List<File> toTransfert = listFile(dir, !noRecur);
+ List<Wikitty> listWikitty = new ArrayList<Wikitty>();
+ // transform file into wikitties
+
+ for (File fileToTransform : toTransfert) {
+ listWikitty.add(wikittyServiceFileSystem
+ .objectToWikitty(fileToTransform));
+ }
+
+ // send the wikitties
+ proxyWS.storeWikitty(listWikitty);
+
}
/*
@@ -200,7 +210,7 @@
* Method that checkout a label recursivly or not into a local directory
* from a wikitty service
*/
- public static void checkoutFromWikitty(String label) {
+ public static void checkoutFromWikitty(String label) throws Exception {
boolean noRecur = applicationConfig
.getOptionAsBoolean(NO_RECURSION_KEY);
@@ -215,7 +225,37 @@
+ "HessianProtocol=" + hessianProtocole);
proxyWS = new WikittyProxy(applicationConfig);
+ wikittyServiceFileSystem = new WikittyPublicationFileSystem(dir);
+ // Construct the criteria
+ Criteria labelCriteria;
+ Search mainRequest = Search.query();
+ Search subRoqu = mainRequest.or();
+
+ // must have the type of wikittypubtext/wikittypubdata
+ subRoqu.exteq(WikittyPubText.EXT_WIKITTYPUBTEXT).exteq(
+ WikittyPubData.EXT_WIKITTYPUBDATA);
+ if (noRecur) {
+ // and extension with the name strictly equals to the label (no
+ // recursivity)
+ labelCriteria = mainRequest.exteq(WikittyLabel.EXT_WIKITTYLABEL)
+ .eq(WikittyLabel.FQ_FIELD_WIKITTYLABEL_LABELS, label)
+ .criteria();
+
+ } else {
+ // and extension with the name that containt the label (recursivity)
+ labelCriteria = mainRequest.exteq(WikittyLabel.EXT_WIKITTYLABEL)
+ .sw(WikittyLabel.FQ_FIELD_WIKITTYLABEL_LABELS, label)
+ .criteria();
+ }
+
+ // request to the proxy
+ List<Wikitty> wikittiesToWrite = proxyWS.findAllByCriteria(
+ labelCriteria).getAll();
+
+ // write the wikities
+ wikittyServiceFileSystem.store("", wikittiesToWrite, true);
+
/*
* obtain the list of wikittypub and write then in the file system with
* the appropriate wikittyservice !
@@ -232,6 +272,17 @@
"org.nuiton.wikitty.services.WikittyServiceCajoClient");
}
+ // create the properties directory
+ File wpDirectory = new File(dir.getCanonicalPath() + File.separator
+ + PROPERTY_DIRECTORY + File.separator);
+ if (!wpDirectory.exists()) {
+ wpDirectory.createNewFile();
+ }
+
+ File propertiesFiles = new File(wpDirectory.getCanonicalPath()
+ + File.separator + WIKITTYPUBLICATION_PROPERTIES_FILE);
+
+ props.store(new FileWriter(propertiesFiles), "");
/*
* on va commencer par vérifier les arguments ''wp checkout
* [--norecursion] [url du WikittyService] [Label à extraire] [directory
Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublicationFileSystem.java
===================================================================
--- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublicationFileSystem.java 2011-04-06 15:52:16 UTC (rev 763)
+++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublicationFileSystem.java 2011-04-07 12:29:34 UTC (rev 764)
@@ -1,5 +1,6 @@
package org.nuiton.wikitty.publication;
+import java.io.File;
import java.util.Collection;
import java.util.List;
@@ -14,19 +15,37 @@
import org.nuiton.wikitty.services.WikittyEvent;
import org.nuiton.wikitty.services.WikittyListener;
-
public class WikittyPublicationFileSystem implements WikittyService {
/** to use log facility, just put in your code: log.info(\"...\"); */
- final static private Log log = LogFactory.getLog(WikittyPublicationFileSystem.class);
+ final static private Log log = LogFactory
+ .getLog(WikittyPublicationFileSystem.class);
+ protected File homeFile;
+
+ /**
+ * Constructor with the working directory
+ * @param home the home directory
+ */
+ public WikittyPublicationFileSystem(File home){
+ this.setHomeFile(home);
+ }
+
+ public File getHomeFile() {
+ return homeFile;
+ }
+ public void setHomeFile(File homeFile) {
+ this.homeFile = homeFile;
+ }
+
+
@Override
public void addWikittyServiceListener(WikittyListener listener,
ServiceListenerType type) {
// TODO mfortun-2011-04-05
throw new UnsupportedOperationException("not yet implemented");
//
-
+
}
@Override
@@ -35,15 +54,15 @@
// TODO mfortun-2011-04-05
throw new UnsupportedOperationException("not yet implemented");
//
-
+
}
@Override
public String login(String login, String password) {
// TODO mfortun-2011-04-05
throw new UnsupportedOperationException("not yet implemented");
- //return null;
-
+ // return null;
+
}
@Override
@@ -51,55 +70,55 @@
// TODO mfortun-2011-04-05
throw new UnsupportedOperationException("not yet implemented");
//
-
+
}
@Override
public WikittyEvent clear(String securityToken) {
// TODO mfortun-2011-04-05
throw new UnsupportedOperationException("not yet implemented");
- //return null;
-
+ // return null;
+
}
@Override
public boolean canWrite(String securityToken, Wikitty wikitty) {
// TODO mfortun-2011-04-05
throw new UnsupportedOperationException("not yet implemented");
- //return false;
-
+ // return false;
+
}
@Override
public boolean canDelete(String securityToken, String wikittyId) {
// TODO mfortun-2011-04-05
throw new UnsupportedOperationException("not yet implemented");
- //return false;
-
+ // return false;
+
}
@Override
public boolean canRead(String securityToken, String wikittyId) {
// TODO mfortun-2011-04-05
throw new UnsupportedOperationException("not yet implemented");
- //return false;
-
+ // return false;
+
}
@Override
public boolean exists(String securityToken, String wikittyId) {
// TODO mfortun-2011-04-05
throw new UnsupportedOperationException("not yet implemented");
- //return false;
-
+ // return false;
+
}
@Override
public boolean isDeleted(String securityToken, String wikittyId) {
// TODO mfortun-2011-04-05
throw new UnsupportedOperationException("not yet implemented");
- //return false;
-
+ // return false;
+
}
@Override
@@ -107,8 +126,8 @@
boolean force) {
// TODO mfortun-2011-04-05
throw new UnsupportedOperationException("not yet implemented");
- //return null;
-
+ // return null;
+
}
@Override
@@ -116,16 +135,16 @@
Collection<Wikitty> wikitties, boolean force) {
// TODO mfortun-2011-04-05
throw new UnsupportedOperationException("not yet implemented");
- //return null;
-
+ // return null;
+
}
@Override
public List<String> getAllExtensionIds(String securityToken) {
// TODO mfortun-2011-04-05
throw new UnsupportedOperationException("not yet implemented");
- //return null;
-
+ // return null;
+
}
@Override
@@ -133,8 +152,8 @@
String extensionName) {
// TODO mfortun-2011-04-05
throw new UnsupportedOperationException("not yet implemented");
- //return null;
-
+ // return null;
+
}
@Override
@@ -142,8 +161,8 @@
Collection<WikittyExtension> exts) {
// TODO mfortun-2011-04-05
throw new UnsupportedOperationException("not yet implemented");
- //return null;
-
+ // return null;
+
}
@Override
@@ -151,8 +170,8 @@
Collection<String> extNames) {
// TODO mfortun-2011-04-05
throw new UnsupportedOperationException("not yet implemented");
- //return null;
-
+ // return null;
+
}
@Override
@@ -160,8 +179,8 @@
String extensionId) {
// TODO mfortun-2011-04-05
throw new UnsupportedOperationException("not yet implemented");
- //return null;
-
+ // return null;
+
}
@Override
@@ -169,24 +188,29 @@
String name) {
// TODO mfortun-2011-04-05
throw new UnsupportedOperationException("not yet implemented");
- //return null;
-
+ // return null;
+
}
@Override
public List<Wikitty> restore(String securityToken, List<String> id) {
// TODO mfortun-2011-04-05
+
+ /*
+ *
+ */
+
throw new UnsupportedOperationException("not yet implemented");
- //return null;
-
+ // return null;
+
}
@Override
public WikittyEvent delete(String securityToken, Collection<String> ids) {
// TODO mfortun-2011-04-05
throw new UnsupportedOperationException("not yet implemented");
- //return null;
-
+ // return null;
+
}
@Override
@@ -194,24 +218,24 @@
Criteria... criteria) {
// TODO mfortun-2011-04-05
throw new UnsupportedOperationException("not yet implemented");
- //return null;
-
+ // return null;
+
}
@Override
public String[] findByCriteria(String securityToken, Criteria... criteria) {
// TODO mfortun-2011-04-05
throw new UnsupportedOperationException("not yet implemented");
- //return null;
-
+ // return null;
+
}
@Override
public WikittyEvent deleteTree(String securityToken, String treeNodeId) {
// TODO mfortun-2011-04-05
throw new UnsupportedOperationException("not yet implemented");
- //return null;
-
+ // return null;
+
}
@Override
@@ -219,8 +243,8 @@
String wikittyId, int depth, boolean count, Criteria filter) {
// TODO mfortun-2011-04-05
throw new UnsupportedOperationException("not yet implemented");
- //return null;
-
+ // return null;
+
}
@Override
@@ -228,8 +252,8 @@
String version) {
// TODO mfortun-2011-04-05
throw new UnsupportedOperationException("not yet implemented");
- //return null;
-
+ // return null;
+
}
@Override
@@ -237,11 +261,27 @@
// TODO mfortun-2011-04-05
throw new UnsupportedOperationException("not yet implemented");
//
-
+
}
-
-
+ /**
+ * Transform an object into a wikitty object
+ * in this case a File into a wikittyPubText/Data
+ * @param object the objet to transform
+ * @return the wikitty
+ * @throws Exception
+ */
+ /*
+ * TODO mfortun-2011-04-07 correct the Exception's type
+ */
+ public Wikitty objectToWikitty(Object object) throws Exception {
+ if (object instanceof File) {
+
+ return null;
+ } else {
+ throw new Exception();
+ }
+ }
}
1
0
r763 - trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication
by mfortun@users.nuiton.org 06 Apr '11
by mfortun@users.nuiton.org 06 Apr '11
06 Apr '11
Author: mfortun
Date: 2011-04-06 17:52:16 +0200 (Wed, 06 Apr 2011)
New Revision: 763
Url: http://nuiton.org/repositories/revision/wikitty/763
Log:
comment to prepare algorithm, correct method
Modified:
trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublication.java
Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublication.java
===================================================================
--- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublication.java 2011-04-06 14:01:47 UTC (rev 762)
+++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublication.java 2011-04-06 15:52:16 UTC (rev 763)
@@ -137,34 +137,38 @@
// usage: wp --norecursion --ws http://truc.com import --dir /home/Manou
/*
- * TODO mfortun-2011-04-05 just prototypage, remove when really
+ * Ici il y aura une moulinette pour la création des wikittys des
+ * nouveaux fichiers. Possible de faire la même moulinette au niveau des
+ * commits, update et tout ça puisque on pourra faire la différence des
+ * fichiers envoyés, déclaré en tant que wikitty et ceux qui éxiste,
+ * risque d'avoir une mauvaise cohésion ? cohérence ?
+ */
+
+ /*
+ * TODO mfortun-2011-04-05 just prototyping, remove when really
* implements the method
*/
System.out.println("import :\n");
- for (File child : dir.listFiles()) {
- if (child.isDirectory() && !noRecur) {
- printDirectory(child);
- } else if (child.isDirectory()) {
- System.out.println(child.getAbsolutePath());
- }
+ printDirectory(dir, !noRecur);
- }
}
/*
- * TODO mfortun-2011-04-05 just prototypage, remove when really implements
+ * TODO mfortun-2011-04-05 just prototyping, remove when really implements
* the method linked: importToWikitty
*/
- public static void printDirectory(File dir) {
+ public static void printDirectory(File dir, boolean recur) {
+
System.out.println("<dir " + dir.getName() + ">");
for (File child : dir.listFiles()) {
- if (child.isDirectory()) {
- printDirectory(child);
- } else {
+ if (child.isDirectory() && recur
+ && !child.getName().equals(PROPERTY_DIRECTORY)) {
+ printDirectory(child, recur);
+ } else if (!child.isDirectory()) {
System.out.println(child.getAbsolutePath());
}
}
- System.out.println("</dir >");
+ System.out.println("</dir " + dir.getName() + ">");
}
/**
@@ -175,14 +179,14 @@
* harvested directory
* @param recursivly
* boolean id the directory have to be harvest
- * @return
- * list of harvested file
+ * @return list of harvested file
*/
protected static List<File> listFile(File starts, boolean recursivly) {
ArrayList<File> result = new ArrayList<File>();
result.add(starts);
for (File child : starts.listFiles()) {
- if (child.isDirectory() && recursivly) {
+ if (child.isDirectory() && recursivly
+ && !child.getName().equals(PROPERTY_DIRECTORY)) {
result.add(child);
result.addAll(listFile(child, recursivly));
} else if (!child.isDirectory()) {
@@ -354,10 +358,31 @@
log.info("commit " + " wikitty-service" + wikittyService
+ "noRecurs : " + noRecur + " hessian Protocole :"
+ hessianProtocole + "directory : " + dir.getAbsolutePath());
+
+ System.out.println("try to commit: ");
+ printDirectory(dir, !noRecur);
+
// faire la liste des fichiers à commit
- // avec récursivité si c'est demandé.
+ // avec récursivité si c'etransfert d'histoire entre svnst demandé.
// et les transformer en wikitty, vérifier les versions et tout.
+ /*
+ * parcours l'arborescence des fichiers celon que on soit recursif ou
+ * non plutot que faire la liste fichier, on va aller lire les ids dans
+ * les fichiers de propriétés.
+ *
+ * Ensuite on creer le wikittyserviceFileSysteme avec le répertoire de
+ * travail et lui on lui donner les ids avec lesquels il va travailler
+ * et aller chercher les fichiers de propriétés pour retrouver les files
+ * et creer les wikittypub correspondant.
+ *
+ * Pour faire un commit il ne suffira pas de faire un restore
+ * finalement, il faudra faire un search aussi puisque on va se
+ * retrouver à faire des new wikitty p'etre éclaircir ce point plus
+ * tard. Pour le moment ne pas se poser de question trop, et faire sans
+ * nouveau fichier.
+ */
+
// création du proxy
/*
@@ -424,10 +449,10 @@
log.info("Delete " + " wikitty-service" + wikittyService
+ " hessian Protocole :" + hessianProtocole
+ "file to delete : " + toDelete.getAbsolutePath());
- // faire la liste des fichiers à commit
- // avec récursivité si c'est demandé.
- // et les transformer en wikitty, vérifier les versions et tout.
+ System.out.println("try to delete: ");
+ printDirectory(dir, true);
+
}
/*
@@ -449,7 +474,7 @@
File wpHomeDir;
if (null == dir || !dir.exists()) {
/*
- * si pas de dir on commit le dossier courant
+ * si pas de dir on update le dossier courant
*/
dir = new File(".");
@@ -486,10 +511,10 @@
log.info("update " + " wikitty-service" + wikittyService
+ "noRecurs : " + noRecur + " hessian Protocole :"
+ hessianProtocole + "directory : " + dir.getAbsolutePath());
- // faire la liste des fichiers à commit
- // avec récursivité si c'est demandé.
- // et les transformer en wikitty, vérifier les versions et tout.
+ System.out.println("try to update: ");
+ printDirectory(dir, !noRecur);
+
/*
* on va commencer par vérifier les arguments * ''wp update
* [--norecursion] [--ws (url du WikittyService)] [répertoire à mettre à
@@ -499,13 +524,18 @@
}
/**
+ *
* Use to search in the file system the directory that containt the .wp dir
* that containt the properties file for the wikitty service's adresse
+ *
+ * @param start
+ * @return File the directory container of the master property file
+ * @throws Exception
*/
protected static File searchWikittyPublicationHomeDir(File start)
throws Exception {
- if (start.exists() && start.isDirectory()) {
+ if (start != null && start.exists() && start.isDirectory()) {
// on va retourner le dossier .wp home
// method récursiv qui remonte dans les parents pour retrouver.
1
0
r762 - trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication
by mfortun@users.nuiton.org 06 Apr '11
by mfortun@users.nuiton.org 06 Apr '11
06 Apr '11
Author: mfortun
Date: 2011-04-06 16:01:47 +0200 (Wed, 06 Apr 2011)
New Revision: 762
Url: http://nuiton.org/repositories/revision/wikitty/762
Log:
correction of the File uses, correct code convention, add method that harvest file
Modified:
trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublication.java
Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublication.java
===================================================================
--- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublication.java 2011-04-06 12:57:32 UTC (rev 761)
+++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublication.java 2011-04-06 14:01:47 UTC (rev 762)
@@ -1,12 +1,11 @@
package org.nuiton.wikitty.publication;
import java.io.File;
-import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
+import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
-
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.nuiton.util.ApplicationConfig;
@@ -36,7 +35,7 @@
public static String HESSIAN_PROTOCOL_KEY = "hessian";
public static String PROPERTY_DIRECTORY = ".wp";
- public static String WIKITTYPUBLICATION_PROPERTIES_FILE = "";
+ public static String WIKITTYPUBLICATION_PROPERTIES_FILE = "ws.properties";
/**
* @param args
@@ -143,9 +142,9 @@
*/
System.out.println("import :\n");
for (File child : dir.listFiles()) {
- if (child.isDirectory() && false == noRecur) {
+ if (child.isDirectory() && !noRecur) {
printDirectory(child);
- } else if (false == child.isDirectory()) {
+ } else if (child.isDirectory()) {
System.out.println(child.getAbsolutePath());
}
@@ -169,6 +168,31 @@
}
/**
+ * Method that create the list of file needed to commit, delete, update
+ * import. It harvest file in order to transform them into wikitties
+ *
+ * @param starts
+ * harvested directory
+ * @param recursivly
+ * boolean id the directory have to be harvest
+ * @return
+ * list of harvested file
+ */
+ protected static List<File> listFile(File starts, boolean recursivly) {
+ ArrayList<File> result = new ArrayList<File>();
+ result.add(starts);
+ for (File child : starts.listFiles()) {
+ if (child.isDirectory() && recursivly) {
+ result.add(child);
+ result.addAll(listFile(child, recursivly));
+ } else if (!child.isDirectory()) {
+ result.add(child);
+ }
+ }
+ return result;
+ }
+
+ /**
* Method that checkout a label recursivly or not into a local directory
* from a wikitty service
*/
@@ -196,7 +220,7 @@
// write the proper properties file!
Properties props = new Properties();
props.put(WITTY_SERVICE_KEY, wikittyService);
- if (true == hessianProtocole) {
+ if (hessianProtocole) {
props.put("wikitty.WikittyService.components",
"org.nuiton.wikitty.services.WikittyServiceHessianClient");
} else {
@@ -235,17 +259,17 @@
System.out
.println("search the directory of .wp file to write new properties file");
// search for the home directory
- if (null == dir || false == dir.exists()) {
+ if (null == dir || !dir.exists()) {
wpHomeDir = searchWikittyPublicationHomeDir(new File("."));
} else {
- wpHomeDir = new File(dir.getCanonicalFile() + File.pathSeparator
+ wpHomeDir = new File(dir.getCanonicalFile() + File.separator
+ PROPERTY_DIRECTORY);
}
Properties oldProperties = new Properties();
// TODO mfortun-2011-04-06 catch exception instead of throws
- File propertiesFile = new File(wpHomeDir
+ File propertiesFile = new File(wpHomeDir + File.separator
+ WIKITTYPUBLICATION_PROPERTIES_FILE);
// load the old file just for loggin
oldProperties.load(new FileReader(propertiesFile));
@@ -258,7 +282,7 @@
// Creation of the new properties file
Properties props = new Properties();
props.put(WITTY_SERVICE_KEY, wikittyService);
- if (true == hessianProtocole) {
+ if (hessianProtocole) {
props.put("wikitty.WikittyService.components",
"org.nuiton.wikitty.services.WikittyServiceHessianClient");
} else {
@@ -291,7 +315,7 @@
File dir = applicationConfig.getOptionAsFile(DIRECTORY_KEY);
File wpHomeDir;
- if (null == dir || false == dir.exists()) {
+ if (null == dir || !dir.exists()) {
/*
* si pas de dir on commit le dossier courant
*/
@@ -305,7 +329,7 @@
// TODO mfortun-2011-04-06 catch exception instead of throws
File propertiesFile = new File(wpHomeDir.getCanonicalPath()
- + File.pathSeparator + WIKITTYPUBLICATION_PROPERTIES_FILE);
+ + File.separator + WIKITTYPUBLICATION_PROPERTIES_FILE);
// load the old file just for loggin
properties.load(new FileReader(propertiesFile));
@@ -319,7 +343,7 @@
boolean hessianProtocole = applicationConfig
.getOptionAsBoolean(HESSIAN_PROTOCOL_KEY);
- if (true == hessianProtocole) {
+ if (hessianProtocole) {
applicationConfig.setOption("wikitty.WikittyService.components",
"org.nuiton.wikitty.services.WikittyServiceHessianClient");
} else {
@@ -354,7 +378,7 @@
public static void deleteFromWikitty(File toDelete) throws Exception {
// check args
- if (null == toDelete || false == toDelete.exists()) {
+ if (null == toDelete || !toDelete.exists()) {
// Exception
} else {
@@ -375,7 +399,7 @@
// TODO mfortun-2011-04-06 catch exception instead of throws
File propertiesFile = new File(wpHomeDir.getCanonicalPath()
- + File.pathSeparator + WIKITTYPUBLICATION_PROPERTIES_FILE);
+ + File.separator + WIKITTYPUBLICATION_PROPERTIES_FILE);
// load the old file just for loggin
properties.load(new FileReader(propertiesFile));
@@ -387,7 +411,7 @@
boolean hessianProtocole = applicationConfig
.getOptionAsBoolean(HESSIAN_PROTOCOL_KEY);
- if (true == hessianProtocole) {
+ if (hessianProtocole) {
applicationConfig
.setOption("wikitty.WikittyService.components",
"org.nuiton.wikitty.services.WikittyServiceHessianClient");
@@ -423,7 +447,7 @@
File dir = applicationConfig.getOptionAsFile(DIRECTORY_KEY);
File wpHomeDir;
- if (null == dir || false == dir.exists()) {
+ if (null == dir || !dir.exists()) {
/*
* si pas de dir on commit le dossier courant
*/
@@ -437,7 +461,7 @@
// TODO mfortun-2011-04-06 catch exception instead of throws
File propertiesFile = new File(wpHomeDir.getCanonicalPath()
- + File.pathSeparator + WIKITTYPUBLICATION_PROPERTIES_FILE);
+ + File.separator + WIKITTYPUBLICATION_PROPERTIES_FILE);
// load the old file just for loggin
properties.load(new FileReader(propertiesFile));
@@ -451,7 +475,7 @@
boolean hessianProtocole = applicationConfig
.getOptionAsBoolean(HESSIAN_PROTOCOL_KEY);
- if (true == hessianProtocole) {
+ if (hessianProtocole) {
applicationConfig.setOption("wikitty.WikittyService.components",
"org.nuiton.wikitty.services.WikittyServiceHessianClient");
} else {
@@ -481,18 +505,18 @@
protected static File searchWikittyPublicationHomeDir(File start)
throws Exception {
- if (start.exists() && true == start.isDirectory()) {
+ if (start.exists() && start.isDirectory()) {
// on va retourner le dossier .wp home
// method récursiv qui remonte dans les parents pour retrouver.
- File temp = new File(start.getAbsolutePath() + PROPERTY_DIRECTORY);
- if (true == temp.exists()) {
- File propertie = new File(temp.getCanonicalPath()
- + File.pathSeparator
- + WIKITTYPUBLICATION_PROPERTIES_FILE);
- if (true == propertie.exists()) {
- return temp;
+ File propertyDirectory = new File(start.getCanonicalPath()
+ + File.separator + PROPERTY_DIRECTORY);
+ if (propertyDirectory.exists()) {
+ File propertie = new File(propertyDirectory.getCanonicalPath()
+ + File.separator + WIKITTYPUBLICATION_PROPERTIES_FILE);
+ if (propertie.exists()) {
+ return propertyDirectory;
}
}
return searchWikittyPublicationHomeDir(start.getParentFile());
1
0
r761 - in trunk/wikitty-api/src: main/java/org/nuiton/wikitty/storage test/java/org/nuiton/wikitty/api test/java/org/nuiton/wikitty/memory
by jcouteau@users.nuiton.org 06 Apr '11
by jcouteau@users.nuiton.org 06 Apr '11
06 Apr '11
Author: jcouteau
Date: 2011-04-06 14:57:32 +0200 (Wed, 06 Apr 2011)
New Revision: 761
Url: http://nuiton.org/repositories/revision/wikitty/761
Log:
Improve tests
Add associated search on WikittySearchEngineInMemory
Added:
trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/AbstractSearchTest.java
trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/InMemorySearchTest.java
Removed:
trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/AbstractTestApi.java
Modified:
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/storage/WikittySearchEngineInMemory.java
trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/CommonTest.java
trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/ExtensionFactoryTest.java
trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/SearchCriteriaTest.java
trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/WikittyUtilTest.java
trunk/wikitty-api/src/test/java/org/nuiton/wikitty/memory/InMemoryStorageTest.java
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 2011-04-06 12:49:06 UTC (rev 760)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/storage/WikittySearchEngineInMemory.java 2011-04-06 12:57:32 UTC (rev 761)
@@ -37,6 +37,7 @@
import org.nuiton.wikitty.search.PagedResult;
import org.nuiton.wikitty.search.TreeNodeResult;
import org.nuiton.wikitty.search.operators.And;
+import org.nuiton.wikitty.search.operators.AssociatedRestriction;
import org.nuiton.wikitty.search.operators.BinaryOperator;
import org.nuiton.wikitty.search.operators.Element;
import org.nuiton.wikitty.search.operators.Restriction;
@@ -67,7 +68,8 @@
// public void delete(Collection<String> idList) throws WikittyException {
// }
- public boolean checkRestriction(Restriction restriction, Wikitty w) {
+ public boolean checkRestriction(WikittyTransaction transaction,
+ Restriction restriction, Wikitty w) {
if (restriction instanceof BinaryOperator) {
BinaryOperator binOp = (BinaryOperator) restriction;
if (binOp.getElement().getName().equals(Element.ELT_EXTENSION)) {
@@ -138,11 +140,38 @@
} else if (restriction instanceof And) {
And and = (And) restriction;
for (Restriction sub : and.getRestrictions()) {
- if (!checkRestriction(sub, w)) {
+ if (!checkRestriction(transaction, sub, w)) {
return false;
}
}
return true;
+ } else if (restriction instanceof AssociatedRestriction) {
+
+ AssociatedRestriction ass = (AssociatedRestriction) restriction;
+
+ String fqfieldName = ass.getElement().getName();
+
+ //check my wikitty got the right extension before doing anything.
+ String[] extName = fqfieldName.split("\\.");
+ if (!w.hasField(extName[0], extName[1])) {
+ return false;
+ }
+ // get the value in the wikitty, it is a wikitty's id
+ Object o = w.getFqField(fqfieldName);
+
+ //Get sub-restriction
+ Restriction sub = ass.getRestriction();
+
+ Criteria associatedSearch = new Criteria();
+ associatedSearch.setRestriction(sub);
+
+ //find everything that validate the sub-restriction
+ PagedResult<String> associatedResult = findAllByCriteria(transaction, associatedSearch);
+
+ List<String> associatedList = associatedResult.getAll();
+
+ //Check that my field is contained in the sub-restriction results.
+ return associatedList.contains(String.valueOf(o));
} else {
throw new UnsupportedOperationException(restriction.getName() + " Search Not yet implemented");
}
@@ -159,7 +188,7 @@
Wikitty w = entry.getValue();
String id = entry.getKey();
Restriction dto = criteria.getRestriction();
- if (!w.isDeleted() && checkRestriction(dto, w)) {
+ if (!w.isDeleted() && checkRestriction(transaction, dto, w)) {
currentIndex++;
if (currentIndex > firstIndex) {
ids.add(id);
Added: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/AbstractSearchTest.java
===================================================================
--- trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/AbstractSearchTest.java (rev 0)
+++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/AbstractSearchTest.java 2011-04-06 12:57:32 UTC (rev 761)
@@ -0,0 +1,129 @@
+package org.nuiton.wikitty.api;
+
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.nuiton.wikitty.WikittyProxy;
+import org.nuiton.wikitty.WikittyService;
+import org.nuiton.wikitty.entities.ExtensionFactory;
+import org.nuiton.wikitty.entities.FieldFactory;
+import org.nuiton.wikitty.entities.FieldType;
+import org.nuiton.wikitty.entities.Wikitty;
+import org.nuiton.wikitty.entities.WikittyExtension;
+import org.nuiton.wikitty.entities.WikittyImpl;
+import org.nuiton.wikitty.search.Criteria;
+import org.nuiton.wikitty.search.PagedResult;
+import org.nuiton.wikitty.search.Search;
+
+/**
+ * User: couteau
+ * Date: 05/04/11
+ */
+public abstract class AbstractSearchTest {
+
+ public static final String EXT_PRODUCT = "Product";
+ public static final String EXT_CATEGORY = "Category";
+ public static final String PRODUCT_PRICE = "price";
+ public static final String PRODUCT_NAME = "name";
+ public static final String PRODUCT_CATEGORY = "category";
+ public static final String CATEGORY_NAME = "name";
+ public static final String VERSION = "1.0";
+
+ protected WikittyProxy proxy = new WikittyProxy(getWikittyService());
+
+ @Before
+ public void initData(){
+
+ ///////////////////////////////////////////////////////////////////////
+ // CREATE EXTENSIONS NEEDED FOR TESTS //
+ ///////////////////////////////////////////////////////////////////////
+
+ //Create product extension
+ WikittyExtension product = ExtensionFactory.create(EXT_PRODUCT, VERSION)
+ .addField(PRODUCT_PRICE, FieldType.TYPE.NUMERIC)
+ .addField(PRODUCT_NAME, FieldType.TYPE.STRING)
+ .addField(PRODUCT_CATEGORY, FieldType.TYPE.WIKITTY)
+ .extension();
+ proxy.storeExtension(product);
+
+ //Create category extension
+ WikittyExtension category = ExtensionFactory.create(EXT_CATEGORY, VERSION)
+ .addField(CATEGORY_NAME, FieldType.TYPE.STRING)
+ .extension();
+ proxy.storeExtension(category);
+
+ ///////////////////////////////////////////////////////////////////////
+ // CREATE CATEGORIES //
+ ///////////////////////////////////////////////////////////////////////
+
+ //Create wikitty category named "Hardware"
+ Wikitty category1 = new WikittyImpl();
+ category1.addExtension(category);
+ category1.setField(EXT_CATEGORY, CATEGORY_NAME, "Hardware");
+ proxy.store(category1);
+
+ //Create wikitty category named "Wrong category"
+ Wikitty category2 = new WikittyImpl();
+ category2.addExtension(category);
+ category2.setField(EXT_CATEGORY, CATEGORY_NAME, "Wrong category");
+ proxy.store(category2);
+
+ ///////////////////////////////////////////////////////////////////////
+ // CREATE PRODUCTS //
+ ///////////////////////////////////////////////////////////////////////
+
+ //Create product named Paint, price is 20 category is category1
+ Wikitty product1 = new WikittyImpl();
+ product1.addExtension(product);
+ product1.setField(EXT_PRODUCT, PRODUCT_NAME, "Paint");
+ product1.setField(EXT_PRODUCT, PRODUCT_PRICE, 20);
+ product1.setField(EXT_PRODUCT, PRODUCT_CATEGORY, category1.getId());
+ proxy.store(product1);
+
+ //Create product named Screwdriver, price is 3, category is category2
+ Wikitty product2 = new WikittyImpl();
+ product2.addExtension(product);
+ product2.setField(EXT_PRODUCT, PRODUCT_NAME, "Screwdriver");
+ product2.setField(EXT_PRODUCT, PRODUCT_PRICE, 3);
+ product2.setField(EXT_PRODUCT, PRODUCT_CATEGORY, category2.getId());
+ proxy.store(product2);
+
+ //Create product named Paint Blue, price is 22, category is category2
+ Wikitty product3 = new WikittyImpl();
+ product3.addExtension(product);
+ product3.setField(EXT_PRODUCT, PRODUCT_NAME, "Paint Blue");
+ product3.setField(EXT_PRODUCT, PRODUCT_PRICE, 22);
+ product3.setField(EXT_PRODUCT, PRODUCT_CATEGORY, category2.getId());
+ proxy.store(product3);
+
+ }
+
+ @Test
+ public void testAssociated() throws Exception {
+
+ /* Following request mean is :
+ * Looking for any product which price is between 15 and 25,
+ * and name starts with 'Paint',
+ * and with an associated category which name is 'Hardware'
+ */
+
+ Search query = Search.query().bw("Product.price", "15", "25")
+ .sw("Product.name", "Paint");
+
+ Search associatedSearch = query.associated("Product.category")
+ .eq("Category.name", "Hardware");
+
+ Criteria associatedCriteria = associatedSearch.criteria();
+
+ PagedResult<Wikitty> results = proxy.findAllByCriteria(associatedCriteria);
+
+ Assert.assertEquals(1, results.getAll().size());
+
+ Wikitty resultW = results.getFirst();
+
+ Assert.assertEquals("Paint", resultW.getFieldAsString(EXT_PRODUCT, PRODUCT_NAME));
+ Assert.assertEquals(20, resultW.getFieldAsInt(EXT_PRODUCT, PRODUCT_PRICE));
+ }
+
+ public abstract WikittyService getWikittyService();
+}
Deleted: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/AbstractTestApi.java
===================================================================
--- trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/AbstractTestApi.java 2011-04-06 12:49:06 UTC (rev 760)
+++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/AbstractTestApi.java 2011-04-06 12:57:32 UTC (rev 761)
@@ -1,34 +0,0 @@
-/*
- * #%L
- * Wikitty :: api
- *
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2009 - 2010 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.api;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-public abstract class AbstractTestApi {
-
- protected final static Log log = LogFactory.getLog(AbstractTestApi.class);
-
-}
Modified: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/CommonTest.java
===================================================================
--- trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/CommonTest.java 2011-04-06 12:49:06 UTC (rev 760)
+++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/CommonTest.java 2011-04-06 12:57:32 UTC (rev 761)
@@ -55,7 +55,7 @@
* @author guillaumed
*
*/
-public class CommonTest extends AbstractTestApi {
+public class CommonTest {
private static Log log = LogFactory.getLog(CommonTest.class);
Modified: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/ExtensionFactoryTest.java
===================================================================
--- trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/ExtensionFactoryTest.java 2011-04-06 12:49:06 UTC (rev 760)
+++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/ExtensionFactoryTest.java 2011-04-06 12:57:32 UTC (rev 761)
@@ -31,7 +31,7 @@
import org.nuiton.wikitty.entities.FieldType.TYPE;
import org.nuiton.wikitty.entities.WikittyExtension;
-public class ExtensionFactoryTest extends AbstractTestApi {
+public class ExtensionFactoryTest {
@Test
public void testExtensionFactory() throws Exception {
Added: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/InMemorySearchTest.java
===================================================================
--- trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/InMemorySearchTest.java (rev 0)
+++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/InMemorySearchTest.java 2011-04-06 12:57:32 UTC (rev 761)
@@ -0,0 +1,25 @@
+package org.nuiton.wikitty.api;
+
+import org.nuiton.wikitty.WikittyConfig;
+import org.nuiton.wikitty.WikittyService;
+import org.nuiton.wikitty.services.WikittyServiceInMemory;
+
+/**
+ * User: couteau
+ * Date: 05/04/11
+ */
+public class InMemorySearchTest extends AbstractSearchTest {
+
+ WikittyService service;
+
+ @Override
+ public WikittyService getWikittyService() {
+
+ if (service == null) {
+ WikittyConfig config = new WikittyConfig();
+ service = new WikittyServiceInMemory(config);
+ }
+
+ return service;
+ }
+}
Modified: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/SearchCriteriaTest.java
===================================================================
--- trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/SearchCriteriaTest.java 2011-04-06 12:49:06 UTC (rev 760)
+++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/SearchCriteriaTest.java 2011-04-06 12:57:32 UTC (rev 761)
@@ -28,6 +28,11 @@
import org.apache.commons.logging.LogFactory;
import org.junit.Assert;
import org.junit.Test;
+import org.nuiton.wikitty.WikittyUtil;
+import org.nuiton.wikitty.entities.FieldType;
+import org.nuiton.wikitty.entities.Wikitty;
+import org.nuiton.wikitty.entities.WikittyExtension;
+import org.nuiton.wikitty.entities.WikittyImpl;
import org.nuiton.wikitty.search.Criteria;
import org.nuiton.wikitty.search.operators.And;
import org.nuiton.wikitty.search.operators.AssociatedRestriction;
@@ -39,7 +44,7 @@
import org.nuiton.wikitty.search.operators.RestrictionName;
import org.nuiton.wikitty.search.Search;
-public class SearchCriteriaTest extends AbstractTestApi {
+public class SearchCriteriaTest {
static private Log log = LogFactory.getLog(SearchCriteriaTest.class);
@@ -113,7 +118,8 @@
@Test
public void testAssociated() throws Exception {
- /* Following request mean is :
+
+ /* Following request mean is :
* Looking for any product which price is between 15 and 25,
* and name starts with 'Paint',
* and with an associated category which name is 'Hardware'
Modified: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/WikittyUtilTest.java
===================================================================
--- trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/WikittyUtilTest.java 2011-04-06 12:49:06 UTC (rev 760)
+++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/api/WikittyUtilTest.java 2011-04-06 12:57:32 UTC (rev 761)
@@ -59,7 +59,7 @@
*
* @author poussin
*/
-public class WikittyUtilTest extends AbstractTestApi {
+public class WikittyUtilTest {
static private Log log = LogFactory.getLog(WikittyUtilTest.class);
Modified: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/memory/InMemoryStorageTest.java
===================================================================
--- trunk/wikitty-api/src/test/java/org/nuiton/wikitty/memory/InMemoryStorageTest.java 2011-04-06 12:49:06 UTC (rev 760)
+++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/memory/InMemoryStorageTest.java 2011-04-06 12:57:32 UTC (rev 761)
@@ -46,9 +46,8 @@
import org.nuiton.wikitty.services.WikittyServiceEnhanced;
import org.nuiton.wikitty.services.WikittyServiceInMemory;
import org.nuiton.wikitty.WikittyUtil;
-import org.nuiton.wikitty.api.AbstractTestApi;
-public class InMemoryStorageTest extends AbstractTestApi {
+public class InMemoryStorageTest {
protected WikittyServiceInMemory wikittyService;
1
0
r760 - trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication
by mfortun@users.nuiton.org 06 Apr '11
by mfortun@users.nuiton.org 06 Apr '11
06 Apr '11
Author: mfortun
Date: 2011-04-06 14:49:06 +0200 (Wed, 06 Apr 2011)
New Revision: 760
Url: http://nuiton.org/repositories/revision/wikitty/760
Log:
cosmetic change to respect code conventions, resume prototyping sync operation
Modified:
trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublication.java
Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublication.java
===================================================================
--- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublication.java 2011-04-06 09:16:25 UTC (rev 759)
+++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublication.java 2011-04-06 12:49:06 UTC (rev 760)
@@ -1,7 +1,9 @@
package org.nuiton.wikitty.publication;
import java.io.File;
+import java.io.FileNotFoundException;
import java.io.FileReader;
+import java.io.FileWriter;
import java.util.List;
import java.util.Properties;
@@ -24,20 +26,18 @@
protected static ApplicationConfig applicationConfig;
protected static WikittyProxy proxyWS;
-
- /*static string for allias, wrong named attribut TODO mfortun-2011-04-06 need to
- * set better name
+ /*
+ * static string for allias, wrong named attribut TODO mfortun-2011-04-06
+ * need to set better name
*/
- public static String WITTY_SERVICE_KEY= "wikitty.service.server.url";
- public static String NO_RECURSION_KEY="norecursion";
- public static String DIRECTORY_KEY="directory";
-
- public static String PROPERTY_DIRECTORY=".wp";
- public static String WIKITTYPUBLICATION_PROPERTIES_FILE="";
-
-
-
-
+ public static String WITTY_SERVICE_KEY = "wikitty.service.server.url";
+ public static String NO_RECURSION_KEY = "norecursion";
+ public static String DIRECTORY_KEY = "directory";
+ public static String HESSIAN_PROTOCOL_KEY = "hessian";
+
+ public static String PROPERTY_DIRECTORY = ".wp";
+ public static String WIKITTYPUBLICATION_PROPERTIES_FILE = "";
+
/**
* @param args
* @throws ArgumentsParserException
@@ -77,9 +77,13 @@
*/
// allias for norecursion
- applicationConfig.addAlias("--norecursion", "--option", NO_RECURSION_KEY,
- "true");
+ applicationConfig.addAlias("--norecursion", "--option",
+ NO_RECURSION_KEY, "true");
+ // allias for the protocole
+ applicationConfig.addAlias("--hessian", "--option",
+ HESSIAN_PROTOCOL_KEY, "true");
+
// allias for all the action
applicationConfig.addAlias("wp import", "--option", "import");
applicationConfig.addAlias("wp checkout", "--option", "checkout");
@@ -124,33 +128,32 @@
*/
public static void importToWikitty() {
- boolean noRecur = applicationConfig.getOptionAsBoolean(NO_RECURSION_KEY);
+ boolean noRecur = applicationConfig
+ .getOptionAsBoolean(NO_RECURSION_KEY);
File dir = applicationConfig.getOptionAsFile(DIRECTORY_KEY);
- String wikittyService= applicationConfig.getOption(WITTY_SERVICE_KEY);
+ String wikittyService = applicationConfig.getOption(WITTY_SERVICE_KEY);
- log.info("import : wikittyservice: "
- + wikittyService
- + " noresursion=" + noRecur + " directory= "
- + dir.getAbsolutePath());
- //usage: wp --norecursion --ws http://truc.com import --dir /home/Manou
-
-
- /* TODO mfortun-2011-04-05 just prototypage, remove when really
- *implements the method
- *
+ log.info("import : wikittyservice: " + wikittyService + " noresursion="
+ + noRecur + " directory= " + dir.getAbsolutePath());
+ // usage: wp --norecursion --ws http://truc.com import --dir /home/Manou
+
+ /*
+ * TODO mfortun-2011-04-05 just prototypage, remove when really
+ * implements the method
*/
System.out.println("import :\n");
for (File child : dir.listFiles()) {
if (child.isDirectory() && false == noRecur) {
printDirectory(child);
- } else if(false==child.isDirectory()) {
+ } else if (false == child.isDirectory()) {
System.out.println(child.getAbsolutePath());
}
}
}
- /* TODO mfortun-2011-04-05 just prototypage, remove when really implements
+ /*
+ * TODO mfortun-2011-04-05 just prototypage, remove when really implements
* the method linked: importToWikitty
*/
public static void printDirectory(File dir) {
@@ -171,33 +174,36 @@
*/
public static void checkoutFromWikitty(String label) {
- boolean noRecur = applicationConfig.getOptionAsBoolean(NO_RECURSION_KEY);
+ boolean noRecur = applicationConfig
+ .getOptionAsBoolean(NO_RECURSION_KEY);
File dir = applicationConfig.getOptionAsFile(DIRECTORY_KEY);
- String wikittyService= applicationConfig.getOption(WITTY_SERVICE_KEY);
+ String wikittyService = applicationConfig.getOption(WITTY_SERVICE_KEY);
+ boolean hessianProtocole = applicationConfig
+ .getOptionAsBoolean(HESSIAN_PROTOCOL_KEY);
- log.info("checkout : wikittyservice: "
- + wikittyService
+ log.info("checkout : wikittyservice: " + wikittyService
+ " noresursion=" + noRecur + " directory= "
- + dir.getAbsolutePath()
- +"Label a checkout " +label);
-
- proxyWS= new WikittyProxy(applicationConfig);
-
-
-
-
- //write the proper properties file!
- Properties props= new Properties();
+ + dir.getAbsolutePath() + "Label a checkout " + label
+ + "HessianProtocol=" + hessianProtocole);
+
+ proxyWS = new WikittyProxy(applicationConfig);
+
+ /*
+ * obtain the list of wikittypub and write then in the file system with
+ * the appropriate wikittyservice !
+ */
+
+ // write the proper properties file!
+ Properties props = new Properties();
props.put(WITTY_SERVICE_KEY, wikittyService);
- if ( wikittyService.startsWith("cajo")){
- props.put("wikitty.WikittyService.components", "org.nuiton.wikitty.services.WikittyServiceCajoClient");
- }else{
- props.put("wikitty.WikittyService.components", "org.nuiton.wikitty.services.WikittyServiceHessianClient");
+ if (true == hessianProtocole) {
+ props.put("wikitty.WikittyService.components",
+ "org.nuiton.wikitty.services.WikittyServiceHessianClient");
+ } else {
+ props.put("wikitty.WikittyService.components",
+ "org.nuiton.wikitty.services.WikittyServiceCajoClient");
}
-
-
-
-
+
/*
* on va commencer par vérifier les arguments ''wp checkout
* [--norecursion] [url du WikittyService] [Label à extraire] [directory
@@ -211,34 +217,64 @@
/**
* Relocate the default url of the wikitty service
*/
- public static void relocateWikitty() {
-
+ public static void relocateWikitty() throws Exception {
+
+ /*
+ * log.info("checkout : wikittyservice: " + wikittyService +
+ * " noresursion=" + noRecur + " directory= " + dir.getAbsolutePath()
+ * +"Label a checkout " +label+ "HessianProtocol="+hessianProtocole);
+ */
+
File dir = applicationConfig.getOptionAsFile(DIRECTORY_KEY);
- String wikittyService= applicationConfig.getOption(WITTY_SERVICE_KEY);
-
- if (null==dir || false==dir.exists()){
- searchWikittyPublicationHomeDir(new File("."));
+ String wikittyService = applicationConfig.getOption(WITTY_SERVICE_KEY);
+ boolean hessianProtocole = applicationConfig
+ .getOptionAsBoolean(HESSIAN_PROTOCOL_KEY);
+
+ File wpHomeDir;
+
+ System.out
+ .println("search the directory of .wp file to write new properties file");
+ // search for the home directory
+ if (null == dir || false == dir.exists()) {
+ wpHomeDir = searchWikittyPublicationHomeDir(new File("."));
+ } else {
+ wpHomeDir = new File(dir.getCanonicalFile() + File.pathSeparator
+ + PROPERTY_DIRECTORY);
}
-
- System.out.println("search the directory of .wp file to write new properties file");
-
-
- Properties props= new Properties();
+
+ Properties oldProperties = new Properties();
+
+ // TODO mfortun-2011-04-06 catch exception instead of throws
+ File propertiesFile = new File(wpHomeDir
+ + WIKITTYPUBLICATION_PROPERTIES_FILE);
+ // load the old file just for loggin
+ oldProperties.load(new FileReader(propertiesFile));
+
+ log.info("Try relocate :" + "wikitty service:"
+ + oldProperties.getProperty(WITTY_SERVICE_KEY) + " by "
+ + wikittyService + " HessianProtocol: " + hessianProtocole
+ + " File : " + propertiesFile.getCanonicalPath());
+
+ // Creation of the new properties file
+ Properties props = new Properties();
props.put(WITTY_SERVICE_KEY, wikittyService);
- if ( wikittyService.startsWith("cajo")){
- props.put("wikitty.WikittyService.components", "org.nuiton.wikitty.services.WikittyServiceCajoClient");
- }else{
- props.put("wikitty.WikittyService.components", "org.nuiton.wikitty.services.WikittyServiceHessianClient");
+ if (true == hessianProtocole) {
+ props.put("wikitty.WikittyService.components",
+ "org.nuiton.wikitty.services.WikittyServiceHessianClient");
+ } else {
+ props.put("wikitty.WikittyService.components",
+ "org.nuiton.wikitty.services.WikittyServiceCajoClient");
}
-
-
+
+ // save the new property file
+ props.store(new FileWriter(propertiesFile), "");
+
/*
* Properties props=new Properties(); props.load(new FileReader(new
* File("/home/Manou/temp.properties")));
* applicationConfig.setOptions(props);
*/
-
/*
* on va commencer par vérifier les arguments ''wp relocate [nouvelle
* url du WikittyService par defaut] [directory a relocaliser]'' on doit
@@ -247,32 +283,59 @@
}
-
-
/**
* commit the current wikittyworkspace into a wikitty service
*/
- public static void commitToWikitty() {
-
- boolean noRecur = applicationConfig.getOptionAsBoolean(NO_RECURSION_KEY);
+ public static void commitToWikitty() throws Exception {
+
File dir = applicationConfig.getOptionAsFile(DIRECTORY_KEY);
- String wikittyService= applicationConfig.getOption(WITTY_SERVICE_KEY);
-
+ File wpHomeDir;
+ if (null == dir || false == dir.exists()) {
+ /*
+ * si pas de dir on commit le dossier courant
+ */
+ dir = new File(".");
- if(null==dir || false==dir.exists()){
- /*
- * si pas de dir on commit le dossier courant
- */
- dir = new File(".");
-
- //on va chercher le home dir
- searchWikittyPublicationHomeDir(dir);
}
-
-
-
-
+ // on va chercher le home dir
+ wpHomeDir = searchWikittyPublicationHomeDir(dir);
+
+ Properties properties = new Properties();
+
+ // TODO mfortun-2011-04-06 catch exception instead of throws
+ File propertiesFile = new File(wpHomeDir.getCanonicalPath()
+ + File.pathSeparator + WIKITTYPUBLICATION_PROPERTIES_FILE);
+ // load the old file just for loggin
+ properties.load(new FileReader(propertiesFile));
+
+ // on va rajouter les propriété de notre file
+ applicationConfig.setOptions(properties);
+
+ boolean noRecur = applicationConfig
+ .getOptionAsBoolean(NO_RECURSION_KEY);
+
+ String wikittyService = applicationConfig.getOption(WITTY_SERVICE_KEY);
+ boolean hessianProtocole = applicationConfig
+ .getOptionAsBoolean(HESSIAN_PROTOCOL_KEY);
+
+ if (true == hessianProtocole) {
+ applicationConfig.setOption("wikitty.WikittyService.components",
+ "org.nuiton.wikitty.services.WikittyServiceHessianClient");
+ } else {
+ applicationConfig.setOption("wikitty.WikittyService.components",
+ "org.nuiton.wikitty.services.WikittyServiceCajoClient");
+ }
+
+ log.info("commit " + " wikitty-service" + wikittyService
+ + "noRecurs : " + noRecur + " hessian Protocole :"
+ + hessianProtocole + "directory : " + dir.getAbsolutePath());
+ // faire la liste des fichiers à commit
+ // avec récursivité si c'est demandé.
+ // et les transformer en wikitty, vérifier les versions et tout.
+
+ // création du proxy
+
/*
* on va commencer par vérifier les arguments ''wp commit
* [--norecursion] [--ws (url du WikittyService)] [répertoire à
@@ -285,27 +348,64 @@
/**
* delete a file or directory from the workspace it remove the label from
* the wikitty
+ *
+ * @throws Exception
*/
- public static void deleteFromWikitty(File toDelete) {
-
-
+ public static void deleteFromWikitty(File toDelete) throws Exception {
- //check args
- if ( null==toDelete || false==toDelete.exists()){
- //Exception
- }else{
-
- searchWikittyPublicationHomeDir(new File("."));
- //search for the .wp home dir to load props
-
- //then load proxy
-
- //if toDelete is a directory do something different from usualy
- //recursivly remove labels
-
+ // check args
+ if (null == toDelete || false == toDelete.exists()) {
+ // Exception
+ } else {
+
+ File wpHomeDir = searchWikittyPublicationHomeDir(new File("."));
+ // search for the .wp home dir to load props
+
+ // then load proxy
+
+ // if toDelete is a directory do something different from usualy
+ // recursivly remove labels
+
+ File dir = applicationConfig.getOptionAsFile(DIRECTORY_KEY);
+
+ // on va chercher le home dir
+ wpHomeDir = searchWikittyPublicationHomeDir(dir);
+
+ Properties properties = new Properties();
+
+ // TODO mfortun-2011-04-06 catch exception instead of throws
+ File propertiesFile = new File(wpHomeDir.getCanonicalPath()
+ + File.pathSeparator + WIKITTYPUBLICATION_PROPERTIES_FILE);
+ // load the old file just for loggin
+ properties.load(new FileReader(propertiesFile));
+
+ // on va rajouter les propriété de notre file
+ applicationConfig.setOptions(properties);
+
+ String wikittyService = applicationConfig
+ .getOption(WITTY_SERVICE_KEY);
+ boolean hessianProtocole = applicationConfig
+ .getOptionAsBoolean(HESSIAN_PROTOCOL_KEY);
+
+ if (true == hessianProtocole) {
+ applicationConfig
+ .setOption("wikitty.WikittyService.components",
+ "org.nuiton.wikitty.services.WikittyServiceHessianClient");
+ } else {
+ applicationConfig.setOption(
+ "wikitty.WikittyService.components",
+ "org.nuiton.wikitty.services.WikittyServiceCajoClient");
+ }
+
+ log.info("Delete " + " wikitty-service" + wikittyService
+ + " hessian Protocole :" + hessianProtocole
+ + "file to delete : " + toDelete.getAbsolutePath());
+ // faire la liste des fichiers à commit
+ // avec récursivité si c'est demandé.
+ // et les transformer en wikitty, vérifier les versions et tout.
+
}
-
-
+
/*
* on va commencer par vérifier les arguments ''wp delete [--ws (url du
* WikittyService)] [répertoire ou fichier à supprimer]'' on doit avoir
@@ -318,16 +418,54 @@
/**
* update the current workspace from a wikitty
*/
- public static void updateFromWikitty() {
-
- boolean noRecur = applicationConfig.getOptionAsBoolean(NO_RECURSION_KEY);
+ public static void updateFromWikitty() throws Exception {
+
File dir = applicationConfig.getOptionAsFile(DIRECTORY_KEY);
- String wikittyService= applicationConfig.getOption(WITTY_SERVICE_KEY);
-
-
-
-
+ File wpHomeDir;
+ if (null == dir || false == dir.exists()) {
+ /*
+ * si pas de dir on commit le dossier courant
+ */
+ dir = new File(".");
+
+ }
+ // on va chercher le home dir
+ wpHomeDir = searchWikittyPublicationHomeDir(dir);
+
+ Properties properties = new Properties();
+
+ // TODO mfortun-2011-04-06 catch exception instead of throws
+ File propertiesFile = new File(wpHomeDir.getCanonicalPath()
+ + File.pathSeparator + WIKITTYPUBLICATION_PROPERTIES_FILE);
+ // load the old file just for loggin
+ properties.load(new FileReader(propertiesFile));
+
+ // on va rajouter les propriété de notre file
+ applicationConfig.setOptions(properties);
+
+ boolean noRecur = applicationConfig
+ .getOptionAsBoolean(NO_RECURSION_KEY);
+
+ String wikittyService = applicationConfig.getOption(WITTY_SERVICE_KEY);
+ boolean hessianProtocole = applicationConfig
+ .getOptionAsBoolean(HESSIAN_PROTOCOL_KEY);
+
+ if (true == hessianProtocole) {
+ applicationConfig.setOption("wikitty.WikittyService.components",
+ "org.nuiton.wikitty.services.WikittyServiceHessianClient");
+ } else {
+ applicationConfig.setOption("wikitty.WikittyService.components",
+ "org.nuiton.wikitty.services.WikittyServiceCajoClient");
+ }
+
+ log.info("update " + " wikitty-service" + wikittyService
+ + "noRecurs : " + noRecur + " hessian Protocole :"
+ + hessianProtocole + "directory : " + dir.getAbsolutePath());
+ // faire la liste des fichiers à commit
+ // avec récursivité si c'est demandé.
+ // et les transformer en wikitty, vérifier les versions et tout.
+
/*
* on va commencer par vérifier les arguments * ''wp update
* [--norecursion] [--ws (url du WikittyService)] [répertoire à mettre à
@@ -335,32 +473,33 @@
* quelque chose dans le recursion
*/
}
-
-
+
/**
- * Use to search in the file system the directory that containt the
- * .wp dir that containt the properties file for the wikitty service's adresse
+ * Use to search in the file system the directory that containt the .wp dir
+ * that containt the properties file for the wikitty service's adresse
*/
- protected static File searchWikittyPublicationHomeDir(File start) {
-
- if (start.exists()&& true==start.isDirectory()){
- //on va retourner le dossier .wp home
-
- //method récursiv qui remonte dans les parents pour retrouver.
-
-
- File temp= new File(start.getAbsolutePath()+PROPERTY_DIRECTORY);
- if (true==temp.exists()){
- File propertie= new File(temp.getAbsolutePath()+WIKITTYPUBLICATION_PROPERTIES_FILE);
- if(true==propertie.exists()){
- return temp;
+ protected static File searchWikittyPublicationHomeDir(File start)
+ throws Exception {
+
+ if (start.exists() && true == start.isDirectory()) {
+ // on va retourner le dossier .wp home
+
+ // method récursiv qui remonte dans les parents pour retrouver.
+
+ File temp = new File(start.getAbsolutePath() + PROPERTY_DIRECTORY);
+ if (true == temp.exists()) {
+ File propertie = new File(temp.getCanonicalPath()
+ + File.pathSeparator
+ + WIKITTYPUBLICATION_PROPERTIES_FILE);
+ if (true == propertie.exists()) {
+ return temp;
}
}
- return searchWikittyPublicationHomeDir(start.getParentFile());
- }else {
- //Exception
+ return searchWikittyPublicationHomeDir(start.getParentFile());
+ } else {
+ // Exception
/*
- * TODO mfortun-2011-04-06 whrite/set the appropriate exception here
+ * TODO mfortun-2011-04-06 write/set the appropriate exception here
*/
return null;
}
1
0
r759 - trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication
by mfortun@users.nuiton.org 06 Apr '11
by mfortun@users.nuiton.org 06 Apr '11
06 Apr '11
Author: mfortun
Date: 2011-04-06 11:16:25 +0200 (Wed, 06 Apr 2011)
New Revision: 759
Url: http://nuiton.org/repositories/revision/wikitty/759
Log:
migrate string to static field, complete method with prototype code
Modified:
trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublication.java
Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublication.java
===================================================================
--- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublication.java 2011-04-05 16:00:48 UTC (rev 758)
+++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublication.java 2011-04-06 09:16:25 UTC (rev 759)
@@ -24,6 +24,20 @@
protected static ApplicationConfig applicationConfig;
protected static WikittyProxy proxyWS;
+
+ /*static string for allias, wrong named attribut TODO mfortun-2011-04-06 need to
+ * set better name
+ */
+ public static String WITTY_SERVICE_KEY= "wikitty.service.server.url";
+ public static String NO_RECURSION_KEY="norecursion";
+ public static String DIRECTORY_KEY="directory";
+
+ public static String PROPERTY_DIRECTORY=".wp";
+ public static String WIKITTYPUBLICATION_PROPERTIES_FILE="";
+
+
+
+
/**
* @param args
* @throws ArgumentsParserException
@@ -53,9 +67,9 @@
applicationConfig = new ApplicationConfig();
// allias for the url of the wikitty service
- applicationConfig.addAlias("--ws", "--option", "wikitty.service");
+ applicationConfig.addAlias("--ws", "--option", WITTY_SERVICE_KEY);
- applicationConfig.addAlias("--dir", "--option", "directory");
+ applicationConfig.addAlias("--dir", "--option", DIRECTORY_KEY);
/*
* TODO mfortun-2011-04-05 once application fixed setdefault value and
@@ -63,7 +77,7 @@
*/
// allias for norecursion
- applicationConfig.addAlias("--norecursion", "--option", "norecursion",
+ applicationConfig.addAlias("--norecursion", "--option", NO_RECURSION_KEY,
"true");
// allias for all the action
@@ -110,9 +124,9 @@
*/
public static void importToWikitty() {
- boolean noRecur = applicationConfig.getOptionAsBoolean("norecursion");
- File dir = applicationConfig.getOptionAsFile("directory");
- String wikittyService= applicationConfig.getOption("wikitty.service");
+ boolean noRecur = applicationConfig.getOptionAsBoolean(NO_RECURSION_KEY);
+ File dir = applicationConfig.getOptionAsFile(DIRECTORY_KEY);
+ String wikittyService= applicationConfig.getOption(WITTY_SERVICE_KEY);
log.info("import : wikittyservice: "
+ wikittyService
@@ -157,9 +171,9 @@
*/
public static void checkoutFromWikitty(String label) {
- boolean noRecur = applicationConfig.getOptionAsBoolean("norecursion");
- File dir = applicationConfig.getOptionAsFile("directory");
- String wikittyService= applicationConfig.getOption("wikitty.service");
+ boolean noRecur = applicationConfig.getOptionAsBoolean(NO_RECURSION_KEY);
+ File dir = applicationConfig.getOptionAsFile(DIRECTORY_KEY);
+ String wikittyService= applicationConfig.getOption(WITTY_SERVICE_KEY);
log.info("checkout : wikittyservice: "
+ wikittyService
@@ -167,9 +181,23 @@
+ dir.getAbsolutePath()
+"Label a checkout " +label);
+ proxyWS= new WikittyProxy(applicationConfig);
+
+ //write the proper properties file!
+ Properties props= new Properties();
+ props.put(WITTY_SERVICE_KEY, wikittyService);
+ if ( wikittyService.startsWith("cajo")){
+ props.put("wikitty.WikittyService.components", "org.nuiton.wikitty.services.WikittyServiceCajoClient");
+ }else{
+ props.put("wikitty.WikittyService.components", "org.nuiton.wikitty.services.WikittyServiceHessianClient");
+ }
+
+
+
+
/*
* on va commencer par vérifier les arguments ''wp checkout
* [--norecursion] [url du WikittyService] [Label à extraire] [directory
@@ -184,12 +212,33 @@
* Relocate the default url of the wikitty service
*/
public static void relocateWikitty() {
+
+ File dir = applicationConfig.getOptionAsFile(DIRECTORY_KEY);
+ String wikittyService= applicationConfig.getOption(WITTY_SERVICE_KEY);
+
+ if (null==dir || false==dir.exists()){
+ searchWikittyPublicationHomeDir(new File("."));
+ }
+
+ System.out.println("search the directory of .wp file to write new properties file");
+
+
+ Properties props= new Properties();
+ props.put(WITTY_SERVICE_KEY, wikittyService);
+ if ( wikittyService.startsWith("cajo")){
+ props.put("wikitty.WikittyService.components", "org.nuiton.wikitty.services.WikittyServiceCajoClient");
+ }else{
+ props.put("wikitty.WikittyService.components", "org.nuiton.wikitty.services.WikittyServiceHessianClient");
+ }
+
+
/*
* Properties props=new Properties(); props.load(new FileReader(new
* File("/home/Manou/temp.properties")));
* applicationConfig.setOptions(props);
*/
+
/*
* on va commencer par vérifier les arguments ''wp relocate [nouvelle
* url du WikittyService par defaut] [directory a relocaliser]'' on doit
@@ -198,11 +247,33 @@
}
+
+
/**
* commit the current wikittyworkspace into a wikitty service
*/
public static void commitToWikitty() {
+
+ boolean noRecur = applicationConfig.getOptionAsBoolean(NO_RECURSION_KEY);
+ File dir = applicationConfig.getOptionAsFile(DIRECTORY_KEY);
+ String wikittyService= applicationConfig.getOption(WITTY_SERVICE_KEY);
+
+
+
+ if(null==dir || false==dir.exists()){
/*
+ * si pas de dir on commit le dossier courant
+ */
+ dir = new File(".");
+
+ //on va chercher le home dir
+ searchWikittyPublicationHomeDir(dir);
+ }
+
+
+
+
+ /*
* on va commencer par vérifier les arguments ''wp commit
* [--norecursion] [--ws (url du WikittyService)] [répertoire à
* pousser]'' on doit avoir deux string dans le unparsed et
@@ -215,7 +286,26 @@
* delete a file or directory from the workspace it remove the label from
* the wikitty
*/
- public static void deleteFromWikitty() {
+ public static void deleteFromWikitty(File toDelete) {
+
+
+
+ //check args
+ if ( null==toDelete || false==toDelete.exists()){
+ //Exception
+ }else{
+
+ searchWikittyPublicationHomeDir(new File("."));
+ //search for the .wp home dir to load props
+
+ //then load proxy
+
+ //if toDelete is a directory do something different from usualy
+ //recursivly remove labels
+
+ }
+
+
/*
* on va commencer par vérifier les arguments ''wp delete [--ws (url du
* WikittyService)] [répertoire ou fichier à supprimer]'' on doit avoir
@@ -229,6 +319,15 @@
* update the current workspace from a wikitty
*/
public static void updateFromWikitty() {
+
+ boolean noRecur = applicationConfig.getOptionAsBoolean(NO_RECURSION_KEY);
+ File dir = applicationConfig.getOptionAsFile(DIRECTORY_KEY);
+ String wikittyService= applicationConfig.getOption(WITTY_SERVICE_KEY);
+
+
+
+
+
/*
* on va commencer par vérifier les arguments * ''wp update
* [--norecursion] [--ws (url du WikittyService)] [répertoire à mettre à
@@ -236,5 +335,35 @@
* quelque chose dans le recursion
*/
}
+
+
+ /**
+ * Use to search in the file system the directory that containt the
+ * .wp dir that containt the properties file for the wikitty service's adresse
+ */
+ protected static File searchWikittyPublicationHomeDir(File start) {
+
+ if (start.exists()&& true==start.isDirectory()){
+ //on va retourner le dossier .wp home
+
+ //method récursiv qui remonte dans les parents pour retrouver.
+
+
+ File temp= new File(start.getAbsolutePath()+PROPERTY_DIRECTORY);
+ if (true==temp.exists()){
+ File propertie= new File(temp.getAbsolutePath()+WIKITTYPUBLICATION_PROPERTIES_FILE);
+ if(true==propertie.exists()){
+ return temp;
+ }
+ }
+ return searchWikittyPublicationHomeDir(start.getParentFile());
+ }else {
+ //Exception
+ /*
+ * TODO mfortun-2011-04-06 whrite/set the appropriate exception here
+ */
+ return null;
+ }
+ }
}
1
0
r758 - trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication
by mfortun@users.nuiton.org 05 Apr '11
by mfortun@users.nuiton.org 05 Apr '11
05 Apr '11
Author: mfortun
Date: 2011-04-05 18:00:48 +0200 (Tue, 05 Apr 2011)
New Revision: 758
Url: http://nuiton.org/repositories/revision/wikitty/758
Log:
resume prototypage with use of action alias instead of an ugly if. Correct indent without tab, correct Todo template
Modified:
trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublication.java
trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublicationFileSystem.java
Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublication.java
===================================================================
--- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublication.java 2011-04-05 12:45:14 UTC (rev 757)
+++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublication.java 2011-04-05 16:00:48 UTC (rev 758)
@@ -5,6 +5,8 @@
import java.util.List;
import java.util.Properties;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.nuiton.util.ApplicationConfig;
import org.nuiton.util.ArgumentsParserException;
import org.nuiton.wikitty.WikittyProxy;
@@ -15,196 +17,224 @@
public class WikittyPublication {
- protected static WikittyPublicationFileSystem wikittyServiceFileSystem;
- protected static ApplicationConfig applicationConfig;
- protected static WikittyProxy proxyWS;
+ /** to use log facility, just put in your code: log.info(\"...\"); */
+ final static private Log log = LogFactory.getLog(WikittyPublication.class);
- /**
- * @param args
- * @throws ArgumentsParserException
- */
- public static void main(String[] args) throws Exception {
+ protected static WikittyPublicationFileSystem wikittyServiceFileSystem;
+ protected static ApplicationConfig applicationConfig;
+ protected static WikittyProxy proxyWS;
- /*
+ /**
+ * @param args
+ * @throws ArgumentsParserException
+ */
+ public static void main(String[] args) throws Exception {
+
+ /*
*
*/
- // on va creer un wikitty proxy pour le lien avec le wikitty qui stock
- // mes trucs
- // et on va avoir un wikittypublicationfilesystem pour stocker sur le
- // local et tout
- // soucis du wikittyFS c'est de savoir dans quel dossier il va taffer ?
- // a moins qu'il prenne un directory de travail
+ // on va creer un wikitty proxy pour le lien avec le wikitty qui stock
+ // mes trucs
+ // et on va avoir un wikittypublicationfilesystem pour stocker sur le
+ // local et tout
+ // soucis du wikittyFS c'est de savoir dans quel dossier il va taffer ?
+ // a moins qu'il prenne un directory de travail
- /*
- * ws.properties :wikitty.service= http://www.adresse.com:8080
- *
- * wikittypubs.properties
- * script.js=numéroVersion7 id.script.js= id du wikitty
- * scripttut.js=numéroVersion id.scripttut.js= id du wikitty
- * image.png=numéroVersion id.image.png= id du wikitty label=
- * racine.directory2, racine.directory22
- */
+ /*
+ * ws.properties :wikitty.service= http://www.adresse.com:8080
+ *
+ * wikittypubs.properties script.js=numéroVersion7 id.script.js= id du
+ * wikitty scripttut.js=numéroVersion id.scripttut.js= id du wikitty
+ * image.png=numéroVersion id.image.png= id du wikitty label=
+ * racine.directory2, racine.directory22
+ */
- applicationConfig = new ApplicationConfig();
-
-
-
-
- // allias for the url of the wikitty service
- applicationConfig.addAlias("--ws", "--option", "wikitty.service");
-
-
- // allias for norecursion
- applicationConfig.addAlias("--norecursion", "--option", "recursion",
- "false");
+ applicationConfig = new ApplicationConfig();
- // allias for the action
- applicationConfig.addAlias("wp", "--option", "action");
+ // allias for the url of the wikitty service
+ applicationConfig.addAlias("--ws", "--option", "wikitty.service");
- // après on prend les unparsed en fonction de tout
- // on attend un certain nombre d'argument
- // objectif préparer pour ce soir toutes les commandes avec argument
- // plus d'autre trucs.
- applicationConfig.parse(args);
+ applicationConfig.addAlias("--dir", "--option", "directory");
-
- String action = applicationConfig.getOption("action");
- if ("import".equals(action)) {
- importToWikitty();
- } else if ("commit".equals(action)) {
- commitToWikitty();
- } else if ("checkout".equals(action)) {
- checkoutFromWikitty();
- } else if ("relocate".equals(action)) {
- relocateWikitty();
- } else if ("delete".equals(action)) {
- deleteFromWikitty();
- } else if ("update".equals(action)) {
- updateFromWikitty();
- } else {
- // on va throw une exception puisque l'action n'est pas reconnu
- }
+ /*
+ * TODO mfortun-2011-04-05 once application fixed setdefault value and
+ * enumclass for initialisation
+ */
-
- }
+ // allias for norecursion
+ applicationConfig.addAlias("--norecursion", "--option", "norecursion",
+ "true");
- /**
- * Method that import the content of a directory into a wikitty service
- */
- protected static void importToWikitty() {
- List<String> argumentsImports= applicationConfig.getUnparsed();
-
- if(2!=argumentsImports.size()){
- System.out.println("Import usage: wp import [--norecursion] [url du WikittyService] [directory]");
- } else{
- String recurValue= applicationConfig.getOption("recursion");
-
- String result="Import:";
- if (recurValue!=null && false== applicationConfig.getOptionAsBoolean(recurValue) ){
- result+="\nRecursion=false";
- }
- System.out.println();
- result+="\nWikittyUrl="+argumentsImports.get(0);
- result+="\nDirectory="+argumentsImports.get(1);
-
- System.out.println(result);
-
-
- }
-
-
-
- //System.out.println("User choice: wp import" + );
-
- /*
- * on va commencer par vérifier les arguments * ''wp import
- * [--norecursion] [url du WikittyService] [directory]'' on doit avoir
- * deux string dans le unparsed et potentiellement quelque chose dans le
- * getoption recursion
- */
+ // allias for all the action
+ applicationConfig.addAlias("wp import", "--option", "import");
+ applicationConfig.addAlias("wp checkout", "--option", "checkout");
+ applicationConfig.addAlias("wp relocate", "--option", "relocate");
+ applicationConfig.addAlias("wp commit", "--option", "commit");
+ applicationConfig.addAlias("wp delete", "--option", "delete");
+ applicationConfig.addAlias("wp update", "--option", "update");
- }
+ applicationConfig
+ .addActionAlias("import",
+ "org.nuiton.wikitty.publication.WikittyPublication#importToWikitty");
- /**
- * Method that checkout a label recursivly or not into a local directory
- * from a wikitty service
- */
- protected static void checkoutFromWikitty() {
+ applicationConfig
+ .addActionAlias("checkout",
+ "org.nuiton.wikitty.publication.WikittyPublication#checkoutFromWikitty");
-
-
- /*
- * on va commencer par vérifier les arguments ''wp checkout
- * [--norecursion] [url du WikittyService] [Label à extraire] [directory
- * local d'accueil]'' on doit avoir trois string dans le unparsed: url,
- * label, directory et potentiellement quelque chose dans le getoption
- * recursion
- */
+ applicationConfig
+ .addActionAlias("relocate",
+ "org.nuiton.wikitty.publication.WikittyPublication#relocateWikitty");
- }
+ applicationConfig
+ .addActionAlias("commit",
+ "org.nuiton.wikitty.publication.WikittyPublication#commitToWikitty");
- /**
- * Relocate the default url of the wikitty service
- */
- protected static void relocateWikitty() {
- /*
- * Properties props=new Properties();
- props.load(new FileReader(new File("/home/Manou/temp.properties")));
- applicationConfig.setOptions(props);
- *
- */
-
- /*
- * on va commencer par vérifier les arguments ''wp relocate [nouvelle
- * url du WikittyService par defaut] [directory a relocaliser]'' on doit
- * avoir trois string dans le unparsed: url et directory
- */
+ applicationConfig
+ .addActionAlias("delete",
+ "org.nuiton.wikitty.publication.WikittyPublication#deleteFromWikitty");
- }
+ applicationConfig
+ .addActionAlias("update",
+ "org.nuiton.wikitty.publication.WikittyPublication#updateFromWikitty");
-
- /**
- * commit the current wikittyworkspace into a wikitty service
- */
- protected static void commitToWikitty() {
- /*
- * on va commencer par vérifier les arguments ''wp commit
- * [--norecursion] [--ws (url du WikittyService)] [répertoire à
- * pousser]'' on doit avoir deux string dans le unparsed et
- * potentiellement quelque chose dans le getoption recursion
- */
+ // parsing
+ applicationConfig.parse(args);
+ // execution
+ applicationConfig.doAction(0);
- }
+ }
- /**
- * delete a file or directory from the workspace
- * it remove the label from the wikitty
- */
- protected static void deleteFromWikitty() {
- /*
- * on va commencer par vérifier les arguments
- * ''wp delete [--ws (url du WikittyService)] [répertoire ou fichier à
- * supprimer]''
- * on doit avoir un string dans le unparsed et après pour pour le wikittyservice
- * bah on tape dedans en fonction de si elle a été précisé en ligne de commande
- * applicationConfig se débrouille
- */
- }
+ /**
+ * Method that import the content of a directory into a wikitty service
+ */
+ public static void importToWikitty() {
- /**
- * update the current workspace from a wikitty
- */
- protected static void updateFromWikitty() {
- /*
- * on va commencer par vérifier les arguments
- * * ''wp update [--norecursion] [--ws (url du
- * WikittyService)] [répertoire à mettre à jour]''
- * normalement un string dans unparsed
- * et potentiellement quelque chose dans le recursion
- *
- *
- */
- }
+ boolean noRecur = applicationConfig.getOptionAsBoolean("norecursion");
+ File dir = applicationConfig.getOptionAsFile("directory");
+ String wikittyService= applicationConfig.getOption("wikitty.service");
+ log.info("import : wikittyservice: "
+ + wikittyService
+ + " noresursion=" + noRecur + " directory= "
+ + dir.getAbsolutePath());
+ //usage: wp --norecursion --ws http://truc.com import --dir /home/Manou
+
+
+ /* TODO mfortun-2011-04-05 just prototypage, remove when really
+ *implements the method
+ *
+ */
+ System.out.println("import :\n");
+ for (File child : dir.listFiles()) {
+ if (child.isDirectory() && false == noRecur) {
+ printDirectory(child);
+ } else if(false==child.isDirectory()) {
+ System.out.println(child.getAbsolutePath());
+ }
+
+ }
+ }
+
+ /* TODO mfortun-2011-04-05 just prototypage, remove when really implements
+ * the method linked: importToWikitty
+ */
+ public static void printDirectory(File dir) {
+ System.out.println("<dir " + dir.getName() + ">");
+ for (File child : dir.listFiles()) {
+ if (child.isDirectory()) {
+ printDirectory(child);
+ } else {
+ System.out.println(child.getAbsolutePath());
+ }
+ }
+ System.out.println("</dir >");
+ }
+
+ /**
+ * Method that checkout a label recursivly or not into a local directory
+ * from a wikitty service
+ */
+ public static void checkoutFromWikitty(String label) {
+
+ boolean noRecur = applicationConfig.getOptionAsBoolean("norecursion");
+ File dir = applicationConfig.getOptionAsFile("directory");
+ String wikittyService= applicationConfig.getOption("wikitty.service");
+
+ log.info("checkout : wikittyservice: "
+ + wikittyService
+ + " noresursion=" + noRecur + " directory= "
+ + dir.getAbsolutePath()
+ +"Label a checkout " +label);
+
+
+
+
+ /*
+ * on va commencer par vérifier les arguments ''wp checkout
+ * [--norecursion] [url du WikittyService] [Label à extraire] [directory
+ * local d'accueil]'' on doit avoir trois string dans le unparsed: url,
+ * label, directory et potentiellement quelque chose dans le getoption
+ * recursion
+ */
+
+ }
+
+ /**
+ * Relocate the default url of the wikitty service
+ */
+ public static void relocateWikitty() {
+ /*
+ * Properties props=new Properties(); props.load(new FileReader(new
+ * File("/home/Manou/temp.properties")));
+ * applicationConfig.setOptions(props);
+ */
+
+ /*
+ * on va commencer par vérifier les arguments ''wp relocate [nouvelle
+ * url du WikittyService par defaut] [directory a relocaliser]'' on doit
+ * avoir trois string dans le unparsed: url et directory
+ */
+
+ }
+
+ /**
+ * commit the current wikittyworkspace into a wikitty service
+ */
+ public static void commitToWikitty() {
+ /*
+ * on va commencer par vérifier les arguments ''wp commit
+ * [--norecursion] [--ws (url du WikittyService)] [répertoire à
+ * pousser]'' on doit avoir deux string dans le unparsed et
+ * potentiellement quelque chose dans le getoption recursion
+ */
+
+ }
+
+ /**
+ * delete a file or directory from the workspace it remove the label from
+ * the wikitty
+ */
+ public static void deleteFromWikitty() {
+ /*
+ * on va commencer par vérifier les arguments ''wp delete [--ws (url du
+ * WikittyService)] [répertoire ou fichier à supprimer]'' on doit avoir
+ * un string dans le unparsed et après pour pour le wikittyservice bah
+ * on tape dedans en fonction de si elle a été précisé en ligne de
+ * commande applicationConfig se débrouille
+ */
+ }
+
+ /**
+ * update the current workspace from a wikitty
+ */
+ public static void updateFromWikitty() {
+ /*
+ * on va commencer par vérifier les arguments * ''wp update
+ * [--norecursion] [--ws (url du WikittyService)] [répertoire à mettre à
+ * jour]'' normalement un string dans unparsed et potentiellement
+ * quelque chose dans le recursion
+ */
+ }
+
}
Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublicationFileSystem.java
===================================================================
--- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublicationFileSystem.java 2011-04-05 12:45:14 UTC (rev 757)
+++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublicationFileSystem.java 2011-04-05 16:00:48 UTC (rev 758)
@@ -3,6 +3,8 @@
import java.util.Collection;
import java.util.List;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.nuiton.wikitty.WikittyService;
import org.nuiton.wikitty.entities.Wikitty;
import org.nuiton.wikitty.entities.WikittyExtension;
@@ -15,181 +17,231 @@
public class WikittyPublicationFileSystem implements WikittyService {
-
-
- @Override
- public void addWikittyServiceListener(WikittyListener listener,
- ServiceListenerType type) {
- // TODO Auto-generated method stub
-
- }
+ /** to use log facility, just put in your code: log.info(\"...\"); */
+ final static private Log log = LogFactory.getLog(WikittyPublicationFileSystem.class);
+
+ @Override
+ public void addWikittyServiceListener(WikittyListener listener,
+ ServiceListenerType type) {
+ // TODO mfortun-2011-04-05
+ throw new UnsupportedOperationException("not yet implemented");
+ //
+
+ }
- @Override
- public void removeWikittyServiceListener(WikittyListener listener,
- ServiceListenerType type) {
- // TODO Auto-generated method stub
-
- }
+ @Override
+ public void removeWikittyServiceListener(WikittyListener listener,
+ ServiceListenerType type) {
+ // TODO mfortun-2011-04-05
+ throw new UnsupportedOperationException("not yet implemented");
+ //
+
+ }
- @Override
- public String login(String login, String password) {
- // TODO Auto-generated method stub
- return null;
- }
+ @Override
+ public String login(String login, String password) {
+ // TODO mfortun-2011-04-05
+ throw new UnsupportedOperationException("not yet implemented");
+ //return null;
+
+ }
- @Override
- public void logout(String securityToken) {
- // TODO Auto-generated method stub
-
- }
+ @Override
+ public void logout(String securityToken) {
+ // TODO mfortun-2011-04-05
+ throw new UnsupportedOperationException("not yet implemented");
+ //
+
+ }
- @Override
- public WikittyEvent clear(String securityToken) {
- // TODO Auto-generated method stub
- return null;
- }
+ @Override
+ public WikittyEvent clear(String securityToken) {
+ // TODO mfortun-2011-04-05
+ throw new UnsupportedOperationException("not yet implemented");
+ //return null;
+
+ }
- @Override
- public boolean canWrite(String securityToken, Wikitty wikitty) {
- // TODO Auto-generated method stub
- return false;
- }
+ @Override
+ public boolean canWrite(String securityToken, Wikitty wikitty) {
+ // TODO mfortun-2011-04-05
+ throw new UnsupportedOperationException("not yet implemented");
+ //return false;
+
+ }
- @Override
- public boolean canDelete(String securityToken, String wikittyId) {
- // TODO Auto-generated method stub
- return false;
- }
+ @Override
+ public boolean canDelete(String securityToken, String wikittyId) {
+ // TODO mfortun-2011-04-05
+ throw new UnsupportedOperationException("not yet implemented");
+ //return false;
+
+ }
- @Override
- public boolean canRead(String securityToken, String wikittyId) {
- // TODO Auto-generated method stub
- return false;
- }
+ @Override
+ public boolean canRead(String securityToken, String wikittyId) {
+ // TODO mfortun-2011-04-05
+ throw new UnsupportedOperationException("not yet implemented");
+ //return false;
+
+ }
- @Override
- public boolean exists(String securityToken, String wikittyId) {
- // TODO Auto-generated method stub
- return false;
- }
+ @Override
+ public boolean exists(String securityToken, String wikittyId) {
+ // TODO mfortun-2011-04-05
+ throw new UnsupportedOperationException("not yet implemented");
+ //return false;
+
+ }
- @Override
- public boolean isDeleted(String securityToken, String wikittyId) {
- // TODO Auto-generated method stub
- return false;
- }
+ @Override
+ public boolean isDeleted(String securityToken, String wikittyId) {
+ // TODO mfortun-2011-04-05
+ throw new UnsupportedOperationException("not yet implemented");
+ //return false;
+
+ }
- @Override
- public WikittyEvent replay(String securityToken, List<WikittyEvent> events,
- boolean force) {
- // TODO Auto-generated method stub
- return null;
- }
+ @Override
+ public WikittyEvent replay(String securityToken, List<WikittyEvent> events,
+ boolean force) {
+ // TODO mfortun-2011-04-05
+ throw new UnsupportedOperationException("not yet implemented");
+ //return null;
+
+ }
- @Override
- //XXX à faire en priorité
- public WikittyEvent store(String securityToken,
- Collection<Wikitty> wikitties, boolean force) {
- // TODO Auto-generated method stub
- return null;
- }
+ @Override
+ public WikittyEvent store(String securityToken,
+ Collection<Wikitty> wikitties, boolean force) {
+ // TODO mfortun-2011-04-05
+ throw new UnsupportedOperationException("not yet implemented");
+ //return null;
+
+ }
- @Override
- public List<String> getAllExtensionIds(String securityToken) {
- // TODO Auto-generated method stub
- return null;
- }
+ @Override
+ public List<String> getAllExtensionIds(String securityToken) {
+ // TODO mfortun-2011-04-05
+ throw new UnsupportedOperationException("not yet implemented");
+ //return null;
+
+ }
- @Override
- public List<String> getAllExtensionsRequires(String securityToken,
- String extensionName) {
- // TODO Auto-generated method stub
- return null;
- }
+ @Override
+ public List<String> getAllExtensionsRequires(String securityToken,
+ String extensionName) {
+ // TODO mfortun-2011-04-05
+ throw new UnsupportedOperationException("not yet implemented");
+ //return null;
+
+ }
- @Override
- public WikittyEvent storeExtension(String securityToken,
- Collection<WikittyExtension> exts) {
- // TODO Auto-generated method stub
- return null;
- }
+ @Override
+ public WikittyEvent storeExtension(String securityToken,
+ Collection<WikittyExtension> exts) {
+ // TODO mfortun-2011-04-05
+ throw new UnsupportedOperationException("not yet implemented");
+ //return null;
+
+ }
- @Override
- public WikittyEvent deleteExtension(String securityToken,
- Collection<String> extNames) {
- // TODO Auto-generated method stub
- return null;
- }
+ @Override
+ public WikittyEvent deleteExtension(String securityToken,
+ Collection<String> extNames) {
+ // TODO mfortun-2011-04-05
+ throw new UnsupportedOperationException("not yet implemented");
+ //return null;
+
+ }
- @Override
- public WikittyExtension restoreExtension(String securityToken,
- String extensionId) {
- // TODO Auto-generated method stub
- return null;
- }
+ @Override
+ public WikittyExtension restoreExtension(String securityToken,
+ String extensionId) {
+ // TODO mfortun-2011-04-05
+ throw new UnsupportedOperationException("not yet implemented");
+ //return null;
+
+ }
- @Override
- public WikittyExtension restoreExtensionLastVersion(String securityToken,
- String name) {
- // TODO Auto-generated method stub
- return null;
- }
+ @Override
+ public WikittyExtension restoreExtensionLastVersion(String securityToken,
+ String name) {
+ // TODO mfortun-2011-04-05
+ throw new UnsupportedOperationException("not yet implemented");
+ //return null;
+
+ }
- @Override
- //XXX à faire en priorité
-
- public List<Wikitty> restore(String securityToken, List<String> id) {
- // TODO Auto-generated method stub
- return null;
- }
+ @Override
+ public List<Wikitty> restore(String securityToken, List<String> id) {
+ // TODO mfortun-2011-04-05
+ throw new UnsupportedOperationException("not yet implemented");
+ //return null;
+
+ }
- @Override
- public WikittyEvent delete(String securityToken, Collection<String> ids) {
- // TODO Auto-generated method stub
- return null;
- }
+ @Override
+ public WikittyEvent delete(String securityToken, Collection<String> ids) {
+ // TODO mfortun-2011-04-05
+ throw new UnsupportedOperationException("not yet implemented");
+ //return null;
+
+ }
- @Override
- public PagedResult<String>[] findAllByCriteria(String securityToken,
- Criteria... criteria) {
- // TODO Auto-generated method stub
- return null;
- }
+ @Override
+ public PagedResult<String>[] findAllByCriteria(String securityToken,
+ Criteria... criteria) {
+ // TODO mfortun-2011-04-05
+ throw new UnsupportedOperationException("not yet implemented");
+ //return null;
+
+ }
- @Override
- public String[] findByCriteria(String securityToken, Criteria... criteria) {
- // TODO Auto-generated method stub
- return null;
- }
+ @Override
+ public String[] findByCriteria(String securityToken, Criteria... criteria) {
+ // TODO mfortun-2011-04-05
+ throw new UnsupportedOperationException("not yet implemented");
+ //return null;
+
+ }
- @Override
- public WikittyEvent deleteTree(String securityToken, String treeNodeId) {
- // TODO Auto-generated method stub
- return null;
- }
+ @Override
+ public WikittyEvent deleteTree(String securityToken, String treeNodeId) {
+ // TODO mfortun-2011-04-05
+ throw new UnsupportedOperationException("not yet implemented");
+ //return null;
+
+ }
- @Override
- public TreeNodeResult<String> findTreeNode(String securityToken,
- String wikittyId, int depth, boolean count, Criteria filter) {
- // TODO Auto-generated method stub
- return null;
- }
+ @Override
+ public TreeNodeResult<String> findTreeNode(String securityToken,
+ String wikittyId, int depth, boolean count, Criteria filter) {
+ // TODO mfortun-2011-04-05
+ throw new UnsupportedOperationException("not yet implemented");
+ //return null;
+
+ }
- @Override
- public Wikitty restoreVersion(String securityToken, String wikittyId,
- String version) {
- // TODO Auto-generated method stub
- return null;
- }
+ @Override
+ public Wikitty restoreVersion(String securityToken, String wikittyId,
+ String version) {
+ // TODO mfortun-2011-04-05
+ throw new UnsupportedOperationException("not yet implemented");
+ //return null;
+
+ }
- @Override
- public void syncSearchEngine(String securityToken) {
- // TODO Auto-generated method stub
-
- }
+ @Override
+ public void syncSearchEngine(String securityToken) {
+ // TODO mfortun-2011-04-05
+ throw new UnsupportedOperationException("not yet implemented");
+ //
+
+ }
-
+
+
-
+
}
-
1
0
Author: mfortun
Date: 2011-04-05 14:45:14 +0200 (Tue, 05 Apr 2011)
New Revision: 757
Url: http://nuiton.org/repositories/revision/wikitty/757
Log:
remove from the pom eclipse's modifications
Modified:
trunk/wikitty-publication/pom.xml
Modified: trunk/wikitty-publication/pom.xml
===================================================================
--- trunk/wikitty-publication/pom.xml 2011-04-05 12:34:58 UTC (rev 756)
+++ trunk/wikitty-publication/pom.xml 2011-04-05 12:45:14 UTC (rev 757)
@@ -129,39 +129,7 @@
</plugin>
</plugins>
- <pluginManagement>
- <plugins>
- <!--TODO TEXT. This plugin's configuration is used in m2e only.-->
- <plugin>
- <groupId>org.eclipse.m2e</groupId>
- <artifactId>lifecycle-mapping</artifactId>
- <version>1.0.0</version>
- <configuration>
- <lifecycleMappingMetadata>
- <pluginExecutions>
- <pluginExecution>
- <pluginExecutionFilter>
- <groupId>org.nuiton.eugene</groupId>
- <artifactId>
- maven-eugene-plugin
- </artifactId>
- <versionRange>
- [2.3.1,)
- </versionRange>
- <goals>
- <goal>smart-generate</goal>
- </goals>
- </pluginExecutionFilter>
- <action>
- <ignore></ignore>
- </action>
- </pluginExecution>
- </pluginExecutions>
- </lifecycleMappingMetadata>
- </configuration>
- </plugin>
- </plugins>
- </pluginManagement>
+
</build>
</project>
1
0