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
r896 - trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication
by mfortun@users.nuiton.org 17 May '11
by mfortun@users.nuiton.org 17 May '11
17 May '11
Author: mfortun
Date: 2011-05-17 16:01:38 +0200 (Tue, 17 May 2011)
New Revision: 896
Url: http://nuiton.org/repositories/revision/wikitty/896
Log:
* add multicontext for pagedresult's methods
Modified:
trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublicationProxy.java
Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublicationProxy.java
===================================================================
--- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublicationProxy.java 2011-05-16 16:03:53 UTC (rev 895)
+++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublicationProxy.java 2011-05-17 14:01:38 UTC (rev 896)
@@ -301,7 +301,7 @@
}
public List<Wikitty> storeWikitty(List<Wikitty> wikitties) {
-
+
List<Wikitty> result = new ArrayList<Wikitty>();
List<Wikitty> tempObject = new ArrayList<Wikitty>();
@@ -472,7 +472,54 @@
public <E extends BusinessEntityImpl> PagedResult<E> findAllByExample(E e,
int firstIndex, int endIndex, String... fieldFacet) {
- return mainProxy.findAllByExample(e, firstIndex, endIndex, fieldFacet);
+
+ PagedResult<E> result = mainProxy.findAllByExample(e, firstIndex,
+ endIndex, fieldFacet);
+
+ int resultSizeExpected = endIndex - firstIndex;
+ if (isFallbackService() && result.size() < resultSizeExpected) {
+
+ if (result.size() == 0) {
+ String oldRequest = result.getQueryString();
+
+ /*
+ * change the param because we search on the beginning of the
+ * content of the otherLike they were the same collection
+ */
+ result = fallbackProxy.findAllByExample(e, 0,
+ resultSizeExpected, fieldFacet);
+
+ // reform the result
+ PagedResult<E> reformResult = new PagedResult<E>(firstIndex,
+ result.getNumFound(), oldRequest, result.getFacets(),
+ result.getAll());
+ result = reformResult;
+ } else {
+
+ /*
+ * Calculate the number of missing element and search then on
+ * the fallback wikitty service, and then add this result to the
+ * final result;
+ */
+ int missingNumber = resultSizeExpected - result.size();
+
+ PagedResult<E> resultTempFromFall = fallbackProxy
+ .findAllByExample(e, 0, missingNumber, fieldFacet);
+
+ List<E> completedResultList = result.getAll();
+ completedResultList.addAll(resultTempFromFall.getAll());
+
+ int totalNumberofFound = result.getNumFound()
+ + resultTempFromFall.getNumFound();
+
+ PagedResult<E> reformResult = new PagedResult<E>(firstIndex,
+ totalNumberofFound, result.getQueryString(),
+ result.getFacets(), completedResultList);
+ result = reformResult;
+ }
+ }
+
+ return result;
}
public <E extends BusinessEntityImpl> E findByExample(E e) {
@@ -487,95 +534,538 @@
public <E extends BusinessEntity> List<PagedResult<E>> findAllByCriteria(
Class<E> clazz, List<Criteria> criterias) {
- return mainProxy.findAllByCriteria(clazz, criterias);
+
+ List<PagedResult<E>> result = mainProxy.findAllByCriteria(clazz,
+ criterias);
+
+ if (isFallbackService()) {
+
+ for (int i = 0; i < result.size(); i++) {
+
+ /*
+ * get the curent criteria and corresponding result to check if
+ * the expected number of result is match
+ */
+ Criteria currentCrit = criterias.get(i);
+ PagedResult<E> currentResult = result.get(i);
+
+ int resultSizeExpected = currentCrit.getEndIndex()
+ - currentCrit.getFirstIndex();
+ if (currentResult.size() < resultSizeExpected) {
+ /*
+ * if result empty, just put the result of the fallback's
+ * requestresult
+ */
+
+ /*
+ * rebuild the criteria to search properly on the second
+ * service we search for wikitty not in the same position,
+ * but in the beginning
+ */
+ Criteria critFallback = Search.query(currentCrit)
+ .criteria();
+ critFallback.setFirstIndex(0);
+ critFallback.setEndIndex(currentCrit.getEndIndex()
+ - currentCrit.getFirstIndex());
+
+ if (result.size() == 0) {
+
+ PagedResult<E> tempPagedResult = fallbackProxy
+ .findAllByCriteria(clazz, critFallback);
+
+ // rebuild the result to match the expected criteria
+ tempPagedResult = new PagedResult<E>(
+ currentCrit.getFirstIndex(),
+ tempPagedResult.getNumFound(),
+ currentCrit.toString(),
+ tempPagedResult.getFacets(),
+ tempPagedResult.getAll());
+
+ result.set(i, tempPagedResult);
+ } else {
+
+ /*
+ * we will search to complete the result with id from
+ * the fallback service so we reduce the number of
+ * element requested on the fallback service and we add
+ * a restriction on wikitty id to exclude id already in
+ * the first part of the result
+ *
+ * it not assume that wikitty id found does not exist on
+ * the first part of a criteria, for example if first
+ * index where 12, nothing assure that we found wikitty
+ * in the fall back that aren't in the 11 first wikitty
+ * of the main service
+ */
+ PagedResult<String> idFromMain = mainProxy
+ .findAllIdByCriteria(currentCrit);
+
+ Criteria excluding = idNotInCriteriaConstructor(
+ critFallback, idFromMain.getAll());
+
+ excluding.setEndIndex(resultSizeExpected
+ - result.size());
+
+ PagedResult<E> resultFallback = fallbackProxy
+ .findAllByCriteria(clazz, excluding);
+
+ List<E> allresult = currentResult.getAll();
+ allresult.addAll(resultFallback.getAll());
+ int number = currentResult.getNumFound()
+ + resultFallback.getNumFound();
+
+ // rebuilt the result
+ PagedResult<E> tempPagedResult = new PagedResult<E>(
+ currentCrit.getFirstIndex(), number,
+ currentCrit.toString(),
+ currentResult.getFacets(), allresult);
+ // re set the result in the list
+ result.set(i, tempPagedResult);
+ }
+ }
+
+ }
+ }
+
+ return result;
}
public <E extends BusinessEntity> PagedResult<E> findAllByCriteria(
Class<E> clazz, Criteria criteria) {
- PagedResult<E> result = mainProxy.findAllByCriteria(clazz, criteria);
-
-
- if (isFallbackService()) {
+ PagedResult<E> result = mainProxy.findAllByCriteria(clazz, criteria);
+
+ // PagedResult<String> result = mainProxy.findAllIdByCriteria(criteria);
+
+ int resultSizeExpected = criteria.getEndIndex()
+ - criteria.getFirstIndex();
+ if (isFallbackService() && result.size() < resultSizeExpected) {
+ // if result empty, just put the result of the fallback's request
+ // result
+
/*
- * TODO mfortun-2011-05-16 algo
- *
- * search id on the main,
- * search id on the fallback
- * fallbackid-mainid
- *
- * restore id from fallback
- * complete pagedresult
- *
- *
- *
+ * rebuild the criteria to search properly on the second service we
+ * search for wikitty not in the same position, but in the beginning
*/
-
+ Criteria critFallback = Search.query(criteria).criteria();
+ critFallback.setFirstIndex(0);
+ critFallback.setEndIndex(criteria.getEndIndex()
+ - criteria.getFirstIndex());
+
+ if (result.size() == 0) {
+
+ result = fallbackProxy.findAllByCriteria(clazz, critFallback);
+ // rebuild the result to match the expected criteria
+ result = new PagedResult<E>(criteria.getFirstIndex(),
+ result.getNumFound(), criteria.toString(),
+ result.getFacets(), result.getAll());
+ } else {
+
+ PagedResult<String> idFromMain = mainProxy
+ .findAllIdByCriteria(criteria);
+
+ /*
+ * we will search to complete the result with id from the
+ * fallback service so we reduce the number of element requested
+ * on the fallback service and we add a restriction on wikitty
+ * id to exclude id already in the first part of the result
+ *
+ * it not assume that wikitty id found does not exist on the
+ * first part of a criteria, for example if first index where
+ * 12, nothing assure that we found wikitty in the fall back
+ * that aren't in the 11 first wikitty of the main service
+ */
+ Criteria excluding = idNotInCriteriaConstructor(critFallback,
+ idFromMain.getAll());
+
+ excluding.setEndIndex(resultSizeExpected - result.size());
+
+ PagedResult<E> resultFallback = fallbackProxy
+ .findAllByCriteria(clazz, excluding);
+
+ List<E> allresult = result.getAll();
+ allresult.addAll(resultFallback.getAll());
+ int number = result.getNumFound()
+ + resultFallback.getNumFound();
+
+ result = new PagedResult<E>(criteria.getFirstIndex(), number,
+ criteria.toString(), result.getFacets(), allresult);
+ }
}
-
-
-
+
return result;
}
public <E extends BusinessEntity> PagedResult<E>[] findAllByCriteria(
Class<E> clazz, Criteria c1, Criteria c2, Criteria... otherCriteria) {
-
+
List<Criteria> criterias = new ArrayList<Criteria>();
criterias.add(c1);
criterias.add(c2);
CollectionUtil.addAll(criterias, otherCriteria);
-
+
// deleguate to easily handle multicontext
- return (PagedResult<E>[]) this.findAllByCriteria(clazz, criterias).toArray();
+ return (PagedResult<E>[]) this.findAllByCriteria(clazz, criterias)
+ .toArray();
}
public List<PagedResult<Wikitty>> findAllByCriteria(List<Criteria> criteria) {
- return mainProxy.findAllByCriteria(criteria);
+
+ List<PagedResult<Wikitty>> result = mainProxy
+ .findAllByCriteria(criteria);
+
+ if (isFallbackService()) {
+
+ for (int i = 0; i < result.size(); i++) {
+
+ /*
+ * get the curent criteria and corresponding result to check if
+ * the expected number of result is match
+ */
+ Criteria currentCrit = criteria.get(i);
+ PagedResult<Wikitty> currentResult = result.get(i);
+
+ int resultSizeExpected = currentCrit.getEndIndex()
+ - currentCrit.getFirstIndex();
+ if (currentResult.size() < resultSizeExpected) {
+ /*
+ * if result empty, just put the result of the fallback's
+ * requestresult
+ */
+
+ /*
+ * rebuild the criteria to search properly on the second
+ * service we search for wikitty not in the same position,
+ * but in the beginning
+ */
+ Criteria critFallback = Search.query(currentCrit)
+ .criteria();
+ critFallback.setFirstIndex(0);
+ critFallback.setEndIndex(currentCrit.getEndIndex()
+ - currentCrit.getFirstIndex());
+
+ if (result.size() == 0) {
+
+ PagedResult<Wikitty> tempPagedResult = fallbackProxy
+ .findAllByCriteria(critFallback);
+
+ // rebuild the result to match the expected criteria
+ tempPagedResult = new PagedResult<Wikitty>(
+ currentCrit.getFirstIndex(),
+ tempPagedResult.getNumFound(),
+ currentCrit.toString(),
+ tempPagedResult.getFacets(),
+ tempPagedResult.getAll());
+
+ result.set(i, tempPagedResult);
+ } else {
+
+ /*
+ * we will search to complete the result with id from
+ * the fallback service so we reduce the number of
+ * element requested on the fallback service and we add
+ * a restriction on wikitty id to exclude id already in
+ * the first part of the result
+ *
+ * it not assume that wikitty id found does not exist on
+ * the first part of a criteria, for example if first
+ * index where 12, nothing assure that we found wikitty
+ * in the fall back that aren't in the 11 first wikitty
+ * of the main service
+ */
+ PagedResult<String> idFromMain = mainProxy
+ .findAllIdByCriteria(currentCrit);
+
+ Criteria excluding = idNotInCriteriaConstructor(
+ critFallback, idFromMain.getAll());
+
+ excluding.setEndIndex(resultSizeExpected
+ - result.size());
+
+ PagedResult<Wikitty> resultFallback = fallbackProxy
+ .findAllByCriteria(excluding);
+
+ List<Wikitty> allresult = currentResult.getAll();
+ allresult.addAll(resultFallback.getAll());
+ int number = currentResult.getNumFound()
+ + resultFallback.getNumFound();
+
+ // rebuilt the result
+ PagedResult<Wikitty> tempPagedResult = new PagedResult<Wikitty>(
+ currentCrit.getFirstIndex(), number,
+ currentCrit.toString(),
+ currentResult.getFacets(), allresult);
+ // re set the result in the list
+ result.set(i, tempPagedResult);
+ }
+ }
+
+ }
+ }
+
+ return result;
+
}
public PagedResult<Wikitty> findAllByCriteria(Criteria criteria) {
- return mainProxy.findAllByCriteria(criteria);
+
+ PagedResult<Wikitty> result = mainProxy.findAllByCriteria(criteria);
+
+ // PagedResult<String> result = mainProxy.findAllIdByCriteria(criteria);
+
+ int resultSizeExpected = criteria.getEndIndex()
+ - criteria.getFirstIndex();
+ if (isFallbackService() && result.size() < resultSizeExpected) {
+ // if result empty, just put the result of the fallback's request
+ // result
+
+ /*
+ * rebuild the criteria to search properly on the second service we
+ * search for wikitty not in the same position, but in the beginning
+ */
+ Criteria critFallback = Search.query(criteria).criteria();
+ critFallback.setFirstIndex(0);
+ critFallback.setEndIndex(criteria.getEndIndex()
+ - criteria.getFirstIndex());
+
+ if (result.size() == 0) {
+
+ result = fallbackProxy.findAllByCriteria(critFallback);
+ // rebuild the result to match the expected criteria
+ result = new PagedResult<Wikitty>(criteria.getFirstIndex(),
+ result.getNumFound(), criteria.toString(),
+ result.getFacets(), result.getAll());
+ } else {
+
+ PagedResult<String> idFromMain = mainProxy
+ .findAllIdByCriteria(criteria);
+
+ /*
+ * we will search to complete the result with id from the
+ * fallback service so we reduce the number of element requested
+ * on the fallback service and we add a restriction on wikitty
+ * id to exclude id already in the first part of the result
+ *
+ * it not assume that wikitty id found does not exist on the
+ * first part of a criteria, for example if first index where
+ * 12, nothing assure that we found wikitty in the fall back
+ * that aren't in the 11 first wikitty of the main service
+ */
+ Criteria excluding = idNotInCriteriaConstructor(critFallback,
+ idFromMain.getAll());
+
+ excluding.setEndIndex(resultSizeExpected - result.size());
+
+ PagedResult<Wikitty> resultFallback = fallbackProxy
+ .findAllByCriteria(excluding);
+
+ List<Wikitty> allresult = result.getAll();
+ allresult.addAll(resultFallback.getAll());
+ int number = result.getNumFound()
+ + resultFallback.getNumFound();
+
+ result = new PagedResult<Wikitty>(criteria.getFirstIndex(),
+ number, criteria.toString(), result.getFacets(),
+ allresult);
+ }
+ }
+
+ return result;
+
}
public PagedResult<Wikitty>[] findAllByCriteria(Criteria c1, Criteria c2,
Criteria... otherCriteria) {
-
+
List<Criteria> criterias = new ArrayList<Criteria>();
criterias.add(c1);
criterias.add(c2);
CollectionUtil.addAll(criterias, otherCriteria);
-
+
// deleguate to easily handle multicontext
- return (PagedResult<Wikitty>[]) this.findAllByCriteria(criterias).toArray();
+ return (PagedResult<Wikitty>[]) this.findAllByCriteria(criterias)
+ .toArray();
}
public List<PagedResult<String>> findAllIdByCriteria(List<Criteria> criteria) {
- return mainProxy.findAllIdByCriteria(criteria);
+
+ List<PagedResult<String>> result = mainProxy
+ .findAllIdByCriteria(criteria);
+
+ if (isFallbackService()) {
+
+ for (int i = 0; i < result.size(); i++) {
+
+ /*
+ * get the curent criteria and corresponding result to check if
+ * the expected number of result is match
+ */
+ Criteria currentCrit = criteria.get(i);
+ PagedResult<String> currentResult = result.get(i);
+
+ int resultSizeExpected = currentCrit.getEndIndex()
+ - currentCrit.getFirstIndex();
+ if (currentResult.size() < resultSizeExpected) {
+ /*
+ * if result empty, just put the result of the fallback's
+ * requestresult
+ */
+
+ /*
+ * rebuild the criteria to search properly on the second
+ * service we search for wikitty not in the same position,
+ * but in the beginning
+ */
+ Criteria critFallback = Search.query(currentCrit)
+ .criteria();
+ critFallback.setFirstIndex(0);
+ critFallback.setEndIndex(currentCrit.getEndIndex()
+ - currentCrit.getFirstIndex());
+
+ if (result.size() == 0) {
+
+ PagedResult<String> tempPagedResult = fallbackProxy
+ .findAllIdByCriteria(critFallback);
+
+ // rebuild the result to match the expected criteria
+ tempPagedResult = new PagedResult<String>(
+ currentCrit.getFirstIndex(),
+ tempPagedResult.getNumFound(),
+ currentCrit.toString(),
+ tempPagedResult.getFacets(),
+ tempPagedResult.getAll());
+
+ result.set(i, tempPagedResult);
+ } else {
+
+ /*
+ * we will search to complete the result with id from
+ * the fallback service so we reduce the number of
+ * element requested on the fallback service and we add
+ * a restriction on wikitty id to exclude id already in
+ * the first part of the result
+ *
+ * it not assume that wikitty id found does not exist on
+ * the first part of a criteria, for example if first
+ * index where 12, nothing assure that we found wikitty
+ * in the fall back that aren't in the 11 first wikitty
+ * of the main service
+ */
+ Criteria excluding = idNotInCriteriaConstructor(
+ critFallback, currentResult.getAll());
+
+ excluding.setEndIndex(resultSizeExpected
+ - result.size());
+
+ PagedResult<String> resultFallback = fallbackProxy
+ .findAllIdByCriteria(excluding);
+
+ List<String> allresult = currentResult.getAll();
+ allresult.addAll(resultFallback.getAll());
+ int number = currentResult.getNumFound()
+ + resultFallback.getNumFound();
+
+ // rebuilt the result
+ PagedResult<String> tempPagedResult = new PagedResult<String>(
+ currentCrit.getFirstIndex(), number,
+ currentCrit.toString(),
+ currentResult.getFacets(), allresult);
+ // re set the result in the list
+ result.set(i, tempPagedResult);
+ }
+ }
+
+ }
+ }
+
+ return result;
+
}
public PagedResult<String> findAllIdByCriteria(Criteria criteria) {
- return mainProxy.findAllIdByCriteria(criteria);
+
+ PagedResult<String> result = mainProxy.findAllIdByCriteria(criteria);
+
+ int resultSizeExpected = criteria.getEndIndex()
+ - criteria.getFirstIndex();
+ if (isFallbackService() && result.size() < resultSizeExpected) {
+ // if result empty, just put the result of the fallback's request
+ // result
+
+ /*
+ * rebuild the criteria to search properly on the second service we
+ * search for wikitty not in the same position, but in the beginning
+ */
+ Criteria critFallback = Search.query(criteria).criteria();
+ critFallback.setFirstIndex(0);
+ critFallback.setEndIndex(criteria.getEndIndex()
+ - criteria.getFirstIndex());
+
+ if (result.size() == 0) {
+
+ result = fallbackProxy.findAllIdByCriteria(critFallback);
+ // rebuild the result to match the expected criteria
+ result = new PagedResult<String>(criteria.getFirstIndex(),
+ result.getNumFound(), criteria.toString(),
+ result.getFacets(), result.getAll());
+ } else {
+
+ /*
+ * we will search to complete the result with id from the
+ * fallback service so we reduce the number of element requested
+ * on the fallback service and we add a restriction on wikitty
+ * id to exclude id already in the first part of the result
+ *
+ * it not assume that wikitty id found does not exist on the
+ * first part of a criteria, for example if first index where
+ * 12, nothing assure that we found wikitty in the fall back
+ * that aren't in the 11 first wikitty of the main service
+ */
+ Criteria excluding = idNotInCriteriaConstructor(critFallback,
+ result.getAll());
+
+ excluding.setEndIndex(resultSizeExpected - result.size());
+
+ PagedResult<String> resultFallback = fallbackProxy
+ .findAllIdByCriteria(excluding);
+
+ List<String> allresult = result.getAll();
+ allresult.addAll(resultFallback.getAll());
+ int number = result.getNumFound()
+ + resultFallback.getNumFound();
+
+ result = new PagedResult<String>(criteria.getFirstIndex(),
+ number, criteria.toString(), result.getFacets(),
+ allresult);
+ }
+ }
+
+ return result;
}
public PagedResult<String>[] findAllIdByCriteria(Criteria c1, Criteria c2,
Criteria... otherCriteria) {
-
-
+
List<Criteria> criterias = new ArrayList<Criteria>();
criterias.add(c1);
criterias.add(c2);
CollectionUtil.addAll(criterias, otherCriteria);
-
+
// deleguate to easily handle multicontext
- return (PagedResult<String>[]) this.findAllIdByCriteria( criterias).toArray();
+ return (PagedResult<String>[]) this.findAllIdByCriteria(criterias)
+ .toArray();
}
public List<String> findIdByCriteria(List<Criteria> criteria) {
List<String> result = mainProxy.findIdByCriteria(criteria);
+ // TODO mfortun-2011-05-17 reform criteria
+
if (isFallbackService()) {
+
+
+
if (result == null) {
result = fallbackProxy.findIdByCriteria(criteria);
} else {
@@ -973,4 +1463,19 @@
return result;
}
+ protected Criteria idNotInCriteriaConstructor(Criteria origin,
+ List<String> toExclude) {
+ Criteria result = null;
+
+ Search search = Search.query(origin);
+
+ for (String id : toExclude) {
+ search.idneq(id);
+ }
+
+ result = search.criteria();
+
+ return result;
+ }
+
}
1
0
r895 - trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication
by mfortun@users.nuiton.org 16 May '11
by mfortun@users.nuiton.org 16 May '11
16 May '11
Author: mfortun
Date: 2011-05-16 18:03:53 +0200 (Mon, 16 May 2011)
New Revision: 895
Url: http://nuiton.org/repositories/revision/wikitty/895
Log:
* beginning of the implementation of multicontext support for pagedresult's methods
Modified:
trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublicationProxy.java
Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublicationProxy.java
===================================================================
--- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublicationProxy.java 2011-05-16 15:00:51 UTC (rev 894)
+++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublicationProxy.java 2011-05-16 16:03:53 UTC (rev 895)
@@ -493,12 +493,41 @@
public <E extends BusinessEntity> PagedResult<E> findAllByCriteria(
Class<E> clazz, Criteria criteria) {
- return mainProxy.findAllByCriteria(clazz, criteria);
+ PagedResult<E> result = mainProxy.findAllByCriteria(clazz, criteria);
+
+
+ if (isFallbackService()) {
+ /*
+ * TODO mfortun-2011-05-16 algo
+ *
+ * search id on the main,
+ * search id on the fallback
+ * fallbackid-mainid
+ *
+ * restore id from fallback
+ * complete pagedresult
+ *
+ *
+ *
+ */
+
+ }
+
+
+
+ return result;
}
public <E extends BusinessEntity> PagedResult<E>[] findAllByCriteria(
Class<E> clazz, Criteria c1, Criteria c2, Criteria... otherCriteria) {
- return mainProxy.findAllByCriteria(clazz, c1, c2, otherCriteria);
+
+ List<Criteria> criterias = new ArrayList<Criteria>();
+ criterias.add(c1);
+ criterias.add(c2);
+ CollectionUtil.addAll(criterias, otherCriteria);
+
+ // deleguate to easily handle multicontext
+ return (PagedResult<E>[]) this.findAllByCriteria(clazz, criterias).toArray();
}
public List<PagedResult<Wikitty>> findAllByCriteria(List<Criteria> criteria) {
@@ -511,7 +540,14 @@
public PagedResult<Wikitty>[] findAllByCriteria(Criteria c1, Criteria c2,
Criteria... otherCriteria) {
- return mainProxy.findAllByCriteria(c1, c2, otherCriteria);
+
+ List<Criteria> criterias = new ArrayList<Criteria>();
+ criterias.add(c1);
+ criterias.add(c2);
+ CollectionUtil.addAll(criterias, otherCriteria);
+
+ // deleguate to easily handle multicontext
+ return (PagedResult<Wikitty>[]) this.findAllByCriteria(criterias).toArray();
}
public List<PagedResult<String>> findAllIdByCriteria(List<Criteria> criteria) {
@@ -524,7 +560,15 @@
public PagedResult<String>[] findAllIdByCriteria(Criteria c1, Criteria c2,
Criteria... otherCriteria) {
- return mainProxy.findAllIdByCriteria(c1, c2, otherCriteria);
+
+
+ List<Criteria> criterias = new ArrayList<Criteria>();
+ criterias.add(c1);
+ criterias.add(c2);
+ CollectionUtil.addAll(criterias, otherCriteria);
+
+ // deleguate to easily handle multicontext
+ return (PagedResult<String>[]) this.findAllIdByCriteria( criterias).toArray();
}
public List<String> findIdByCriteria(List<Criteria> criteria) {
1
0
r894 - trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication
by mfortun@users.nuiton.org 16 May '11
by mfortun@users.nuiton.org 16 May '11
16 May '11
Author: mfortun
Date: 2011-05-16 17:00:51 +0200 (Mon, 16 May 2011)
New Revision: 894
Url: http://nuiton.org/repositories/revision/wikitty/894
Log:
* add mutlicontext store support, wikitty originally from fallbackservice are store on fallback not on mainproxy
Modified:
trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublicationProxy.java
Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublicationProxy.java
===================================================================
--- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublicationProxy.java 2011-05-16 13:38:09 UTC (rev 893)
+++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublicationProxy.java 2011-05-16 15:00:51 UTC (rev 894)
@@ -3,9 +3,6 @@
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-
import org.nuiton.util.ApplicationConfig;
import org.nuiton.util.CollectionUtil;
import org.nuiton.wikitty.WikittyProxy;
@@ -18,6 +15,7 @@
import org.nuiton.wikitty.entities.WikittyUser;
import org.nuiton.wikitty.search.Criteria;
import org.nuiton.wikitty.search.PagedResult;
+import org.nuiton.wikitty.search.Search;
import org.nuiton.wikitty.search.TreeNodeResult;
import org.nuiton.wikitty.services.WikittyEvent;
@@ -212,31 +210,133 @@
}
public <E extends BusinessEntity> E store(E e) {
- return mainProxy.store(e);
+
+ E result = null;
+ // if there a fallback proxy and e exist on it, we try to store it again
+ // on fallbackproxy
+ if (isFallbackService()
+ && fallbackProxy.restore(e.getWikittyId()) != null) {
+ result = fallbackProxy.store(e);
+ } else {
+ result = mainProxy.store(e);
+ }
+
+ return result;
}
public Wikitty store(Wikitty w) {
- // TODO mfortun-2011-05-13 store in wich one ?
- // check before if wikitty exist on fall back
- // and the stock on it if exist and store after on main
+ Wikitty result = null;
+ // if there a fallback proxy and e exist on it, we try to store it again
+ // on fallbackproxy
+ if (isFallbackService() && fallbackProxy.restore(w.getId()) != null) {
+ result = fallbackProxy.store(w);
+ } else {
+ result = mainProxy.store(w);
+ }
- return mainProxy.store(w);
+ return result;
}
public <E extends BusinessEntity> List<E> store(E e1, E e2, E... eN) {
- return mainProxy.store(e1, e2, eN);
+
+ List<E> result = new ArrayList<E>();
+ result.add(e1);
+ result.add(e2);
+ CollectionUtil.addAll(result, eN);
+
+ // delegate to store list, the easiest to handle store in two
+ // proxy
+ return this.store(result);
}
public Wikitty[] store(Wikitty w1, Wikitty w2, Wikitty... wN) {
- return mainProxy.store(w1, w2, wN);
+
+ List<Wikitty> result = new ArrayList<Wikitty>();
+ result.add(w1);
+ result.add(w2);
+ CollectionUtil.addAll(result, wN);
+
+ // delegate to store wikittylist, the easiest to handle store in two
+ // proxy
+ return (Wikitty[]) (this.storeWikitty(result).toArray());
}
public <E extends BusinessEntity> List<E> store(List<E> objets) {
- return mainProxy.store(objets);
+
+ List<E> result = new ArrayList<E>();
+
+ List<E> tempObject = new ArrayList<E>();
+ tempObject.addAll(objets);
+
+ if (isFallbackService()) {
+
+ List<String> ids = new ArrayList<String>();
+
+ // retrieve string id
+ for (E e : objets) {
+ ids.add(e.getWikittyId());
+ }
+
+ List<Criteria> criterias = idInIdsCriteriaConstructor(ids);
+
+ // retrieve wikitty's id that exist on fallbackservice
+ List<String> containedFallId = fallbackProxy
+ .findIdByCriteria(criterias);
+
+ List<E> toStoreOnFall = new ArrayList<E>();
+ // order wikitty that have to be save on fall back
+ for (E e : objets) {
+ if (containedFallId.contains(e.getWikittyId())) {
+ toStoreOnFall.add(e);
+ tempObject.remove(e);
+ }
+ }
+ // save wikitty on fall back
+ result.addAll(fallbackProxy.store(toStoreOnFall));
+
+ }
+
+ result.addAll(mainProxy.store(tempObject));
+ return result;
}
public List<Wikitty> storeWikitty(List<Wikitty> wikitties) {
- return mainProxy.storeWikitty(wikitties);
+
+ List<Wikitty> result = new ArrayList<Wikitty>();
+
+ List<Wikitty> tempObject = new ArrayList<Wikitty>();
+ tempObject.addAll(wikitties);
+
+ if (isFallbackService()) {
+
+ List<String> ids = new ArrayList<String>();
+
+ // retrieve string id
+ for (Wikitty w : wikitties) {
+ ids.add(w.getId());
+ }
+
+ List<Criteria> criterias = idInIdsCriteriaConstructor(ids);
+
+ // retrieve wikitty's id that exist on fallbackservice
+ List<String> containedFallId = fallbackProxy
+ .findIdByCriteria(criterias);
+
+ List<Wikitty> toStoreOnFall = new ArrayList<Wikitty>();
+ // order wikitty that have to be save on fall back
+ for (Wikitty w : wikitties) {
+ if (containedFallId.contains(w.getId())) {
+ toStoreOnFall.add(w);
+ tempObject.remove(w);
+ }
+ }
+ // save wikitty on fall back
+ result.addAll(fallbackProxy.storeWikitty(toStoreOnFall));
+
+ }
+
+ result.addAll(mainProxy.storeWikitty(tempObject));
+ return result;
}
public <E extends BusinessEntity> E restore(Class<E> clazz, String id,
@@ -392,6 +492,7 @@
public <E extends BusinessEntity> PagedResult<E> findAllByCriteria(
Class<E> clazz, Criteria criteria) {
+
return mainProxy.findAllByCriteria(clazz, criteria);
}
@@ -427,7 +528,7 @@
}
public List<String> findIdByCriteria(List<Criteria> criteria) {
-
+
List<String> result = mainProxy.findIdByCriteria(criteria);
if (isFallbackService()) {
@@ -444,26 +545,23 @@
}
return result;
-
-
-
+
}
public String findIdByCriteria(Criteria criteria) {
-
+
String result = mainProxy.findIdByCriteria(criteria);
-
+
if (isFallbackService() && result == null) {
result = fallbackProxy.findIdByCriteria(criteria);
}
-
- return result;
+
+ return result;
}
public String[] findIdByCriteria(Criteria c1, Criteria c2,
Criteria... otherCriteria) {
-
-
+
String[] result = mainProxy.findIdByCriteria(c1, c2, otherCriteria);
if (isFallbackService()) {
@@ -491,8 +589,7 @@
public <E extends BusinessEntity> List<E> findByCriteria(Class<E> clazz,
List<Criteria> criterias) {
-
-
+
List<E> result = mainProxy.findByCriteria(clazz, criterias);
if (isFallbackService()) {
@@ -500,8 +597,8 @@
result = fallbackProxy.findByCriteria(clazz, criterias);
} else {
// merge list
- List<E> resultFallback = fallbackProxy
- .findByCriteria(clazz, criterias);
+ List<E> resultFallback = fallbackProxy.findByCriteria(clazz,
+ criterias);
// this allow to element from main to prevail
resultFallback.removeAll(result);
result.addAll(resultFallback);
@@ -513,13 +610,13 @@
public <E extends BusinessEntity> E findByCriteria(Class<E> clazz,
Criteria criteria) {
-
+
E result = mainProxy.findByCriteria(clazz, criteria);
-
+
if (isFallbackService() && result == null) {
result = fallbackProxy.findByCriteria(clazz, criteria);
}
-
+
return result;
}
@@ -815,4 +912,21 @@
return result;
}
+ /**
+ * construct list criteria on wikitty id: used to search wikittyid in
+ * wikittyIDCollection. used to check if an id exist on a wikitty service
+ *
+ * @param ids
+ * @return criterias on id
+ */
+ protected List<Criteria> idInIdsCriteriaConstructor(List<String> ids) {
+
+ List<Criteria> result = new ArrayList<Criteria>();
+
+ for (String id : ids) {
+ result.add(Search.query().ideq(id).criteria());
+ }
+ return result;
+ }
+
}
1
0
r893 - trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication
by mfortun@users.nuiton.org 16 May '11
by mfortun@users.nuiton.org 16 May '11
16 May '11
Author: mfortun
Date: 2011-05-16 15:38:09 +0200 (Mon, 16 May 2011)
New Revision: 893
Url: http://nuiton.org/repositories/revision/wikitty/893
Log:
* multicontext support except for pagedResult return type and storage methods
Modified:
trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublicationProxy.java
Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublicationProxy.java
===================================================================
--- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublicationProxy.java 2011-05-16 10:00:20 UTC (rev 892)
+++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublicationProxy.java 2011-05-16 13:38:09 UTC (rev 893)
@@ -7,6 +7,7 @@
import java.util.Map.Entry;
import org.nuiton.util.ApplicationConfig;
+import org.nuiton.util.CollectionUtil;
import org.nuiton.wikitty.WikittyProxy;
import org.nuiton.wikitty.WikittyService;
import org.nuiton.wikitty.WikittyServiceFactory;
@@ -117,6 +118,35 @@
return fallbackProxy != null;
}
+ public WikittyProxy getFallbackProxy() {
+ return fallbackProxy;
+ }
+
+ public void setFallbackProxy(WikittyProxy fallbackProxy) {
+ this.fallbackProxy = fallbackProxy;
+ }
+
+ public WikittyProxy getMainProxy() {
+ return mainProxy;
+ }
+
+ public void setMainProxy(WikittyProxy mainProxy) {
+ this.mainProxy = mainProxy;
+ }
+
+ public void setFallbackWikittyService(WikittyService service) {
+ fallbackProxy.setWikittyService(service);
+ }
+
+ public WikittyService getFallbackWikittyService() {
+ return fallbackProxy.getWikittyService();
+ }
+
+ /*
+ * Beginning of redefinition method that take care of merge between result
+ * of the proxy and fallback proxy if any
+ */
+
public void login(String login, String password) {
mainProxy.login(login, password);
if (isFallbackService()) {
@@ -132,7 +162,11 @@
}
public String getSecurityToken() {
- return mainProxy.getSecurityToken();
+ String result = mainProxy.getSecurityToken();
+
+ // TODO mfortun-2011-05-16 do something on fallback ?
+
+ return result;
}
public void setSecurityToken(String securityToken) {
@@ -143,11 +177,20 @@
}
public WikittyUser getUser() {
- return mainProxy.getUser();
+ WikittyUser result = mainProxy.getUser();
+
+ // TODO mfortun-2011-05-16 do something on fallback ?
+
+ return result;
}
public <E extends BusinessEntity> E getUser(Class<E> clazz) {
- return mainProxy.getUser(clazz);
+
+ E result = mainProxy.getUser(clazz);
+
+ // TODO mfortun-2011-05-16 do something on fallback ?
+
+ return result;
}
public WikittyService getWikittyService() {
@@ -160,7 +203,12 @@
public <E extends BusinessEntity> E cast(BusinessEntity source,
Class<E> target) {
- return mainProxy.cast(source, target);
+
+ E result = mainProxy.cast(source, target);
+
+ // TODO mfortun-2011-05-16 do something on fallback ?
+
+ return result;
}
public <E extends BusinessEntity> E store(E e) {
@@ -193,7 +241,13 @@
public <E extends BusinessEntity> E restore(Class<E> clazz, String id,
boolean checkExtension) {
- return mainProxy.restore(clazz, id, checkExtension);
+ E result = mainProxy.restore(clazz, id, checkExtension);
+
+ if (isFallbackService() && result == null) {
+ result = fallbackProxy.restore(clazz, id, checkExtension);
+ }
+
+ return result;
}
public Wikitty restore(String id) {
@@ -217,11 +271,22 @@
}
public List<Wikitty> restore(List<String> id) {
- List<Wikitty> result = mainProxy.restore(id);
- // TODO mfortun-2011-05-13 need to merge the two list
- if (isFallbackService() && result == null) {
- result = fallbackProxy.restore(id);
+ List<Wikitty> result = new ArrayList<Wikitty>();
+
+ result.addAll(mainProxy.restore(id));
+
+ if (isFallbackService()) {
+ // prepare a list with wikitty id that have not been retrieve by the
+ // first proxy
+ List<String> unusedId = new ArrayList<String>();
+ unusedId.addAll(id);
+
+ for (Wikitty wikitty : result) {
+ unusedId.remove(wikitty.getId());
+ }
+
+ result.addAll(fallbackProxy.restore(unusedId));
}
return result;
@@ -231,10 +296,23 @@
public <E extends BusinessEntity> List<E> restore(Class<E> clazz,
List<String> id, boolean checkExtension) {
- List<E> result = mainProxy.restore(clazz, id, checkExtension);
+ List<E> result = new ArrayList<E>();
- if (isFallbackService() && result == null) {
- result = fallbackProxy.restore(clazz, id, checkExtension);
+ result.addAll(mainProxy.restore(clazz, id, checkExtension));
+
+ if (isFallbackService()) {
+
+ // prepare a list with wikitty id that have not been retrieve by the
+ // first proxy
+ List<String> unusedId = new ArrayList<String>();
+ unusedId.addAll(id);
+
+ for (E wikitty : result) {
+ unusedId.remove(wikitty.getWikittyId());
+ }
+
+ result.addAll(fallbackProxy
+ .restore(clazz, unusedId, checkExtension));
}
return result;
@@ -242,39 +320,54 @@
public <E extends BusinessEntity> List<E> restore(Class<E> clazz,
List<String> id) {
- return mainProxy.restore(clazz, id);
+
+ List<E> result = new ArrayList<E>();
+
+ result.addAll(mainProxy.restore(clazz, id));
+
+ if (isFallbackService()) {
+
+ // prepare a list with wikitty id that have not been retrieve by the
+ // first proxy
+ List<String> unusedId = new ArrayList<String>();
+ unusedId.addAll(id);
+
+ for (E wikitty : result) {
+ unusedId.remove(wikitty.getWikittyId());
+ }
+
+ result.addAll(fallbackProxy.restore(clazz, unusedId));
+ }
+
+ return result;
}
public void delete(String id) {
mainProxy.delete(id);
- if (isFallbackService()){
+ if (isFallbackService()) {
fallbackProxy.delete(id);
}
-
}
public <E extends BusinessEntity> void delete(E object) {
mainProxy.delete(object);
- if (isFallbackService()){
+ if (isFallbackService()) {
fallbackProxy.delete(object);
}
-
}
public void delete(Collection<String> ids) {
mainProxy.delete(ids);
- if (isFallbackService()){
+ if (isFallbackService()) {
fallbackProxy.delete(ids);
}
-
}
public <E extends BusinessEntity> void delete(List<E> objets) {
mainProxy.delete(objets);
- if (isFallbackService()){
+ if (isFallbackService()) {
fallbackProxy.delete(objets);
}
-
}
public <E extends BusinessEntityImpl> PagedResult<E> findAllByExample(E e,
@@ -283,7 +376,13 @@
}
public <E extends BusinessEntityImpl> E findByExample(E e) {
- return mainProxy.findByExample(e);
+ E result = mainProxy.findByExample(e);
+
+ if (isFallbackService() && result == null) {
+ result = fallbackProxy.findByExample(e);
+ }
+
+ return result;
}
public <E extends BusinessEntity> List<PagedResult<E>> findAllByCriteria(
@@ -328,59 +427,200 @@
}
public List<String> findIdByCriteria(List<Criteria> criteria) {
- return mainProxy.findIdByCriteria(criteria);
+
+ List<String> result = mainProxy.findIdByCriteria(criteria);
+
+ if (isFallbackService()) {
+ if (result == null) {
+ result = fallbackProxy.findIdByCriteria(criteria);
+ } else {
+ // merge list
+ List<String> resultFallback = fallbackProxy
+ .findIdByCriteria(criteria);
+ // this allow to element from main to prevail
+ resultFallback.removeAll(result);
+ result.addAll(resultFallback);
+ }
+ }
+
+ return result;
+
+
+
}
public String findIdByCriteria(Criteria criteria) {
- return mainProxy.findIdByCriteria(criteria);
+
+ String result = mainProxy.findIdByCriteria(criteria);
+
+ if (isFallbackService() && result == null) {
+ result = fallbackProxy.findIdByCriteria(criteria);
+ }
+
+ return result;
}
public String[] findIdByCriteria(Criteria c1, Criteria c2,
Criteria... otherCriteria) {
- return mainProxy.findIdByCriteria(c1, c2, otherCriteria);
+
+
+ String[] result = mainProxy.findIdByCriteria(c1, c2, otherCriteria);
+
+ if (isFallbackService()) {
+ if (result == null) {
+ result = fallbackProxy.findIdByCriteria(c1, c2, otherCriteria);
+ } else {
+ // merge list
+ List<String> resultFallback = new ArrayList<String>();
+ CollectionUtil.addAll(resultFallback,
+ fallbackProxy.findIdByCriteria(c1, c2, otherCriteria));
+
+ List<String> resultMain = new ArrayList<String>();
+ CollectionUtil.addAll(resultMain, result);
+
+ // this allow to element from main to prevail
+ resultFallback.removeAll(resultMain);
+ resultMain.addAll(resultFallback);
+
+ result = (String[]) resultMain.toArray();
+ }
+ }
+
+ return result;
}
public <E extends BusinessEntity> List<E> findByCriteria(Class<E> clazz,
List<Criteria> criterias) {
- return mainProxy.findByCriteria(clazz, criterias);
+
+
+ List<E> result = mainProxy.findByCriteria(clazz, criterias);
+
+ if (isFallbackService()) {
+ if (result == null) {
+ result = fallbackProxy.findByCriteria(clazz, criterias);
+ } else {
+ // merge list
+ List<E> resultFallback = fallbackProxy
+ .findByCriteria(clazz, criterias);
+ // this allow to element from main to prevail
+ resultFallback.removeAll(result);
+ result.addAll(resultFallback);
+ }
+ }
+
+ return result;
}
public <E extends BusinessEntity> E findByCriteria(Class<E> clazz,
Criteria criteria) {
- return mainProxy.findByCriteria(clazz, criteria);
+
+ E result = mainProxy.findByCriteria(clazz, criteria);
+
+ if (isFallbackService() && result == null) {
+ result = fallbackProxy.findByCriteria(clazz, criteria);
+ }
+
+ return result;
}
public <E extends BusinessEntity> E[] findByCriteria(Class<E> clazz,
Criteria c1, Criteria c2, Criteria... otherCriteria) {
- return mainProxy.findByCriteria(clazz, c1, c2, otherCriteria);
+
+ E[] result = mainProxy.findByCriteria(clazz, c1, c2, otherCriteria);
+
+ if (isFallbackService()) {
+ if (result == null) {
+ result = fallbackProxy.findByCriteria(clazz, c1, c2,
+ otherCriteria);
+ } else {
+ // merge list
+ List<E> resultFallback = new ArrayList<E>();
+ CollectionUtil.addAll(resultFallback, fallbackProxy
+ .findByCriteria(clazz, c1, c2, otherCriteria));
+
+ List<E> resultMain = new ArrayList<E>();
+ CollectionUtil.addAll(resultMain, result);
+
+ // this allow to element from main to prevail
+ resultFallback.removeAll(resultMain);
+ resultMain.addAll(resultFallback);
+
+ result = (E[]) resultMain.toArray();
+ }
+ }
+
+ return result;
}
public List<Wikitty> findByCriteria(List<Criteria> criteria) {
- return mainProxy.findByCriteria(criteria);
+
+ List<Wikitty> result = mainProxy.findByCriteria(criteria);
+
+ if (isFallbackService()) {
+ if (result == null) {
+ result = fallbackProxy.findByCriteria(criteria);
+ } else {
+ // merge list
+ List<Wikitty> resultFallback = fallbackProxy
+ .findByCriteria(criteria);
+ // this allow to element from main to prevail
+ resultFallback.removeAll(result);
+ result.addAll(resultFallback);
+ }
+ }
+
+ return result;
}
public Wikitty findByCriteria(Criteria criteria) {
- return mainProxy.findByCriteria(criteria);
+
+ Wikitty result = mainProxy.findByCriteria(criteria);
+
+ if (isFallbackService() && result == null) {
+ result = fallbackProxy.findByCriteria(criteria);
+ }
+
+ return result;
}
public Wikitty[] findByCriteria(Criteria c1, Criteria c2,
Criteria... otherCriteria) {
-
-
-
-
- return mainProxy.findByCriteria(c1, c2, otherCriteria);
+
+ Wikitty[] result = mainProxy.findByCriteria(c1, c2, otherCriteria);
+
+ if (isFallbackService()) {
+ if (result == null) {
+ result = fallbackProxy.findByCriteria(c1, c2, otherCriteria);
+ } else {
+ // merge list
+ List<Wikitty> resultFallback = new ArrayList<Wikitty>();
+ CollectionUtil.addAll(resultFallback,
+ fallbackProxy.findByCriteria(c1, c2, otherCriteria));
+
+ List<Wikitty> resultMain = new ArrayList<Wikitty>();
+ CollectionUtil.addAll(resultMain, result);
+
+ // this allow to element from main to prevail
+ resultFallback.removeAll(resultMain);
+ resultMain.addAll(resultFallback);
+
+ result = (Wikitty[]) resultMain.toArray();
+ }
+ }
+
+ return result;
}
public TreeNodeResult<Wikitty> findTreeNode(String wikittyId, int depth,
boolean count, Criteria filter) {
- TreeNodeResult<Wikitty> result = mainProxy.findTreeNode(wikittyId, depth, count, filter);
-
+ TreeNodeResult<Wikitty> result = mainProxy.findTreeNode(wikittyId,
+ depth, count, filter);
+
if (isFallbackService() && result == null) {
- result = fallbackProxy.findTreeNode(wikittyId, depth, count, filter);
+ result = fallbackProxy
+ .findTreeNode(wikittyId, depth, count, filter);
}
-
-
+
return result;
}
@@ -499,7 +739,13 @@
result.addAll(mainProxy.getAllExtensionIds());
if (isFallbackService()) {
- result.addAll(fallbackProxy.getAllExtensionIds());
+
+ List<String> temp = fallbackProxy.getAllExtensionIds();
+
+ // assert that not have duplicate entry
+ result.removeAll(temp);
+ result.addAll(temp);
+
}
return result;
@@ -510,7 +756,12 @@
result.addAll(mainProxy.getAllExtensionsRequires(extensionName));
if (isFallbackService()) {
- result.addAll(fallbackProxy.getAllExtensionsRequires(extensionName));
+ List<String> temp = fallbackProxy
+ .getAllExtensionsRequires(extensionName);
+
+ // assert that not have duplicate entry
+ result.removeAll(temp);
+ result.addAll(temp);
}
return result;
1
0
r892 - trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication
by mfortun@users.nuiton.org 16 May '11
by mfortun@users.nuiton.org 16 May '11
16 May '11
Author: mfortun
Date: 2011-05-16 12:00:20 +0200 (Mon, 16 May 2011)
New Revision: 892
Url: http://nuiton.org/repositories/revision/wikitty/892
Log:
* continue multicontext implementation
Modified:
trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublicationProxy.java
Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublicationProxy.java
===================================================================
--- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublicationProxy.java 2011-05-16 09:24:13 UTC (rev 891)
+++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublicationProxy.java 2011-05-16 10:00:20 UTC (rev 892)
@@ -1,5 +1,6 @@
package org.nuiton.wikitty.publication;
+import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
@@ -33,9 +34,8 @@
public static String WIKITTY_SERVICE_FALLBACK_URL_KEY;
/*
- * TODO mfortun-2011-05-13 multicontext the begginning,
- * need to think about how invoke method in the different proxy
- * properly.
+ * TODO mfortun-2011-05-13 multicontext the begginning, need to think about
+ * how invoke method in the different proxy properly.
*/
/**
@@ -119,14 +119,14 @@
public void login(String login, String password) {
mainProxy.login(login, password);
- if ( isFallbackService()) {
+ if (isFallbackService()) {
fallbackProxy.login(login, password);
}
}
public void logout() {
mainProxy.logout();
- if ( isFallbackService()) {
+ if (isFallbackService()) {
fallbackProxy.logout();
}
}
@@ -137,7 +137,7 @@
public void setSecurityToken(String securityToken) {
mainProxy.setSecurityToken(securityToken);
- if ( isFallbackService()) {
+ if (isFallbackService()) {
fallbackProxy.setSecurityToken(securityToken);
}
}
@@ -171,7 +171,7 @@
// TODO mfortun-2011-05-13 store in wich one ?
// check before if wikitty exist on fall back
// and the stock on it if exist and store after on main
-
+
return mainProxy.store(w);
}
@@ -198,39 +198,46 @@
public Wikitty restore(String id) {
Wikitty result = mainProxy.restore(id);
-
- if ( isFallbackService() && result == null) {
+
+ if (isFallbackService() && result == null) {
result = fallbackProxy.restore(id);
}
-
+
return result;
}
public <E extends BusinessEntity> E restore(Class<E> clazz, String id) {
E result = mainProxy.restore(clazz, id);
-
- if ( isFallbackService() && result == null) {
+
+ if (isFallbackService() && result == null) {
result = fallbackProxy.restore(clazz, id);
}
-
+
return result;
}
public List<Wikitty> restore(List<String> id) {
List<Wikitty> result = mainProxy.restore(id);
-
+
// TODO mfortun-2011-05-13 need to merge the two list
- if ( isFallbackService() && result == null) {
- result = fallbackProxy.restore( id);
+ if (isFallbackService() && result == null) {
+ result = fallbackProxy.restore(id);
}
-
+
return result;
-
+
}
public <E extends BusinessEntity> List<E> restore(Class<E> clazz,
List<String> id, boolean checkExtension) {
- return mainProxy.restore(clazz, id, checkExtension);
+
+ List<E> result = mainProxy.restore(clazz, id, checkExtension);
+
+ if (isFallbackService() && result == null) {
+ result = fallbackProxy.restore(clazz, id, checkExtension);
+ }
+
+ return result;
}
public <E extends BusinessEntity> List<E> restore(Class<E> clazz,
@@ -240,18 +247,34 @@
public void delete(String id) {
mainProxy.delete(id);
+ if (isFallbackService()){
+ fallbackProxy.delete(id);
+ }
+
}
public <E extends BusinessEntity> void delete(E object) {
mainProxy.delete(object);
+ if (isFallbackService()){
+ fallbackProxy.delete(object);
+ }
+
}
public void delete(Collection<String> ids) {
mainProxy.delete(ids);
+ if (isFallbackService()){
+ fallbackProxy.delete(ids);
+ }
+
}
public <E extends BusinessEntity> void delete(List<E> objets) {
mainProxy.delete(objets);
+ if (isFallbackService()){
+ fallbackProxy.delete(objets);
+ }
+
}
public <E extends BusinessEntityImpl> PagedResult<E> findAllByExample(E e,
@@ -342,84 +365,203 @@
public Wikitty[] findByCriteria(Criteria c1, Criteria c2,
Criteria... otherCriteria) {
+
+
+
+
return mainProxy.findByCriteria(c1, c2, otherCriteria);
}
public TreeNodeResult<Wikitty> findTreeNode(String wikittyId, int depth,
boolean count, Criteria filter) {
- return mainProxy.findTreeNode(wikittyId, depth, count, filter);
+ TreeNodeResult<Wikitty> result = mainProxy.findTreeNode(wikittyId, depth, count, filter);
+
+ if (isFallbackService() && result == null) {
+ result = fallbackProxy.findTreeNode(wikittyId, depth, count, filter);
+ }
+
+
+ return result;
}
public TreeNodeResult<String> findAllIdTreeNode(String wikittyId,
int depth, boolean count, Criteria filter) {
- return mainProxy.findAllIdTreeNode(wikittyId, depth, count, filter);
+ TreeNodeResult<String> result = mainProxy.findAllIdTreeNode(wikittyId,
+ depth, count, filter);
+
+ if (isFallbackService() && result == null) {
+ result = fallbackProxy.findAllIdTreeNode(wikittyId, depth, count,
+ filter);
+ }
+
+ return result;
}
public WikittyEvent deleteTree(String treeNodeId) {
- return mainProxy.deleteTree(treeNodeId);
+
+ WikittyEvent result = mainProxy.deleteTree(treeNodeId);
+
+ if (isFallbackService()) {
+ result.add(fallbackProxy.deleteTree(treeNodeId));
+ result.setSource(this);
+ }
+
+ return result;
}
public Wikitty restoreVersion(String wikittyId, String version) {
- return mainProxy.restoreVersion(wikittyId, version);
+
+ Wikitty result = mainProxy.restoreVersion(wikittyId, version);
+
+ if (isFallbackService() && result == null) {
+ result = fallbackProxy.restoreVersion(wikittyId, version);
+ }
+
+ return result;
}
public <E extends BusinessEntity> boolean hasType(Class<E> clazz,
String wikittyId) {
- return mainProxy.hasType(clazz, wikittyId);
+ boolean result = mainProxy.hasType(clazz, wikittyId);
+
+ if (isFallbackService()) {
+ result = result || fallbackProxy.hasType(clazz, wikittyId);
+ }
+
+ return result;
}
public WikittyEvent storeExtension(WikittyExtension ext) {
- return mainProxy.storeExtension(ext);
+
+ WikittyEvent result = mainProxy.storeExtension(ext);
+
+ if (isFallbackService()) {
+ result.add(fallbackProxy.storeExtension(ext));
+ result.setSource(this);
+ }
+
+ return result;
+
}
public WikittyEvent storeExtension(Collection<WikittyExtension> exts) {
- return mainProxy.storeExtension(exts);
+
+ WikittyEvent result = mainProxy.storeExtension(exts);
+
+ if (isFallbackService()) {
+ result.add(fallbackProxy.storeExtension(exts));
+ result.setSource(this);
+ }
+
+ return result;
}
public WikittyExtension restoreExtension(String extensionId) {
- return mainProxy.restoreExtension(extensionId);
+ WikittyExtension result = mainProxy.restoreExtension(extensionId);
+
+ if (isFallbackService() && result == null) {
+ result = fallbackProxy.restoreExtension(extensionId);
+ }
+
+ return result;
}
public WikittyExtension restoreExtensionLastVersion(String extensionName) {
- return mainProxy.restoreExtensionLastVersion(extensionName);
+ WikittyExtension result = mainProxy
+ .restoreExtensionLastVersion(extensionName);
+
+ if (isFallbackService() && result == null) {
+ result = fallbackProxy.restoreExtensionLastVersion(extensionName);
+ }
+
+ return result;
}
public void deleteExtension(String extName) {
mainProxy.deleteExtension(extName);
+ if (isFallbackService()) {
+ fallbackProxy.deleteExtension(extName);
+ }
+
}
public void deleteExtension(Collection<String> extNames) {
+
mainProxy.deleteExtension(extNames);
+ if (isFallbackService()) {
+ fallbackProxy.deleteExtension(extNames);
+ }
}
public List<String> getAllExtensionIds() {
- return mainProxy.getAllExtensionIds();
+
+ List<String> result = new ArrayList<String>();
+ result.addAll(mainProxy.getAllExtensionIds());
+
+ if (isFallbackService()) {
+ result.addAll(fallbackProxy.getAllExtensionIds());
+ }
+
+ return result;
}
public List<String> getAllExtensionsRequires(String extensionName) {
- return mainProxy.getAllExtensionsRequires(extensionName);
+ List<String> result = new ArrayList<String>();
+ result.addAll(mainProxy.getAllExtensionsRequires(extensionName));
+
+ if (isFallbackService()) {
+ result.addAll(fallbackProxy.getAllExtensionsRequires(extensionName));
+ }
+
+ return result;
}
public WikittyEvent clear() {
- return mainProxy.clear();
+ WikittyEvent result = mainProxy.clear();
+
+ // merge wikitty event
+ if (isFallbackService()) {
+ WikittyEvent tempEvent = fallbackProxy.clear();
+
+ result.add(tempEvent);
+ result.setSource(this);
+ }
+
+ return result;
}
public void syncSearchEngine() {
mainProxy.syncSearchEngine();
+ if (isFallbackService()) {
+ fallbackProxy.syncSearchEngine();
+ }
}
public Wikitty getWikitty(BusinessEntity entity) {
- return mainProxy.getWikitty(entity);
+ Wikitty result = mainProxy.getWikitty(entity);
+
+ if (isFallbackService() && result == null) {
+ result = fallbackProxy.getWikitty(entity);
+ }
+
+ return result;
}
public boolean isMember(String groupName) {
- return mainProxy.isMember(groupName);
+ boolean result = mainProxy.isMember(groupName);
+ if (isFallbackService()) {
+ result = result || fallbackProxy.isMember(groupName);
+ }
+
+ return result;
+
}
public WikittyUser getLoggedInUser() {
- return mainProxy.getLoggedInUser();
+ WikittyUser result = mainProxy.getLoggedInUser();
+
+ // TODO mfortun-2011-05-16 how to merge wikitty user ?
+ return result;
}
-
-
}
1
0
r891 - in trunk/wikitty-api/src/main/java/org/nuiton/wikitty: . search
by sletellier@users.nuiton.org 16 May '11
by sletellier@users.nuiton.org 16 May '11
16 May '11
Author: sletellier
Date: 2011-05-16 11:24:13 +0200 (Mon, 16 May 2011)
New Revision: 891
Url: http://nuiton.org/repositories/revision/wikitty/891
Log:
#1519 TreeNodeResult has null id in proxy
Modified:
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyProxy.java
trunk/wikitty-api/src/main/java/org/nuiton/wikitty/search/TreeNodeResult.java
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyProxy.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyProxy.java 2011-05-14 11:45:33 UTC (rev 890)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/WikittyProxy.java 2011-05-16 09:24:13 UTC (rev 891)
@@ -25,6 +25,7 @@
package org.nuiton.wikitty;
+import java.io.Serializable;
import java.lang.reflect.Array;
import java.util.AbstractMap.SimpleEntry;
import org.apache.commons.logging.Log;
@@ -1032,7 +1033,7 @@
* @param <TARGET> le type d'objet pour le nouvel arbre
* @since 3.1
*/
- static private class ConvertTreeVisitor<TARGET> implements TreeNodeResult.Visitor<String> {
+ static private class ConvertTreeVisitor<TARGET extends Serializable> implements TreeNodeResult.Visitor<String> {
static private interface Converter<SOURCE, TARGET> {
public TARGET convert(SOURCE o);
Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/search/TreeNodeResult.java
===================================================================
--- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/search/TreeNodeResult.java 2011-05-14 11:45:33 UTC (rev 890)
+++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/search/TreeNodeResult.java 2011-05-16 09:24:13 UTC (rev 891)
@@ -25,12 +25,12 @@
package org.nuiton.wikitty.search;
+import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Enumeration;
import java.util.Iterator;
import java.util.List;
-import java.util.Vector;
import javax.swing.tree.DefaultMutableTreeNode;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -45,18 +45,21 @@
* Last update: $Date$
* by : $Author$
*/
-public class TreeNodeResult<T> extends DefaultMutableTreeNode implements Iterable<TreeNodeResult<T>> {
+public class TreeNodeResult<T extends Serializable> extends DefaultMutableTreeNode implements Iterable<TreeNodeResult<T>> {
/** to use log facility, just put in your code: log.info(\"...\"); */
static private Log log = LogFactory.getLog(TreeNodeResult.class);
private static final long serialVersionUID = 31L;
+ /** optional user object */
+ protected T object;
+
/**
* Visitor for TreeNodeResult
* @param <T>
*/
- static public interface Visitor<T> {
+ static public interface Visitor<T extends Serializable> {
/**
*
* @param node node to visit
@@ -79,11 +82,82 @@
* @param attCount le nombre d'attachment pour ce noeud (avec les sous noeud)
*/
public TreeNodeResult(T object, int attCount) {
- super(object);
+ this(object);
this.attCount = attCount;
}
/**
+ * sletellier 20110516 : override all methods using userObject,
+ * because this one is transient and getter and setters are not used
+ */
+
+ /**
+ * Creates a tree node with no parent, no children, but which allows
+ * children, and initializes it with the specified user object.
+ *
+ * @param userObject an Object provided by the user that constitutes
+ * the node's data
+ */
+ public TreeNodeResult(T userObject) {
+ this(userObject, true);
+ }
+
+ /**
+ * Creates a tree node with no parent, no children, initialized with
+ * the specified user object, and that allows children only if
+ * specified.
+ *
+ * @param userObject an Object provided by the user that constitutes
+ * the node's data
+ * @param allowsChildren if true, the node is allowed to have child
+ * nodes -- otherwise, it is always a leaf node
+ */
+ public TreeNodeResult(T userObject, boolean allowsChildren) {
+ super(userObject, allowsChildren);
+ this.object = userObject;
+ }
+
+ /**
+ * Sets the user object for this node to <code>userObject</code>.
+ *
+ * @param userObject the Object that constitutes this node's
+ * user-specified data
+ * @see #getUserObject
+ * @see #toString
+ */
+ public void setUserObject(T userObject) {
+ super.setUserObject(userObject);
+ this.object = userObject;
+ }
+
+ /**
+ * Returns this node's user object.
+ *
+ * @return the Object stored at this node by the user
+ * @see #toString
+ */
+ @Override
+ public T getUserObject() {
+ return object;
+ }
+
+ /**
+ * Returns the result of sending <code>toString()</code> to this node's
+ * user object, or null if this node has no user object.
+ *
+ * @see #getUserObject
+ */
+ @Override
+ public String toString() {
+ T userObject = getUserObject();
+ if (userObject == null) {
+ return null;
+ } else {
+ return userObject.toString();
+ }
+ }
+
+ /**
* Visite en profondeur de l'arbre, il est possible d'arreter la visite
* soit en entrant dans le noeud soit en sortant du noeud, si respectivement
* visitEnter ou visitLeave retourne false.
@@ -153,7 +227,7 @@
* @return l'objet associe avec ce noeud (id, wikitty ou BusinessEntity)
*/
public T getObject() {
- return (T)getUserObject();
+ return getUserObject();
}
/**
1
0
Author: tchemit
Date: 2011-05-14 13:45:33 +0200 (Sat, 14 May 2011)
New Revision: 890
Url: http://nuiton.org/repositories/revision/wikitty/890
Log:
Update mavenpom4redmine to 2.5.4.
Modified:
trunk/pom.xml
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2011-05-13 16:03:23 UTC (rev 889)
+++ trunk/pom.xml 2011-05-14 11:45:33 UTC (rev 890)
@@ -6,7 +6,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>mavenpom4redmine</artifactId>
- <version>2.5.3</version>
+ <version>2.5.4</version>
</parent>
<!-- ************************************************************* -->
1
0
r889 - in trunk/wikitty-publication/src/main: java/org/nuiton/wikitty/publication resources
by mfortun@users.nuiton.org 13 May '11
by mfortun@users.nuiton.org 13 May '11
13 May '11
Author: mfortun
Date: 2011-05-13 18:03:23 +0200 (Fri, 13 May 2011)
New Revision: 889
Url: http://nuiton.org/repositories/revision/wikitty/889
Log:
* add the very beginning for multicontext support
Added:
trunk/wikitty-publication/src/main/resources/wikitty-publication-ws-fallback.properties
Modified:
trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublicationConfig.java
trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublicationProxy.java
Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublicationConfig.java
===================================================================
--- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublicationConfig.java 2011-05-13 12:50:59 UTC (rev 888)
+++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublicationConfig.java 2011-05-13 16:03:23 UTC (rev 889)
@@ -7,6 +7,8 @@
import org.apache.commons.logging.LogFactory;
import org.nuiton.util.ApplicationConfig;
import org.nuiton.util.ArgumentsParserException;
+import org.nuiton.wikitty.publication.synchro.PropertiesExtended;
+
import static org.nuiton.i18n.I18n._;
public class WikittyPublicationConfig {
@@ -20,13 +22,32 @@
private WikittyPublicationConfig() {
}
+
+
+ static public ApplicationConfig getFallBackConfig(){
+ //TODO mfortun-2011-05-13 temporary import/load properties for fallback service
+ ApplicationConfig conf = new ApplicationConfig(
+ OptionFallBack.class, null, null, null);
+
+ try {
+ conf.parse(null);
+ } catch (ArgumentsParserException eee) {
+ if (log.isErrorEnabled()) {
+ log.error("Can't load Wikitty Publication configuration", eee);
+ }
+ }
+ return conf;
+
+ }
static public ApplicationConfig getConfig() {
- return getConfig(null, null);
+ return getConfig(null,null );
}
static public ApplicationConfig getConfig(
Properties props, String configFilename, String ... args) {
+
+
ApplicationConfig conf = new ApplicationConfig(
Option.class, null, props, configFilename);
@@ -52,13 +73,81 @@
return instance;
}
+
+
+
+ public enum OptionFallBack implements ApplicationConfig.OptionDef {
+ CONFIG_FILE(
+ ApplicationConfig.CONFIG_FILE_NAME,
+ _("wikitty-publication.config.configFileName.description"),
+ "wikitty-publication-ws-fallback.properties", String.class, false, false);
+
+
+
+ public final String key;
+ public final String description;
+ public String defaultValue;
+ public final Class<?> type;
+ public boolean isTransient;
+ public boolean isFinal;
+ OptionFallBack(String key, String description, String defaultValue,
+ Class<?> type, boolean isTransient, boolean isFinal) {
+ this.key = key;
+ this.description = description;
+ this.defaultValue = defaultValue;
+ this.type = type;
+ this.isFinal = isFinal;
+ this.isTransient = isTransient;
+ }
+
+ public String getKey() {
+ return key;
+ }
+
+ public Class<?> getType() {
+ return type;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public String getDefaultValue() {
+ return defaultValue;
+ }
+
+ public boolean isTransient() {
+ return isTransient;
+ }
+
+ public boolean isFinal() {
+ return isFinal;
+ }
+
+ public void setDefaultValue(String defaultValue) {
+ this.defaultValue = defaultValue;
+ }
+
+ public void setTransient(boolean isTransient) {
+ this.isTransient = isTransient;
+ }
+
+ public void setFinal(boolean isFinal) {
+ this.isFinal = isFinal;
+ }
+ }
+
+
+
public enum Option implements ApplicationConfig.OptionDef {
CONFIG_FILE(
ApplicationConfig.CONFIG_FILE_NAME,
_("wikitty-publication.config.configFileName.description"),
"wikitty-publication-ws-default.properties", String.class, false, false);
+
+
public final String key;
public final String description;
public String defaultValue;
Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublicationProxy.java
===================================================================
--- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublicationProxy.java 2011-05-13 12:50:59 UTC (rev 888)
+++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublicationProxy.java 2011-05-13 16:03:23 UTC (rev 889)
@@ -1,36 +1,85 @@
package org.nuiton.wikitty.publication;
-import java.io.Serializable;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
import org.nuiton.util.ApplicationConfig;
import org.nuiton.wikitty.WikittyProxy;
import org.nuiton.wikitty.WikittyService;
import org.nuiton.wikitty.WikittyServiceFactory;
+import org.nuiton.wikitty.entities.BusinessEntity;
+import org.nuiton.wikitty.entities.BusinessEntityImpl;
+import org.nuiton.wikitty.entities.Wikitty;
+import org.nuiton.wikitty.entities.WikittyExtension;
+import org.nuiton.wikitty.entities.WikittyUser;
+import org.nuiton.wikitty.search.Criteria;
+import org.nuiton.wikitty.search.PagedResult;
+import org.nuiton.wikitty.search.TreeNodeResult;
+import org.nuiton.wikitty.services.WikittyEvent;
/**
- * Proxy use by action in wikitty publication
+ * Proxy use by action in wikitty publication it encapsulate two wikitty proxy
+ * because we can have two distinct service use to store wikitty used by
+ * publication structure
*
* @author mfortun
*
*/
public class WikittyPublicationProxy extends WikittyProxy {
+ public static String WIKITTY_SERVICE_FALLBACK_COMPONNENT_KEY;
+ public static String WIKITTY_SERVICE_FALLBACK_URL_KEY;
+
/*
- * TODO mfortun-2011-05-06 in this class add multicontexte supportby
- * overiding wikitty proxy method
+ * TODO mfortun-2011-05-13 multicontext the begginning,
+ * need to think about how invoke method in the different proxy
+ * properly.
*/
/**
*
*/
private static final long serialVersionUID = -568462410130999972L;
- static protected WikittyService ws = null;
+ static protected WikittyService service = null;
+ static protected WikittyService serviceFallback = null;
+ protected WikittyProxy fallbackProxy = null;
+ protected WikittyProxy mainProxy = null;
+
protected WikittyPublicationProxy(ApplicationConfig config,
WikittyService ws) {
- super(config, ws);
+ mainProxy = new WikittyProxy(config, ws);
+
}
+ protected WikittyPublicationProxy(ApplicationConfig config,
+ WikittyService ws, ApplicationConfig configFallBack,
+ WikittyService serviceback) {
+ this(config, ws);
+ fallbackProxy = new WikittyProxy(configFallBack, serviceback);
+ }
+
+ /*
+ *
+ */
+
+ static public WikittyPublicationProxy getInstanceWithFallback(String token) {
+ ApplicationConfig config = WikittyPublicationConfig.getInstance();
+ WikittyService ws = getWikittyService(config);
+
+ ApplicationConfig configFallBack = WikittyPublicationConfig
+ .getInstance();
+ WikittyService fallservice = getWikittyServiceFallBack(configFallBack);
+
+ WikittyPublicationProxy result = new WikittyPublicationProxy(config,
+ ws, configFallBack, fallservice);
+ result.setSecurityToken(token);
+
+ return result;
+ }
+
static public WikittyPublicationProxy getInstance(String token) {
ApplicationConfig config = WikittyPublicationConfig.getInstance();
WikittyService ws = getWikittyService(config);
@@ -41,14 +90,336 @@
}
static protected WikittyService getWikittyService(ApplicationConfig config) {
- if (ws == null) {
+ if (service == null) {
synchronized (WikittyPublicationProxy.class) {
- if (ws == null) {
- ws = WikittyServiceFactory.buildWikittyService(config);
+ if (service == null) {
+ service = WikittyServiceFactory.buildWikittyService(config);
}
}
}
- return ws;
+ return service;
}
+ static protected WikittyService getWikittyServiceFallBack(
+ ApplicationConfig config) {
+ if (serviceFallback == null) {
+ synchronized (WikittyPublicationProxy.class) {
+ if (serviceFallback == null) {
+ serviceFallback = WikittyServiceFactory
+ .buildWikittyService(config);
+ }
+ }
+ }
+ return serviceFallback;
+ }
+
+ public boolean isFallbackService() {
+ return fallbackProxy != null;
+ }
+
+ public void login(String login, String password) {
+ mainProxy.login(login, password);
+ if ( isFallbackService()) {
+ fallbackProxy.login(login, password);
+ }
+ }
+
+ public void logout() {
+ mainProxy.logout();
+ if ( isFallbackService()) {
+ fallbackProxy.logout();
+ }
+ }
+
+ public String getSecurityToken() {
+ return mainProxy.getSecurityToken();
+ }
+
+ public void setSecurityToken(String securityToken) {
+ mainProxy.setSecurityToken(securityToken);
+ if ( isFallbackService()) {
+ fallbackProxy.setSecurityToken(securityToken);
+ }
+ }
+
+ public WikittyUser getUser() {
+ return mainProxy.getUser();
+ }
+
+ public <E extends BusinessEntity> E getUser(Class<E> clazz) {
+ return mainProxy.getUser(clazz);
+ }
+
+ public WikittyService getWikittyService() {
+ return mainProxy.getWikittyService();
+ }
+
+ public void setWikittyService(WikittyService wikittyService) {
+ mainProxy.setWikittyService(wikittyService);
+ }
+
+ public <E extends BusinessEntity> E cast(BusinessEntity source,
+ Class<E> target) {
+ return mainProxy.cast(source, target);
+ }
+
+ public <E extends BusinessEntity> E store(E e) {
+ return mainProxy.store(e);
+ }
+
+ public Wikitty store(Wikitty w) {
+ // TODO mfortun-2011-05-13 store in wich one ?
+ // check before if wikitty exist on fall back
+ // and the stock on it if exist and store after on main
+
+ return mainProxy.store(w);
+ }
+
+ public <E extends BusinessEntity> List<E> store(E e1, E e2, E... eN) {
+ return mainProxy.store(e1, e2, eN);
+ }
+
+ public Wikitty[] store(Wikitty w1, Wikitty w2, Wikitty... wN) {
+ return mainProxy.store(w1, w2, wN);
+ }
+
+ public <E extends BusinessEntity> List<E> store(List<E> objets) {
+ return mainProxy.store(objets);
+ }
+
+ public List<Wikitty> storeWikitty(List<Wikitty> wikitties) {
+ return mainProxy.storeWikitty(wikitties);
+ }
+
+ public <E extends BusinessEntity> E restore(Class<E> clazz, String id,
+ boolean checkExtension) {
+ return mainProxy.restore(clazz, id, checkExtension);
+ }
+
+ public Wikitty restore(String id) {
+ Wikitty result = mainProxy.restore(id);
+
+ if ( isFallbackService() && result == null) {
+ result = fallbackProxy.restore(id);
+ }
+
+ return result;
+ }
+
+ public <E extends BusinessEntity> E restore(Class<E> clazz, String id) {
+ E result = mainProxy.restore(clazz, id);
+
+ if ( isFallbackService() && result == null) {
+ result = fallbackProxy.restore(clazz, id);
+ }
+
+ return result;
+ }
+
+ public List<Wikitty> restore(List<String> id) {
+ List<Wikitty> result = mainProxy.restore(id);
+
+ // TODO mfortun-2011-05-13 need to merge the two list
+ if ( isFallbackService() && result == null) {
+ result = fallbackProxy.restore( id);
+ }
+
+ return result;
+
+ }
+
+ public <E extends BusinessEntity> List<E> restore(Class<E> clazz,
+ List<String> id, boolean checkExtension) {
+ return mainProxy.restore(clazz, id, checkExtension);
+ }
+
+ public <E extends BusinessEntity> List<E> restore(Class<E> clazz,
+ List<String> id) {
+ return mainProxy.restore(clazz, id);
+ }
+
+ public void delete(String id) {
+ mainProxy.delete(id);
+ }
+
+ public <E extends BusinessEntity> void delete(E object) {
+ mainProxy.delete(object);
+ }
+
+ public void delete(Collection<String> ids) {
+ mainProxy.delete(ids);
+ }
+
+ public <E extends BusinessEntity> void delete(List<E> objets) {
+ mainProxy.delete(objets);
+ }
+
+ public <E extends BusinessEntityImpl> PagedResult<E> findAllByExample(E e,
+ int firstIndex, int endIndex, String... fieldFacet) {
+ return mainProxy.findAllByExample(e, firstIndex, endIndex, fieldFacet);
+ }
+
+ public <E extends BusinessEntityImpl> E findByExample(E e) {
+ return mainProxy.findByExample(e);
+ }
+
+ public <E extends BusinessEntity> List<PagedResult<E>> findAllByCriteria(
+ Class<E> clazz, List<Criteria> criterias) {
+ return mainProxy.findAllByCriteria(clazz, criterias);
+ }
+
+ public <E extends BusinessEntity> PagedResult<E> findAllByCriteria(
+ Class<E> clazz, Criteria criteria) {
+ return mainProxy.findAllByCriteria(clazz, criteria);
+ }
+
+ public <E extends BusinessEntity> PagedResult<E>[] findAllByCriteria(
+ Class<E> clazz, Criteria c1, Criteria c2, Criteria... otherCriteria) {
+ return mainProxy.findAllByCriteria(clazz, c1, c2, otherCriteria);
+ }
+
+ public List<PagedResult<Wikitty>> findAllByCriteria(List<Criteria> criteria) {
+ return mainProxy.findAllByCriteria(criteria);
+ }
+
+ public PagedResult<Wikitty> findAllByCriteria(Criteria criteria) {
+ return mainProxy.findAllByCriteria(criteria);
+ }
+
+ public PagedResult<Wikitty>[] findAllByCriteria(Criteria c1, Criteria c2,
+ Criteria... otherCriteria) {
+ return mainProxy.findAllByCriteria(c1, c2, otherCriteria);
+ }
+
+ public List<PagedResult<String>> findAllIdByCriteria(List<Criteria> criteria) {
+ return mainProxy.findAllIdByCriteria(criteria);
+ }
+
+ public PagedResult<String> findAllIdByCriteria(Criteria criteria) {
+ return mainProxy.findAllIdByCriteria(criteria);
+ }
+
+ public PagedResult<String>[] findAllIdByCriteria(Criteria c1, Criteria c2,
+ Criteria... otherCriteria) {
+ return mainProxy.findAllIdByCriteria(c1, c2, otherCriteria);
+ }
+
+ public List<String> findIdByCriteria(List<Criteria> criteria) {
+ return mainProxy.findIdByCriteria(criteria);
+ }
+
+ public String findIdByCriteria(Criteria criteria) {
+ return mainProxy.findIdByCriteria(criteria);
+ }
+
+ public String[] findIdByCriteria(Criteria c1, Criteria c2,
+ Criteria... otherCriteria) {
+ return mainProxy.findIdByCriteria(c1, c2, otherCriteria);
+ }
+
+ public <E extends BusinessEntity> List<E> findByCriteria(Class<E> clazz,
+ List<Criteria> criterias) {
+ return mainProxy.findByCriteria(clazz, criterias);
+ }
+
+ public <E extends BusinessEntity> E findByCriteria(Class<E> clazz,
+ Criteria criteria) {
+ return mainProxy.findByCriteria(clazz, criteria);
+ }
+
+ public <E extends BusinessEntity> E[] findByCriteria(Class<E> clazz,
+ Criteria c1, Criteria c2, Criteria... otherCriteria) {
+ return mainProxy.findByCriteria(clazz, c1, c2, otherCriteria);
+ }
+
+ public List<Wikitty> findByCriteria(List<Criteria> criteria) {
+ return mainProxy.findByCriteria(criteria);
+ }
+
+ public Wikitty findByCriteria(Criteria criteria) {
+ return mainProxy.findByCriteria(criteria);
+ }
+
+ public Wikitty[] findByCriteria(Criteria c1, Criteria c2,
+ Criteria... otherCriteria) {
+ return mainProxy.findByCriteria(c1, c2, otherCriteria);
+ }
+
+ public TreeNodeResult<Wikitty> findTreeNode(String wikittyId, int depth,
+ boolean count, Criteria filter) {
+ return mainProxy.findTreeNode(wikittyId, depth, count, filter);
+ }
+
+ public TreeNodeResult<String> findAllIdTreeNode(String wikittyId,
+ int depth, boolean count, Criteria filter) {
+ return mainProxy.findAllIdTreeNode(wikittyId, depth, count, filter);
+ }
+
+ public WikittyEvent deleteTree(String treeNodeId) {
+ return mainProxy.deleteTree(treeNodeId);
+ }
+
+ public Wikitty restoreVersion(String wikittyId, String version) {
+ return mainProxy.restoreVersion(wikittyId, version);
+ }
+
+ public <E extends BusinessEntity> boolean hasType(Class<E> clazz,
+ String wikittyId) {
+ return mainProxy.hasType(clazz, wikittyId);
+ }
+
+ public WikittyEvent storeExtension(WikittyExtension ext) {
+ return mainProxy.storeExtension(ext);
+ }
+
+ public WikittyEvent storeExtension(Collection<WikittyExtension> exts) {
+ return mainProxy.storeExtension(exts);
+ }
+
+ public WikittyExtension restoreExtension(String extensionId) {
+ return mainProxy.restoreExtension(extensionId);
+ }
+
+ public WikittyExtension restoreExtensionLastVersion(String extensionName) {
+ return mainProxy.restoreExtensionLastVersion(extensionName);
+ }
+
+ public void deleteExtension(String extName) {
+ mainProxy.deleteExtension(extName);
+ }
+
+ public void deleteExtension(Collection<String> extNames) {
+ mainProxy.deleteExtension(extNames);
+ }
+
+ public List<String> getAllExtensionIds() {
+ return mainProxy.getAllExtensionIds();
+ }
+
+ public List<String> getAllExtensionsRequires(String extensionName) {
+ return mainProxy.getAllExtensionsRequires(extensionName);
+ }
+
+ public WikittyEvent clear() {
+ return mainProxy.clear();
+ }
+
+ public void syncSearchEngine() {
+ mainProxy.syncSearchEngine();
+ }
+
+ public Wikitty getWikitty(BusinessEntity entity) {
+ return mainProxy.getWikitty(entity);
+ }
+
+ public boolean isMember(String groupName) {
+ return mainProxy.isMember(groupName);
+ }
+
+ public WikittyUser getLoggedInUser() {
+ return mainProxy.getLoggedInUser();
+ }
+
+
+
}
Added: trunk/wikitty-publication/src/main/resources/wikitty-publication-ws-fallback.properties
===================================================================
--- trunk/wikitty-publication/src/main/resources/wikitty-publication-ws-fallback.properties (rev 0)
+++ trunk/wikitty-publication/src/main/resources/wikitty-publication-ws-fallback.properties 2011-05-13 16:03:23 UTC (rev 889)
@@ -0,0 +1,58 @@
+###
+# #%L
+# Wikitty :: publication
+#
+# $Id: wikitty-publication-ws-default.properties 823 2011-04-20 14:45:47Z mfortun $
+# $HeadURL: http://svn.nuiton.org/svn/wikitty/trunk/wikitty-publication/src/main/resour… $
+# %%
+# 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%
+###
+
+wikitty.data.directory=./targetBD2/data
+wikitty.service.server.url=http://localhost:2222/wikitty
+wikitty.storage.jdbc.queryfile=wikitty-jdbc-query.properties
+wikitty.storage.jdbc.driver=org.h2.Driver
+wikitty.storage.jdbc.host=jdbc:h2:file:${wikitty.data.directory}/data/db
+wikitty.storage.jdbc.login=sa
+wikitty.storage.jdbc.password=
+wikitty.storage.jdbc.xadatasource=org.h2.jdbcx.JdbcDataSource
+wikitty.storage.jdbc.xadatasource.org.h2.jdbcx.JdbcDataSource.URL=${wikitty.storage.jdbc.host}
+wikitty.storage.jdbc.xadatasource.org.h2.jdbcx.JdbcDataSource.user=${wikitty.storage.jdbc.login}
+wikitty.storage.jdbc.xadatasource.org.h2.jdbcx.JdbcDataSource.password=${wikitty.storage.jdbc.password}
+wikitty.searchengine.solr.directory.data=${wikitty.data.directory}/data/solr
+wikitty.searchengine.solr.directory.factory=solr.StandardDirectoryFactory
+wikitty.WikittyService.components=org.nuiton.wikitty.services.WikittyServiceStorage,\
+org.nuiton.wikitty.services.WikittyServiceNotifier,\
+org.nuiton.wikitty.services.WikittyServiceCached,\
+org.nuiton.wikitty.services.WikittyServiceSecurity,\
+org.nuiton.wikitty.services.WikittyServiceAccessStat,\
+org.nuiton.wikitty.services.WikittyServiceCajoServer
+
+wikitty.WikittyServiceStorage.components=org.nuiton.wikitty.jdbc.WikittyExtensionStorageJDBC,\
+org.nuiton.wikitty.jdbc.WikittyStorageJDBC,\
+org.nuiton.wikitty.storage.solr.WikittySearchEngineSolr
+wikitty.service.cache.listenevents=false
+wikitty.service.cache.allwaysRestoreCopies=false
+wikitty.service.event.propagate=false
+wikitty.service.event.listen=false
+wikitty.service.accessstat.extensions=WikittyPubText,WikittyPubData
+wikitty.addon.export.threadnumber=1
+wikitty.addon.export.directory=${wikitty.data.directory}/export
+wikitty.addon.export.publicurl=file://${wikitty.data.directory}/export/
+wikitty.WikittyServiceAccessStat.components=\
+org.nuiton.wikitty.services.WikittyServiceAccessStat$AccessStatStorageLog
Property changes on: trunk/wikitty-publication/src/main/resources/wikitty-publication-ws-fallback.properties
___________________________________________________________________
Added: svn:mime-type
+ text/plain
1
0
r888 - in trunk/wikitty-publication/src/main: java/org/nuiton/wikitty/publication java/org/nuiton/wikitty/publication/action resources webapp
by mfortun@users.nuiton.org 13 May '11
by mfortun@users.nuiton.org 13 May '11
13 May '11
Author: mfortun
Date: 2011-05-13 14:50:59 +0200 (Fri, 13 May 2011)
New Revision: 888
Url: http://nuiton.org/repositories/revision/wikitty/888
Log:
* cosmetic change
* add register page and action
* #1504 login implemented
Added:
trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationActionRegister.java
trunk/wikitty-publication/src/main/webapp/register.jsp
Modified:
trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/LoginInterceptor.java
trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationActionLogin.java
trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationActionLogout.java
trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationBaseAction.java
trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationContext.java
trunk/wikitty-publication/src/main/resources/struts.xml
Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/LoginInterceptor.java
===================================================================
--- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/LoginInterceptor.java 2011-05-13 09:15:02 UTC (rev 887)
+++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/LoginInterceptor.java 2011-05-13 12:50:59 UTC (rev 888)
@@ -40,19 +40,9 @@
*/
public class LoginInterceptor extends AbstractInterceptor {
private static final long serialVersionUID = -7520186185205372272L;
- protected String succes;
+
protected String error;
-
-
- public String getSucces() {
- return succes;
- }
-
- public void setSucces(String succes) {
- this.succes = succes;
- }
-
public String getError() {
return error;
}
@@ -65,14 +55,11 @@
@Override
public String intercept(ActionInvocation invocation) throws Exception {
Map<String, Object> session = ActionContext.getContext().getSession();
-
-
-
-
WikittyPublicationSession pubSession = WikittyPublicationSession.getWikittyPublicationSession(session);
WikittyUser user = pubSession.getUser();
String result = null;
+
//If the user isn't logged in
if (user == null) {
Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationActionLogin.java
===================================================================
--- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationActionLogin.java 2011-05-13 09:15:02 UTC (rev 887)
+++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationActionLogin.java 2011-05-13 12:50:59 UTC (rev 888)
@@ -28,8 +28,6 @@
import org.nuiton.wikitty.entities.WikittyUser;
import org.nuiton.wikitty.publication.WikittyPublicationProxy;
-import com.opensymphony.xwork2.ActionContext;
-
/**
* Class used as an action login, call the login method on the proxy with
* login/password pass threw the login form
@@ -43,8 +41,9 @@
protected String password;
protected String error;
- static public String DEFAULT_ERROR = "login.jsp";
protected String success;
+
+ static public String DEFAULT_ERROR = "login.jsp";
static public String DEFAULT_SUCCESS = "index.jsp";
public String getLogin() {
@@ -63,8 +62,27 @@
this.password = password;
}
- public String execute() {
+ public String getError() {
+ return error;
+ }
+ public void setError(String error) {
+ this.error = error;
+ }
+
+ public String getSuccess() {
+ return success;
+ }
+
+ public void setSuccess(String success) {
+ this.success = success;
+ }
+
+ /**
+ * Method executed when struts invoke it and the struts action mapped to
+ * this class
+ */
+ public String execute() {
String result = ERROR;
if (login != null) {
@@ -78,10 +96,11 @@
WikittyPublicationProxy proxy = getWikittyPublicationSession()
.getProxy();
+ // Try to log a wikitty user
proxy.login(login, md5);
WikittyUser user = proxy.getLoggedInUser();
-
+ // check if a user is logged
if (user != null) {
getWikittyPublicationSession().setUser(user);
result = SUCCESS;
@@ -97,25 +116,4 @@
return result;
}
- public String getError() {
-
- return error;
- }
-
- public void setError(String error) {
-
- this.error = error;
- }
-
- public String getSuccess() {
-
- return success;
- }
-
- public void setSuccess(String success) {
-
- this.success = success;
-
- }
-
}
\ No newline at end of file
Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationActionLogout.java
===================================================================
--- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationActionLogout.java 2011-05-13 09:15:02 UTC (rev 887)
+++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationActionLogout.java 2011-05-13 12:50:59 UTC (rev 888)
@@ -28,33 +28,26 @@
-
+/**
+ * Class used as an action logout
+ *
+ * @author mfortun
+ *
+ */
public class PublicationActionLogout extends PublicationBaseAction {
protected String success;
- private static final long serialVersionUID = 4806944250461551896L;
-
-
-
-
-
+ private static final long serialVersionUID = 4806944250461551896L;
+
public String getSuccess() {
return success;
}
-
-
-
-
-
+
public void setSuccess(String success) {
this.success = success;
}
-
-
-
-
public String execute() {
WikittyPublicationSession.invalidate(session);
return SUCCESS;
Added: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationActionRegister.java
===================================================================
--- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationActionRegister.java (rev 0)
+++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationActionRegister.java 2011-05-13 12:50:59 UTC (rev 888)
@@ -0,0 +1,112 @@
+package org.nuiton.wikitty.publication.action;
+
+import org.nuiton.util.StringUtil;
+import org.nuiton.wikitty.WikittyProxy;
+import org.nuiton.wikitty.entities.WikittyUser;
+import org.nuiton.wikitty.entities.WikittyUserImpl;
+import org.nuiton.wikitty.search.Criteria;
+import org.nuiton.wikitty.search.Search;
+
+/**
+ * Class mapped to the registered action, it create a wikittyuser with the
+ * information send by the form
+ *
+ * @author mfortun
+ *
+ */
+public class PublicationActionRegister extends PublicationBaseAction {
+ private static final long serialVersionUID = 2204772861770399542L;
+ protected String login;
+ protected String password;
+ protected String repeatPassword;
+
+ public String getLogin() {
+ return login;
+ }
+
+ public void setLogin(String login) {
+ this.login = login;
+ }
+
+ public String getPassword() {
+ return password;
+ }
+
+ public void setPassword(String password) {
+ this.password = password;
+ }
+
+ public String getRepeatPassword() {
+ return repeatPassword;
+ }
+
+ public void setRepeatPassword(String repeatPassword) {
+ this.repeatPassword = repeatPassword;
+ }
+
+ protected boolean alreadyRegistered() {
+ boolean result = true;
+
+ WikittyProxy proxy = getWikittyPublicationProxy();
+ Criteria criteria = Search.query()
+ .eq(WikittyUser.FQ_FIELD_WIKITTYUSER_LOGIN, login).criteria();
+
+ // If the user doesn't already exist
+ if (proxy.findByCriteria(WikittyUser.class, criteria) == null) {
+ result = false;
+ }
+
+ return result;
+ }
+
+ /**
+ * Registers the new user and sends an email to confirm registration
+ */
+ public String execute() {
+ String result = INPUT;
+
+ try {
+ if (login != null) {
+ login = login.trim();
+ if (password != null) {
+ if (!password.equals(repeatPassword)) {
+ // TODO mfortun-2011-05-13 handle error message in jsp
+ } else {
+ String md5 = StringUtil.encodeMD5(password);
+
+ // If the email address isn't already used
+ if (!alreadyRegistered()) {
+ WikittyProxy proxy = getWikittyPublicationProxy();
+
+ WikittyUser user = new WikittyUserImpl();
+ user.setLogin(login);
+ user.setPassword(md5);
+
+ WikittyUser userLoged = proxy.store(user);
+ // check if wikitty still exist
+ if (userLoged == null) {
+ // TODO mfortun-2011-05-13 handle error message
+ // in jsp
+ } else {
+ // try to login with information
+ proxy.login(login, md5);
+ // if logged it works
+ if (proxy.getLoggedInUser() != null) {
+
+ getWikittyPublicationSession().setUser(
+ proxy.getLoggedInUser());
+
+ result = SUCCESS;
+ }
+ }
+ }
+ }
+ }
+ }
+ } catch (Exception e) {
+ // TODO mfortun-2011-05-13 really handle exception
+ e.printStackTrace();
+ }
+ return result;
+ }
+}
Property changes on: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationActionRegister.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationBaseAction.java
===================================================================
--- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationBaseAction.java 2011-05-13 09:15:02 UTC (rev 887)
+++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationBaseAction.java 2011-05-13 12:50:59 UTC (rev 888)
@@ -1,12 +1,9 @@
package org.nuiton.wikitty.publication.action;
-import java.util.Collection;
+
import java.util.List;
import java.util.Map;
-import java.util.Map.Entry;
-
import org.apache.struts2.interceptor.SessionAware;
-import org.nuiton.util.StringUtil;
import org.nuiton.wikitty.publication.WikittyPublicationProxy;
import org.nuiton.wikitty.publication.WikittyPublicationSession;
import org.nuiton.wikitty.publication.entities.WikittyPubData;
@@ -60,40 +57,8 @@
this.session = sess;
}
+
/**
- * Recherche le type mime dont on a besoin. Par defaut recherche dans les
- * arguments si on a dans l'ordre de preference <li>ARG_MIMETYPE +
- * SEARCH_SEPARATOR + name (ex: mimetype:MyCommand.name:df=text/plain) <li>
- * ARG_MIMETYPE (ex: mimetype=MyCommand.mimetype) <li>si w a l'extension
- * WikittyPubText alors on prend la valeur du champs mimetype <li>si w a
- * l'extension WikittyPubData alors on prend la valeur du champs mimetype
- * <li>on retourne null
- *
- * @param context
- * @param name
- * la chaine utilise pour faire la recherche du wikitty
- * @param w
- * le wikitty trouve grace a name
- * @return le mimetype ou null
- *
- * protected String getMimeType( String name, Wikitty w) { //
- * looking for mimetype field String mimetype = context.getArgument(
- * ARG_MIMETYPE + SEARCH_SEPARATOR + name, null); if (mimetype ==
- * null) { mimetype = context.getArgument(ARG_MIMETYPE, null); } if
- * (mimetype != null) { int i =
- * mimetype.indexOf(WikittyUtil.FQ_FIELD_NAME_SEPARATOR); if (i > 0)
- * { // perhaps fully qualified field String extName =
- * WikittyExtension.extractExtensionName(mimetype); String fieldName
- * = WikittyExtension.extractFieldName(mimetype); if
- * (w.hasField(extName, fieldName)) { // mimetype target field in
- * wikitty // replace with field value mimetype =
- * w.getFieldAsString(extName, fieldName); } } } else if
- * (w.hasExtension(WikittyPubText.EXT_WIKITTYPUBTEXT)) { mimetype =
- * WikittyPubTextHelper.getMimeType(w); } else if
- * (w.hasExtension(WikittyPubData.EXT_WIKITTYPUBDATA)) { mimetype =
- * WikittyPubDataHelper.getMimeType(w); } return mimetype; }
- */
- /**
* Retourne le critere pour recherche l'objet sur lequel faire l'action. Le
* nom du critere doit etre convenablement positionné avec la chaine qui a
* permit la recherche
@@ -127,33 +92,7 @@
return result;
}
- /**
- * Recherche le champs contenant le content dont on a besoin. Par defaut
- * recherche dans les arguments si on a dans l'ordre de preference <li>
- * ARG_CONTENT_FIELD + SEARCH_SEPARATOR + name (ex:
- * contentField:MyCommand.name:df=MyCommand.script) <li>ARG_CONTENT_FIELD
- * (ex: contentField=MyCommand.script) <li>si w a l'extension WikittyPubText
- * alors on prend le champs content <li>si w a l'extension WikittyPubData
- * alors on prend le champs content <li>on retourne null
- *
- * @param context
- * @param name
- * la chaine utilise pour faire la recherche du wikitty
- * @param w
- * le wikitty trouve grace a name
- * @return le champs contenant le content ou null
- *
- * protected String getContentFieldName(WikittyPublicationContext
- * context, String name, Wikitty w) { String contentField =
- * context.getArgument( ARG_CONTENT_FIELD + SEARCH_SEPARATOR + name,
- * null); if (contentField == null) { contentField =
- * context.getArgument(ARG_CONTENT_FIELD, null); } if (contentField
- * == null) { if (w.hasExtension(WikittyPubText.EXT_WIKITTYPUBTEXT))
- * { contentField = WikittyPubText.FQ_FIELD_WIKITTYPUBTEXT_CONTENT;
- * } else if (w.hasExtension(WikittyPubData.EXT_WIKITTYPUBDATA)) {
- * contentField = WikittyPubData.FQ_FIELD_WIKITTYPUBDATA_CONTENT; }
- * } return contentField; }
- */
+
protected String getError(PublicationContext context) {
context.setContentType("text/html");
Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationContext.java
===================================================================
--- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationContext.java 2011-05-13 09:15:02 UTC (rev 887)
+++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationContext.java 2011-05-13 12:50:59 UTC (rev 888)
@@ -10,7 +10,12 @@
import org.nuiton.wikitty.WikittyProxy;
import org.nuiton.wikitty.WikittyService;
-
+/**
+ * Interface for eval action.
+ *
+ * @author mfortun
+ *
+ */
public interface PublicationContext {
Modified: trunk/wikitty-publication/src/main/resources/struts.xml
===================================================================
--- trunk/wikitty-publication/src/main/resources/struts.xml 2011-05-13 09:15:02 UTC (rev 887)
+++ trunk/wikitty-publication/src/main/resources/struts.xml 2011-05-13 12:50:59 UTC (rev 888)
@@ -10,20 +10,20 @@
<constant name="struts.enable.SlashesInActionNames" value="true" />
-
+ <!-- basic interceptor stack use redefine our stack -->
<package name="publicArea" extends="struts-default">
<interceptors>
<interceptor-stack name="publicAreaStack">
- <interceptor-ref name="defaultStack">
-
+ <interceptor-ref name="defaultStack">
+
</interceptor-ref>
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="publicAreaStack" />
</package>
-
-
-
+
+
+
<!-- Define a package for the login area -->
<package name="loginArea" extends="publicArea">
<interceptors>
@@ -36,13 +36,13 @@
</interceptors>
<default-interceptor-ref name="loginAreaStack" />
</package>
-
- <!-- Define a package for the restricted area -->
+
+ <!-- Define a package for the restricted area must be logged to access -->
<package name="restrictedArea" extends="publicArea">
<interceptors>
<interceptor name="login"
class="org.nuiton.wikitty.publication.LoginInterceptor">
- <param name="error">/login.jsp</param>
+ <param name="error">/wikitty-publication/login_input.action</param>
</interceptor>
<interceptor-stack name="restrictedAreaStack">
<interceptor-ref name="login" />
@@ -51,27 +51,26 @@
</interceptors>
<default-interceptor-ref name="restrictedAreaStack" />
</package>
-
+
<package name="login" extends="loginArea">
- <action name="login"
- class="org.nuiton.wikitty.publication.action.PublicationActionLogin">
- <result>login.jsp</result>
- <result name="success" type="redirect">${success}</result>
- <result name="error" type="redirect">${error}</result>
- <!--
- <result name="input">login.jsp</result>
- <result name="login" type="redirectAction">home</result>
- <result type="success">home</result>
- -->
+ <action name="register_*" method="{1}"
+ class="org.nuiton.wikitty.publication.action.PublicationActionRegister">
+ <result name="input">register.jsp</result>
+ <result type="redirect">index.jsp</result>
</action>
- <action name="logout" class="org.nuiton.wikitty.publication.action.PublicationActionLogout">
+ <action name="login_*" method="{1}"
+ class="org.nuiton.wikitty.publication.action.PublicationActionLogin">
+ <result name="input">login.jsp</result>
+ <result name="success" type="redirect">${success}</result>
+ <result name="error" type="redirect">${error}</result>
+ </action>
+ <action name="logout"
+ class="org.nuiton.wikitty.publication.action.PublicationActionLogout">
<result type="redirect">${success}</result>
</action>
</package>
-
-
-
+ <!-- Action aviable only to logged user -->
<package name="publication" extends="restrictedArea">
<action name="*/edit/*"
@@ -108,18 +107,4 @@
</result>
</action>
</package>
-
-
-
-
-
- <!-- <package name="wikitty-publication" namespace="/" extends="struts-default">
- <default-action-ref name="home" /> <action name="*/action/*" class="org.nuiton.nospamweb.action.CheckAction">
- <param name="context">{1}</param> <param name="args">{1}</param> <result
- name="input">WEB-INF/jsp/captcha.jsp</result> <result name="success" type="redirect">${redirectTo}</result>
- </action> </package> code base for action <action name="*/action/*" class="org.nuiton.nospamweb.action.CheckAction">
- <param name="context">{1}</param> <param name="args">{1}</param> <result
- name="input">WEB-INF/jsp/captcha.jsp</result> <result name="success" type="redirect">${redirectTo}</result>
- </action> -->
-
</struts>
Added: trunk/wikitty-publication/src/main/webapp/register.jsp
===================================================================
--- trunk/wikitty-publication/src/main/webapp/register.jsp (rev 0)
+++ trunk/wikitty-publication/src/main/webapp/register.jsp 2011-05-13 12:50:59 UTC (rev 888)
@@ -0,0 +1,25 @@
+
+<%@taglib prefix="s" uri="/struts-tags"%>
+<div id="content">
+ <div id="formFrame" class="fond">
+ <h1>
+ <s:text name="Register" />
+ </h1>
+ <s:form action="register">
+ <s:actionerror />
+ <p>
+ <s:textfield key="publication.login.login" name="login"
+ labelposition="top" labelSeparator=" :" />
+ <s:password key="publication.login.password" name="password"
+ labelposition="top" labelSeparator=" :" />
+ <s:password key="publication.login.repeatPassword"
+ name="repeatPassword" labelposition="top" labelSeparator=" :" />
+ <s:submit key="publication.register.submit" name="submit" />
+ </p>
+ </s:form>
+ <s:a action="login_input" id="loginLink">
+ <s:text name="login" />
+ </s:a>
+ </div>
+
+</div>
\ No newline at end of file
Property changes on: trunk/wikitty-publication/src/main/webapp/register.jsp
___________________________________________________________________
Added: svn:mime-type
+ text/plain
1
0
r887 - in trunk/wikitty-publication/src/main: java/org/nuiton/wikitty/publication/action resources
by mfortun@users.nuiton.org 13 May '11
by mfortun@users.nuiton.org 13 May '11
13 May '11
Author: mfortun
Date: 2011-05-13 11:15:02 +0200 (Fri, 13 May 2011)
New Revision: 887
Url: http://nuiton.org/repositories/revision/wikitty/887
Log:
* logout action with success redirection
Modified:
trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationActionLogout.java
trunk/wikitty-publication/src/main/resources/struts.xml
Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationActionLogout.java
===================================================================
--- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationActionLogout.java 2011-05-13 09:00:49 UTC (rev 886)
+++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationActionLogout.java 2011-05-13 09:15:02 UTC (rev 887)
@@ -27,9 +27,34 @@
+
+
public class PublicationActionLogout extends PublicationBaseAction {
+
+ protected String success;
+
private static final long serialVersionUID = 4806944250461551896L;
+
+
+
+
+ public String getSuccess() {
+ return success;
+ }
+
+
+
+
+
+ public void setSuccess(String success) {
+ this.success = success;
+ }
+
+
+
+
+
public String execute() {
WikittyPublicationSession.invalidate(session);
return SUCCESS;
Modified: trunk/wikitty-publication/src/main/resources/struts.xml
===================================================================
--- trunk/wikitty-publication/src/main/resources/struts.xml 2011-05-13 09:00:49 UTC (rev 886)
+++ trunk/wikitty-publication/src/main/resources/struts.xml 2011-05-13 09:15:02 UTC (rev 887)
@@ -64,8 +64,8 @@
<result type="success">home</result>
-->
</action>
- <action name="logout" class="org.nuiton.wikitty.publication.action.PublicationActionLogin">
- <result type="redirectAction">login</result>
+ <action name="logout" class="org.nuiton.wikitty.publication.action.PublicationActionLogout">
+ <result type="redirect">${success}</result>
</action>
</package>
1
0