Bow-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
September 2013
- 3 participants
- 14 discussions
24 Sep '13
Author: bpoussin
Date: 2013-09-24 19:54:39 +0200 (Tue, 24 Sep 2013)
New Revision: 360
Url: http://chorem.org/projects/bow/repository/revisions/360
Log:
fixes #497: migrate to wikitty 3.10
Added:
trunk/bow-ui/src/main/java/org/chorem/bow/BowMigrationPreference.java
Removed:
trunk/bow-ui/src/main/java/org/chorem/bow/BowMigration06To11.java
trunk/bow-ui/src/main/java/org/chorem/bow/BowMigration11To12.java
trunk/bow-ui/src/main/java/org/chorem/bow/UserMigration.java
Modified:
trunk/bow-ui/pom.xml
trunk/bow-ui/src/main/java/org/chorem/bow/BookmarkUtils.java
trunk/bow-ui/src/main/java/org/chorem/bow/BowConfig.java
trunk/bow-ui/src/main/java/org/chorem/bow/BowProxy.java
trunk/bow-ui/src/main/java/org/chorem/bow/BowSearchResult.java
trunk/bow-ui/src/main/java/org/chorem/bow/BowSession.java
trunk/bow-ui/src/main/java/org/chorem/bow/BowUtils.java
trunk/bow-ui/src/main/java/org/chorem/bow/action/AliasAction.java
trunk/bow-ui/src/main/java/org/chorem/bow/action/BowBaseAction.java
trunk/bow-ui/src/main/java/org/chorem/bow/action/admin/MigrateDataAction.java
trunk/bow-ui/src/main/java/org/chorem/bow/action/admin/ReIndexationAction.java
trunk/bow-ui/src/main/java/org/chorem/bow/action/bookmark/AddOrUpdateAction.java
trunk/bow-ui/src/main/java/org/chorem/bow/action/bookmark/DeleteSearchResultsAction.java
trunk/bow-ui/src/main/java/org/chorem/bow/action/bookmark/EditAction.java
trunk/bow-ui/src/main/java/org/chorem/bow/action/bookmark/HomeAction.java
trunk/bow-ui/src/main/java/org/chorem/bow/action/bookmark/RemoveAction.java
trunk/bow-ui/src/main/java/org/chorem/bow/action/login/ForgotPasswordAction.java
trunk/bow-ui/src/main/java/org/chorem/bow/action/login/LoginAction.java
trunk/bow-ui/src/main/java/org/chorem/bow/action/login/RegisterAction.java
trunk/bow-ui/src/main/java/org/chorem/bow/action/opensearch/OpenSearchBaseAction.java
trunk/bow-ui/src/main/java/org/chorem/bow/action/opensearch/OpenSearchSuggestionAction.java
trunk/bow-ui/src/main/java/org/chorem/bow/action/opensearch/SuggestionAction.java
trunk/bow-ui/src/main/java/org/chorem/bow/action/preference/AdminTagAction.java
trunk/bow-ui/src/main/java/org/chorem/bow/action/preference/DeleteImportAction.java
trunk/bow-ui/src/main/java/org/chorem/bow/action/preference/ExportBookmarksAction.java
trunk/bow-ui/src/main/java/org/chorem/bow/action/preference/ImportBookmarksAction.java
trunk/bow-ui/src/main/java/org/chorem/bow/action/preference/PreferenceBaseAction.java
trunk/bow-ui/src/main/java/org/chorem/bow/action/preference/UpdateSiteAction.java
trunk/bow-ui/src/main/java/org/chorem/bow/action/preference/UpdateUserAction.java
trunk/bow-ui/src/main/resources/bow.properties
trunk/bow-ui/src/main/resources/i18n/bow-ui_en_GB.properties
trunk/bow-ui/src/main/resources/i18n/bow-ui_fr_FR.properties
trunk/bow-ui/src/main/webapp/WEB-INF/jsp/admin.jsp
trunk/bow-ui/src/main/webapp/WEB-INF/jsp/inc/header.jsp
trunk/bow-ui/src/main/webapp/WEB-INF/jsp/permanentXml.jsp
trunk/bow-ui/src/main/webapp/WEB-INF/jsp/temporaryXml.jsp
trunk/bow-ui/src/main/xmi/bow-model.zargo
Modified: trunk/bow-ui/pom.xml
===================================================================
--- trunk/bow-ui/pom.xml 2013-09-24 17:27:30 UTC (rev 359)
+++ trunk/bow-ui/pom.xml 2013-09-24 17:54:39 UTC (rev 360)
@@ -76,8 +76,8 @@
</dependency>
<dependency>
- <groupId>commons-lang</groupId>
- <artifactId>commons-lang</artifactId>
+ <groupId>org.apache.commons</groupId>
+ <artifactId>commons-lang3</artifactId>
</dependency>
<dependency>
@@ -171,15 +171,21 @@
</dependency>
<dependency>
- <groupId>postgresql</groupId>
+ <groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
- <artifactId>httpclient</artifactId>
+ <artifactId>httpcore</artifactId>
<version>4.3</version>
</dependency>
+
+ <dependency>
+ <groupId>org.apache.httpcomponents</groupId>
+ <artifactId>httpclient</artifactId>
+ <version>4.3</version>
+ </dependency>
</dependencies>
Modified: trunk/bow-ui/src/main/java/org/chorem/bow/BookmarkUtils.java
===================================================================
--- trunk/bow-ui/src/main/java/org/chorem/bow/BookmarkUtils.java 2013-09-24 17:27:30 UTC (rev 359)
+++ trunk/bow-ui/src/main/java/org/chorem/bow/BookmarkUtils.java 2013-09-24 17:54:39 UTC (rev 360)
@@ -23,15 +23,16 @@
*/
package org.chorem.bow;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.nuiton.util.StringUtil;
-import org.nuiton.wikitty.search.Criteria;
-import org.nuiton.wikitty.search.Search;
import java.util.Date;
import java.util.Set;
+import org.nuiton.wikitty.entities.Element;
+import org.nuiton.wikitty.query.WikittyQuery;
+import org.nuiton.wikitty.query.WikittyQueryMaker;
public class BookmarkUtils {
@@ -47,21 +48,22 @@
* @param userId
* @return
*/
- public static Search addEqUser(Search search, String userId) {
- Search result = search.or();
- result = result.eq(BowBookmark.FQ_FIELD_WIKITTYAUTHORISATION_OWNER, userId);
- result = result.eq(BowBookmark.FQ_FIELD_WIKITTYAUTHORISATION_READER, userId);
- result = result.eq(BowBookmark.FQ_FIELD_WIKITTYAUTHORISATION_WRITER, userId);
- result = result.eq(BowBookmark.FQ_FIELD_WIKITTYAUTHORISATION_ADMIN, userId);
+ public static WikittyQueryMaker addEqUser(WikittyQueryMaker search, String userId) {
+ search.or();
+ search.eq(BowBookmark.FQ_FIELD_WIKITTYAUTHORISATION_OWNER, userId);
+ search.eq(BowBookmark.FQ_FIELD_WIKITTYAUTHORISATION_READER, userId);
+ search.eq(BowBookmark.FQ_FIELD_WIKITTYAUTHORISATION_WRITER, userId);
+ search.eq(BowBookmark.FQ_FIELD_WIKITTYAUTHORISATION_ADMIN, userId);
+ search.close();
return search;
}
- public static Criteria getBookmarkListCriteriaByUser(BowUser user,
+ public static WikittyQuery getBookmarkListCriteriaByUser(BowUser user,
String tagLine,
String fullTextLine,
String order,
int first) {
- Search search = Search.query();
+ WikittyQueryMaker search = new WikittyQueryMaker().and();
addEqUser(search, user.getWikittyId());
if (StringUtils.isNotBlank(fullTextLine)) {
@@ -70,38 +72,38 @@
if (StringUtils.isNotBlank(tagLine)) {
Set<String> tags = BowUtils.getWords(tagLine);
- search.eq(BowBookmark.FQ_FIELD_WIKITTYLABEL_LABELS, tags);
+ search.containsAll(BowBookmark.FQ_FIELD_WIKITTYLABEL_LABELS, tags);
}
- Criteria criteria = search.criteria();
- criteria.addFacetField(BowBookmark.FQ_FIELD_WIKITTYLABEL_LABELS);
+ WikittyQuery criteria = search.end();
+ criteria.addFacetField(BowBookmark.ELEMENT_FIELD_WIKITTYLABEL_LABELS);
// on fixe le nombre de tag max souhaite par l'utilisateur
criteria.setFacetLimit(user.getTags());
- criteria.setFirstIndex(first);
+ criteria.setOffset(first);
// on fixe le nombre max d'element a ce qu'a defini l'utilisateur
- criteria.setEndIndex(first + user.getBookmarks() - 1);
+ criteria.setLimit(user.getBookmarks());
boolean sortOrderAscending = StringUtils.startsWith(order, "asc");
- String sortOrderField = null;
+ Element sortOrderField = null;
if (StringUtils.equals(order, "ascName")) {
- sortOrderField = BowBookmark.FQ_FIELD_BOWBOOKMARK_DESCRIPTION;
+ sortOrderField = BowBookmark.ELEMENT_FIELD_BOWBOOKMARK_DESCRIPTION;
} else if (StringUtils.equals(order, "ascDate")) {
- sortOrderField = BowBookmark.FQ_FIELD_BOWBOOKMARK_CREATIONDATE;
+ sortOrderField = BowBookmark.ELEMENT_FIELD_BOWBOOKMARK_CREATIONDATE;
} else if (StringUtils.equals(order, "ascClick")) {
- sortOrderField = BowBookmark.FQ_FIELD_BOWBOOKMARK_CLICK;
+ sortOrderField = BowBookmark.ELEMENT_FIELD_BOWBOOKMARK_CLICK;
} else if (StringUtils.equals(order, "descName")) {
- sortOrderField = BowBookmark.FQ_FIELD_BOWBOOKMARK_DESCRIPTION;
+ sortOrderField = BowBookmark.ELEMENT_FIELD_BOWBOOKMARK_DESCRIPTION;
} else if (StringUtils.equals(order, "descDate")) {
- sortOrderField = BowBookmark.FQ_FIELD_BOWBOOKMARK_CREATIONDATE;
+ sortOrderField = BowBookmark.ELEMENT_FIELD_BOWBOOKMARK_CREATIONDATE;
} else if (StringUtils.equals(order, "descClick")) {
- sortOrderField = BowBookmark.FQ_FIELD_BOWBOOKMARK_CLICK;
+ sortOrderField = BowBookmark.ELEMENT_FIELD_BOWBOOKMARK_CLICK;
}
if (sortOrderField == null) {
// default sort order
// TODO poussin 20110815 rendre configurable par l'utilisateur l'ordre par defaut qu'il prefere
- sortOrderField = BowBookmark.FQ_FIELD_BOWBOOKMARK_CLICK;
+ sortOrderField = BowBookmark.ELEMENT_FIELD_BOWBOOKMARK_CLICK;
sortOrderAscending = false;
}
Modified: trunk/bow-ui/src/main/java/org/chorem/bow/BowConfig.java
===================================================================
--- trunk/bow-ui/src/main/java/org/chorem/bow/BowConfig.java 2013-09-24 17:27:30 UTC (rev 359)
+++ trunk/bow-ui/src/main/java/org/chorem/bow/BowConfig.java 2013-09-24 17:54:39 UTC (rev 360)
@@ -23,7 +23,6 @@
*/
package org.chorem.bow;
-import org.apache.commons.lang.UnhandledException;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.nuiton.util.ApplicationConfig;
@@ -69,7 +68,7 @@
// Parse args
config.parse(args);
} catch (Exception e) {
- throw new UnhandledException(e);
+ throw new RuntimeException(e);
}
}
}
Deleted: trunk/bow-ui/src/main/java/org/chorem/bow/BowMigration06To11.java
===================================================================
--- trunk/bow-ui/src/main/java/org/chorem/bow/BowMigration06To11.java 2013-09-24 17:27:30 UTC (rev 359)
+++ trunk/bow-ui/src/main/java/org/chorem/bow/BowMigration06To11.java 2013-09-24 17:54:39 UTC (rev 360)
@@ -1,122 +0,0 @@
-/*
- * #%L
- * BOW UI
- *
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2010 - 2011 CodeLutin
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero 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 Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- * #L%
- */
-package org.chorem.bow;
-
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.nuiton.wikitty.WikittyProxy;
-import org.nuiton.wikitty.WikittyService;
-import org.nuiton.wikitty.WikittyUtil;
-import org.nuiton.wikitty.entities.Wikitty;
-import org.nuiton.wikitty.entities.WikittyAuthorisationHelper;
-import org.nuiton.wikitty.entities.WikittyExtension;
-import org.nuiton.wikitty.search.Criteria;
-import org.nuiton.wikitty.search.PagedResult;
-import org.nuiton.wikitty.search.Search;
-import org.nuiton.wikitty.services.WikittyExtensionMigration;
-import org.nuiton.wikitty.services.WikittyExtensionMigrationRename;
-
-import java.util.List;
-
-/**
- * Migre les données depuis la version 0.6 vers la version 1.1.
- * On suppose que les données sont convenablement indexee.
- * <p/>
- * <li> ajout du champs BowBookmark.authentificationInfo (rien a faire pour la migration)
- * <li> suppression de BowBookmark.bowUser
- * <li> BowBookmark depend de WikittyAuthorisation
- * <p/>
- * la valeur de BowBookmark.bowUser est maintenant stockee dans
- * WikittyAuthorisation.owner et WikittyAuthorisation.reader
- * pour que par defaut seul le owner est les droits de lecture sur l'item
- *
- * @author poussin
- * @version $Revision$
- * <p/>
- * Last update: $Date$
- * by : $Author$
- */
-public class BowMigration06To11 extends WikittyExtensionMigrationRename {
-
- /** to use log facility, just put in your code: log.info(\"...\"); */
- private static final Log log = LogFactory.getLog(BowMigration06To11.class);
-
- /** nombre d'objet a charger en 1 fois */
- public static final int MAX = 1000;
-
- /** Point d'entree de la migration. */
- @Override
- public Wikitty migrate(WikittyService service, Wikitty wikitty,
- WikittyExtension oldExt, WikittyExtension newExt) {
- // on laisse l'implantation par defaut migrer tout ce qu'il faut
- // nouvelle dependance, ...
- Wikitty result = super.migrate(service, wikitty, oldExt, newExt);
-
- // On met juste a jour les données avec le champs supprimer bowUser
- String bookId = wikitty.getId();
- String userId = (String) wikitty.getFqField(
- BowBookmark.EXT_BOWBOOKMARK + WikittyUtil.FQ_FIELD_NAME_SEPARATOR
- + "bowUser");
- if (userId == null) {
- log.error(String.format("BowBookmark without bowUser info: %s", bookId));
- } else {
- WikittyAuthorisationHelper.setOwner(result, userId);
- WikittyAuthorisationHelper.addReader(result, userId);
- }
-
- return result;
- }
-
- public static void migrate(WikittyProxy proxy) {
- log.info("Migration 0.5 to 0.6 started");
- // on enregistre la classe qui fera la migration des données
- WikittyExtensionMigration.migrationRegistry.put(
- BowBookmark.EXT_BOWBOOKMARK, new BowMigration06To11());
-
- // une simple lecture puis ecrire fera automatiquement la migration
- // grace a la classe enregistree pour.
- Criteria criteria =
- Search.query().exteq(BowBookmark.EXT_BOWBOOKMARK).criteria();
- int i = 0;
- int count = 0;
- PagedResult<Wikitty> wikitties;
- do {
- criteria.setFirstIndex(i);
- criteria.setEndIndex(i += MAX);
- wikitties = proxy.findAllByCriteria(criteria);
- List<Wikitty> books = wikitties.getAll();
- proxy.storeWikitty(books);
- count += books.size();
- } while (wikitties.size() >= MAX);
- log.info(String.format("Migration of %s BowBookmark done", count));
- }
-
- // only here to simplify test and debug of migration, this permit to migrate
- // datas in developpement environnement directly without launch bow web app
- public static void main(String... args) {
- BowProxy proxy = BowProxy.getInstance(null);
- migrate(proxy);
- }
-}
Deleted: trunk/bow-ui/src/main/java/org/chorem/bow/BowMigration11To12.java
===================================================================
--- trunk/bow-ui/src/main/java/org/chorem/bow/BowMigration11To12.java 2013-09-24 17:27:30 UTC (rev 359)
+++ trunk/bow-ui/src/main/java/org/chorem/bow/BowMigration11To12.java 2013-09-24 17:54:39 UTC (rev 360)
@@ -1,202 +0,0 @@
-/*
- * #%L
- * BOW UI
- *
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2010 - 2011 CodeLutin
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero 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 Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- * #L%
- */
-package org.chorem.bow;
-
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.nuiton.wikitty.WikittyProxy;
-import org.nuiton.wikitty.WikittyService;
-import org.nuiton.wikitty.WikittyUtil;
-import org.nuiton.wikitty.entities.Wikitty;
-import org.nuiton.wikitty.entities.WikittyAuthorisationHelper;
-import org.nuiton.wikitty.entities.WikittyExtension;
-import org.nuiton.wikitty.search.Criteria;
-import org.nuiton.wikitty.search.PagedResult;
-import org.nuiton.wikitty.search.Search;
-import org.nuiton.wikitty.services.WikittyExtensionMigration;
-import org.nuiton.wikitty.services.WikittyExtensionMigrationRename;
-
-import java.util.List;
-import org.apache.commons.lang3.StringUtils;
-
-/**
- * Migre les données depuis la version 0.6 vers la version 1.1.
- * On suppose que les données sont convenablement indexee.
- * <p/>
- * <li> ajout du champs BowBookmark.authentificationInfo (rien a faire pour la migration)
- * <li> suppression de BowBookmark.bowUser
- * <li> BowBookmark depend de WikittyAuthorisation
- * <p/>
- * la valeur de BowBookmark.bowUser est maintenant stockee dans
- * WikittyAuthorisation.owner et WikittyAuthorisation.reader
- * pour que par defaut seul le owner est les droits de lecture sur l'item
- *
- * @author poussin
- * @version $Revision$
- * <p/>
- * Last update: $Date$
- * by : $Author$
- */
-public class BowMigration11To12 extends WikittyExtensionMigrationRename {
-
- /** to use log facility, just put in your code: log.info(\"...\"); */
- private static final Log log = LogFactory.getLog(BowMigration11To12.class);
-
- /** nombre d'objet a charger en 1 fois */
- public static final int MAX = 1000;
-
- /** Point d'entree de la migration. */
- @Override
- public Wikitty migrate(WikittyService service, Wikitty wikitty,
- WikittyExtension oldExt, WikittyExtension newExt) {
-
- // On met juste a jour les données avec le champs supprimer bowUser
- String userId = wikitty.getId();
-
- if (userId != null) {
- String prefixSeparator = (String) wikitty.getFqField(
- BowPreference.EXT_BOWPREFERENCE + WikittyUtil.FQ_FIELD_NAME_SEPARATOR
- + "prefixSeparator");
-
- String defaultAction = (String) wikitty.getFqField(
- BowPreference.EXT_BOWPREFERENCE + WikittyUtil.FQ_FIELD_NAME_SEPARATOR
- + "defaultAction");
- String defaultPrefix = (String) wikitty.getFqField(
- BowPreference.EXT_BOWPREFERENCE + WikittyUtil.FQ_FIELD_NAME_SEPARATOR
- + "defaultPrefix");
-
- String tagSearchPrefix = (String) wikitty.getFqField(
- BowPreference.EXT_BOWPREFERENCE + WikittyUtil.FQ_FIELD_NAME_SEPARATOR
- + "tagSearchPrefix");
- String fullTextSearchPrefix = (String) wikitty.getFqField(
- BowPreference.EXT_BOWPREFERENCE + WikittyUtil.FQ_FIELD_NAME_SEPARATOR
- + "fullTextSearchPrefix");
- String webSearchPrefix = (String) wikitty.getFqField(
- BowPreference.EXT_BOWPREFERENCE + WikittyUtil.FQ_FIELD_NAME_SEPARATOR
- + "webSearchPrefix");
- String aliasPrefix = (String) wikitty.getFqField(
- BowPreference.EXT_BOWPREFERENCE + WikittyUtil.FQ_FIELD_NAME_SEPARATOR
- + "aliasPrefix");
-
- String searchEngineUrlResults = (String) wikitty.getFqField(
- BowPreference.EXT_BOWPREFERENCE + WikittyUtil.FQ_FIELD_NAME_SEPARATOR
- + "searchEngineUrlResults");
- String searchEngineUrlSuggestions = (String) wikitty.getFqField(
- BowPreference.EXT_BOWPREFERENCE + WikittyUtil.FQ_FIELD_NAME_SEPARATOR
- + "searchEngineUrlSuggestions");
-
- BowSearchPrefixImpl pWeb = new BowSearchPrefixImpl();
- pWeb.setBowUser(userId);
- pWeb.setPrefix(webSearchPrefix + prefixSeparator);
- pWeb.setSearch(searchEngineUrlResults);
- pWeb.setSuggestion(searchEngineUrlSuggestions);
-
- BowSearchPrefixImpl pTag = new BowSearchPrefixImpl();
- pTag.setBowUser(userId);
- pTag.setPrefix(tagSearchPrefix + prefixSeparator);
- pTag.setSearch("bowTagSearch");
- pTag.setSuggestion("bowTagSuggest");
-
- BowSearchPrefixImpl pFullText = new BowSearchPrefixImpl();
- pFullText.setBowUser(userId);
- pFullText.setPrefix(fullTextSearchPrefix + prefixSeparator);
- pFullText.setSearch("bowFullTextSearch");
- pFullText.setSuggestion("bowFullTextSuggest");
-
- BowSearchPrefixImpl pAlias = new BowSearchPrefixImpl();
- pAlias.setBowUser(userId);
- pAlias.setPrefix(aliasPrefix + prefixSeparator);
- pAlias.setSearch("bowAliasSearch");
- pAlias.setSuggestion("bowAliasSuggest");
-
- BowSearchPrefixImpl pDefault = new BowSearchPrefixImpl();
- if (StringUtils.equals(defaultAction, webSearchPrefix)) {
- pDefault.getWikitty().replaceWith(pWeb.getWikitty(), true);
- } else if (StringUtils.equals(defaultAction, tagSearchPrefix)) {
- pDefault.getWikitty().replaceWith(pTag.getWikitty(), true);
- } else if (StringUtils.equals(defaultAction, fullTextSearchPrefix)) {
- pDefault.getWikitty().replaceWith(pFullText.getWikitty(), true);
- } else if (StringUtils.equals(defaultAction, aliasPrefix)) {
- pDefault.getWikitty().replaceWith(pAlias.getWikitty(), true);
- }
- pDefault.setPrefix("");
-
- BowSearchPrefixImpl pDefaultPrefix = new BowSearchPrefixImpl();
- if (StringUtils.equals(defaultAction, webSearchPrefix)) {
- pDefaultPrefix.getWikitty().replaceWith(pWeb.getWikitty(), true);
- } else if (StringUtils.equals(defaultAction, tagSearchPrefix)) {
- pDefaultPrefix.getWikitty().replaceWith(pTag.getWikitty(), true);
- } else if (StringUtils.equals(defaultAction, fullTextSearchPrefix)) {
- pDefaultPrefix.getWikitty().replaceWith(pFullText.getWikitty(), true);
- } else if (StringUtils.equals(defaultAction, aliasPrefix)) {
- pDefaultPrefix.getWikitty().replaceWith(pAlias.getWikitty(), true);
- }
- pDefaultPrefix.setPrefix(prefixSeparator);
-
-
- WikittyProxy proxy = new WikittyProxy(service);
- proxy.store(pWeb, pTag, pFullText, pAlias, pDefault, pDefaultPrefix);
- }
-
- // on laisse l'implantation par defaut migrer tout ce qu'il faut
- // nouvelle dependance, ...
- Wikitty result = super.migrate(service, wikitty, oldExt, newExt);
-
- return result;
- }
-
- public static void migrate(WikittyProxy proxy) {
- log.info("Migration 1.1 to 1.2 started");
- // on enregistre la classe qui fera la migration des données
- WikittyExtensionMigration.migrationRegistry.put(
- BowPreference.EXT_BOWPREFERENCE, new BowMigration11To12());
-
- // une simple lecture puis ecrire fera automatiquement la migration
- // grace a la classe enregistree pour.
- Criteria criteria =
- Search.query().exteq(BowPreference.EXT_BOWPREFERENCE).criteria();
- int i = 0;
- int count = 0;
- PagedResult<Wikitty> wikitties;
- do {
- criteria.setFirstIndex(i);
- criteria.setEndIndex(i += MAX);
- wikitties = proxy.findAllByCriteria(criteria);
- List<Wikitty> prefs = wikitties.getAll();
- proxy.storeWikitty(prefs);
- count += prefs.size();
- } while (wikitties.size() >= MAX);
- log.info(String.format("Migration of %s BowBookmark done", count));
- WikittyExtensionMigration.migrationRegistry.remove(
- BowPreference.EXT_BOWPREFERENCE);
- }
-
- // only here to simplify test and debug of migration, this permit to migrate
- // datas in developpement environnement directly without launch bow web app
- public static void main(String... args) {
- BowProxy proxy = BowProxy.getInstance(null);
- migrate(proxy);
- }
-}
Added: trunk/bow-ui/src/main/java/org/chorem/bow/BowMigrationPreference.java
===================================================================
--- trunk/bow-ui/src/main/java/org/chorem/bow/BowMigrationPreference.java (rev 0)
+++ trunk/bow-ui/src/main/java/org/chorem/bow/BowMigrationPreference.java 2013-09-24 17:54:39 UTC (rev 360)
@@ -0,0 +1,216 @@
+/*
+ * #%L
+ * BOW UI
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2010 - 2011 CodeLutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero 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 Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ * #L%
+ */
+package org.chorem.bow;
+
+
+import java.util.ArrayList;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.nuiton.wikitty.WikittyService;
+import org.nuiton.wikitty.WikittyUtil;
+import org.nuiton.wikitty.entities.Wikitty;
+import org.nuiton.wikitty.entities.WikittyExtension;
+import org.nuiton.wikitty.services.WikittyExtensionMigrationRename;
+
+import org.apache.commons.lang3.StringUtils;
+import org.nuiton.util.VersionUtil;
+import org.nuiton.wikitty.services.WikittyServiceEnhanced;
+
+/**
+ * Migre les données depuis la version 0.6 vers la version 1.1.
+ * On suppose que les données sont convenablement indexee.
+ * <p/>
+ * <li> ajout du champs BowBookmark.authentificationInfo (rien a faire pour la migration)
+ * <li> suppression de BowBookmark.bowUser
+ * <li> BowBookmark depend de WikittyAuthorisation
+ * <p/>
+ * la valeur de BowBookmark.bowUser est maintenant stockee dans
+ * WikittyAuthorisation.owner et WikittyAuthorisation.reader
+ * pour que par defaut seul le owner est les droits de lecture sur l'item
+ *
+ * @author poussin
+ * @version $Revision$
+ * <p/>
+ * Last update: $Date$
+ * by : $Author$
+ */
+public class BowMigrationPreference extends WikittyExtensionMigrationRename {
+
+ /** to use log facility, just put in your code: log.info(\"...\"); */
+ private static final Log log = LogFactory.getLog(BowMigrationPreference.class);
+
+ /**
+ * Remplacement des prefix predefini dans BowPreference par une extension
+ * BowPrefix qui permet d'en creer autant qu'on en souhaite
+ *
+ * @param service
+ * @param oldWikitty
+ * @param newWikitty
+ */
+ protected void migrateBowPrefix(WikittyService service, Wikitty oldWikitty, Wikitty newWikitty) {
+ // On met juste a jour les données avec le champs supprimer bowUser
+ String userId = oldWikitty.getWikittyId();
+
+ if (userId != null) {
+ String prefixSeparator = (String) oldWikitty.getFqField(
+ BowPreference.EXT_BOWPREFERENCE + WikittyUtil.FQ_FIELD_NAME_SEPARATOR
+ + "prefixSeparator");
+
+ String defaultAction = (String) oldWikitty.getFqField(
+ BowPreference.EXT_BOWPREFERENCE + WikittyUtil.FQ_FIELD_NAME_SEPARATOR
+ + "defaultAction");
+ String defaultPrefix = (String) oldWikitty.getFqField(
+ BowPreference.EXT_BOWPREFERENCE + WikittyUtil.FQ_FIELD_NAME_SEPARATOR
+ + "defaultPrefix");
+
+ String tagSearchPrefix = (String) oldWikitty.getFqField(
+ BowPreference.EXT_BOWPREFERENCE + WikittyUtil.FQ_FIELD_NAME_SEPARATOR
+ + "tagSearchPrefix");
+ String fullTextSearchPrefix = (String) oldWikitty.getFqField(
+ BowPreference.EXT_BOWPREFERENCE + WikittyUtil.FQ_FIELD_NAME_SEPARATOR
+ + "fullTextSearchPrefix");
+ String webSearchPrefix = (String) oldWikitty.getFqField(
+ BowPreference.EXT_BOWPREFERENCE + WikittyUtil.FQ_FIELD_NAME_SEPARATOR
+ + "webSearchPrefix");
+ String aliasPrefix = (String) oldWikitty.getFqField(
+ BowPreference.EXT_BOWPREFERENCE + WikittyUtil.FQ_FIELD_NAME_SEPARATOR
+ + "aliasPrefix");
+
+ String searchEngineUrlResults = (String) oldWikitty.getFqField(
+ BowPreference.EXT_BOWPREFERENCE + WikittyUtil.FQ_FIELD_NAME_SEPARATOR
+ + "searchEngineUrlResults");
+ String searchEngineUrlSuggestions = (String) oldWikitty.getFqField(
+ BowPreference.EXT_BOWPREFERENCE + WikittyUtil.FQ_FIELD_NAME_SEPARATOR
+ + "searchEngineUrlSuggestions");
+
+ BowSearchPrefixImpl pWeb = new BowSearchPrefixImpl();
+ pWeb.setBowUser(userId);
+ pWeb.setPrefix(webSearchPrefix + prefixSeparator);
+ pWeb.setSearch(searchEngineUrlResults);
+ pWeb.setSuggestion(searchEngineUrlSuggestions);
+
+ BowSearchPrefixImpl pTag = new BowSearchPrefixImpl();
+ pTag.setBowUser(userId);
+ pTag.setPrefix(tagSearchPrefix + prefixSeparator);
+ pTag.setSearch("search.tag");
+ pTag.setSuggestion("suggestion.tag");
+
+ BowSearchPrefixImpl pFullText = new BowSearchPrefixImpl();
+ pFullText.setBowUser(userId);
+ pFullText.setPrefix(fullTextSearchPrefix + prefixSeparator);
+ pFullText.setSearch("search.fulltext");
+ pFullText.setSuggestion("suggestion.fulltext");
+
+ BowSearchPrefixImpl pAlias = new BowSearchPrefixImpl();
+ pAlias.setBowUser(userId);
+ pAlias.setPrefix(aliasPrefix + prefixSeparator);
+ pAlias.setSearch("search.alias");
+ pAlias.setSuggestion("suggestion.alias");
+
+ BowSearchPrefixImpl pDefault = new BowSearchPrefixImpl();
+ if (StringUtils.equals(defaultAction, webSearchPrefix)) {
+ pDefault.getWikitty().replaceWith(pWeb.getWikitty(), true);
+ } else if (StringUtils.equals(defaultAction, tagSearchPrefix)) {
+ pDefault.getWikitty().replaceWith(pTag.getWikitty(), true);
+ } else if (StringUtils.equals(defaultAction, fullTextSearchPrefix)) {
+ pDefault.getWikitty().replaceWith(pFullText.getWikitty(), true);
+ } else if (StringUtils.equals(defaultAction, aliasPrefix)) {
+ pDefault.getWikitty().replaceWith(pAlias.getWikitty(), true);
+ }
+ pDefault.setPrefix("");
+
+ BowSearchPrefixImpl pDefaultPrefix = new BowSearchPrefixImpl();
+ if (StringUtils.equals(defaultPrefix, webSearchPrefix)) {
+ pDefaultPrefix.getWikitty().replaceWith(pWeb.getWikitty(), true);
+ } else if (StringUtils.equals(defaultPrefix, tagSearchPrefix)) {
+ pDefaultPrefix.getWikitty().replaceWith(pTag.getWikitty(), true);
+ } else if (StringUtils.equals(defaultPrefix, fullTextSearchPrefix)) {
+ pDefaultPrefix.getWikitty().replaceWith(pFullText.getWikitty(), true);
+ } else if (StringUtils.equals(defaultPrefix, aliasPrefix)) {
+ pDefaultPrefix.getWikitty().replaceWith(pAlias.getWikitty(), true);
+ }
+ pDefaultPrefix.setPrefix(prefixSeparator);
+
+ ArrayList<Wikitty> toStore = new ArrayList<Wikitty>();
+ toStore.add(pWeb.getWikitty());
+ toStore.add(pTag.getWikitty());
+ toStore.add(pFullText.getWikitty());
+ toStore.add(pAlias.getWikitty());
+ toStore.add(pDefault.getWikitty());
+ toStore.add(pDefaultPrefix.getWikitty());
+
+ WikittyServiceEnhanced wse = new WikittyServiceEnhanced(service);
+ service.store(null, toStore, false);
+
+// WikittyProxy proxy = new WikittyProxy(service);
+// proxy.store(pWeb, pTag, pFullText, pAlias, pDefault, pDefaultPrefix);
+ }
+ }
+
+ @Override
+ public Wikitty migrate(WikittyService service, Wikitty oldWikitty, Wikitty newWikitty,
+ WikittyExtension oldExt, WikittyExtension newExt) {
+
+ // on laisse l'implantation par defaut migrer tout ce qu'il faut
+ Wikitty result = super.migrate(service, oldWikitty, newWikitty, oldExt, newExt);
+
+ if (BowPreference.EXT_BOWPREFERENCE.equals(newExt.getName())) {
+ String oldVersion = oldExt.getVersion();
+ if (VersionUtil.smallerThan(oldVersion, "5.0")) {
+ migrateBowPrefix(service, oldWikitty, result);
+ }
+ }
+
+ return result;
+ }
+////147e923b-3921-4b17-a88c-43495b477a8a
+// public static void migrate(WikittyProxy proxy) {
+// log.info("Migration");
+//
+// int MAX = 1000;
+//
+// Criteria criteria = Search.query().rTrue().criteria();
+//
+// int i = 0;
+// int count = 0;
+// PagedResult<Wikitty> wikitties;
+// do {
+// criteria.setFirstIndex(i);
+// criteria.setEndIndex(i += MAX);
+// wikitties = proxy.findAllByCriteria(criteria);
+// List<Wikitty> ws = wikitties.getAll();
+// proxy.storeWikitty(ws);
+// count += ws.size();
+// } while (wikitties.size() >= MAX);
+// log.info(String.format("Migration of %s Wikitties done", count));
+// }
+//
+// // only here to simplify test and debug of migration, this permit to migrate
+// // datas in developpement environnement directly without launch bow web app
+// public static void main(String... args) {
+// BowProxy proxy = BowProxy.getInstance(null);
+// proxy.syncSearchEngine();
+// migrate(proxy);
+// }
+}
Property changes on: trunk/bow-ui/src/main/java/org/chorem/bow/BowMigrationPreference.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Modified: trunk/bow-ui/src/main/java/org/chorem/bow/BowProxy.java
===================================================================
--- trunk/bow-ui/src/main/java/org/chorem/bow/BowProxy.java 2013-09-24 17:27:30 UTC (rev 359)
+++ trunk/bow-ui/src/main/java/org/chorem/bow/BowProxy.java 2013-09-24 17:54:39 UTC (rev 360)
@@ -24,13 +24,14 @@
package org.chorem.bow;
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.WikittyExtension;
import java.util.ArrayList;
import java.util.List;
+import org.nuiton.wikitty.WikittyClient;
+import org.nuiton.wikitty.services.WikittyExtensionMigrationRegistry;
/**
* Proxy pour utiliser les wikitty convenablement initialise.
@@ -41,7 +42,7 @@
* Last update: $Date$
* by : $Author$
*/
-public class BowProxy extends WikittyProxy {
+public class BowProxy extends WikittyClient {
static protected WikittyService ws;
@@ -74,9 +75,17 @@
if (ws == null) {
synchronized (BowProxy.class) {
if (ws == null) {
+ // on enregistre les classes qui feront la migration des données
+ // on enregistre la classe qui fera la migration des données
+ WikittyExtensionMigrationRegistry registry =
+ config.getObject(WikittyExtensionMigrationRegistry.class);
+ registry.put(BowPreference.EXT_BOWPREFERENCE, new BowMigrationPreference());
+
+ // enregistrement des extensions
List<WikittyExtension> extensions = new ArrayList<WikittyExtension>();
- extensions.addAll(BowPreferenceImpl.extensions); // inherit BowUSer, WikittyUser
- extensions.addAll(BowImportImpl.extensions); // inherit BowBookmark, WikittyLabel
+ extensions.addAll(BowUserImpl.extensions); // inherit BowPreference, WikittyUser
+ extensions.addAll(BowImportImpl.extensions); // inherit BowBookmark, WikittyLabel, WikittyAuthorisation
+ extensions.addAll(BowSearchPrefixImpl.extensions); // inherit BowBookmark, WikittyLabel
ws = WikittyServiceFactory.buildWikittyService(config);
ws.storeExtension(null, extensions);
Modified: trunk/bow-ui/src/main/java/org/chorem/bow/BowSearchResult.java
===================================================================
--- trunk/bow-ui/src/main/java/org/chorem/bow/BowSearchResult.java 2013-09-24 17:27:30 UTC (rev 359)
+++ trunk/bow-ui/src/main/java/org/chorem/bow/BowSearchResult.java 2013-09-24 17:54:39 UTC (rev 360)
@@ -26,13 +26,13 @@
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.nuiton.wikitty.search.FacetTopic;
-import org.nuiton.wikitty.search.PagedResult;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
+import org.nuiton.wikitty.query.FacetTopic;
+import org.nuiton.wikitty.query.WikittyQueryResult;
/**
* Cette classe permet de stocker le resutlat d'une recherche
@@ -66,14 +66,12 @@
* Construit l'objet en passant en parametre tout ce qu'il faut pour faire
* la recherche
*
- * @param session la session de l'utilisateur sur lequel on peut recuperer
- * le proxy et les preferences
* @param result
* @param tagLine (optionel) le liste des tags a rechercher
*/
- public BowSearchResult(PagedResult<BowBookmark> result, String tagLine) {
+ public BowSearchResult(WikittyQueryResult<BowBookmark> result, String tagLine) {
- bookmarkCount = result.getNumFound();
+ bookmarkCount = result.getTotalResult();
if (log.isDebugEnabled()) {
log.debug(String.format("Find %s items, used %s",
bookmarkCount, result.size()));
Modified: trunk/bow-ui/src/main/java/org/chorem/bow/BowSession.java
===================================================================
--- trunk/bow-ui/src/main/java/org/chorem/bow/BowSession.java 2013-09-24 17:27:30 UTC (rev 359)
+++ trunk/bow-ui/src/main/java/org/chorem/bow/BowSession.java 2013-09-24 17:54:39 UTC (rev 360)
@@ -23,9 +23,8 @@
*/
package org.chorem.bow;
-import org.apache.commons.lang.ArrayUtils;
-import org.apache.commons.lang.ObjectUtils;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.ArrayUtils;
+import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -35,10 +34,10 @@
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
-import org.nuiton.wikitty.WikittyProxy;
-import org.nuiton.wikitty.search.Criteria;
-import org.nuiton.wikitty.search.PagedResult;
-import org.nuiton.wikitty.search.Search;
+import org.nuiton.wikitty.entities.Element;
+import org.nuiton.wikitty.query.WikittyQuery;
+import org.nuiton.wikitty.query.WikittyQueryMaker;
+import org.nuiton.wikitty.query.WikittyQueryResult;
/**
* Classe utilisee pour stocker les objets utils en session utilisateur
@@ -110,11 +109,11 @@
public List<BowSearchPrefix> getSearchPrefix() {
BowUser user = getUser();
- Criteria criteria = Search.query()
+ WikittyQuery criteria = new WikittyQueryMaker().and()
.exteq(BowSearchPrefix.EXT_BOWSEARCHPREFIX)
- .eq(BowSearchPrefix.FQ_FIELD_BOWSEARCHPREFIX_BOWUSER, user.getWikittyId()).criteria()
- .setSortAscending(BowSearchPrefix.FQ_FIELD_BOWSEARCHPREFIX_PREFIX);
- PagedResult<BowSearchPrefix> result = getProxy().findAllByCriteria(BowSearchPrefix.class, criteria);
+ .eq(BowSearchPrefix.FQ_FIELD_BOWSEARCHPREFIX_BOWUSER, user.getWikittyId()).end()
+ .setSortAscending(BowSearchPrefix.ELEMENT_FIELD_BOWSEARCHPREFIX_PREFIX);
+ WikittyQueryResult<BowSearchPrefix> result = getProxy().findAllByQuery(BowSearchPrefix.class, criteria);
List<BowSearchPrefix> prefix = new ArrayList<BowSearchPrefix>(result.getAll());
log.debug("####################### prefix number ################### " + prefix.size());
if (prefix.isEmpty()) {
Modified: trunk/bow-ui/src/main/java/org/chorem/bow/BowUtils.java
===================================================================
--- trunk/bow-ui/src/main/java/org/chorem/bow/BowUtils.java 2013-09-24 17:27:30 UTC (rev 359)
+++ trunk/bow-ui/src/main/java/org/chorem/bow/BowUtils.java 2013-09-24 17:54:39 UTC (rev 360)
@@ -23,19 +23,18 @@
*/
package org.chorem.bow;
-import org.apache.commons.lang.ArrayUtils;
-import org.apache.commons.lang.StringUtils;
-import org.apache.commons.lang.time.DateFormatUtils;
+import org.apache.commons.lang3.ArrayUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.time.DateFormatUtils;
import org.nuiton.util.StringUtil;
-import org.nuiton.wikitty.WikittyProxy;
-import org.nuiton.wikitty.search.Criteria;
-import org.nuiton.wikitty.search.Search;
import java.util.Arrays;
import java.util.Date;
import java.util.HashSet;
import java.util.Set;
import java.util.UUID;
+import org.nuiton.wikitty.query.WikittyQuery;
+import org.nuiton.wikitty.query.WikittyQueryMaker;
public class BowUtils {
@@ -180,12 +179,12 @@
* @return User the token owner, null if the token doesn't exist
*/
protected static boolean checkPermanentToken(BowSession session, String token) {
- WikittyProxy proxy = session.getProxy();
+ BowProxy proxy = session.getProxy();
boolean result = false;
if (token != null) {
- Criteria criteria = Search.query().eq(
- BowUser.FQ_FIELD_BOWUSER_PERMANENTTOKEN, token).criteria();
- BowUser user = proxy.findByCriteria(BowUser.class, criteria);
+ WikittyQuery criteria = new WikittyQueryMaker().eq(
+ BowUser.FQ_FIELD_BOWUSER_PERMANENTTOKEN, token).end();
+ BowUser user = proxy.findByQuery(BowUser.class, criteria);
if (user != null) {
session.setUser(user);
result = true;
Deleted: trunk/bow-ui/src/main/java/org/chorem/bow/UserMigration.java
===================================================================
--- trunk/bow-ui/src/main/java/org/chorem/bow/UserMigration.java 2013-09-24 17:27:30 UTC (rev 359)
+++ trunk/bow-ui/src/main/java/org/chorem/bow/UserMigration.java 2013-09-24 17:54:39 UTC (rev 360)
@@ -1,81 +0,0 @@
-/*
- * #%L
- * bow
- *
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2010 CodeLutin
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero 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 Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- * #L%
- */
-package org.chorem.bow;
-
-import org.nuiton.util.StringUtil;
-import org.nuiton.wikitty.WikittyException;
-import org.nuiton.wikitty.WikittyService;
-import org.nuiton.wikitty.entities.Wikitty;
-import org.nuiton.wikitty.entities.WikittyExtension;
-import org.nuiton.wikitty.entities.WikittyImpl;
-import org.nuiton.wikitty.services.WikittyExtensionMigration;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Set;
-
-/** @author sherkhan */
-public class UserMigration implements WikittyExtensionMigration {
-
- @Override
- public Wikitty migrate(WikittyService service,
- Wikitty wikitty,
- WikittyExtension oldExt,
- WikittyExtension newExt) {
-
- // FIXME poussin 20110211 il y a un probleme, il faut checker la version
- // de l'extension old avant de faire le migration. Sinon on va migrer
- // des donnees deja migrees :(
-
- String id = wikitty.getId();
- String version = wikitty.getVersion();
- Wikitty newWikitty = new WikittyImpl(id);
- newWikitty.setVersion(version);
-
- List<WikittyExtension> extensions =
- new ArrayList<WikittyExtension>(wikitty.getExtensions());
- if (extensions.contains(oldExt)) {
- extensions.remove(oldExt);
- extensions.add(newExt);
- }
- newWikitty.addExtension(extensions);
-
- Set<String> fieldNames = wikitty.fieldNames();
- for (String fieldName : fieldNames) {
- Object obj = wikitty.getFqField(fieldName);
- if (fieldName.equals("User.password")) {
- String password = (String) obj;
- try {
- password = StringUtil.encodeMD5(password);
- } catch (RuntimeException ex) {
- throw new WikittyException("Could not encode password", ex);
- }
- obj = password;
- }
- newWikitty.setFqField(fieldName, obj);
- }
-
- return newWikitty;
- }
-}
Modified: trunk/bow-ui/src/main/java/org/chorem/bow/action/AliasAction.java
===================================================================
--- trunk/bow-ui/src/main/java/org/chorem/bow/action/AliasAction.java 2013-09-24 17:27:30 UTC (rev 359)
+++ trunk/bow-ui/src/main/java/org/chorem/bow/action/AliasAction.java 2013-09-24 17:54:39 UTC (rev 360)
@@ -23,14 +23,14 @@
*/
package org.chorem.bow.action;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.chorem.bow.BowBookmark;
+import org.chorem.bow.BowProxy;
import org.chorem.bow.BowUser;
-import org.nuiton.wikitty.WikittyProxy;
-import org.nuiton.wikitty.search.Criteria;
-import org.nuiton.wikitty.search.Search;
+import org.nuiton.wikitty.query.WikittyQuery;
+import org.nuiton.wikitty.query.WikittyQueryMaker;
/**
* Handles only public aliases. Private aliases are handled by open search.
@@ -74,21 +74,23 @@
String result = SUCCESS;
try {
if (StringUtils.isNotEmpty(alias)) {
- WikittyProxy proxy = getBowProxy();
+ BowProxy proxy = getBowProxy();
- Criteria criteria = Search.query().eq(
- BowBookmark.FQ_FIELD_BOWBOOKMARK_PUBLICALIAS, alias).criteria();
+ WikittyQuery criteria = new WikittyQueryMaker().or()
+ .ideq(alias)
+ .eq(BowBookmark.FQ_FIELD_BOWBOOKMARK_PUBLICALIAS, alias)
+ .end();
- BowBookmark bookmark = proxy.findByCriteria(BowBookmark.class, criteria);
+ BowBookmark bookmark = proxy.findByQuery(BowBookmark.class, criteria);
if (bookmark == null) {
- // not public alias, looking for private if user is logged
+ // not id or public alias, looking for private if user is logged
BowUser user = getBowSession().getUser();
if (user != null) {
- criteria = Search.query()
+ criteria = new WikittyQueryMaker().and()
.eq(BowBookmark.FQ_FIELD_WIKITTYAUTHORISATION_OWNER, user.getWikittyId())
.eq(BowBookmark.FQ_FIELD_BOWBOOKMARK_PRIVATEALIAS, alias)
- .criteria();
- bookmark = proxy.findByCriteria(BowBookmark.class, criteria);
+ .end();
+ bookmark = proxy.findByQuery(BowBookmark.class, criteria);
}
}
if (bookmark != null) {
@@ -114,12 +116,12 @@
String result = SUCCESS;
try {
if (!StringUtils.isEmpty(alias)) {
- WikittyProxy proxy = getBowProxy();
+ BowProxy proxy = getBowProxy();
- Criteria criteria = Search.query().eq(
- BowBookmark.FQ_FIELD_BOWBOOKMARK_PUBLICALIAS, alias).criteria();
+ WikittyQuery criteria = new WikittyQueryMaker().eq(
+ BowBookmark.FQ_FIELD_BOWBOOKMARK_PUBLICALIAS, alias).end();
- BowBookmark bookmark = proxy.findByCriteria(BowBookmark.class, criteria);
+ BowBookmark bookmark = proxy.findByQuery(BowBookmark.class, criteria);
if (bookmark != null) {
addActionError(_("bow.alias.already.exists", alias));
log.error("A bookmark already exists with alias " + alias);
@@ -150,7 +152,7 @@
log.debug("delete alias for id " + bookmarkId);
String result = SUCCESS;
try {
- WikittyProxy proxy = getBowProxy();
+ BowProxy proxy = getBowProxy();
BowBookmark bookmark = proxy.restore(BowBookmark.class, bookmarkId);
if (bookmark != null) {
Modified: trunk/bow-ui/src/main/java/org/chorem/bow/action/BowBaseAction.java
===================================================================
--- trunk/bow-ui/src/main/java/org/chorem/bow/action/BowBaseAction.java 2013-09-24 17:27:30 UTC (rev 359)
+++ trunk/bow-ui/src/main/java/org/chorem/bow/action/BowBaseAction.java 2013-09-24 17:54:39 UTC (rev 360)
@@ -45,7 +45,7 @@
private static final long serialVersionUID = 1L;
- protected static final Log log = LogFactory.getLog(BowBaseAction.class);
+ private static final Log log = LogFactory.getLog(BowBaseAction.class);
final static protected String CONTEXT_ACTION_KEY = "action";
Modified: trunk/bow-ui/src/main/java/org/chorem/bow/action/admin/MigrateDataAction.java
===================================================================
--- trunk/bow-ui/src/main/java/org/chorem/bow/action/admin/MigrateDataAction.java 2013-09-24 17:27:30 UTC (rev 359)
+++ trunk/bow-ui/src/main/java/org/chorem/bow/action/admin/MigrateDataAction.java 2013-09-24 17:54:39 UTC (rev 360)
@@ -24,16 +24,18 @@
package org.chorem.bow.action.admin;
-import org.apache.commons.lang.StringUtils;
+import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.chorem.bow.BowMigration06To11;
-import org.chorem.bow.BowMigration11To12;
+import org.chorem.bow.BowProxy;
import org.chorem.bow.BowSession;
import org.chorem.bow.action.BowBaseAction;
-import org.nuiton.util.VersionUtil;
-import org.nuiton.wikitty.WikittyProxy;
+import org.nuiton.wikitty.entities.Wikitty;
+import org.nuiton.wikitty.query.WikittyQuery;
+import org.nuiton.wikitty.query.WikittyQueryMaker;
+import org.nuiton.wikitty.query.WikittyQueryResult;
+
/**
* Lance la migration des données de la version 0.4 vers 0.5
*
@@ -48,43 +50,40 @@
/** to use log facility, just put in your code: log.info(\"...\"); */
private static final Log log = LogFactory.getLog(MigrateDataAction.class);
- /** Version must be real version, like 0.4, 0.5 or 0.6 */
- protected String versionFrom;
+ /** nombre d'objet a migrer pour chaque iteration */
+ protected int MAX=1000;
- protected String versionTo;
-
- public void setVersionFrom(String versionFrom) {
- this.versionFrom = versionFrom;
+ public void setMAX(int MAX) {
+ if (MAX > 0) {
+ this.MAX = MAX;
+ }
}
- public void setVersionTo(String versionTo) {
- this.versionTo = versionTo;
- }
-
@Override
public String execute() {
try {
- if (StringUtils.isBlank(versionFrom) || StringUtils.isBlank(versionTo)) {
- log.error("Migration action must have to parameter: versionFrom and versionTo");
- } else {
- BowSession session = getBowSession();
- if (session.isAdmin()) { //If is admin
- WikittyProxy proxy = getBowProxy();
+ BowSession session = getBowSession();
+ if (session.isAdmin()) { //If is admin
+ // les classes de migration ont deja ete enregistrees lors
+ // de la creation de BowProxy
+ // Il faut donc simplement parcourir tous les objets
+ BowProxy proxy = getBowProxy();
- if (VersionUtil.equals(versionFrom, "0.6")
- && VersionUtil.equals(versionTo, "1.1")) {
- BowMigration06To11.migrate(proxy);
- addActionMessage(_("bow.admin.dataMigration.success"));
- } else if (VersionUtil.equals(versionFrom, "1.1")
- && VersionUtil.equals(versionTo, "1.2")) {
- BowMigration11To12.migrate(proxy);
- addActionMessage(_("bow.admin.dataMigration.success"));
- } else {
- addActionMessage(String.format(
- "No migration found for %s to %s",
- versionFrom, versionTo));
- }
- }
+ WikittyQuery criteria = new WikittyQueryMaker().rTrue().end();
+
+ int i = 0;
+ int count = 0;
+ WikittyQueryResult<Wikitty> wikitties;
+ do {
+ criteria.setOffset(i);
+ criteria.setLimit(MAX);
+ i+=MAX;
+ wikitties = proxy.findAllByQuery(Wikitty.class, criteria);
+ List<Wikitty> ws = wikitties.getAll();
+ proxy.storeWikitty(ws);
+ count += ws.size();
+ } while (wikitties.size() >= MAX);
+ log.info(String.format("Migration of %s BowBookmark done", count));
}
} catch (Exception eee) {
addActionError(_("bow.error.internal"));
Modified: trunk/bow-ui/src/main/java/org/chorem/bow/action/admin/ReIndexationAction.java
===================================================================
--- trunk/bow-ui/src/main/java/org/chorem/bow/action/admin/ReIndexationAction.java 2013-09-24 17:27:30 UTC (rev 359)
+++ trunk/bow-ui/src/main/java/org/chorem/bow/action/admin/ReIndexationAction.java 2013-09-24 17:54:39 UTC (rev 360)
@@ -23,9 +23,11 @@
*/
package org.chorem.bow.action.admin;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.chorem.bow.BowProxy;
import org.chorem.bow.BowSession;
import org.chorem.bow.action.BowBaseAction;
-import org.nuiton.wikitty.WikittyProxy;
/**
* Lance la reindexation solr
@@ -35,15 +37,17 @@
public class ReIndexationAction extends BowBaseAction {
private static final long serialVersionUID = 6226574522402739559L;
+
+ private static Log log = LogFactory.getLog(ReIndexationAction.class);
@Override
public String execute() {
try {
BowSession session = getBowSession();
if (session.isAdmin()) { //If is admin
- WikittyProxy proxy = getBowProxy();
+ BowProxy proxy = getBowProxy();
- proxy.getWikittyService().syncSearchEngine(proxy.getSecurityToken());
+ proxy.syncSearchEngine();
addActionMessage(_("bow.admin.reIndexationDone"));
}
} catch (Exception eee) {
@@ -52,4 +56,9 @@
}
return SUCCESS;
}
+
+ static public void main(String ... args) {
+ BowProxy proxy = BowProxy.getInstance(null);
+ proxy.getWikittyService().syncSearchEngine(null);
+ }
}
\ No newline at end of file
Modified: trunk/bow-ui/src/main/java/org/chorem/bow/action/bookmark/AddOrUpdateAction.java
===================================================================
--- trunk/bow-ui/src/main/java/org/chorem/bow/action/bookmark/AddOrUpdateAction.java 2013-09-24 17:27:30 UTC (rev 359)
+++ trunk/bow-ui/src/main/java/org/chorem/bow/action/bookmark/AddOrUpdateAction.java 2013-09-24 17:54:39 UTC (rev 360)
@@ -23,16 +23,18 @@
*/
package org.chorem.bow.action.bookmark;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.chorem.bow.BookmarkUtils;
import org.chorem.bow.BowBookmark;
+import org.chorem.bow.BowProxy;
import org.chorem.bow.BowUser;
import org.chorem.bow.BowUtils;
import org.chorem.bow.action.BowBaseAction;
-import org.nuiton.wikitty.WikittyProxy;
-import org.nuiton.wikitty.search.Criteria;
-import org.nuiton.wikitty.search.PagedResult;
-import org.nuiton.wikitty.search.Search;
+import org.nuiton.wikitty.query.WikittyQuery;
+import org.nuiton.wikitty.query.WikittyQueryMaker;
+import org.nuiton.wikitty.query.WikittyQueryResult;
/**
* Ajoute ou modifie un bookmark, soit par le formulaire,
@@ -44,6 +46,8 @@
private static final long serialVersionUID = 3389170166034184139L;
+ private static Log log = LogFactory.getLog(AddOrUpdateAction.class);
+
protected String bookmarkId;
protected String link;
@@ -135,7 +139,7 @@
public String execute() {
String result = SUCCESS;
try {
- WikittyProxy proxy = getBowProxy();
+ BowProxy proxy = getBowProxy();
BowBookmark bookmark = null;
BowBookmark bookmarkToModify = null;
@@ -153,30 +157,30 @@
// Si l'alias prive souhaite est deja utilise on ne l'accept pas
// Si l'alias public souhaite est deja utilise on ne l'accept pas
// TODO sletellier 20110416 : return error message when public or private alias is already used
- Criteria privateAliasCriteria = null;
- Criteria publicAliasCriteria = null;
+ WikittyQuery privateAliasCriteria = null;
+ WikittyQuery publicAliasCriteria = null;
if (StringUtils.isNotEmpty(privateAlias)) {
- privateAliasCriteria = Search.query()
+ privateAliasCriteria = new WikittyQueryMaker().and()
.eq(BowBookmark.FQ_FIELD_BOWBOOKMARK_PRIVATEALIAS, privateAlias)
.eq(BowBookmark.FQ_FIELD_WIKITTYAUTHORISATION_OWNER, userId)
- .criteria().setEndIndex(0);
+ .end().setLimit(0);
}
if (StringUtils.isNotEmpty(publicAlias)) {
- publicAliasCriteria = Search.query()
+ publicAliasCriteria = new WikittyQueryMaker()
.eq(BowBookmark.FQ_FIELD_BOWBOOKMARK_PUBLICALIAS, publicAlias)
- .criteria().setEndIndex(0);
+ .end().setLimit(0);
}
- PagedResult<String>[] aliasResult = proxy.findAllIdByCriteria(
+ WikittyQueryResult<String>[] aliasResult = proxy.findAllByQuery(
privateAliasCriteria, publicAliasCriteria);
- if (aliasResult[0] != null && aliasResult[0].getNumFound() > 0) {
+ if (aliasResult[0] != null && aliasResult[0].getTotalResult() > 0) {
if (bookmarkToModify == null) {
privateAlias = "";
} else {
privateAlias = bookmarkToModify.getPrivateAlias();
}
}
- if (aliasResult[1] != null && aliasResult[1].getNumFound() > 0) {
+ if (aliasResult[1] != null && aliasResult[1].getTotalResult() > 0) {
if (bookmarkToModify == null) {
publicAlias = "";
} else {
@@ -203,12 +207,12 @@
// looking for already bookmark with same url, to fusion them
String link = bookmark.getLink();
- Criteria criteria = Search.query()
+ WikittyQuery criteria = new WikittyQueryMaker().and()
.eq(BowBookmark.FQ_FIELD_BOWBOOKMARK_LINK, link)
.eq(BowBookmark.FQ_FIELD_WIKITTYAUTHORISATION_OWNER, userId)
- .criteria();
+ .end();
BowBookmark oldBookmark =
- proxy.findByCriteria(BowBookmark.class, criteria);
+ proxy.findByQuery(BowBookmark.class, criteria);
if (oldBookmark != null) {
// fusionne les descriptions et les tags
// par contre on prend le dernier privateAlias prive choisi par
Modified: trunk/bow-ui/src/main/java/org/chorem/bow/action/bookmark/DeleteSearchResultsAction.java
===================================================================
--- trunk/bow-ui/src/main/java/org/chorem/bow/action/bookmark/DeleteSearchResultsAction.java 2013-09-24 17:27:30 UTC (rev 359)
+++ trunk/bow-ui/src/main/java/org/chorem/bow/action/bookmark/DeleteSearchResultsAction.java 2013-09-24 17:54:39 UTC (rev 360)
@@ -23,14 +23,16 @@
*/
package org.chorem.bow.action.bookmark;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import org.chorem.bow.BookmarkUtils;
import org.chorem.bow.BowUser;
import org.chorem.bow.action.BowBaseAction;
-import org.nuiton.wikitty.WikittyProxy;
-import org.nuiton.wikitty.search.Criteria;
import java.util.List;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.chorem.bow.BowProxy;
+import org.nuiton.wikitty.query.WikittyQuery;
/**
* Supprime des bookmarks qui satisfont le critere de recherche.
@@ -41,6 +43,8 @@
private static final long serialVersionUID = -3903724044644625507L;
+ private static Log log = LogFactory.getLog(DeleteSearchResultsAction.class);
+
/** Deletes the search results */
public String execute() {
try {
@@ -52,11 +56,11 @@
// dans ce cas, ne faudrait-il pas seulement ce supprimer des
// reader/write/admin ?
// FIXME tchemit 20110829 J'ai mis en dernier paramètre 0 car ça ne compilait pô mais je sais pas si c'est le bon!...
- Criteria criteria = BookmarkUtils.getBookmarkListCriteriaByUser(
+ WikittyQuery criteria = BookmarkUtils.getBookmarkListCriteriaByUser(
user, tagLine, fullTextLine, null, 0);
- WikittyProxy proxy = getBowProxy();
- List<String> ids = proxy.findAllIdByCriteria(criteria).getAll();
+ BowProxy proxy = getBowProxy();
+ List<String> ids = proxy.findAllByQuery(criteria).getAll();
if (log.isDebugEnabled()) {
log.debug("Will delete " + ids.size() + " bookmarks");
Modified: trunk/bow-ui/src/main/java/org/chorem/bow/action/bookmark/EditAction.java
===================================================================
--- trunk/bow-ui/src/main/java/org/chorem/bow/action/bookmark/EditAction.java 2013-09-24 17:27:30 UTC (rev 359)
+++ trunk/bow-ui/src/main/java/org/chorem/bow/action/bookmark/EditAction.java 2013-09-24 17:54:39 UTC (rev 360)
@@ -23,13 +23,14 @@
*/
package org.chorem.bow.action.bookmark;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.chorem.bow.BowBookmark;
import org.chorem.bow.BowBookmarkImpl;
+import org.chorem.bow.BowProxy;
import org.chorem.bow.action.BowBaseAction;
-import org.nuiton.wikitty.WikittyProxy;
-import org.nuiton.wikitty.search.Criteria;
-import org.nuiton.wikitty.search.Search;
-import org.nuiton.wikitty.search.operators.Element;
+import org.nuiton.wikitty.query.WikittyQuery;
+import org.nuiton.wikitty.query.WikittyQueryMaker;
/**
* Load a bookmark to display it on modification page
@@ -37,7 +38,9 @@
* @author sletellier
*/
public class EditAction extends BowBaseAction {
+
private static final long serialVersionUID = 1L;
+ private static Log log = LogFactory.getLog(EditAction.class);
protected String id;
@@ -64,10 +67,10 @@
return SUCCESS;
}
try {
- WikittyProxy proxy = getBowProxy();
- Criteria criteria = Search.query()
- .eq(Element.ELT_ID, id).criteria();
- bookmark = proxy.findByCriteria(BowBookmark.class, criteria);
+ BowProxy proxy = getBowProxy();
+ WikittyQuery criteria = new WikittyQueryMaker()
+ .ideq(id).end();
+ bookmark = proxy.findByQuery(BowBookmark.class, criteria);
} catch (Exception eee) {
addActionError(_("bow.error.internal"));
log.error(eee.getMessage(), eee);
Modified: trunk/bow-ui/src/main/java/org/chorem/bow/action/bookmark/HomeAction.java
===================================================================
--- trunk/bow-ui/src/main/java/org/chorem/bow/action/bookmark/HomeAction.java 2013-09-24 17:27:30 UTC (rev 359)
+++ trunk/bow-ui/src/main/java/org/chorem/bow/action/bookmark/HomeAction.java 2013-09-24 17:54:39 UTC (rev 360)
@@ -24,7 +24,7 @@
package org.chorem.bow.action.bookmark;
import com.opensymphony.xwork2.ActionContext;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.chorem.bow.BookmarkUtils;
@@ -35,8 +35,8 @@
import org.chorem.bow.BowUser;
import org.chorem.bow.action.BowBaseAction;
import org.nuiton.util.TimeLog;
-import org.nuiton.wikitty.search.Criteria;
-import org.nuiton.wikitty.search.PagedResult;
+import org.nuiton.wikitty.query.WikittyQuery;
+import org.nuiton.wikitty.query.WikittyQueryResult;
/**
* Prepare l'affichage de la page d'accueil
@@ -95,10 +95,10 @@
BowUser user = session.getUser();
BowProxy proxy = session.getProxy();
- Criteria criteria = BookmarkUtils.getBookmarkListCriteriaByUser(
+ WikittyQuery criteria = BookmarkUtils.getBookmarkListCriteriaByUser(
user, tagLine, fullTextLine, order, first);
- PagedResult<BowBookmark> result =
- proxy.findAllByCriteria(BowBookmark.class, criteria);
+ WikittyQueryResult<BowBookmark> result =
+ proxy.findAllByQuery(BowBookmark.class, criteria);
searchResult = new BowSearchResult(result, tagLine);
}
Modified: trunk/bow-ui/src/main/java/org/chorem/bow/action/bookmark/RemoveAction.java
===================================================================
--- trunk/bow-ui/src/main/java/org/chorem/bow/action/bookmark/RemoveAction.java 2013-09-24 17:27:30 UTC (rev 359)
+++ trunk/bow-ui/src/main/java/org/chorem/bow/action/bookmark/RemoveAction.java 2013-09-24 17:54:39 UTC (rev 360)
@@ -23,10 +23,12 @@
*/
package org.chorem.bow.action.bookmark;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.chorem.bow.BowProxy;
import org.chorem.bow.BowUtils;
import org.chorem.bow.action.BowBaseAction;
-import org.nuiton.wikitty.WikittyProxy;
/**
* Supprime un bookmark
@@ -36,6 +38,7 @@
public class RemoveAction extends BowBaseAction {
private static final long serialVersionUID = 820566716695285561L;
+ private static final Log log = LogFactory.getLog(RemoveAction.class);
protected String bookmarkId;
@@ -61,7 +64,7 @@
public String execute() {
if (StringUtils.isNotEmpty(bookmarkId)) {
try {
- WikittyProxy proxy = getBowProxy();
+ BowProxy proxy = getBowProxy();
proxy.delete(bookmarkId);
addActionMessage(_("bow.bookmark.remove.successful"));
} catch (Exception eee) {
Modified: trunk/bow-ui/src/main/java/org/chorem/bow/action/login/ForgotPasswordAction.java
===================================================================
--- trunk/bow-ui/src/main/java/org/chorem/bow/action/login/ForgotPasswordAction.java 2013-09-24 17:27:30 UTC (rev 359)
+++ trunk/bow-ui/src/main/java/org/chorem/bow/action/login/ForgotPasswordAction.java 2013-09-24 17:54:39 UTC (rev 360)
@@ -23,18 +23,20 @@
*/
package org.chorem.bow.action.login;
-import org.apache.commons.lang.RandomStringUtils;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.RandomStringUtils;
+import org.apache.commons.lang3.StringUtils;
import org.chorem.bow.BowMail;
import org.chorem.bow.BowUser;
import org.chorem.bow.action.BowBaseAction;
import org.nuiton.util.StringUtil;
-import org.nuiton.wikitty.WikittyProxy;
-import org.nuiton.wikitty.search.Criteria;
-import org.nuiton.wikitty.search.Search;
import javax.mail.MessagingException;
import javax.mail.internet.AddressException;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.chorem.bow.BowProxy;
+import org.nuiton.wikitty.query.WikittyQuery;
+import org.nuiton.wikitty.query.WikittyQueryMaker;
/**
* Genere un nouveau mot de passe pour l'utilisateur et lui envoie par mail
@@ -47,7 +49,9 @@
* @author poussin
*/
public class ForgotPasswordAction extends BowBaseAction {
+
private static final long serialVersionUID = -8207951465957204954L;
+ private static final Log log = LogFactory.getLog(ForgotPasswordAction.class);
protected String email;
@@ -69,10 +73,10 @@
try {
if (StringUtils.isNotBlank(email)) {
email = email.trim();
- WikittyProxy proxy = getBowProxy();
- Criteria criteria = Search.query()
- .eq(BowUser.FQ_FIELD_WIKITTYUSER_LOGIN, email).criteria();
- BowUser user = proxy.findByCriteria(BowUser.class, criteria);
+ BowProxy proxy = getBowProxy();
+ WikittyQuery criteria = new WikittyQueryMaker()
+ .eq(BowUser.FQ_FIELD_WIKITTYUSER_LOGIN, email).end();
+ BowUser user = proxy.findByQuery(BowUser.class, criteria);
if (user != null) { //If the email address exists
String password;
Modified: trunk/bow-ui/src/main/java/org/chorem/bow/action/login/LoginAction.java
===================================================================
--- trunk/bow-ui/src/main/java/org/chorem/bow/action/login/LoginAction.java 2013-09-24 17:27:30 UTC (rev 359)
+++ trunk/bow-ui/src/main/java/org/chorem/bow/action/login/LoginAction.java 2013-09-24 17:54:39 UTC (rev 360)
@@ -24,15 +24,17 @@
package org.chorem.bow.action.login;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.chorem.bow.BowConfig;
+import org.chorem.bow.BowProxy;
import org.chorem.bow.BowUser;
import org.chorem.bow.BowUserImpl;
import org.chorem.bow.action.BowBaseAction;
import org.nuiton.util.StringUtil;
-import org.nuiton.wikitty.WikittyProxy;
-import org.nuiton.wikitty.search.Criteria;
-import org.nuiton.wikitty.search.Search;
+import org.nuiton.wikitty.query.WikittyQuery;
+import org.nuiton.wikitty.query.WikittyQueryMaker;
/**
* authentifie l'utilisateur et place son objet User dans la bow session
@@ -42,6 +44,7 @@
public class LoginAction extends BowBaseAction {
private static final long serialVersionUID = 6891064800288772246L;
+ private static Log log = LogFactory.getLog(LoginAction.class);
protected String email;
@@ -73,10 +76,11 @@
protected BowUser checkLogin(String email, String password) {
BowUser result;
- WikittyProxy proxy = getBowProxy();
- Criteria criteria = Search.query().eq(BowUser.FQ_FIELD_WIKITTYUSER_LOGIN, email).
- eq(BowUser.FQ_FIELD_WIKITTYUSER_PASSWORD, password).criteria();
- result = proxy.findByCriteria(BowUser.class, criteria);
+ BowProxy proxy = getBowProxy();
+ WikittyQuery criteria = new WikittyQueryMaker().and()
+ .eq(BowUser.FQ_FIELD_WIKITTYUSER_LOGIN, email)
+ .eq(BowUser.FQ_FIELD_WIKITTYUSER_PASSWORD, password).end();
+ result = proxy.findByQuery(BowUser.class, criteria);
if (result == null) {
// failback: try to authenticate admin with config info
Modified: trunk/bow-ui/src/main/java/org/chorem/bow/action/login/RegisterAction.java
===================================================================
--- trunk/bow-ui/src/main/java/org/chorem/bow/action/login/RegisterAction.java 2013-09-24 17:27:30 UTC (rev 359)
+++ trunk/bow-ui/src/main/java/org/chorem/bow/action/login/RegisterAction.java 2013-09-24 17:54:39 UTC (rev 360)
@@ -23,19 +23,21 @@
*/
package org.chorem.bow.action.login;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import org.chorem.bow.BowMail;
import org.chorem.bow.BowUser;
import org.chorem.bow.BowUserImpl;
import org.chorem.bow.BowUtils;
import org.chorem.bow.action.BowBaseAction;
import org.nuiton.util.StringUtil;
-import org.nuiton.wikitty.WikittyProxy;
-import org.nuiton.wikitty.search.Criteria;
-import org.nuiton.wikitty.search.Search;
import javax.mail.MessagingException;
import javax.mail.internet.AddressException;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.chorem.bow.BowProxy;
+import org.nuiton.wikitty.query.WikittyQuery;
+import org.nuiton.wikitty.query.WikittyQueryMaker;
/**
* Enregistre un nouvel utilisateur
@@ -46,6 +48,8 @@
private static final long serialVersionUID = 2204772861770399542L;
+ private static Log log = LogFactory.getLog(RegisterAction.class);
+
protected String email;
protected String password;
@@ -90,12 +94,12 @@
protected boolean alreadyRegistered(String email) {
boolean result;
- WikittyProxy proxy = getBowProxy();
+ BowProxy proxy = getBowProxy();
//Retrieves user by user name (email)
- Criteria criteria = Search.query()
- .eq(BowUser.FQ_FIELD_WIKITTYUSER_LOGIN, email).criteria();
+ WikittyQuery criteria = new WikittyQueryMaker()
+ .eq(BowUser.FQ_FIELD_WIKITTYUSER_LOGIN, email).end();
- result = proxy.findByCriteria(BowUser.class, criteria) != null;
+ result = proxy.findByQuery(BowUser.class, criteria) != null;
//If the user doesn't already exist
if (result) {
//The email address is already used by someone
@@ -120,7 +124,7 @@
//If the email address isn't already used
if (!alreadyRegistered(email)) {
- WikittyProxy proxy = getBowProxy();
+ BowProxy proxy = getBowProxy();
BowUserImpl newUser = new BowUserImpl();
newUser.setPassword(md5);
newUser.setLogin(email);
Modified: trunk/bow-ui/src/main/java/org/chorem/bow/action/opensearch/OpenSearchBaseAction.java
===================================================================
--- trunk/bow-ui/src/main/java/org/chorem/bow/action/opensearch/OpenSearchBaseAction.java 2013-09-24 17:27:30 UTC (rev 359)
+++ trunk/bow-ui/src/main/java/org/chorem/bow/action/opensearch/OpenSearchBaseAction.java 2013-09-24 17:54:39 UTC (rev 360)
@@ -23,7 +23,7 @@
*/
package org.chorem.bow.action.opensearch;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.struts2.ServletActionContext;
@@ -50,14 +50,14 @@
protected String token;
/** [in] la ligne de recherche soumise par l'utilisateur */
- protected String search;
+ protected String q;
- public String getSearch() {
- return search;
+ public String getQ() {
+ return q;
}
- public void setSearch(String search) {
- this.search = search;
+ public void setQ(String q) {
+ this.q = q;
}
/** @return the token */
@@ -74,7 +74,7 @@
@Override
public String execute() {
- System.out.println("######################### OpenSearchBaseAction enter #################" + search);
+ System.out.println("######################### OpenSearchBaseAction enter #################" + q);
System.out.println("param:" + ServletActionContext.getRequest().getParameterMap());
BowSearchPrefix defaultPrefix = null;
@@ -85,7 +85,7 @@
String p = prefix.getPrefix();
if (StringUtils.isBlank(p)) {
defaultPrefix = prefix;
- } else if (StringUtils.startsWith(search, p)) {
+ } else if (StringUtils.startsWith(q, p)) {
foundPrefix = prefix;
break;
}
@@ -96,9 +96,9 @@
}
if (foundPrefix == null) {
- query = search;
+ query = q;
} else {
- query = StringUtils.substringAfter(search, foundPrefix.getPrefix());
+ query = StringUtils.substringAfter(q, foundPrefix.getPrefix());
}
System.out.println("######################### OpenSearchBaseAction #################" + query + " - " + foundPrefix);
Modified: trunk/bow-ui/src/main/java/org/chorem/bow/action/opensearch/OpenSearchSuggestionAction.java
===================================================================
--- trunk/bow-ui/src/main/java/org/chorem/bow/action/opensearch/OpenSearchSuggestionAction.java 2013-09-24 17:27:30 UTC (rev 359)
+++ trunk/bow-ui/src/main/java/org/chorem/bow/action/opensearch/OpenSearchSuggestionAction.java 2013-09-24 17:54:39 UTC (rev 360)
@@ -34,7 +34,7 @@
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import org.apache.commons.io.IOUtils;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import org.apache.http.HttpEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
Modified: trunk/bow-ui/src/main/java/org/chorem/bow/action/opensearch/SuggestionAction.java
===================================================================
--- trunk/bow-ui/src/main/java/org/chorem/bow/action/opensearch/SuggestionAction.java 2013-09-24 17:27:30 UTC (rev 359)
+++ trunk/bow-ui/src/main/java/org/chorem/bow/action/opensearch/SuggestionAction.java 2013-09-24 17:54:39 UTC (rev 360)
@@ -7,20 +7,20 @@
import java.util.List;
import java.util.Set;
import org.apache.commons.io.input.ReaderInputStream;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.chorem.bow.BookmarkUtils;
import org.chorem.bow.BowBookmark;
+import org.chorem.bow.BowProxy;
import org.chorem.bow.BowUser;
import org.chorem.bow.BowUtils;
import org.chorem.bow.action.BowBaseAction;
-import org.nuiton.wikitty.WikittyProxy;
import org.nuiton.wikitty.entities.Wikitty;
-import org.nuiton.wikitty.search.Criteria;
-import org.nuiton.wikitty.search.FacetTopic;
-import org.nuiton.wikitty.search.PagedResult;
-import org.nuiton.wikitty.search.Search;
+import org.nuiton.wikitty.query.FacetTopic;
+import org.nuiton.wikitty.query.WikittyQuery;
+import org.nuiton.wikitty.query.WikittyQueryMaker;
+import org.nuiton.wikitty.query.WikittyQueryResult;
/**
*
@@ -34,6 +34,7 @@
/** to use log facility, just put in your code: log.info(\"...\"); */
static private Log log = LogFactory.getLog(SuggestionAction.class);
+ private static final long serialVersionUID = 1L;
/** [in] le token d'identification */
protected String token;
@@ -78,7 +79,7 @@
if (q != null) {
BowUser user = getBowSession().getUser();
- WikittyProxy proxy = getBowProxy();
+ BowProxy proxy = getBowProxy();
// on ajoute * a la fin du dernier tag, car il n'est peut-etre pas fini
String searchLineStar = q + "*";
@@ -96,21 +97,20 @@
Set<String> searchLineList = BowUtils.getWords(searchLineStar);
- Search search = BookmarkUtils.addEqUser(Search.query(), user.getWikittyId());
+ WikittyQueryMaker search = BookmarkUtils.addEqUser(new WikittyQueryMaker().and(), user.getWikittyId());
search.exteq(BowBookmark.EXT_WIKITTYLABEL);
- search.contains(BowBookmark.FQ_FIELD_WIKITTYLABEL_LABELS, searchLineList);
+ search.containsAll(BowBookmark.FQ_FIELD_WIKITTYLABEL_LABELS, searchLineList);
- Criteria criteria = search
- .criteria()
- .setEndIndex(0) // on ne veut aucun resultat, c'est la facet dont on a besoin
+ WikittyQuery criteria = search.end()
+ .setLimit(0) // on ne veut aucun resultat, c'est la facet dont on a besoin
.setFacetMinCount(1) // on demande meme les labels avec 1 seul item
.setFacetLimit(Integer.MAX_VALUE) // ne ne met pas -1 pour qu'il soit trie par ordre de count
- .addFacetField(BowBookmark.FQ_FIELD_WIKITTYLABEL_LABELS);
+ .addFacetField(BowBookmark.ELEMENT_FIELD_WIKITTYLABEL_LABELS);
- PagedResult<Wikitty> result = proxy.findAllByCriteria(criteria);
+ WikittyQueryResult<Wikitty> result = proxy.findAllByQuery(Wikitty.class, criteria);
// lorsqu'on demande tout (facetLimit(-1)), les topics sont trie
// alphabetiquement pas besoin de les retrier
- List<FacetTopic> topics = result.getTopic(BowBookmark.FQ_FIELD_WIKITTYLABEL_LABELS);
+ List<FacetTopic> topics = result.getTopic(BowBookmark.ELEMENT_FIELD_WIKITTYLABEL_LABELS);
if (log.isTraceEnabled()) {
log.trace("all topics: %s" + topics);
}
@@ -175,20 +175,20 @@
if (q != null) {
BowUser user = getBowSession().getUser();
- WikittyProxy proxy = getBowProxy();
+ BowProxy proxy = getBowProxy();
// on ajoute * a la fin, car il n'est peut-etre pas fini
String privateAliasStar = q + "*";
- Search search = BookmarkUtils.addEqUser(Search.query(), user.getWikittyId());
+ WikittyQueryMaker search = BookmarkUtils.addEqUser(new WikittyQueryMaker().and(), user.getWikittyId());
search.or().
eq(BowBookmark.FQ_FIELD_BOWBOOKMARK_PRIVATEALIAS, privateAliasStar).
eq(BowBookmark.FQ_FIELD_BOWBOOKMARK_PUBLICALIAS, privateAliasStar);
- Criteria criteria = search.criteria()
- .setEndIndex(15); // on recupere que les 15 premiers resultats
+ WikittyQuery criteria = search.end()
+ .setLimit(15); // on recupere que les 15 premiers resultats
- PagedResult<BowBookmark> result = proxy.findAllByCriteria(BowBookmark.class, criteria);
+ WikittyQueryResult<BowBookmark> result = proxy.findAllByQuery(BowBookmark.class, criteria);
for (BowBookmark b : result) {
String completion = b.getPrivateAlias();
Modified: trunk/bow-ui/src/main/java/org/chorem/bow/action/preference/AdminTagAction.java
===================================================================
--- trunk/bow-ui/src/main/java/org/chorem/bow/action/preference/AdminTagAction.java 2013-09-24 17:27:30 UTC (rev 359)
+++ trunk/bow-ui/src/main/java/org/chorem/bow/action/preference/AdminTagAction.java 2013-09-24 17:54:39 UTC (rev 360)
@@ -23,22 +23,22 @@
*/
package org.chorem.bow.action.preference;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.chorem.bow.BowBookmark;
import org.chorem.bow.BowProxy;
import org.chorem.bow.BowUser;
import org.nuiton.wikitty.entities.WikittyLabel;
-import org.nuiton.wikitty.search.Criteria;
-import org.nuiton.wikitty.search.PagedResult;
-import org.nuiton.wikitty.search.Search;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
+import org.nuiton.wikitty.query.WikittyQuery;
+import org.nuiton.wikitty.query.WikittyQueryMaker;
+import org.nuiton.wikitty.query.WikittyQueryResult;
/**
* @author poussin
@@ -51,7 +51,7 @@
/** to use log facility, just put in your code: log.info(\"...\"); */
private static final Log log = LogFactory.getLog(AdminTagAction.class);
-
+
private static final long serialVersionUID = 1L;
/**
@@ -80,12 +80,12 @@
BowUser user = getBowSession().getUser();
String userId = user.getWikittyId();
- Criteria c = Search.query()
- .in(BowBookmark.FQ_FIELD_WIKITTYLABEL_LABELS, selectedLabelsList)
+ WikittyQuery c = new WikittyQueryMaker().and()
+ .containsOne(BowBookmark.FQ_FIELD_WIKITTYLABEL_LABELS, selectedLabelsList)
.eq(BowBookmark.FQ_FIELD_WIKITTYAUTHORISATION_OWNER, userId)
- .criteria();
- PagedResult<WikittyLabel> searchResult =
- proxy.findAllByCriteria(WikittyLabel.class, c);
+ .end();
+ WikittyQueryResult<WikittyLabel> searchResult =
+ proxy.findAllByQuery(WikittyLabel.class, c);
List<WikittyLabel> toStore = new ArrayList<WikittyLabel>();
for (WikittyLabel label : searchResult) {
Modified: trunk/bow-ui/src/main/java/org/chorem/bow/action/preference/DeleteImportAction.java
===================================================================
--- trunk/bow-ui/src/main/java/org/chorem/bow/action/preference/DeleteImportAction.java 2013-09-24 17:27:30 UTC (rev 359)
+++ trunk/bow-ui/src/main/java/org/chorem/bow/action/preference/DeleteImportAction.java 2013-09-24 17:54:39 UTC (rev 360)
@@ -26,11 +26,13 @@
import org.chorem.bow.BowBookmark;
import org.chorem.bow.BowImport;
import org.chorem.bow.BowUser;
-import org.nuiton.wikitty.WikittyProxy;
-import org.nuiton.wikitty.search.Criteria;
-import org.nuiton.wikitty.search.Search;
import java.util.List;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.chorem.bow.BowProxy;
+import org.nuiton.wikitty.query.WikittyQuery;
+import org.nuiton.wikitty.query.WikittyQueryMaker;
/**
@@ -41,6 +43,8 @@
public class DeleteImportAction extends PreferenceBaseAction {
private static final long serialVersionUID = 8714394293884265516L;
+ static private Log log = LogFactory.getLog(DeleteImportAction.class);
+
protected String date;
/** @return the date */
@@ -62,12 +66,12 @@
// que la date verifie le pattern ?
// car on pire on ne retrouve rien et donc on ne supprime rien
date.matches("[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}.[0-9]{1,3}Z")) {
- WikittyProxy proxy = getBowProxy();
+ BowProxy proxy = getBowProxy();
BowUser user = getBowSession().getUser();
- Criteria criteria = Search.query()
+ WikittyQuery criteria = new WikittyQueryMaker().and()
.eq(BowBookmark.FQ_FIELD_WIKITTYAUTHORISATION_OWNER, user.getWikittyId())
- .eq(BowImport.FQ_FIELD_BOWIMPORT_IMPORTDATE, date).criteria();
- List<BowImport> bookmarks = proxy.findAllByCriteria(BowImport.class, criteria).getAll();
+ .eq(BowImport.FQ_FIELD_BOWIMPORT_IMPORTDATE, date).end();
+ List<BowImport> bookmarks = proxy.findAllByQuery(BowImport.class, criteria).getAll();
if (log.isDebugEnabled()) {
log.debug("Will delete " + bookmarks.size() + " bookmarks");
Modified: trunk/bow-ui/src/main/java/org/chorem/bow/action/preference/ExportBookmarksAction.java
===================================================================
--- trunk/bow-ui/src/main/java/org/chorem/bow/action/preference/ExportBookmarksAction.java 2013-09-24 17:27:30 UTC (rev 359)
+++ trunk/bow-ui/src/main/java/org/chorem/bow/action/preference/ExportBookmarksAction.java 2013-09-24 17:54:39 UTC (rev 360)
@@ -28,9 +28,6 @@
import org.chorem.bow.BowBookmark;
import org.chorem.bow.BowUser;
import org.chorem.bow.action.BowBaseAction;
-import org.nuiton.wikitty.WikittyProxy;
-import org.nuiton.wikitty.search.Criteria;
-import org.nuiton.wikitty.search.Search;
import java.io.BufferedWriter;
import java.io.File;
@@ -42,6 +39,11 @@
import java.util.Date;
import java.util.List;
import java.util.Set;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.chorem.bow.BowProxy;
+import org.nuiton.wikitty.query.WikittyQuery;
+import org.nuiton.wikitty.query.WikittyQueryMaker;
/**
* Export son bookmark au format HTML
@@ -51,6 +53,8 @@
public class ExportBookmarksAction extends BowBaseAction {
private static final long serialVersionUID = 45880214686011946L;
+ static private Log log = LogFactory.getLog(ExportBookmarksAction.class);
+
protected transient InputStream inputStream;
public InputStream getInputStream() {
@@ -96,15 +100,15 @@
/** Exports the bookmarks in HTML format */
@Override
public String execute() {
- WikittyProxy proxy = getBowProxy();
+ BowProxy proxy = getBowProxy();
// get current user
BowUser user = getBowSession().getUser();
// Get all bookmark for user
- Criteria criteria = Search.query()
- .eq(BowBookmark.FQ_FIELD_WIKITTYAUTHORISATION_OWNER, user.getWikittyId()).criteria();
- List<BowBookmark> bookmarks = proxy.findAllByCriteria(BowBookmark.class, criteria).getAll();
+ WikittyQuery criteria = new WikittyQueryMaker()
+ .eq(BowBookmark.FQ_FIELD_WIKITTYAUTHORISATION_OWNER, user.getWikittyId()).end();
+ List<BowBookmark> bookmarks = proxy.findAllByQuery(BowBookmark.class, criteria).getAll();
// Export all
BufferedWriter out = null;
Modified: trunk/bow-ui/src/main/java/org/chorem/bow/action/preference/ImportBookmarksAction.java
===================================================================
--- trunk/bow-ui/src/main/java/org/chorem/bow/action/preference/ImportBookmarksAction.java 2013-09-24 17:27:30 UTC (rev 359)
+++ trunk/bow-ui/src/main/java/org/chorem/bow/action/preference/ImportBookmarksAction.java 2013-09-24 17:54:39 UTC (rev 360)
@@ -23,7 +23,7 @@
*/
package org.chorem.bow.action.preference;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import org.chorem.bow.BookmarkUtils;
import org.chorem.bow.BowBookmark;
import org.chorem.bow.BowImportHelper;
@@ -33,7 +33,6 @@
import org.htmlparser.util.NodeList;
import org.htmlparser.util.ParserException;
import org.htmlparser.util.SimpleNodeIterator;
-import org.nuiton.wikitty.WikittyProxy;
import org.nuiton.wikitty.entities.Wikitty;
import java.io.File;
@@ -46,6 +45,9 @@
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.chorem.bow.BowProxy;
/**
* Import un bookmark HTML
@@ -56,6 +58,8 @@
private static final long serialVersionUID = -5962680416570797028L;
+ private static Log log = LogFactory.getLog(ImportBookmarksAction.class);
+
protected File upfile;
protected String upfileContentType;
@@ -186,7 +190,7 @@
// = new
// bookmarks
BowBookmark bookmark = createBookmarkFromHtml(text, plainText, user);
- Wikitty w = getBowProxy().getWikitty(bookmark);
+ Wikitty w = getBowProxy().castTo(Wikitty.class, bookmark);
BowImportHelper.addExtension(w);
BowImportHelper.setImportDate(w, date);
@@ -215,7 +219,7 @@
// Struts limite to html files, is null if not one
if (upfile != null) {
- WikittyProxy proxy = getBowProxy();
+ BowProxy proxy = getBowProxy();
try {
URL url = upfile.toURI().toURL();
Modified: trunk/bow-ui/src/main/java/org/chorem/bow/action/preference/PreferenceBaseAction.java
===================================================================
--- trunk/bow-ui/src/main/java/org/chorem/bow/action/preference/PreferenceBaseAction.java 2013-09-24 17:27:30 UTC (rev 359)
+++ trunk/bow-ui/src/main/java/org/chorem/bow/action/preference/PreferenceBaseAction.java 2013-09-24 17:54:39 UTC (rev 360)
@@ -32,17 +32,19 @@
import org.chorem.bow.action.BowBaseAction;
import org.nuiton.wikitty.WikittyUtil;
import org.nuiton.wikitty.entities.Wikitty;
-import org.nuiton.wikitty.search.Criteria;
-import org.nuiton.wikitty.search.FacetTopic;
-import org.nuiton.wikitty.search.PagedResult;
-import org.nuiton.wikitty.search.Search;
import java.text.ParseException;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.chorem.bow.BowSearchPrefix;
+import org.nuiton.wikitty.query.FacetTopic;
+import org.nuiton.wikitty.query.WikittyQuery;
+import org.nuiton.wikitty.query.WikittyQueryMaker;
+import org.nuiton.wikitty.query.WikittyQueryResult;
/**
* Change les preferences de l'utilisateur (couleur, password, email, ...)
@@ -52,6 +54,7 @@
public class PreferenceBaseAction extends BowBaseAction {
private static final long serialVersionUID = -58341106356599721L;
+ private static final Log log = LogFactory.getLog(PreferenceBaseAction.class);
public static PreferenceBaseAction getAction() {
Object action = ActionContext.getContext().get(CONTEXT_ACTION_KEY);
@@ -320,15 +323,15 @@
BowProxy proxy = session.getProxy();
BowUser user = session.getUser();
- Criteria criteria = Search.query()
+ WikittyQuery criteria = new WikittyQueryMaker().and()
.exteq(BowImport.EXT_BOWIMPORT)
- .eq(BowBookmark.FQ_FIELD_WIKITTYAUTHORISATION_OWNER, user.getWikittyId()).criteria()
- .addFacetField(BowImport.FQ_FIELD_BOWIMPORT_IMPORTDATE)
- .setFirstIndex(0).setEndIndex(0);
+ .eq(BowBookmark.FQ_FIELD_WIKITTYAUTHORISATION_OWNER, user.getWikittyId()).end()
+ .addFacetField(BowImport.ELEMENT_FIELD_BOWIMPORT_IMPORTDATE)
+ .setOffset(0).setLimit(0);
List<FacetTopic> bookmarksImportDate =
- proxy.findAllByCriteria(BowImport.class, criteria)
- .getTopic(BowImport.FQ_FIELD_BOWIMPORT_IMPORTDATE);
+ proxy.findAllByQuery(BowImport.class, criteria)
+ .getTopic(BowImport.ELEMENT_FIELD_BOWIMPORT_IMPORTDATE);
// Extract imports
Map<String, Integer> result = new HashMap<String, Integer>();
@@ -352,14 +355,14 @@
BowUser user = session.getUser();
String userId = user.getWikittyId();
- Criteria c = Search.query()
+ WikittyQuery c = new WikittyQueryMaker().and()
.exteq(BowBookmark.EXT_WIKITTYLABEL)
.eq(BowBookmark.FQ_FIELD_WIKITTYAUTHORISATION_OWNER, userId)
- .criteria().setEndIndex(0) // on ne veut aucun resultat, c'est la facet dont on a besoin
+ .end().setLimit(0) // on ne veut aucun resultat, c'est la facet dont on a besoin
.setFacetMinCount(1) // on demande meme les labels avec 1 seul item
- .setFacetLimit(-1) // on demande tous les labels
- .addFacetField(BowBookmark.FQ_FIELD_WIKITTYLABEL_LABELS);
- PagedResult<Wikitty> result = proxy.findAllByCriteria(c);
+ .setFacetLimit(WikittyQuery.MAX) // on demande tous les labels
+ .addFacetField(BowBookmark.ELEMENT_FIELD_WIKITTYLABEL_LABELS);
+ WikittyQueryResult<Wikitty> result = proxy.findAllByQuery(Wikitty.class, c);
// lorsqu'on demande tout (facetLimit(-1)), les topics sont trie
// alphabetiquement pas besoin de les retrier
labels = result.getTopic(BowBookmark.FQ_FIELD_WIKITTYLABEL_LABELS);
Modified: trunk/bow-ui/src/main/java/org/chorem/bow/action/preference/UpdateSiteAction.java
===================================================================
--- trunk/bow-ui/src/main/java/org/chorem/bow/action/preference/UpdateSiteAction.java 2013-09-24 17:27:30 UTC (rev 359)
+++ trunk/bow-ui/src/main/java/org/chorem/bow/action/preference/UpdateSiteAction.java 2013-09-24 17:54:39 UTC (rev 360)
@@ -23,7 +23,7 @@
*/
package org.chorem.bow.action.preference;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.chorem.bow.BowProxy;
Modified: trunk/bow-ui/src/main/java/org/chorem/bow/action/preference/UpdateUserAction.java
===================================================================
--- trunk/bow-ui/src/main/java/org/chorem/bow/action/preference/UpdateUserAction.java 2013-09-24 17:27:30 UTC (rev 359)
+++ trunk/bow-ui/src/main/java/org/chorem/bow/action/preference/UpdateUserAction.java 2013-09-24 17:54:39 UTC (rev 360)
@@ -23,15 +23,15 @@
*/
package org.chorem.bow.action.preference;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.chorem.bow.BowProxy;
import org.chorem.bow.BowSession;
import org.chorem.bow.BowUser;
import org.nuiton.util.StringUtil;
-import org.nuiton.wikitty.search.Criteria;
-import org.nuiton.wikitty.search.Search;
+import org.nuiton.wikitty.query.WikittyQuery;
+import org.nuiton.wikitty.query.WikittyQueryMaker;
/**
* @author poussin
@@ -66,11 +66,12 @@
BowUser user = session.getUser();
if (StringUtils.isNotBlank(email)) {
- Criteria criteria = Search.query().eq(BowUser.FQ_FIELD_WIKITTYUSER_LOGIN, email).criteria();
+ WikittyQuery criteria = new WikittyQueryMaker()
+ .eq(BowUser.FQ_FIELD_WIKITTYUSER_LOGIN, email).end();
if (log.isDebugEnabled()) {
log.debug(String.format("Try to find user with email: '%s'", email));
}
- BowUser find = getBowProxy().findByCriteria(BowUser.class, criteria);
+ BowUser find = getBowProxy().findByQuery(BowUser.class, criteria);
//If this email address isn't already used (or if it hasn't changed)
if (find == null || find.getLogin().equals(user.getLogin())) {
Modified: trunk/bow-ui/src/main/resources/bow.properties
===================================================================
--- trunk/bow-ui/src/main/resources/bow.properties 2013-09-24 17:27:30 UTC (rev 359)
+++ trunk/bow-ui/src/main/resources/bow.properties 2013-09-24 17:54:39 UTC (rev 360)
@@ -44,7 +44,8 @@
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.WikittyServiceAuthentication,\
+org.nuiton.wikitty.services.WikittyServiceAuthorisation
wikitty.WikittyServiceStorage.components=org.nuiton.wikitty.jdbc.WikittyExtensionStorageJDBC,\
org.nuiton.wikitty.jdbc.WikittyStorageJDBC,\
org.nuiton.wikitty.storage.solr.WikittySearchEngineSolr
Modified: trunk/bow-ui/src/main/resources/i18n/bow-ui_en_GB.properties
===================================================================
--- trunk/bow-ui/src/main/resources/i18n/bow-ui_en_GB.properties 2013-09-24 17:27:30 UTC (rev 359)
+++ trunk/bow-ui/src/main/resources/i18n/bow-ui_en_GB.properties 2013-09-24 17:54:39 UTC (rev 360)
@@ -4,8 +4,9 @@
bow.admin.dataMigration04to05=Migrate all data from 0.4 to 0.5
bow.admin.dataMigration05to06=Migrate all data from 1.1 to 1.2
bow.admin.dataMigration11to12=
-bow.admin.dataReindexation=All data reindexation
+bow.admin.dataReindexation=All data reindexation (and migration if needed)
bow.admin.forbidden=You don't have admin rights \!
+bow.admin.forceMigration=
bow.admin.home=Return to the home page
bow.admin.panel=Admin panel
bow.admin.reIndexationDone=Data reindexed successfully
Modified: trunk/bow-ui/src/main/resources/i18n/bow-ui_fr_FR.properties
===================================================================
--- trunk/bow-ui/src/main/resources/i18n/bow-ui_fr_FR.properties 2013-09-24 17:27:30 UTC (rev 359)
+++ trunk/bow-ui/src/main/resources/i18n/bow-ui_fr_FR.properties 2013-09-24 17:54:39 UTC (rev 360)
@@ -6,9 +6,10 @@
bow.admin.dataMigration11to12=
bow.admin.dataReindexation=R\u00E9indexation des donn\u00E9es
bow.admin.forbidden=Vous n'\u00EAtes pas administrateur \!
+bow.admin.forceMigration=
bow.admin.home=Retour sur la page d''accueil
bow.admin.panel=Panneau d''administration
-bow.admin.reIndexationDone=Les donn\u00E9es ont bien \u00E9t\u00E9 r\u00E9index\u00E9es
+bow.admin.reIndexationDone=Les donn\u00E9es ont bien \u00E9t\u00E9 r\u00E9index\u00E9es (et migration si n\u00E9cessaire)
bow.alias.already.exists=L''alias {0} existe d\u00E9j\u00E0
bow.alias.bookmarkId.unknown=Il n''y a pas de marque-page correspondant \u00E0 l''identifiant {0}
bow.bookmark.add.successful=Marque-page ajout\u00E9 avec succ\u00E8s
Modified: trunk/bow-ui/src/main/webapp/WEB-INF/jsp/admin.jsp
===================================================================
--- trunk/bow-ui/src/main/webapp/WEB-INF/jsp/admin.jsp 2013-09-24 17:27:30 UTC (rev 359)
+++ trunk/bow-ui/src/main/webapp/WEB-INF/jsp/admin.jsp 2013-09-24 17:54:39 UTC (rev 360)
@@ -44,8 +44,6 @@
<s:if test="#session.BowSession.isAdmin()">
<ul id="adminActions">
<li><s:a action="reIndexation"><s:text name="bow.admin.dataReindexation" /></s:a></li>
- <li><s:a action="migrateData?versionFrom=0.6&versionTo=1.1"><s:text name="bow.admin.dataMigration05to06" /></s:a></li>
- <li><s:a action="migrateData?versionFrom=1.1&versionTo=1.2"><s:text name="bow.admin.dataMigration11to12" /></s:a></li>
<li><s:a action="home" id="homePage"><s:text name="bow.admin.home" /></s:a></li>
</ul>
</s:if>
Modified: trunk/bow-ui/src/main/webapp/WEB-INF/jsp/inc/header.jsp
===================================================================
--- trunk/bow-ui/src/main/webapp/WEB-INF/jsp/inc/header.jsp 2013-09-24 17:27:30 UTC (rev 359)
+++ trunk/bow-ui/src/main/webapp/WEB-INF/jsp/inc/header.jsp 2013-09-24 17:54:39 UTC (rev 360)
@@ -56,7 +56,7 @@
</div>
<div class="input">
<s:form action="openSearchResult" theme="simple">
- <s:textfield name="searchLine" labelSeparator="" />
+ <s:textfield name="q" labelSeparator="" />
<s:submit key="bow.rightMenu.externSearchEngine" name="submit" />
</s:form>
</div>
Modified: trunk/bow-ui/src/main/webapp/WEB-INF/jsp/permanentXml.jsp
===================================================================
--- trunk/bow-ui/src/main/webapp/WEB-INF/jsp/permanentXml.jsp 2013-09-24 17:27:30 UTC (rev 359)
+++ trunk/bow-ui/src/main/webapp/WEB-INF/jsp/permanentXml.jsp 2013-09-24 17:54:39 UTC (rev 360)
@@ -37,7 +37,7 @@
<InputEncoding>UTF-8</InputEncoding>
<Image width="16" height="16" type="image/ico"><%=url%>img/bow.gif</Image>
<s:set var="token" value="#session.BowSession.getPermanentToken()" />
- <Url type="text/html" method="get" template="<%=url%>openSearchResult.action?token=${token}&search={searchTerms}" />
- <Url type="application/x-suggestions+json" method="get" template="<%=url%>openSearchSuggestion.action?token=${token}&search={searchTerms}" />
+ <Url type="text/html" method="get" template="<%=url%>openSearchResult.action?token=${token}&q={searchTerms}" />
+ <Url type="application/x-suggestions+json" method="get" template="<%=url%>openSearchSuggestion.action?token=${token}&q={searchTerms}" />
<moz:SearchForm><%=url%></moz:SearchForm>
</OpenSearchDescription>
Modified: trunk/bow-ui/src/main/webapp/WEB-INF/jsp/temporaryXml.jsp
===================================================================
--- trunk/bow-ui/src/main/webapp/WEB-INF/jsp/temporaryXml.jsp 2013-09-24 17:27:30 UTC (rev 359)
+++ trunk/bow-ui/src/main/webapp/WEB-INF/jsp/temporaryXml.jsp 2013-09-24 17:54:39 UTC (rev 360)
@@ -36,7 +36,7 @@
<InputEncoding>UTF-8</InputEncoding>
<Image width="16" height="16" type="image/ico"><%=url%>img/bow.gif</Image>
<s:set var="token" value="%{#session.BowSession.getTemporaryToken()}" />
- <Url type="text/html" method="get" template="<%=url%>openSearchResult.action?token=${token}&search={searchTerms}" />
- <Url type="application/x-suggestions+json" method="get" template="<%=url%>openSearchSuggestion.action?token=${token}&search={searchTerms}" />
+ <Url type="text/html" method="get" template="<%=url%>openSearchResult.action?token=${token}&q={searchTerms}" />
+ <Url type="application/x-suggestions+json" method="get" template="<%=url%>openSearchSuggestion.action?token=${token}&q={searchTerms}" />
<moz:SearchForm><%=url%></moz:SearchForm>
</OpenSearchDescription>
Modified: trunk/bow-ui/src/main/xmi/bow-model.zargo
===================================================================
(Binary files differ)
1
0
r359 - in trunk/bow-extension-chromium/src/main/webapp: . img
by bpoussin@users.chorem.org 24 Sep '13
by bpoussin@users.chorem.org 24 Sep '13
24 Sep '13
Author: bpoussin
Date: 2013-09-24 19:27:30 +0200 (Tue, 24 Sep 2013)
New Revision: 359
Url: http://chorem.org/projects/bow/repository/revisions/359
Log:
update extension to work with new chrome extension api (v2)
Added:
trunk/bow-extension-chromium/src/main/webapp/background.js
trunk/bow-extension-chromium/src/main/webapp/img/livre-128.png
trunk/bow-extension-chromium/src/main/webapp/img/livre-16.png
trunk/bow-extension-chromium/src/main/webapp/img/livre-48.png
trunk/bow-extension-chromium/src/main/webapp/options.js
trunk/bow-extension-chromium/src/main/webapp/popup.js
Removed:
trunk/bow-extension-chromium/src/main/webapp/img/moyen-livre.jpg
trunk/bow-extension-chromium/src/main/webapp/img/ptit-livre.jpg
Modified:
trunk/bow-extension-chromium/src/main/webapp/manifest.json
trunk/bow-extension-chromium/src/main/webapp/options.html
trunk/bow-extension-chromium/src/main/webapp/popup.html
Added: trunk/bow-extension-chromium/src/main/webapp/background.js
===================================================================
--- trunk/bow-extension-chromium/src/main/webapp/background.js (rev 0)
+++ trunk/bow-extension-chromium/src/main/webapp/background.js 2013-09-24 17:27:30 UTC (rev 359)
@@ -0,0 +1,26 @@
+var tabInfos = new Array();
+var currentTabId;
+
+function getTabInfos() {
+ return tabInfos[currentTabId];
+};
+
+// Called when the url of a tab changes.
+function showAction(tabId, changeInfo, tab) {
+ // ... show the page action.
+ chrome.pageAction.show(tabId);
+ tabInfos[tabId] = {
+ "title" : tab.title,
+ "url" : tab.url
+ };
+};
+
+// Listen for any changes to the URL of any tab.
+chrome.tabs.onUpdated.addListener(showAction);
+
+function updateCurrentTabId(tabId, selectInfo) {
+ currentTabId = tabId;
+};
+
+// Listen for any tab selection changes.
+chrome.tabs.onSelectionChanged.addListener(updateCurrentTabId);
Added: trunk/bow-extension-chromium/src/main/webapp/img/livre-128.png
===================================================================
(Binary files differ)
Property changes on: trunk/bow-extension-chromium/src/main/webapp/img/livre-128.png
___________________________________________________________________
Added: svn:mime-type
+ image/png
Added: trunk/bow-extension-chromium/src/main/webapp/img/livre-16.png
===================================================================
(Binary files differ)
Property changes on: trunk/bow-extension-chromium/src/main/webapp/img/livre-16.png
___________________________________________________________________
Added: svn:mime-type
+ image/png
Added: trunk/bow-extension-chromium/src/main/webapp/img/livre-48.png
===================================================================
(Binary files differ)
Property changes on: trunk/bow-extension-chromium/src/main/webapp/img/livre-48.png
___________________________________________________________________
Added: svn:mime-type
+ image/png
Deleted: trunk/bow-extension-chromium/src/main/webapp/img/moyen-livre.jpg
===================================================================
(Binary files differ)
Deleted: trunk/bow-extension-chromium/src/main/webapp/img/ptit-livre.jpg
===================================================================
(Binary files differ)
Modified: trunk/bow-extension-chromium/src/main/webapp/manifest.json
===================================================================
--- trunk/bow-extension-chromium/src/main/webapp/manifest.json 2013-09-19 09:28:02 UTC (rev 358)
+++ trunk/bow-extension-chromium/src/main/webapp/manifest.json 2013-09-24 17:27:30 UTC (rev 359)
@@ -22,24 +22,29 @@
* #L%
*/
{
- "name": "__MSG_extensionName__",
- "version": "1.0",
- "default_locale": "en",
+ "name": "__MSG_extensionName__",
+ "description": "__MSG_extensionDescription__",
+ "manifest_version": 2,
+ "version": "1.2",
+ "default_locale": "en",
- "description": "__MSG_extensionDescription__",
- "icons": { "16": "img/ptit-livre.jpg",
- "48": "img/moyen-livre.jpg",
- "128": "img/moyen-livre.jpg" },
+ "icons": {
+ "16": "img/livre-16.png",
+ "48": "img/livre-48.png",
+ "128": "img/livre-128.png"
+ },
- "page_action": {
- "default_title": "__MSG_actionTitle__",
- "default_icon": "img/favicon.png",
- "default_popup": "popup.html"
- },
+ "page_action": {
+ "default_title": "__MSG_actionTitle__",
+ "default_icon": "img/favicon.png",
+ "default_popup": "popup.html"
+ },
- "background_page": "background.html",
- "options_page": "options.html",
- "permissions": [
- "tabs", "http://*/*", "https://*/*"
- ]
+ "background": {
+ "scripts": ["background.js"]
+ },
+ "options_page": "options.html",
+ "permissions": [
+ "tabs", "http://*/*", "https://*/*"
+ ]
}
Modified: trunk/bow-extension-chromium/src/main/webapp/options.html
===================================================================
--- trunk/bow-extension-chromium/src/main/webapp/options.html 2013-09-19 09:28:02 UTC (rev 358)
+++ trunk/bow-extension-chromium/src/main/webapp/options.html 2013-09-24 17:27:30 UTC (rev 359)
@@ -33,122 +33,56 @@
<link rel="stylesheet" type="text/css" href="css/options.css" />
<script type="text/javascript" src="properties.js"></script>
- <script type="text/javascript">
- <!--
- // Saves options to localStorage.
- function save_options() {
- var permanentTokenIdInput = document.getElementById("permanentTokenIdInput");
- localStorage["permanentTokenId"] = permanentTokenIdInput.value;
-
- var sessionTokenIdInput = document.getElementById("sessionTokenIdInput");
- localStorage["sessionTokenId"] = sessionTokenIdInput.value;
-
- var bowUrlInput = document.getElementById("bowUrlInput");
- localStorage["bowUrl"] = bowUrlInput.value;
-
- var formMessage = document.getElementById("formMessage");
- formMessage.innerHTML = chrome.i18n.getMessage("optionSavedMessage");
- }
-
- // Restores values from localStorage.
- function restore_options() {
- var permanentTokenId = localStorage["permanentTokenId"];
- var sessionTokenId = localStorage["sessionTokenId"];
-
- var permanentTokenIdInputLabel = document.getElementById("permanentTokenIdInputLabel");
- permanentTokenIdInputLabel.innerHTML = chrome.i18n.getMessage("permanentTokenIdInputLabel");
-
- if (permanentTokenId) {
- var permanentTokenIdInput = document.getElementById("permanentTokenIdInput");
- permanentTokenIdInput.value = permanentTokenId;
- }
-
- var sessionTokenIdInputLabel = document.getElementById("sessionTokenIdInputLabel");
- sessionTokenIdInputLabel.innerHTML = chrome.i18n.getMessage("sessionTokenIdInputLabel");
-
- if (sessionTokenId) {
- var sessionTokenIdInput = document.getElementById("sessionTokenIdInput");
- sessionTokenIdInput.value = sessionTokenId;
- }
-
- var bowUrlInputLabel = document.getElementById("bowUrlInputLabel");
- bowUrlInputLabel.innerHTML = chrome.i18n.getMessage("bowUrlInputLabel");
-
- var bowUrlInput = document.getElementById("bowUrlInput");
- bowUrlInput.value = getBowURl();
-
- var title = document.getElementById("title");
- title.innerHTML = chrome.i18n.getMessage("optionTitle");
-
- var saveOptionButton = document.getElementById("saveOptionButton");
- saveOptionButton.value = chrome.i18n.getMessage("saveOptionButton");
-
- var licenseLink = document.getElementById("licenseLink");
- licenseLink.innerHTML = chrome.i18n.getMessage("licenseLink");
-
- var bugReport = document.getElementById("bugReport");
- bugReport.innerHTML = chrome.i18n.getMessage("bugReport");
-
- var userSupport = document.getElementById("userSupport");
- userSupport.innerHTML = chrome.i18n.getMessage("userSupport");
-
- var bow_website_link = document.links["bow_website"];
- bow_website_link.href = DEFAULT_BOW_URL;
-
- var bow_logo_link = document.links["bow_logo"];
- bow_logo_link.href = DEFAULT_BOW_URL;
- }
- //-->
- </script>
+ <script type="text/javascript" src="options.js"></script>
</head>
-<body onload="restore_options()">
+<body>
<div id="wrap">
- <div id="page">
+ <div id="page">
<div id="header">
<a class="logo" id="bow_logo" href="#">bow</a>
</div>
<div id="main">
<div id="content">
- <div id="formFrame">
- <h1 id="title"></h1>
+ <div id="formFrame">
+ <h1 id="title"></h1>
<div>
<div class="label">
- <label for="sessionTokenIdInput" id="sessionTokenIdInputLabel"></label>
- </div>
+ <label for="sessionTokenIdInput" id="sessionTokenIdInputLabel"></label>
+ </div>
<div class="inputs">
- <input type="text" name="sessionTokenIdInput" id="sessionTokenIdInput" />
- </div>
+ <input type="text" name="sessionTokenIdInput" id="sessionTokenIdInput" />
+ </div>
<div class="label">
- <label for="permanentTokenIdInput" id="permanentTokenIdInputLabel"></label>
- </div>
+ <label for="permanentTokenIdInput" id="permanentTokenIdInputLabel"></label>
+ </div>
<div class="inputs">
- <input type="text" name="permanentTokenIdInput" id="permanentTokenIdInput" />
- </div>
+ <input type="text" name="permanentTokenIdInput" id="permanentTokenIdInput" />
+ </div>
<div class="label">
- <label for="bowUrlInput" id="bowUrlInputLabel"></label>
- </div>
+ <label for="bowUrlInput" id="bowUrlInputLabel"></label>
+ </div>
<div class="inputs">
- <input type="text" name="bowUrlInput" id="bowUrlInput" />
- </div>
+ <input type="text" name="bowUrlInput" id="bowUrlInput" />
+ </div>
<div class="buttons">
- <input type="button" id="saveOptionButton" onclick="save_options()" />
+ <input type="button" id="saveOptionButton"/>
</div>
<div class="message" id="formMessage"></div>
</div>
</div>
</div>
- </div>
- </div>
- <div id="footer">
- <p>
- <a shape="rect" id="bow_website" href="http://www.chorem.org/projects/show/bow" target="_blank">bow</a>
- <a shape="rect" href="http://www.gnu.org/licenses/agpl.html" id="licenseLink"></a> -
- <span title="Copyright">©2010 - 2011</span>
- <a shape="rect" href="http://www.codelutin.com">Code Lutin</a> -
- <a shape="rect" href="http://www.chorem.org/projects/bow/issues" id="bugReport"></a> -
- <a shape="rect" href="http://list.chorem.org/cgi-bin/mailman/listinfo/bow-users" id="userSupport"></a>
- </p>
- </div>
+ </div>
+ </div>
+ <div id="footer">
+ <p>
+ <a shape="rect" id="bow_website" href="http://www.chorem.org/projects/show/bow" target="_blank">bow</a>
+ <a shape="rect" href="http://www.gnu.org/licenses/agpl.html" id="licenseLink"></a> -
+ <span title="Copyright">©2010 - 2011</span>
+ <a shape="rect" href="http://www.codelutin.com">Code Lutin</a> -
+ <a shape="rect" href="http://www.chorem.org/projects/bow/issues" id="bugReport"></a> -
+ <a shape="rect" href="http://list.chorem.org/cgi-bin/mailman/listinfo/bow-users" id="userSupport"></a>
+ </p>
+ </div>
</div>
</body>
</html>
Added: trunk/bow-extension-chromium/src/main/webapp/options.js
===================================================================
--- trunk/bow-extension-chromium/src/main/webapp/options.js (rev 0)
+++ trunk/bow-extension-chromium/src/main/webapp/options.js 2013-09-24 17:27:30 UTC (rev 359)
@@ -0,0 +1,72 @@
+// Saves options to localStorage.
+function save_options() {
+ var permanentTokenIdInput = document.getElementById("permanentTokenIdInput");
+ localStorage["permanentTokenId"] = permanentTokenIdInput.value;
+
+ var sessionTokenIdInput = document.getElementById("sessionTokenIdInput");
+ localStorage["sessionTokenId"] = sessionTokenIdInput.value;
+
+ var bowUrlInput = document.getElementById("bowUrlInput");
+ localStorage["bowUrl"] = bowUrlInput.value;
+
+ var formMessage = document.getElementById("formMessage");
+ formMessage.innerHTML = chrome.i18n.getMessage("optionSavedMessage");
+}
+
+// Restores values from localStorage.
+function restore_options() {
+ var permanentTokenId = localStorage["permanentTokenId"];
+ var sessionTokenId = localStorage["sessionTokenId"];
+
+ if (permanentTokenId) {
+ var permanentTokenIdInput = document.getElementById("permanentTokenIdInput");
+ permanentTokenIdInput.value = permanentTokenId;
+ }
+
+ if (sessionTokenId) {
+ var sessionTokenIdInput = document.getElementById("sessionTokenIdInput");
+ sessionTokenIdInput.value = sessionTokenId;
+ }
+
+ var bowUrlInput = document.getElementById("bowUrlInput");
+ bowUrlInput.value = getBowURl();
+}
+
+function init() {
+ var bow_website_link = document.links["bow_website"];
+ bow_website_link.href = DEFAULT_BOW_URL;
+
+ var bow_logo_link = document.links["bow_logo"];
+ bow_logo_link.href = DEFAULT_BOW_URL;
+
+ // translate
+ var permanentTokenIdInputLabel = document.getElementById("permanentTokenIdInputLabel");
+ permanentTokenIdInputLabel.innerHTML = chrome.i18n.getMessage("permanentTokenIdInputLabel");
+
+ var sessionTokenIdInputLabel = document.getElementById("sessionTokenIdInputLabel");
+ sessionTokenIdInputLabel.innerHTML = chrome.i18n.getMessage("sessionTokenIdInputLabel");
+
+ var bowUrlInputLabel = document.getElementById("bowUrlInputLabel");
+ bowUrlInputLabel.innerHTML = chrome.i18n.getMessage("bowUrlInputLabel");
+
+ var title = document.getElementById("title");
+ title.innerHTML = chrome.i18n.getMessage("optionTitle");
+
+ var saveOptionButton = document.getElementById("saveOptionButton");
+ saveOptionButton.value = chrome.i18n.getMessage("saveOptionButton");
+
+ var licenseLink = document.getElementById("licenseLink");
+ licenseLink.innerHTML = chrome.i18n.getMessage("licenseLink");
+
+ var bugReport = document.getElementById("bugReport");
+ bugReport.innerHTML = chrome.i18n.getMessage("bugReport");
+
+ var userSupport = document.getElementById("userSupport");
+ userSupport.innerHTML = chrome.i18n.getMessage("userSupport");
+}
+
+document.addEventListener('DOMContentLoaded', function () {
+ init();
+ restore_options();
+ document.getElementById("saveOptionButton").addEventListener('click', save_options);
+});
\ No newline at end of file
Modified: trunk/bow-extension-chromium/src/main/webapp/popup.html
===================================================================
--- trunk/bow-extension-chromium/src/main/webapp/popup.html 2013-09-19 09:28:02 UTC (rev 358)
+++ trunk/bow-extension-chromium/src/main/webapp/popup.html 2013-09-24 17:27:30 UTC (rev 359)
@@ -24,103 +24,12 @@
<html>
<head>
<script type="text/javascript" src="properties.js"></script>
- <script>
+ <script type="text/javascript" src="popup.js"></script>
- function bookmarkPermanent() {
- var tokenId = localStorage["permanentTokenId"];
- if (tokenId != null) {
- bookmark(tokenId);
- }
- }
-
- function bookmarkSession() {
- var tokenId = localStorage["sessionTokenId"];
- if (tokenId != null) {
- bookmark(tokenId);
- }
- }
-
- function bookmark(tokenId) {
- var tabInfos = chrome.extension.getBackgroundPage().getTabInfos();
- var url = tabInfos["url"];
-
- var nameInput = document.getElementById("nameInput");
- var nameValue = nameInput.value;
-
- var aliasInput = document.getElementById("aliasInput");
- var aliasValue = aliasInput.value;
-
- var tagsInput = document.getElementById("tagsInput");
- var tagsValue = tagsInput.value;
-
- var link = getBowURl() + "/addUrl.action?token=" + tokenId
- + "&link=" + encodeURIComponent(url)
- + "&name=" + encodeURIComponent(nameValue)
- + "&privateAlias=" + encodeURIComponent(aliasValue)
- + "&tags=" + encodeURIComponent(tagsValue);
-
- var xhr = new XMLHttpRequest();
- xhr.open("GET", link, true);
- xhr.onreadystatechange = function() {
- if (xhr.readyState == 4) {
- close();
- self.close();
- }
- };
- xhr.send();
-
- }
-
- function init() {
- var tabInfos = chrome.extension.getBackgroundPage().getTabInfos();
-
- var title = document.getElementById("title");
- title.innerHTML = chrome.i18n.getMessage("actionTitle");
-
- var nameInputLabel = document.getElementById("nameInputLabel");
- nameInputLabel.innerHTML = chrome.i18n.getMessage("nameInputLabel");
-
- var nameInput = document.getElementById("nameInput");
- nameInput.value = tabInfos["title"];
-
- var aliasInputLabel = document.getElementById("aliasInputLabel");
- aliasInputLabel.innerHTML = chrome.i18n.getMessage("aliasInputLabel");
-
- var tagsInputLabel = document.getElementById("tagsInputLabel");
- tagsInputLabel.innerHTML = chrome.i18n.getMessage("tagsInputLabel");
-
- var sessionTokenId = localStorage["sessionTokenId"];
- var sessionTokenButton = document.getElementById("sessionTokenButton");
- if (!isEmpty(sessionTokenId)) {
- sessionTokenButton.value = chrome.i18n.getMessage("sessionTokenButton");
- } else {
- sessionTokenButton.style.visibility = "hidden";
- }
-
- var permanentTokenId = localStorage["permanentTokenId"];
- var permanentTokenButton = document.getElementById("permanentTokenButton");
- if (!isEmpty(permanentTokenId)) {
- permanentTokenButton.value = chrome.i18n.getMessage("permanentTokenButton");
- } else {
- permanentTokenButton.style.visibility = "hidden";
- }
-
- if (isEmpty(permanentTokenId) && isEmpty(sessionTokenId)) {
- var buttons = document.getElementById("buttons");
- buttons.innerHTML = chrome.i18n.getMessage("noTokenMessage");
- }
- }
-
- function isEmpty(string) {
- return (string == null || string == "");
- }
-
- </script>
-
<link rel="stylesheet" type="text/css" href="css/extension.css" />
</head>
- <body onLoad="init()">
+ <body>
<h1 id="title"></h1>
<div class="labels">
<label for="nameInput" id="nameInputLabel"></label>
@@ -141,8 +50,8 @@
<input id="tagsInput" name="tagsInput" type="text" />
</div>
<div id="buttons">
- <input id="permanentTokenButton" onclick="bookmarkPermanent();" type="button" />
- <input id="sessionTokenButton" onclick="bookmarkSession()" type="button" />
+ <input id="permanentTokenButton" type="button" />
+ <input id="sessionTokenButton" type="button" />
</div>
</body>
</html>
Added: trunk/bow-extension-chromium/src/main/webapp/popup.js
===================================================================
--- trunk/bow-extension-chromium/src/main/webapp/popup.js (rev 0)
+++ trunk/bow-extension-chromium/src/main/webapp/popup.js 2013-09-24 17:27:30 UTC (rev 359)
@@ -0,0 +1,95 @@
+
+function bookmarkPermanent() {
+ var tokenId = localStorage["permanentTokenId"];
+ if (tokenId != null) {
+ bookmark(tokenId);
+ }
+}
+
+function bookmarkSession() {
+ var tokenId = localStorage["sessionTokenId"];
+ if (tokenId != null) {
+ bookmark(tokenId);
+ }
+}
+
+function bookmark(tokenId) {
+ var tabInfos = chrome.extension.getBackgroundPage().getTabInfos();
+ var url = tabInfos["url"];
+
+ var nameInput = document.getElementById("nameInput");
+ var nameValue = nameInput.value;
+
+ var aliasInput = document.getElementById("aliasInput");
+ var aliasValue = aliasInput.value;
+
+ var tagsInput = document.getElementById("tagsInput");
+ var tagsValue = tagsInput.value;
+
+ var link = getBowURl() + "/addUrl.action?token=" + tokenId
+ + "&link=" + encodeURIComponent(url)
+ + "&name=" + encodeURIComponent(nameValue)
+ + "&privateAlias=" + encodeURIComponent(aliasValue)
+ + "&tags=" + encodeURIComponent(tagsValue);
+
+ var xhr = new XMLHttpRequest();
+ xhr.open("GET", link, true);
+ xhr.onreadystatechange = function() {
+ if (xhr.readyState == 4) {
+ close();
+ self.close();
+ }
+ };
+ xhr.send();
+
+}
+
+function init() {
+ var tabInfos = chrome.extension.getBackgroundPage().getTabInfos();
+
+ var title = document.getElementById("title");
+ title.innerHTML = chrome.i18n.getMessage("actionTitle");
+
+ var nameInputLabel = document.getElementById("nameInputLabel");
+ nameInputLabel.innerHTML = chrome.i18n.getMessage("nameInputLabel");
+
+ var nameInput = document.getElementById("nameInput");
+ nameInput.value = tabInfos["title"];
+
+ var aliasInputLabel = document.getElementById("aliasInputLabel");
+ aliasInputLabel.innerHTML = chrome.i18n.getMessage("aliasInputLabel");
+
+ var tagsInputLabel = document.getElementById("tagsInputLabel");
+ tagsInputLabel.innerHTML = chrome.i18n.getMessage("tagsInputLabel");
+
+ var sessionTokenId = localStorage["sessionTokenId"];
+ var sessionTokenButton = document.getElementById("sessionTokenButton");
+ if (!isEmpty(sessionTokenId)) {
+ sessionTokenButton.value = chrome.i18n.getMessage("sessionTokenButton");
+ } else {
+ sessionTokenButton.style.visibility = "hidden";
+ }
+
+ var permanentTokenId = localStorage["permanentTokenId"];
+ var permanentTokenButton = document.getElementById("permanentTokenButton");
+ if (!isEmpty(permanentTokenId)) {
+ permanentTokenButton.value = chrome.i18n.getMessage("permanentTokenButton");
+ } else {
+ permanentTokenButton.style.visibility = "hidden";
+ }
+
+ if (isEmpty(permanentTokenId) && isEmpty(sessionTokenId)) {
+ var buttons = document.getElementById("buttons");
+ buttons.innerHTML = chrome.i18n.getMessage("noTokenMessage");
+ }
+}
+
+function isEmpty(string) {
+ return (string == null || string == "");
+}
+
+document.addEventListener('DOMContentLoaded', function () {
+ init();
+ document.getElementById('permanentTokenButton').addEventListener('click', bookmarkPermanent);
+ document.getElementById('sessionTokenButton').addEventListener('click', bookmarkSession);
+});
\ No newline at end of file
1
0
19 Sep '13
Author: bpoussin
Date: 2013-09-19 11:28:02 +0200 (Thu, 19 Sep 2013)
New Revision: 358
Url: http://chorem.org/projects/bow/repository/revisions/358
Log:
suppression de vieux fichiers
Removed:
trunk/bow-ui/src/main/java/org/chorem/bow/BowMigration04To05.java
trunk/bow-ui/src/main/xmi/bow-0.4.zargo
trunk/bow-ui/src/main/xmi/bow.zargo
Deleted: trunk/bow-ui/src/main/java/org/chorem/bow/BowMigration04To05.java
===================================================================
--- trunk/bow-ui/src/main/java/org/chorem/bow/BowMigration04To05.java 2013-09-19 09:27:16 UTC (rev 357)
+++ trunk/bow-ui/src/main/java/org/chorem/bow/BowMigration04To05.java 2013-09-19 09:28:02 UTC (rev 358)
@@ -1,164 +0,0 @@
-/*
- * #%L
- * BOW UI
- *
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2010 - 2011 CodeLutin
- * %%
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero 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 Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- * #L%
- */
-package org.chorem.bow;
-
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.nuiton.wikitty.WikittyProxy;
-import org.nuiton.wikitty.entities.Wikitty;
-import org.nuiton.wikitty.search.PagedResult;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Migre les données depuis la version 0.4 vers la version 0.5.
- * On suppose que les données sont convenablement indexee.
- * <p/>
- * <li> renomage de User -> BowUser (qui hérite de WikittyUser)
- * <li> renomage de Preference -> BowPreference
- * <li> renomage de Bookmark -> BowBookmark
- * <li> renomage de Import -> BowImport
- * <p/>
- * <li> deplacement de User.email -> BowUser(WikittyUser).login
- * <li> deplacement de User.password -> BowUser(WikittyUser).password
- * <li> deplacement de Token.token -> BowUser.permanentToken
- * <li> deplacement de Bookmark.date -> BowBookmark.creationDate
- * <li> deplacement de Bookmark.alias -> BowBookmark.privateAlias
- * <li> deplacement de Bookmark.tags -> BowBookmark(WikittyLabel).labels
- * <li> deplacement de Import.date -> BowImport(BowBookmark).importDate
- * <p/>
- * <li> suppression de Token
- * <p/>
- * <li> remplacement de Bookmark.email -> lien vers BowUser
- * <p/>
- * <li> ajout sur BowBookmark d'un lien vers BowImport
- * <li> ajout sur BowImport d'un lien vers BowUser
- * <p/>
- * Le nouvel objet BowAlias a ete ajoute, rien est a faire avec pour la
- * migration.
- *
- * @author poussin
- * @version $Revision$
- * <p/>
- * Last update: $Date$
- * by : $Author$
- */
-public class BowMigration04To05 {
-
- /** to use log facility, just put in your code: log.info(\"...\"); */
- private static final Log log = LogFactory.getLog(BowMigration04To05.class);
-
- /** nombre d'objet a charger en 1 fois */
- public static final int MAX = 100;
-
- /**
- * Point d'entree de la migration
- *
- * @param proxy
- */
- public static void migrate(WikittyProxy proxy) {
- UserImpl userExample = new UserImpl();
- int i = 0;
- PagedResult<UserImpl> pagedUser;
- do {
- pagedUser = proxy.findAllByExample(userExample, i, i += MAX);
- List<UserImpl> users = pagedUser.getAll();
- List<BowUser> bowUsers = migrateUser(proxy, users);
- proxy.store(bowUsers);
- proxy.delete(users);
- } while (pagedUser.size() >= MAX);
- }
-
- public static List<BowUser> migrateUser(WikittyProxy proxy, List<UserImpl> users) {
- List<BowUser> result = new ArrayList<BowUser>(users.size());
- for (UserImpl user : users) {
- BowUser bowUser = new BowUserImpl();
- result.add(bowUser);
-
- // copie des informations du user
- bowUser.setLogin(user.getEmail());
- bowUser.setPassword(user.getPassword());
-
- // copie des preferences
- Preference pref = proxy.restore(Preference.class, user.getWikittyId());
- bowUser.setColors(pref.getColors());
- bowUser.setSearchEngineUrlResults(pref.getSearchEngineUrlResults());
- bowUser.setSearchEngineUrlSuggestions(pref.getSearchEngineUrlSuggestions());
- bowUser.setTags(pref.getTags());
- bowUser.setBookmarks(pref.getBookmarks());
-
- // copie du permanent token
- TokenImpl tokenExample = new TokenImpl();
- tokenExample.setEmail(user.getEmail());
- TokenImpl permanentToken = proxy.findByExample(tokenExample);
- bowUser.setPermanentToken(permanentToken.getToken());
-
- // migration des bookmarks
- BookmarkImpl bookmarkExample = new BookmarkImpl();
- bookmarkExample.setEmail(user.getEmail());
- int i = 0;
- PagedResult<BookmarkImpl> pagedBookmark;
- do {
- pagedBookmark = proxy.findAllByExample(bookmarkExample, i, i += MAX);
- List<BookmarkImpl> bookmarks = pagedBookmark.getAll();
- List<BowBookmark> bowbookmarks =
- migrateBookmark(proxy, bowUser, bookmarks);
- proxy.store(bowbookmarks);
- proxy.delete(bookmarks);
- } while (pagedBookmark.size() >= MAX);
- }
- return result;
- }
-
- public static List<BowBookmark> migrateBookmark(WikittyProxy proxy, BowUser user,
- List<BookmarkImpl> bookmarks) {
- List<BowBookmark> result = new ArrayList<BowBookmark>(bookmarks.size());
- for (BookmarkImpl bookmark : bookmarks) {
- BowBookmark bowBookmark = new BowBookmarkImpl();
- result.add(bowBookmark);
-
- // copie du bookmark
- bowBookmark.setOwner(user.getWikittyId());
- bowBookmark.addReader(user.getWikittyId());
- bowBookmark.setClick(bookmark.getClick());
- bowBookmark.setCreationDate(bookmark.getDate());
- bowBookmark.setDescription(bookmark.getDescription());
- bowBookmark.setLabels(bookmark.getTags());
- bowBookmark.setLink(bookmark.getLink());
- bowBookmark.setPrivateAlias(bookmark.getAlias());
-
- // copie de l'import si besoin
- Wikitty w = proxy.getWikitty(bookmark);
- if (ImportHelper.hasExtension(w)) {
- Wikitty bowImport = proxy.getWikitty(bowBookmark);
- BowImportHelper.addExtension(bowImport);
- BowImportHelper.setImportDate(bowImport, ImportHelper.getDate(w));
- }
- }
- return result;
- }
-
-}
Deleted: trunk/bow-ui/src/main/xmi/bow-0.4.zargo
===================================================================
(Binary files differ)
Deleted: trunk/bow-ui/src/main/xmi/bow.zargo
===================================================================
(Binary files differ)
1
0
19 Sep '13
Author: bpoussin
Date: 2013-09-19 11:27:16 +0200 (Thu, 19 Sep 2013)
New Revision: 357
Url: http://chorem.org/projects/bow/repository/revisions/357
Log:
fixes #496: bug when we have ':' (separator mark) in search request
- suppression de tres vieux script de migration
- modification de la notion de prefix, on peut en mettre autant qu'on souhaite
- amelioratin des suggestions
Added:
trunk/bow-ui/src/main/java/org/chorem/bow/BowMigration11To12.java
trunk/bow-ui/src/main/java/org/chorem/bow/action/opensearch/SuggestionAction.java
trunk/bow-ui/src/main/java/org/chorem/bow/interceptor/LaxLoginInterceptor.java
trunk/bow-ui/src/main/webapp/META-INF/
trunk/bow-ui/src/main/xmi/bow-model.zargo
Modified:
trunk/bow-ui/pom.xml
trunk/bow-ui/src/main/java/org/chorem/bow/BowConfigOption.java
trunk/bow-ui/src/main/java/org/chorem/bow/BowSession.java
trunk/bow-ui/src/main/java/org/chorem/bow/action/AliasAction.java
trunk/bow-ui/src/main/java/org/chorem/bow/action/admin/MigrateDataAction.java
trunk/bow-ui/src/main/java/org/chorem/bow/action/opensearch/OpenSearchBaseAction.java
trunk/bow-ui/src/main/java/org/chorem/bow/action/opensearch/OpenSearchResultAction.java
trunk/bow-ui/src/main/java/org/chorem/bow/action/opensearch/OpenSearchSuggestionAction.java
trunk/bow-ui/src/main/java/org/chorem/bow/action/preference/PreferenceBaseAction.java
trunk/bow-ui/src/main/java/org/chorem/bow/action/preference/UpdateSiteAction.java
trunk/bow-ui/src/main/resources/i18n/bow-ui_en_GB.properties
trunk/bow-ui/src/main/resources/i18n/bow-ui_fr_FR.properties
trunk/bow-ui/src/main/resources/log4j.properties
trunk/bow-ui/src/main/resources/struts.xml
trunk/bow-ui/src/main/webapp/WEB-INF/jsp/admin.jsp
trunk/bow-ui/src/main/webapp/WEB-INF/jsp/permanentXml.jsp
trunk/bow-ui/src/main/webapp/WEB-INF/jsp/preferences.jsp
trunk/bow-ui/src/main/webapp/WEB-INF/jsp/temporaryXml.jsp
trunk/bow-ui/src/main/xmi/README
Modified: trunk/bow-ui/pom.xml
===================================================================
--- trunk/bow-ui/pom.xml 2013-08-09 10:07:03 UTC (rev 356)
+++ trunk/bow-ui/pom.xml 2013-09-19 09:27:16 UTC (rev 357)
@@ -174,6 +174,13 @@
<groupId>postgresql</groupId>
<artifactId>postgresql</artifactId>
</dependency>
+
+ <dependency>
+ <groupId>org.apache.httpcomponents</groupId>
+ <artifactId>httpclient</artifactId>
+ <version>4.3</version>
+ </dependency>
+
</dependencies>
<build>
Modified: trunk/bow-ui/src/main/java/org/chorem/bow/BowConfigOption.java
===================================================================
--- trunk/bow-ui/src/main/java/org/chorem/bow/BowConfigOption.java 2013-08-09 10:07:03 UTC (rev 356)
+++ trunk/bow-ui/src/main/java/org/chorem/bow/BowConfigOption.java 2013-09-19 09:27:16 UTC (rev 357)
@@ -63,6 +63,30 @@
"search.engine",
_("bow.config.search.engine.description"),
null, String.class, false, false),
+ TAG_SEARCH_URL(
+ "bow.prefix.search.tag",
+ _("bow.config.sprefix.search.tag.description"),
+ "home.action?tagLine={searchTerms}", String.class, false, false),
+ FULLTEXT_SEARCH_URL(
+ "bow.prefix.search.fulltext",
+ _("bow.config.bow.prefix.search.fulltext.description"),
+ "home.action?fullTextLine={searchTerms}", String.class, false, false),
+ ALIAS_SEARCH_URL(
+ "bow.prefix.search.alias",
+ _("bow.config.bow.prefix.search.alias.description"),
+ "alias.action?alias={searchTerms}", String.class, false, false),
+ TAG_SUGGESTION_URL(
+ "bow.prefix.suggestion.tag",
+ _("bow.config.sprefix.suggestion.tag.description"),
+ "suggestion-tag.action?q={searchTerms}", String.class, false, false),
+ FULLTEXT_SUGGESTION_URL(
+ "bow.prefix.suggestion.fulltext",
+ _("bow.config.bow.prefix.suggestion.fulltext.description"),
+ "suggestion-fulltext.action?q={searchTerms}", String.class, false, false),
+ ALIAS_SUGGESTION_URL(
+ "bow.prefix.suggestion.alias",
+ _("bow.config.bow.prefix.suggestion.alias.description"),
+ "suggestion-alias.action?q={searchTerms}", String.class, false, false),
OPEN_SEARCH_DEFAULT_ACTION(
"opensearch.default.action",
_("bow.config.opensearch.default.action.description"),
Added: trunk/bow-ui/src/main/java/org/chorem/bow/BowMigration11To12.java
===================================================================
--- trunk/bow-ui/src/main/java/org/chorem/bow/BowMigration11To12.java (rev 0)
+++ trunk/bow-ui/src/main/java/org/chorem/bow/BowMigration11To12.java 2013-09-19 09:27:16 UTC (rev 357)
@@ -0,0 +1,202 @@
+/*
+ * #%L
+ * BOW UI
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2010 - 2011 CodeLutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero 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 Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ * #L%
+ */
+package org.chorem.bow;
+
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.nuiton.wikitty.WikittyProxy;
+import org.nuiton.wikitty.WikittyService;
+import org.nuiton.wikitty.WikittyUtil;
+import org.nuiton.wikitty.entities.Wikitty;
+import org.nuiton.wikitty.entities.WikittyAuthorisationHelper;
+import org.nuiton.wikitty.entities.WikittyExtension;
+import org.nuiton.wikitty.search.Criteria;
+import org.nuiton.wikitty.search.PagedResult;
+import org.nuiton.wikitty.search.Search;
+import org.nuiton.wikitty.services.WikittyExtensionMigration;
+import org.nuiton.wikitty.services.WikittyExtensionMigrationRename;
+
+import java.util.List;
+import org.apache.commons.lang3.StringUtils;
+
+/**
+ * Migre les données depuis la version 0.6 vers la version 1.1.
+ * On suppose que les données sont convenablement indexee.
+ * <p/>
+ * <li> ajout du champs BowBookmark.authentificationInfo (rien a faire pour la migration)
+ * <li> suppression de BowBookmark.bowUser
+ * <li> BowBookmark depend de WikittyAuthorisation
+ * <p/>
+ * la valeur de BowBookmark.bowUser est maintenant stockee dans
+ * WikittyAuthorisation.owner et WikittyAuthorisation.reader
+ * pour que par defaut seul le owner est les droits de lecture sur l'item
+ *
+ * @author poussin
+ * @version $Revision$
+ * <p/>
+ * Last update: $Date$
+ * by : $Author$
+ */
+public class BowMigration11To12 extends WikittyExtensionMigrationRename {
+
+ /** to use log facility, just put in your code: log.info(\"...\"); */
+ private static final Log log = LogFactory.getLog(BowMigration11To12.class);
+
+ /** nombre d'objet a charger en 1 fois */
+ public static final int MAX = 1000;
+
+ /** Point d'entree de la migration. */
+ @Override
+ public Wikitty migrate(WikittyService service, Wikitty wikitty,
+ WikittyExtension oldExt, WikittyExtension newExt) {
+
+ // On met juste a jour les données avec le champs supprimer bowUser
+ String userId = wikitty.getId();
+
+ if (userId != null) {
+ String prefixSeparator = (String) wikitty.getFqField(
+ BowPreference.EXT_BOWPREFERENCE + WikittyUtil.FQ_FIELD_NAME_SEPARATOR
+ + "prefixSeparator");
+
+ String defaultAction = (String) wikitty.getFqField(
+ BowPreference.EXT_BOWPREFERENCE + WikittyUtil.FQ_FIELD_NAME_SEPARATOR
+ + "defaultAction");
+ String defaultPrefix = (String) wikitty.getFqField(
+ BowPreference.EXT_BOWPREFERENCE + WikittyUtil.FQ_FIELD_NAME_SEPARATOR
+ + "defaultPrefix");
+
+ String tagSearchPrefix = (String) wikitty.getFqField(
+ BowPreference.EXT_BOWPREFERENCE + WikittyUtil.FQ_FIELD_NAME_SEPARATOR
+ + "tagSearchPrefix");
+ String fullTextSearchPrefix = (String) wikitty.getFqField(
+ BowPreference.EXT_BOWPREFERENCE + WikittyUtil.FQ_FIELD_NAME_SEPARATOR
+ + "fullTextSearchPrefix");
+ String webSearchPrefix = (String) wikitty.getFqField(
+ BowPreference.EXT_BOWPREFERENCE + WikittyUtil.FQ_FIELD_NAME_SEPARATOR
+ + "webSearchPrefix");
+ String aliasPrefix = (String) wikitty.getFqField(
+ BowPreference.EXT_BOWPREFERENCE + WikittyUtil.FQ_FIELD_NAME_SEPARATOR
+ + "aliasPrefix");
+
+ String searchEngineUrlResults = (String) wikitty.getFqField(
+ BowPreference.EXT_BOWPREFERENCE + WikittyUtil.FQ_FIELD_NAME_SEPARATOR
+ + "searchEngineUrlResults");
+ String searchEngineUrlSuggestions = (String) wikitty.getFqField(
+ BowPreference.EXT_BOWPREFERENCE + WikittyUtil.FQ_FIELD_NAME_SEPARATOR
+ + "searchEngineUrlSuggestions");
+
+ BowSearchPrefixImpl pWeb = new BowSearchPrefixImpl();
+ pWeb.setBowUser(userId);
+ pWeb.setPrefix(webSearchPrefix + prefixSeparator);
+ pWeb.setSearch(searchEngineUrlResults);
+ pWeb.setSuggestion(searchEngineUrlSuggestions);
+
+ BowSearchPrefixImpl pTag = new BowSearchPrefixImpl();
+ pTag.setBowUser(userId);
+ pTag.setPrefix(tagSearchPrefix + prefixSeparator);
+ pTag.setSearch("bowTagSearch");
+ pTag.setSuggestion("bowTagSuggest");
+
+ BowSearchPrefixImpl pFullText = new BowSearchPrefixImpl();
+ pFullText.setBowUser(userId);
+ pFullText.setPrefix(fullTextSearchPrefix + prefixSeparator);
+ pFullText.setSearch("bowFullTextSearch");
+ pFullText.setSuggestion("bowFullTextSuggest");
+
+ BowSearchPrefixImpl pAlias = new BowSearchPrefixImpl();
+ pAlias.setBowUser(userId);
+ pAlias.setPrefix(aliasPrefix + prefixSeparator);
+ pAlias.setSearch("bowAliasSearch");
+ pAlias.setSuggestion("bowAliasSuggest");
+
+ BowSearchPrefixImpl pDefault = new BowSearchPrefixImpl();
+ if (StringUtils.equals(defaultAction, webSearchPrefix)) {
+ pDefault.getWikitty().replaceWith(pWeb.getWikitty(), true);
+ } else if (StringUtils.equals(defaultAction, tagSearchPrefix)) {
+ pDefault.getWikitty().replaceWith(pTag.getWikitty(), true);
+ } else if (StringUtils.equals(defaultAction, fullTextSearchPrefix)) {
+ pDefault.getWikitty().replaceWith(pFullText.getWikitty(), true);
+ } else if (StringUtils.equals(defaultAction, aliasPrefix)) {
+ pDefault.getWikitty().replaceWith(pAlias.getWikitty(), true);
+ }
+ pDefault.setPrefix("");
+
+ BowSearchPrefixImpl pDefaultPrefix = new BowSearchPrefixImpl();
+ if (StringUtils.equals(defaultAction, webSearchPrefix)) {
+ pDefaultPrefix.getWikitty().replaceWith(pWeb.getWikitty(), true);
+ } else if (StringUtils.equals(defaultAction, tagSearchPrefix)) {
+ pDefaultPrefix.getWikitty().replaceWith(pTag.getWikitty(), true);
+ } else if (StringUtils.equals(defaultAction, fullTextSearchPrefix)) {
+ pDefaultPrefix.getWikitty().replaceWith(pFullText.getWikitty(), true);
+ } else if (StringUtils.equals(defaultAction, aliasPrefix)) {
+ pDefaultPrefix.getWikitty().replaceWith(pAlias.getWikitty(), true);
+ }
+ pDefaultPrefix.setPrefix(prefixSeparator);
+
+
+ WikittyProxy proxy = new WikittyProxy(service);
+ proxy.store(pWeb, pTag, pFullText, pAlias, pDefault, pDefaultPrefix);
+ }
+
+ // on laisse l'implantation par defaut migrer tout ce qu'il faut
+ // nouvelle dependance, ...
+ Wikitty result = super.migrate(service, wikitty, oldExt, newExt);
+
+ return result;
+ }
+
+ public static void migrate(WikittyProxy proxy) {
+ log.info("Migration 1.1 to 1.2 started");
+ // on enregistre la classe qui fera la migration des données
+ WikittyExtensionMigration.migrationRegistry.put(
+ BowPreference.EXT_BOWPREFERENCE, new BowMigration11To12());
+
+ // une simple lecture puis ecrire fera automatiquement la migration
+ // grace a la classe enregistree pour.
+ Criteria criteria =
+ Search.query().exteq(BowPreference.EXT_BOWPREFERENCE).criteria();
+ int i = 0;
+ int count = 0;
+ PagedResult<Wikitty> wikitties;
+ do {
+ criteria.setFirstIndex(i);
+ criteria.setEndIndex(i += MAX);
+ wikitties = proxy.findAllByCriteria(criteria);
+ List<Wikitty> prefs = wikitties.getAll();
+ proxy.storeWikitty(prefs);
+ count += prefs.size();
+ } while (wikitties.size() >= MAX);
+ log.info(String.format("Migration of %s BowBookmark done", count));
+ WikittyExtensionMigration.migrationRegistry.remove(
+ BowPreference.EXT_BOWPREFERENCE);
+ }
+
+ // only here to simplify test and debug of migration, this permit to migrate
+ // datas in developpement environnement directly without launch bow web app
+ public static void main(String... args) {
+ BowProxy proxy = BowProxy.getInstance(null);
+ migrate(proxy);
+ }
+}
Property changes on: trunk/bow-ui/src/main/java/org/chorem/bow/BowMigration11To12.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Modified: trunk/bow-ui/src/main/java/org/chorem/bow/BowSession.java
===================================================================
--- trunk/bow-ui/src/main/java/org/chorem/bow/BowSession.java 2013-08-09 10:07:03 UTC (rev 356)
+++ trunk/bow-ui/src/main/java/org/chorem/bow/BowSession.java 2013-09-19 09:27:16 UTC (rev 357)
@@ -32,7 +32,13 @@
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
import java.util.Map;
+import org.nuiton.wikitty.WikittyProxy;
+import org.nuiton.wikitty.search.Criteria;
+import org.nuiton.wikitty.search.PagedResult;
+import org.nuiton.wikitty.search.Search;
/**
* Classe utilisee pour stocker les objets utils en session utilisateur
@@ -101,6 +107,66 @@
return user;
}
+ public List<BowSearchPrefix> getSearchPrefix() {
+ BowUser user = getUser();
+
+ Criteria criteria = Search.query()
+ .exteq(BowSearchPrefix.EXT_BOWSEARCHPREFIX)
+ .eq(BowSearchPrefix.FQ_FIELD_BOWSEARCHPREFIX_BOWUSER, user.getWikittyId()).criteria()
+ .setSortAscending(BowSearchPrefix.FQ_FIELD_BOWSEARCHPREFIX_PREFIX);
+ PagedResult<BowSearchPrefix> result = getProxy().findAllByCriteria(BowSearchPrefix.class, criteria);
+ List<BowSearchPrefix> prefix = new ArrayList<BowSearchPrefix>(result.getAll());
+ log.debug("####################### prefix number ################### " + prefix.size());
+ if (prefix.isEmpty()) {
+ // no prefix found, create default prefix for this request
+ String userId = user.getWikittyId();
+ String prefixSeparator = BowConfig.getPrefixSeparator();
+
+ BowSearchPrefixImpl pWeb = new BowSearchPrefixImpl();
+ pWeb.setBowUser(userId);
+ pWeb.setPrefix(BowConfig.getWebSearchPrefix() + prefixSeparator);
+ pWeb.setSearch(BowConfig.getSearchEngine());
+ // TODO poussin 20130916 add default value in config for suggestion
+
+ BowSearchPrefixImpl pTag = new BowSearchPrefixImpl();
+ pTag.setBowUser(userId);
+ pTag.setPrefix(BowConfig.getTagSearchPrefix() + prefixSeparator);
+ pTag.setSearch("search.tag");
+ pTag.setSuggestion("suggestion.tag");
+
+ BowSearchPrefixImpl pFullText = new BowSearchPrefixImpl();
+ pFullText.setBowUser(userId);
+ pFullText.setPrefix(BowConfig.getFullTextSearchPrefix() + prefixSeparator);
+ pFullText.setSearch("search.fulltext");
+ pFullText.setSuggestion("suggestion.fulltext");
+
+ BowSearchPrefixImpl pAlias = new BowSearchPrefixImpl();
+ pAlias.setBowUser(userId);
+ pAlias.setPrefix(BowConfig.getAliasPrefix() + prefixSeparator);
+ pAlias.setSearch("search.alias");
+ pAlias.setSuggestion("suggestion.alias");
+
+ BowSearchPrefixImpl pDefault = new BowSearchPrefixImpl();
+ pDefault.getWikitty().replaceWith(pWeb.getWikitty(), true);
+ pDefault.setPrefix("");
+
+ BowSearchPrefixImpl pDefaultPrefix = new BowSearchPrefixImpl();
+ pDefaultPrefix.getWikitty().replaceWith(pTag.getWikitty(), true);
+ pDefaultPrefix.setPrefix(prefixSeparator);
+
+ proxy.store(pWeb, pTag, pFullText, pAlias, pDefault, pDefaultPrefix);
+
+ prefix.add(pWeb);
+ prefix.add(pTag);
+ prefix.add(pFullText);
+ prefix.add(pAlias);
+ prefix.add(pDefault);
+ prefix.add(pDefaultPrefix);
+
+ }
+ return prefix;
+ }
+
public void setUser(BowUser user) {
// check if this user is admin
String login = user.getLogin();
@@ -129,33 +195,33 @@
if (preference.getColors() == null) {
preference.setColors("");
}
- if (preference.getSearchEngineUrlResults() == null) {
- preference.setSearchEngineUrlResults(BowConfig.getSearchEngine());
- }
- if (preference.getSearchEngineUrlSuggestions() == null) {
- preference.setSearchEngineUrlSuggestions(""); // TODO add default value in config
- }
- if (StringUtils.isBlank(preference.getPrefixSeparator())) {
- preference.setPrefixSeparator(BowConfig.getPrefixSeparator());
- }
- if (StringUtils.isBlank(preference.getTagSearchPrefix())) {
- preference.setTagSearchPrefix(BowConfig.getTagSearchPrefix());
- }
- if (StringUtils.isBlank(preference.getFullTextSearchPrefix())) {
- preference.setFullTextSearchPrefix(BowConfig.getFullTextSearchPrefix());
- }
- if (StringUtils.isBlank(preference.getWebSearchPrefix())) {
- preference.setWebSearchPrefix(BowConfig.getWebSearchPrefix());
- }
- if (StringUtils.isBlank(preference.getAliasPrefix())) {
- preference.setAliasPrefix(BowConfig.getAliasPrefix());
- }
- if (StringUtils.isBlank(preference.getDefaultPrefix())) {
- preference.setDefaultPrefix(BowConfig.getDefaultPrefix());
- }
- if (StringUtils.isBlank(preference.getDefaultAction())) {
- preference.setDefaultAction(BowConfig.getDefaultAction());
- }
+// if (preference.getSearchEngineUrlResults() == null) {
+// preference.setSearchEngineUrlResults(BowConfig.getSearchEngine());
+// }
+// if (preference.getSearchEngineUrlSuggestions() == null) {
+// preference.setSearchEngineUrlSuggestions(""); // TODO add default value in config
+// }
+// if (StringUtils.isBlank(preference.getPrefixSeparator())) {
+// preference.setPrefixSeparator(BowConfig.getPrefixSeparator());
+// }
+// if (StringUtils.isBlank(preference.getTagSearchPrefix())) {
+// preference.setTagSearchPrefix(BowConfig.getTagSearchPrefix());
+// }
+// if (StringUtils.isBlank(preference.getFullTextSearchPrefix())) {
+// preference.setFullTextSearchPrefix(BowConfig.getFullTextSearchPrefix());
+// }
+// if (StringUtils.isBlank(preference.getWebSearchPrefix())) {
+// preference.setWebSearchPrefix(BowConfig.getWebSearchPrefix());
+// }
+// if (StringUtils.isBlank(preference.getAliasPrefix())) {
+// preference.setAliasPrefix(BowConfig.getAliasPrefix());
+// }
+// if (StringUtils.isBlank(preference.getDefaultPrefix())) {
+// preference.setDefaultPrefix(BowConfig.getDefaultPrefix());
+// }
+// if (StringUtils.isBlank(preference.getDefaultAction())) {
+// preference.setDefaultAction(BowConfig.getDefaultAction());
+// }
}
public String getPermanentToken() {
Modified: trunk/bow-ui/src/main/java/org/chorem/bow/action/AliasAction.java
===================================================================
--- trunk/bow-ui/src/main/java/org/chorem/bow/action/AliasAction.java 2013-08-09 10:07:03 UTC (rev 356)
+++ trunk/bow-ui/src/main/java/org/chorem/bow/action/AliasAction.java 2013-09-19 09:27:16 UTC (rev 357)
@@ -27,6 +27,7 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.chorem.bow.BowBookmark;
+import org.chorem.bow.BowUser;
import org.nuiton.wikitty.WikittyProxy;
import org.nuiton.wikitty.search.Criteria;
import org.nuiton.wikitty.search.Search;
@@ -80,7 +81,15 @@
BowBookmark bookmark = proxy.findByCriteria(BowBookmark.class, criteria);
if (bookmark == null) {
- bookmark = proxy.restore(BowBookmark.class, alias);
+ // not public alias, looking for private if user is logged
+ BowUser user = getBowSession().getUser();
+ if (user != null) {
+ criteria = Search.query()
+ .eq(BowBookmark.FQ_FIELD_WIKITTYAUTHORISATION_OWNER, user.getWikittyId())
+ .eq(BowBookmark.FQ_FIELD_BOWBOOKMARK_PRIVATEALIAS, alias)
+ .criteria();
+ bookmark = proxy.findByCriteria(BowBookmark.class, criteria);
+ }
}
if (bookmark != null) {
redirectTo = bookmark.getLink();
Modified: trunk/bow-ui/src/main/java/org/chorem/bow/action/admin/MigrateDataAction.java
===================================================================
--- trunk/bow-ui/src/main/java/org/chorem/bow/action/admin/MigrateDataAction.java 2013-08-09 10:07:03 UTC (rev 356)
+++ trunk/bow-ui/src/main/java/org/chorem/bow/action/admin/MigrateDataAction.java 2013-09-19 09:27:16 UTC (rev 357)
@@ -27,8 +27,8 @@
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.chorem.bow.BowMigration04To05;
import org.chorem.bow.BowMigration06To11;
+import org.chorem.bow.BowMigration11To12;
import org.chorem.bow.BowSession;
import org.chorem.bow.action.BowBaseAction;
import org.nuiton.util.VersionUtil;
@@ -71,14 +71,14 @@
if (session.isAdmin()) { //If is admin
WikittyProxy proxy = getBowProxy();
- if (VersionUtil.equals(versionFrom, "0.4")
- && VersionUtil.equals(versionTo, "0.5")) {
- BowMigration04To05.migrate(proxy);
- addActionMessage(_("bow.admin.dataMigration.success"));
- } else if (VersionUtil.equals(versionFrom, "0.6")
+ if (VersionUtil.equals(versionFrom, "0.6")
&& VersionUtil.equals(versionTo, "1.1")) {
BowMigration06To11.migrate(proxy);
addActionMessage(_("bow.admin.dataMigration.success"));
+ } else if (VersionUtil.equals(versionFrom, "1.1")
+ && VersionUtil.equals(versionTo, "1.2")) {
+ BowMigration11To12.migrate(proxy);
+ addActionMessage(_("bow.admin.dataMigration.success"));
} else {
addActionMessage(String.format(
"No migration found for %s to %s",
Modified: trunk/bow-ui/src/main/java/org/chorem/bow/action/opensearch/OpenSearchBaseAction.java
===================================================================
--- trunk/bow-ui/src/main/java/org/chorem/bow/action/opensearch/OpenSearchBaseAction.java 2013-08-09 10:07:03 UTC (rev 356)
+++ trunk/bow-ui/src/main/java/org/chorem/bow/action/opensearch/OpenSearchBaseAction.java 2013-09-19 09:27:16 UTC (rev 357)
@@ -26,7 +26,8 @@
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.chorem.bow.BowUser;
+import org.apache.struts2.ServletActionContext;
+import org.chorem.bow.BowSearchPrefix;
import org.chorem.bow.action.BowBaseAction;
/**
@@ -49,21 +50,14 @@
protected String token;
/** [in] la ligne de recherche soumise par l'utilisateur */
- protected String searchLine;
+ protected String search;
- /**
- * [out] le prefix trouve ou calculer par rapport a searchLine
- * avoir acces a cette valeur, peut-etre utile dans certaine implantation
- * de {@link #executeNotSupportedPrefixAction}
- */
- protected String prefix;
-
- public String getSearchLine() {
- return searchLine;
+ public String getSearch() {
+ return search;
}
- public void setSearchLine(String searchLine) {
- this.searchLine = searchLine;
+ public void setSearch(String search) {
+ this.search = search;
}
/** @return the token */
@@ -76,60 +70,41 @@
this.token = token;
}
- public String getPrefix() {
- return prefix;
- }
+ abstract protected String executePrefixAction(BowSearchPrefix foundPrefix, String query);
- abstract protected String executeTagSearchAction(String query);
-
- abstract protected String executeFulltextSearchAction(String query);
-
- abstract protected String executeWebSearchAction(String query);
-
- abstract protected String executeAliasSearchAction(String privateAlias);
-
- abstract protected String executeNotSupportedPrefixAction(String query);
-
@Override
public String execute() {
- BowUser user = getBowSession().getUser();
+ System.out.println("######################### OpenSearchBaseAction enter #################" + search);
+ System.out.println("param:" + ServletActionContext.getRequest().getParameterMap());
- String prefixSeparator = user.getPrefixSeparator();
- prefix = StringUtils.substringBefore(searchLine, prefixSeparator);
- String query = StringUtils.substringAfter(searchLine, prefixSeparator);
+ BowSearchPrefix defaultPrefix = null;
+ BowSearchPrefix foundPrefix = null;
+ String query;
- if (log.isDebugEnabled()) {
- log.debug(String.format("Cut '%s' with '%s' result is '%s' and '%s'",
- searchLine, prefixSeparator, prefix, query));
+ for (BowSearchPrefix prefix : getBowSession().getSearchPrefix()) {
+ String p = prefix.getPrefix();
+ if (StringUtils.isBlank(p)) {
+ defaultPrefix = prefix;
+ } else if (StringUtils.startsWith(search, p)) {
+ foundPrefix = prefix;
+ break;
+ }
}
- if (StringUtils.isEmpty(prefix)) {
- // on a le separateur mais pas de prefix
- prefix = user.getDefaultPrefix();
- } else if (StringUtils.equals(searchLine, prefix)) {
- // on a pas de separateur
- prefix = user.getDefaultAction();
- query = searchLine;
+ if (foundPrefix == null) {
+ foundPrefix = defaultPrefix;
}
- if (log.isDebugEnabled()) {
- log.debug(String.format("Prefix is '%s' and query '%s'",
- prefix, query));
- }
-
- String result;
- if (StringUtils.equals(prefix, user.getTagSearchPrefix())) {
- result = executeTagSearchAction(query);
- } else if (StringUtils.equals(prefix, user.getFullTextSearchPrefix())) {
- result = executeFulltextSearchAction(query);
- } else if (StringUtils.equals(prefix, user.getWebSearchPrefix())) {
- result = executeWebSearchAction(query);
- } else if (StringUtils.equals(prefix, user.getAliasPrefix())) {
- result = executeAliasSearchAction(query);
+ if (foundPrefix == null) {
+ query = search;
} else {
- result = executeNotSupportedPrefixAction(query);
+ query = StringUtils.substringAfter(search, foundPrefix.getPrefix());
}
+ System.out.println("######################### OpenSearchBaseAction #################" + query + " - " + foundPrefix);
+
+ String result = executePrefixAction(foundPrefix, query);
return result;
}
+
}
Modified: trunk/bow-ui/src/main/java/org/chorem/bow/action/opensearch/OpenSearchResultAction.java
===================================================================
--- trunk/bow-ui/src/main/java/org/chorem/bow/action/opensearch/OpenSearchResultAction.java 2013-08-09 10:07:03 UTC (rev 356)
+++ trunk/bow-ui/src/main/java/org/chorem/bow/action/opensearch/OpenSearchResultAction.java 2013-09-19 09:27:16 UTC (rev 357)
@@ -23,19 +23,14 @@
*/
package org.chorem.bow.action.opensearch;
-import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.struts2.interceptor.ServletResponseAware;
-import org.chorem.bow.BowBookmark;
import org.chorem.bow.BowConfig;
-import org.chorem.bow.BowUser;
-import org.chorem.bow.BowUtils;
-import org.nuiton.wikitty.WikittyProxy;
-import org.nuiton.wikitty.search.Criteria;
-import org.nuiton.wikitty.search.Search;
import javax.servlet.http.HttpServletResponse;
+import org.chorem.bow.BowSearchPrefix;
+import org.nuiton.util.ApplicationConfig;
/**
* Traite toutes les demandes faite via l'opensearch
@@ -64,62 +59,28 @@
this.response = response;
}
- protected String executeTagSearchAction(String query) {
- redirectTo = BowUtils.redirectTo(query, null);
- return SUCCESS;
- }
+ @Override
+ protected String executePrefixAction(BowSearchPrefix foundPrefix, String query) {
+ String action;
- protected String executeFulltextSearchAction(String query) {
- redirectTo = BowUtils.redirectTo(null, query);
- return SUCCESS;
- }
+ ApplicationConfig config = BowConfig.getConfig();
- protected String executeWebSearchAction(String query) {
- // Search on the chosen search engine
- BowUser user = getBowSession().getUser();
+ if (foundPrefix == null) {
+ action = BowConfig.getSearchEngine();
+ } else {
+ action = foundPrefix.getSearch();
+ }
- String result = user.getSearchEngineUrlResults();
- if (StringUtils.isEmpty(result)) {
- result = BowConfig.getSearchEngine();
+ // des alias peuvent exister dans la configuration
+ String optionkey = "bow.prefix." + action;
+ if (config.hasOption(optionkey)) {
+ action = config.getOption(optionkey);
}
- result = result.replace("{searchTerms}", query);
- result = response.encodeRedirectURL(result);
- redirectTo = result;
- return SUCCESS;
- }
- protected String executeAliasSearchAction(String privateAlias) {
- BowUser user = getBowSession().getUser();
- WikittyProxy proxy = getBowProxy();
- Criteria criteria = Search.query()
- .eq(BowBookmark.FQ_FIELD_WIKITTYAUTHORISATION_OWNER, user.getWikittyId())
- .eq(BowBookmark.FQ_FIELD_BOWBOOKMARK_PRIVATEALIAS, privateAlias)
- .criteria();
- String bookmarkId = proxy.findIdByCriteria(criteria);
+ action = action.replace("{searchTerms}", query);
+ action = response.encodeRedirectURL(action);
+ redirectTo = action;
- String result;
- // si on retrouve l'alias prive on l'utilise,
- // sinon on espere qu'il existe un alias public portant ce nom
- if (bookmarkId != null) {
- result = BowConfig.getAliasUrl() + bookmarkId + ".action";
- if (log.isDebugEnabled()) {
- log.debug("Private alias found, redirect to: " + result);
- }
- } else {
- result = BowConfig.getAliasUrl() + privateAlias + ".action";
- if (log.isDebugEnabled()) {
- log.debug("Private alias not found, redirect to: " + result);
- }
- }
- redirectTo = result;
return SUCCESS;
}
-
- @Override
- protected String executeNotSupportedPrefixAction(String query) {
- // prefix inconnu, on va sur la home
- redirectTo = BowUtils.redirectTo(null, null);
- return SUCCESS;
- }
-
}
Modified: trunk/bow-ui/src/main/java/org/chorem/bow/action/opensearch/OpenSearchSuggestionAction.java
===================================================================
--- trunk/bow-ui/src/main/java/org/chorem/bow/action/opensearch/OpenSearchSuggestionAction.java 2013-08-09 10:07:03 UTC (rev 356)
+++ trunk/bow-ui/src/main/java/org/chorem/bow/action/opensearch/OpenSearchSuggestionAction.java 2013-09-19 09:27:16 UTC (rev 357)
@@ -25,26 +25,25 @@
import com.opensymphony.xwork2.ActionContext;
import org.apache.commons.io.input.ReaderInputStream;
-import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.chorem.bow.BookmarkUtils;
-import org.chorem.bow.BowBookmark;
import org.chorem.bow.BowConfig;
-import org.chorem.bow.BowUser;
-import org.chorem.bow.BowUtils;
-import org.nuiton.wikitty.WikittyProxy;
-import org.nuiton.wikitty.entities.Wikitty;
-import org.nuiton.wikitty.search.Criteria;
-import org.nuiton.wikitty.search.FacetTopic;
-import org.nuiton.wikitty.search.PagedResult;
-import org.nuiton.wikitty.search.Search;
import java.io.InputStream;
import java.io.StringReader;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Set;
+import java.io.UnsupportedEncodingException;
+import java.net.URLEncoder;
+import org.apache.commons.io.IOUtils;
+import org.apache.commons.lang.StringUtils;
+import org.apache.http.HttpEntity;
+import org.apache.http.client.methods.CloseableHttpResponse;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.client.HttpClients;
+import org.apache.http.util.EntityUtils;
+import org.apache.struts2.ServletActionContext;
+import org.chorem.bow.BowSearchPrefix;
+import org.nuiton.util.ApplicationConfig;
/**
* Retourne les suggestions pour l'opensearch en fonction de ce qui a ete deja
@@ -72,168 +71,73 @@
}
@Override
- protected String executeTagSearchAction(String query) {
- if (log.isDebugEnabled()) {
- log.debug(String.format("Start opensearch tag suggest for '%s'", query));
- }
+ protected String executePrefixAction(BowSearchPrefix foundPrefix, String query) {
+ String result = String.format("['%s', []]", query);
+ try {
+ log.trace("######################### executePrefixAction #################" + query + " - " + foundPrefix);
+ String action;
- // preparation de la reponse. Un toString sur une liste retourne
- // la bonne syntaxe pour une reponse json :) si on triche un peu
- // en ajoutant des '' pour les chaines
- List<Object> json = new ArrayList<Object>();
- List<String> completions = new ArrayList<String>();
- List<String> descriptions = new ArrayList<String>();
- List<String> queryUrls = new ArrayList<String>();
-
- json.add("'" + query + "'");
- json.add(completions);
- json.add(descriptions);
- json.add(queryUrls);
-
- if (query != null) {
- BowUser user = getBowSession().getUser();
- WikittyProxy proxy = getBowProxy();
-
- // on ajoute * a la fin du dernier tag, car il n'est peut-etre pas fini
- String searchLineStar = query + "*";
-
- // on recupere le dernier tag en train d'etre ecrit
- String lastTag;
- if (query.contains(" ")) {
- lastTag = StringUtils.substringAfterLast(query, " ");
+ ApplicationConfig config = BowConfig.getConfig();
+
+ if (foundPrefix == null) {
+ action = BowConfig.getSearchEngine();
} else {
- lastTag = query;
+ action = foundPrefix.getSuggestion();
}
- Set<String> searchLineList = BowUtils.getWords(searchLineStar);
-
- Search search = BookmarkUtils.addEqUser(Search.query(), user.getWikittyId());
- search.exteq(BowBookmark.EXT_WIKITTYLABEL);
- search.contains(BowBookmark.FQ_FIELD_WIKITTYLABEL_LABELS, searchLineList);
-
- Criteria criteria = search
- .criteria()
- .setEndIndex(0) // on ne veut aucun resultat, c'est la facet dont on a besoin
- .setFacetMinCount(1) // on demande meme les labels avec 1 seul item
- .setFacetLimit(Integer.MAX_VALUE) // ne ne met pas -1 pour qu'il soit trie par ordre de count
- .addFacetField(BowBookmark.FQ_FIELD_WIKITTYLABEL_LABELS);
-
- PagedResult<Wikitty> result = proxy.findAllByCriteria(criteria);
- // lorsqu'on demande tout (facetLimit(-1)), les topics sont trie
- // alphabetiquement pas besoin de les retrier
- List<FacetTopic> topics = result.getTopic(BowBookmark.FQ_FIELD_WIKITTYLABEL_LABELS);
- if (log.isTraceEnabled()) {
- log.trace("all topics: %s" + topics);
+ // des alias peuvent exister dans la configuration
+ String optionkey = "bow.prefix." + action;
+ if (config.hasOption(optionkey)) {
+ action = config.getOption(optionkey);
}
- // on en retourne un suggestion que le meme nombre de tag qu'il souhaite
- // voir affiche
- int count = user.getTags();
- for (FacetTopic t : topics) {
- // on ne met que les topics qui qui commence par lastTag
- String completion = t.getTopicName();
- if (log.isTraceEnabled()) {
- log.trace(String.format("'%s' startsWith '%s' ? ", completion, lastTag));
- }
- if (completion.startsWith(lastTag)) {
- String description = _("bow.opensearch.result", t.getCount());
- String tags = query + StringUtils.removeStart(completion, lastTag);
- getConfig();
- String queryUrl = BowConfig.getBowUrl() + BowUtils.redirectTo(tags, null);
+ action = action.replace("{searchTerms}", URLEncoder.encode(query, "UTF-8"));
- completions.add("'" + completion + "'");
- descriptions.add("'" + description + "'");
- queryUrls.add("'" + queryUrl + "'");
-
- // on s'arrete si l'on en a assez
- count--;
- if (count <= 0) {
- break;
- }
+ if (!StringUtils.startsWith(action, "http")) {
+ String serveur =
+ ServletActionContext.getRequest().getScheme() + "://" +
+ ServletActionContext.getRequest().getServerName() + ":" +
+ ServletActionContext.getRequest().getServerPort() +
+ ServletActionContext.getRequest().getContextPath();
+ if (!StringUtils.startsWith(action, "/")) {
+ action = "/" + action;
}
+ action = serveur + action + "&token=" + getBowSession().getPermanentToken();
}
- }
- if (log.isDebugEnabled()) {
- log.debug(String.format("opensearch suggest result: %s", json));
- }
- inputStream = new ReaderInputStream(new StringReader(json.toString()));
- return SUCCESS;
- }
- @Override
- protected String executeFulltextSearchAction(String query) {
- return executeNotSupportedPrefixAction(query);
- }
+// action = ServletActionContext.getResponse().encodeURL(action);
+ try {
+ log.debug("try to connect to : " + action);
+ // ne fonctionne pas (rien ne se passe, pas de requete envoyee :()
+// result = Request.Get(action)
+// .connectTimeout(1000)
+// .socketTimeout(1000)
+// .execute().returnContent().asString();
- @Override
- protected String executeWebSearchAction(String query) {
- return executeNotSupportedPrefixAction(query);
- }
- @Override
- protected String executeAliasSearchAction(String privateAlias) {
- if (log.isDebugEnabled()) {
- log.debug(String.format("Start opensearch alias suggest for '%s'", privateAlias));
- }
-
- // preparation de la reponse. Un toString sur une liste retourne
- // la bonne syntaxe pour une reponse json :) si on triche un peu
- // en ajoutant des '' pour les chaines
- List<Object> json = new ArrayList<Object>();
- List<String> completions = new ArrayList<String>();
- List<String> descriptions = new ArrayList<String>();
- List<String> queryUrls = new ArrayList<String>();
-
- json.add("'" + privateAlias + "'");
- json.add(completions);
- json.add(descriptions);
- json.add(queryUrls);
-
- if (privateAlias != null) {
- BowUser user = getBowSession().getUser();
- WikittyProxy proxy = getBowProxy();
-
- // on ajoute * a la fin, car il n'est peut-etre pas fini
- String privateAliasStar = privateAlias + "*";
-
- Search search = BookmarkUtils.addEqUser(Search.query(), user.getWikittyId());
- search.eq(BowBookmark.FQ_FIELD_BOWBOOKMARK_PRIVATEALIAS, privateAliasStar);
-
- Criteria criteria = search.criteria()
- .setEndIndex(15); // on recupere que les 15 premiers resultats
-
- PagedResult<BowBookmark> result = proxy.findAllByCriteria(BowBookmark.class, criteria);
-
- for (BowBookmark b : result) {
- String completion = b.getPrivateAlias();
- String description = b.getDescription();
- String queryUrl = String.format("%s%s?token=%s",
- BowConfig.getAliasUrl(), completion, token);
- completions.add("'" + completion + "'");
- descriptions.add("'" + description + "'");
- queryUrls.add("'" + queryUrl + "'");
+ CloseableHttpClient httpclient = HttpClients.createDefault();
+ HttpGet httpGet = new HttpGet(action);
+ CloseableHttpResponse response = httpclient.execute(httpGet);
+
+ try {
+ HttpEntity entity = response.getEntity();
+ result = IOUtils.toString(entity.getContent());
+ // ensure it is fully consumed
+ EntityUtils.consume(entity);
+ } finally {
+ response.close();
+ }
+ } catch (Exception eee) {
+ log.info("Can't get result for url: " + action, eee);
+ } finally {
+ log.debug("suggestion: " + result);
}
-
+ } catch (UnsupportedEncodingException eee) {
+ log.info("Can't make suggestion for: " + query, eee);
}
- if (log.isDebugEnabled()) {
- log.debug(String.format("opensearch alias suggest result: %s", json));
- }
- inputStream = new ReaderInputStream(new StringReader(json.toString()));
- return SUCCESS;
- }
-
- /**
- * On ne renvoie aucune suggestion
- *
- * @param query
- * @return
- */
- @Override
- protected String executeNotSupportedPrefixAction(String query) {
- String result = String.format("['%s', [], [], []]", query);
inputStream = new ReaderInputStream(new StringReader(result));
+
return SUCCESS;
}
-
}
\ No newline at end of file
Added: trunk/bow-ui/src/main/java/org/chorem/bow/action/opensearch/SuggestionAction.java
===================================================================
--- trunk/bow-ui/src/main/java/org/chorem/bow/action/opensearch/SuggestionAction.java (rev 0)
+++ trunk/bow-ui/src/main/java/org/chorem/bow/action/opensearch/SuggestionAction.java 2013-09-19 09:27:16 UTC (rev 357)
@@ -0,0 +1,211 @@
+package org.chorem.bow.action.opensearch;
+
+
+import java.io.InputStream;
+import java.io.StringReader;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+import org.apache.commons.io.input.ReaderInputStream;
+import org.apache.commons.lang.StringUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.chorem.bow.BookmarkUtils;
+import org.chorem.bow.BowBookmark;
+import org.chorem.bow.BowUser;
+import org.chorem.bow.BowUtils;
+import org.chorem.bow.action.BowBaseAction;
+import org.nuiton.wikitty.WikittyProxy;
+import org.nuiton.wikitty.entities.Wikitty;
+import org.nuiton.wikitty.search.Criteria;
+import org.nuiton.wikitty.search.FacetTopic;
+import org.nuiton.wikitty.search.PagedResult;
+import org.nuiton.wikitty.search.Search;
+
+/**
+ *
+ * @author poussin
+ * @version $Revision$
+ *
+ * Last update: $Date$
+ * by : $Author$
+ */
+public class SuggestionAction extends BowBaseAction {
+
+ /** to use log facility, just put in your code: log.info(\"...\"); */
+ static private Log log = LogFactory.getLog(SuggestionAction.class);
+
+ /** [in] le token d'identification */
+ protected String token;
+ /** [in] la requete pour lequel il faut trouver des suggesions */
+ protected String q;
+ /** [out] le resultat de la suggestion **/
+ protected transient InputStream inputStream;
+
+ public void setToken(String token) {
+ this.token = token;
+ }
+
+ public InputStream getInputStream() {
+ return inputStream;
+ }
+
+ public String getQ() {
+ return q;
+ }
+
+ public void setQ(String q) {
+ this.q = q;
+ }
+
+ public String tag() {
+ if (log.isDebugEnabled()) {
+ log.debug(String.format("Start opensearch tag suggest for '%s'", q));
+ }
+
+ // preparation de la reponse. Un toString sur une liste retourne
+ // la bonne syntaxe pour une reponse json :) si on triche un peu
+ // en ajoutant des '' pour les chaines
+ List<Object> json = new ArrayList<Object>();
+ List<String> completions = new ArrayList<String>();
+// List<String> descriptions = new ArrayList<String>();
+// List<String> queryUrls = new ArrayList<String>();
+
+ json.add("'" + q + "'");
+ json.add(completions);
+// json.add(descriptions);
+// json.add(queryUrls);
+
+ if (q != null) {
+ BowUser user = getBowSession().getUser();
+ WikittyProxy proxy = getBowProxy();
+
+ // on ajoute * a la fin du dernier tag, car il n'est peut-etre pas fini
+ String searchLineStar = q + "*";
+
+ // on recupere le dernier tag en train d'etre ecrit
+ String firstTag;
+ String lastTag;
+ if (q.contains(" ")) {
+ firstTag = StringUtils.substringBeforeLast(q, " ") + " ";
+ lastTag = StringUtils.substringAfterLast(q, " ");
+ } else {
+ firstTag = "";
+ lastTag = q;
+ }
+
+ Set<String> searchLineList = BowUtils.getWords(searchLineStar);
+
+ Search search = BookmarkUtils.addEqUser(Search.query(), user.getWikittyId());
+ search.exteq(BowBookmark.EXT_WIKITTYLABEL);
+ search.contains(BowBookmark.FQ_FIELD_WIKITTYLABEL_LABELS, searchLineList);
+
+ Criteria criteria = search
+ .criteria()
+ .setEndIndex(0) // on ne veut aucun resultat, c'est la facet dont on a besoin
+ .setFacetMinCount(1) // on demande meme les labels avec 1 seul item
+ .setFacetLimit(Integer.MAX_VALUE) // ne ne met pas -1 pour qu'il soit trie par ordre de count
+ .addFacetField(BowBookmark.FQ_FIELD_WIKITTYLABEL_LABELS);
+
+ PagedResult<Wikitty> result = proxy.findAllByCriteria(criteria);
+ // lorsqu'on demande tout (facetLimit(-1)), les topics sont trie
+ // alphabetiquement pas besoin de les retrier
+ List<FacetTopic> topics = result.getTopic(BowBookmark.FQ_FIELD_WIKITTYLABEL_LABELS);
+ if (log.isTraceEnabled()) {
+ log.trace("all topics: %s" + topics);
+ }
+
+ // on en retourne un suggestion que le meme nombre de tag qu'il souhaite
+ // voir affiche
+ int count = user.getTags();
+ for (FacetTopic t : topics) {
+ // on ne met que les topics qui qui commence par lastTag
+ String completion = t.getTopicName();
+ if (log.isTraceEnabled()) {
+ log.trace(String.format("'%s' startsWith '%s' ? ", completion, lastTag));
+ }
+ if (completion.startsWith(lastTag)) {
+// String description = _("bow.opensearch.result", t.getCount());
+// String tags = q + StringUtils.removeStart(completion, lastTag);
+// String queryUrl = BowConfig.getBowUrl() + BowUtils.redirectTo(tags, null);
+
+ completions.add("'" + firstTag + completion + "'");
+// descriptions.add("'" + description + "'");
+// queryUrls.add("'" + queryUrl + "'");
+
+ // on s'arrete si l'on en a assez
+ count--;
+ if (count <= 0) {
+ break;
+ }
+ }
+ }
+ }
+ if (log.isDebugEnabled()) {
+ log.debug(String.format("opensearch suggest result: %s", json));
+ }
+ inputStream = new ReaderInputStream(new StringReader(json.toString()));
+ return SUCCESS;
+
+ }
+
+ public String fulltext() {
+ String result = String.format("['%s', []]", q);
+ inputStream = new ReaderInputStream(new StringReader(result));
+ return SUCCESS;
+ }
+
+ public String alias() {
+ if (log.isDebugEnabled()) {
+ log.debug(String.format("Start opensearch alias suggest for '%s'", q));
+ }
+
+ // preparation de la reponse. Un toString sur une liste retourne
+ // la bonne syntaxe pour une reponse json :) si on triche un peu
+ // en ajoutant des '' pour les chaines
+ List<Object> json = new ArrayList<Object>();
+ List<String> completions = new ArrayList<String>();
+// List<String> descriptions = new ArrayList<String>();
+// List<String> queryUrls = new ArrayList<String>();
+
+ json.add("'" + q + "'");
+ json.add(completions);
+// json.add(descriptions);
+// json.add(queryUrls);
+
+ if (q != null) {
+ BowUser user = getBowSession().getUser();
+ WikittyProxy proxy = getBowProxy();
+
+ // on ajoute * a la fin, car il n'est peut-etre pas fini
+ String privateAliasStar = q + "*";
+
+ Search search = BookmarkUtils.addEqUser(Search.query(), user.getWikittyId());
+ search.or().
+ eq(BowBookmark.FQ_FIELD_BOWBOOKMARK_PRIVATEALIAS, privateAliasStar).
+ eq(BowBookmark.FQ_FIELD_BOWBOOKMARK_PUBLICALIAS, privateAliasStar);
+
+ Criteria criteria = search.criteria()
+ .setEndIndex(15); // on recupere que les 15 premiers resultats
+
+ PagedResult<BowBookmark> result = proxy.findAllByCriteria(BowBookmark.class, criteria);
+
+ for (BowBookmark b : result) {
+ String completion = b.getPrivateAlias();
+// String description = b.getDescription();
+// String queryUrl = String.format("%s%s?token=%s",
+// BowConfig.getAliasUrl(), completion, token);
+ completions.add("'" + completion + "'");
+// descriptions.add("'" + description + "'");
+// queryUrls.add("'" + queryUrl + "'");
+ }
+
+ }
+ if (log.isDebugEnabled()) {
+ log.debug(String.format("opensearch alias suggest result: %s", json));
+ }
+ inputStream = new ReaderInputStream(new StringReader(json.toString()));
+ return SUCCESS;
+ }
+
+}
Property changes on: trunk/bow-ui/src/main/java/org/chorem/bow/action/opensearch/SuggestionAction.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Modified: trunk/bow-ui/src/main/java/org/chorem/bow/action/preference/PreferenceBaseAction.java
===================================================================
--- trunk/bow-ui/src/main/java/org/chorem/bow/action/preference/PreferenceBaseAction.java 2013-08-09 10:07:03 UTC (rev 356)
+++ trunk/bow-ui/src/main/java/org/chorem/bow/action/preference/PreferenceBaseAction.java 2013-09-19 09:27:16 UTC (rev 357)
@@ -24,7 +24,6 @@
package org.chorem.bow.action.preference;
import com.opensymphony.xwork2.ActionContext;
-import org.apache.commons.lang.StringUtils;
import org.chorem.bow.BowBookmark;
import org.chorem.bow.BowImport;
import org.chorem.bow.BowProxy;
@@ -43,6 +42,7 @@
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import org.chorem.bow.BowSearchPrefix;
/**
* Change les preferences de l'utilisateur (couleur, password, email, ...)
@@ -79,24 +79,8 @@
protected String bookmarksHomePage;
- protected String searchEngineUrlSuggestions;
+ protected List<BowSearchPrefix> searchPrefix;
- protected String searchEngineUrlResults;
-
- protected String separator;
-
- protected String tagPrefix;
-
- protected String fulltextPrefix;
-
- protected String webPrefix;
-
- protected String aliasPrefix;
-
- protected DefaultPrefix defaultPrefix;
-
- protected DefaultPrefix defaultAction;
-
protected List<FacetTopic> labels;
protected String[] selectedLabels;
@@ -165,82 +149,17 @@
this.bookmarksHomePage = bookmarksHomePage;
}
- /** @return the searchEngineUrlSuggestions */
- public String getSearchEngineUrlSuggestions() {
- return searchEngineUrlSuggestions;
+ public List<BowSearchPrefix> getSearchPrefix() {
+ if (searchPrefix == null) {
+ loadSearchPrefixPref();
+ }
+ return searchPrefix;
}
- /** @param searchEngineUrlSuggestions the searchEngineUrlSuggestions to set */
- public void setSearchEngineUrlSuggestions(String searchEngineUrlSuggestions) {
- this.searchEngineUrlSuggestions = searchEngineUrlSuggestions;
+ public void setSearchPrefix(List<BowSearchPrefix> searchPrefix) {
+ this.searchPrefix = searchPrefix;
}
- /** @return the searchEngineUrlResults */
- public String getSearchEngineUrlResults() {
- return searchEngineUrlResults;
- }
-
- /** @param searchEngineUrlResults the searchEngineUrlResults to set */
- public void setSearchEngineUrlResults(String searchEngineUrlResults) {
- this.searchEngineUrlResults = searchEngineUrlResults;
- }
-
- public String getSeparator() {
- return separator;
- }
-
- public void setSeparator(String separator) {
- this.separator = separator;
- }
-
- public String getTagPrefix() {
- return tagPrefix;
- }
-
- public void setTagPrefix(String tagPrefix) {
- this.tagPrefix = tagPrefix;
- }
-
- public String getFulltextPrefix() {
- return fulltextPrefix;
- }
-
- public void setFulltextPrefix(String fulltextPrefix) {
- this.fulltextPrefix = fulltextPrefix;
- }
-
- public String getWebPrefix() {
- return webPrefix;
- }
-
- public void setWebPrefix(String webPrefix) {
- this.webPrefix = webPrefix;
- }
-
- public String getAliasPrefix() {
- return aliasPrefix;
- }
-
- public void setAliasPrefix(String aliasPrefix) {
- this.aliasPrefix = aliasPrefix;
- }
-
- public DefaultPrefix getDefaultPrefix() {
- return defaultPrefix;
- }
-
- public void setDefaultPrefix(String defaultPrefix) {
- this.defaultPrefix = DefaultPrefix.valueOf(defaultPrefix);
- }
-
- public DefaultPrefix getDefaultAction() {
- return defaultAction;
- }
-
- public void setDefaultAction(String defaultAction) {
- this.defaultAction = DefaultPrefix.valueOf(defaultAction);
- }
-
/** @return the email */
public String getEmail() {
return email;
@@ -352,6 +271,7 @@
break;
case SITE_PREF:
loadSitePref();
+ loadSearchPrefixPref();
break;
case LABELS:
loadLabels();
@@ -387,55 +307,13 @@
setColors(user.getColors());
setTagsNb(String.valueOf(user.getTags()));
setBookmarksHomePage(String.valueOf(user.getBookmarks()));
- setSearchEngineUrlSuggestions(user.getSearchEngineUrlSuggestions());
- setSearchEngineUrlResults(user.getSearchEngineUrlResults());
-
- setSeparator(user.getPrefixSeparator());
- setTagPrefix(user.getTagSearchPrefix());
- setFulltextPrefix(user.getFullTextSearchPrefix());
- setWebPrefix(user.getWebSearchPrefix());
- setAliasPrefix(user.getAliasPrefix());
-
- defaultAction = getDefaultConst(user, user.getDefaultAction());
- defaultPrefix = getDefaultConst(user, user.getDefaultPrefix());
-
}
- protected String getDefaultValue(BowUser user, DefaultPrefix constValue) {
- String result = user.getAliasPrefix();
- switch (constValue) {
- case TAG:
- result = user.getTagSearchPrefix();
- break;
- case FULLTEXT:
- result = user.getFullTextSearchPrefix();
- break;
- case WEB:
- result = user.getWebSearchPrefix();
- break;
- case ALIAS:
- result = user.getAliasPrefix();
- break;
- default:
- break;
- }
- return result;
+ protected void loadSearchPrefixPref() {
+ BowSession session = getBowSession();
+ this.searchPrefix = session.getSearchPrefix();
}
- protected DefaultPrefix getDefaultConst(BowUser user, String value) {
- DefaultPrefix result = DefaultPrefix.ALIAS;
- if (StringUtils.equals(value, user.getTagSearchPrefix())) {
- result = DefaultPrefix.TAG;
- } else if (StringUtils.equals(value, user.getFullTextSearchPrefix())) {
- result = DefaultPrefix.FULLTEXT;
- } else if (StringUtils.equals(value, user.getWebSearchPrefix())) {
- result = DefaultPrefix.WEB;
- } else if (StringUtils.equals(value, user.getAliasPrefix())) {
- result = DefaultPrefix.ALIAS;
- }
- return result;
- }
-
/** Charge la liste des imports que l'utilisateur a fait */
protected void loadImport() {
BowSession session = getBowSession();
Modified: trunk/bow-ui/src/main/java/org/chorem/bow/action/preference/UpdateSiteAction.java
===================================================================
--- trunk/bow-ui/src/main/java/org/chorem/bow/action/preference/UpdateSiteAction.java 2013-08-09 10:07:03 UTC (rev 356)
+++ trunk/bow-ui/src/main/java/org/chorem/bow/action/preference/UpdateSiteAction.java 2013-09-19 09:27:16 UTC (rev 357)
@@ -27,6 +27,8 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.chorem.bow.BowProxy;
+import org.chorem.bow.BowSearchPrefix;
+import org.chorem.bow.BowSearchPrefixImpl;
import org.chorem.bow.BowSession;
import org.chorem.bow.BowUser;
@@ -44,6 +46,16 @@
private static final long serialVersionUID = 1L;
+ protected int removedPrefix = -1;
+
+ public void setRemovedPrefix(int removedPrefix) {
+ this.removedPrefix = removedPrefix;
+ }
+
+ public int getRemovedPrefix() {
+ return removedPrefix;
+ }
+
/**
* ACTION STRUTS
* <p/>
@@ -65,19 +77,9 @@
if (StringUtils.isNotBlank(bookmarksHomePage)) {
preference.setBookmarks(Integer.valueOf(bookmarksHomePage));
}
- preference.setSearchEngineUrlSuggestions(searchEngineUrlSuggestions);
- preference.setSearchEngineUrlResults(searchEngineUrlResults);
- preference.setPrefixSeparator(separator);
+ searchPrefix = proxy.store(searchPrefix);
- preference.setTagSearchPrefix(tagPrefix);
- preference.setFullTextSearchPrefix(fulltextPrefix);
- preference.setWebSearchPrefix(webPrefix);
- preference.setAliasPrefix(aliasPrefix);
-
- preference.setDefaultAction(getDefaultValue(preference, defaultAction));
- preference.setDefaultPrefix(getDefaultValue(preference, defaultPrefix));
-
preference = proxy.store(preference);
getBowSession().setUser(preference);
} catch (Exception eee) {
@@ -93,4 +95,51 @@
}
+ public String addPrefix() {
+ String result = SUCCESS;
+ try {
+ BowSession session = getBowSession();
+ BowProxy proxy = session.getProxy();
+
+ BowSearchPrefix prefix = new BowSearchPrefixImpl();
+ prefix.setBowUser(session.getUser().getWikittyId());
+
+ searchPrefix.add(prefix);
+ proxy.store(searchPrefix);
+ // force reload to have right order by
+ searchPrefix = null;
+ } catch (Exception eee) {
+ result = ERROR;
+ addActionError(_("bow.error.internal"));
+ log.error("Can't change site preference", eee);
+ } finally {
+ // on recharge les data apres l'action pour l'affichage
+ // sauf celle du site qui sont deja les bonnes
+ load(PreferenceType.SITE_PREF);
+ }
+ return result;
+ }
+
+ public String removePrefix() {
+ String result = SUCCESS;
+ try {
+ log.debug("########################## removedPrefix ############## " + removedPrefix);
+ if (removedPrefix >= 0) {
+ BowSession session = getBowSession();
+ BowProxy proxy = session.getProxy();
+
+ BowSearchPrefix p = searchPrefix.remove(removedPrefix);
+ proxy.delete(p);
+ }
+ } catch (Exception eee) {
+ result = ERROR;
+ addActionError(_("bow.error.internal"));
+ log.error("Can't change site preference", eee);
+ } finally {
+ // on recharge les data apres l'action pour l'affichage
+ // sauf celle du site qui sont deja les bonnes
+ load(PreferenceType.SITE_PREF);
+ }
+ return result;
+ }
}
Added: trunk/bow-ui/src/main/java/org/chorem/bow/interceptor/LaxLoginInterceptor.java
===================================================================
--- trunk/bow-ui/src/main/java/org/chorem/bow/interceptor/LaxLoginInterceptor.java (rev 0)
+++ trunk/bow-ui/src/main/java/org/chorem/bow/interceptor/LaxLoginInterceptor.java 2013-09-19 09:27:16 UTC (rev 357)
@@ -0,0 +1,71 @@
+/*
+ * #%L
+ * bow
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2010 - 2011 CodeLutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero 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 Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ * #L%
+ */
+package org.chorem.bow.interceptor;
+
+import com.opensymphony.xwork2.ActionContext;
+import com.opensymphony.xwork2.ActionInvocation;
+import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
+import org.chorem.bow.BowSession;
+import org.chorem.bow.BowUser;
+import org.chorem.bow.BowUtils;
+
+import java.util.Map;
+
+/**
+ * Interceptor used to login user is inforamtion existe, otherwize do nothing
+ */
+public class LaxLoginInterceptor extends AbstractInterceptor {
+ private static final long serialVersionUID = -7520186185205372272L;
+
+ @Override
+ public String intercept(ActionInvocation invocation) throws Exception {
+ Map<String, Object> session = ActionContext.getContext().getSession();
+
+ BowSession bowSession = BowSession.getBowSession(session);
+ BowUser user = bowSession.getUser();
+ String result = null;
+
+ //If the user isn't logged in
+ if (user == null) {
+ Map<String, Object> params = ActionContext.getContext().getParameters();
+ //Retrieves the token value in URL
+ String[] token = (String[]) params.get("token");
+
+ if (token != null && !token[0].isEmpty()) {
+ //Retrieves the user by token
+ user = BowUtils.checkToken(bowSession, token[0]);
+
+ //If the token is valid
+ if (user != null) {
+ //Authenticates the user
+ bowSession.setUser(user);
+ }
+ }
+ }
+
+ result = invocation.invoke();
+
+ return result;
+ }
+}
Property changes on: trunk/bow-ui/src/main/java/org/chorem/bow/interceptor/LaxLoginInterceptor.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Modified: trunk/bow-ui/src/main/resources/i18n/bow-ui_en_GB.properties
===================================================================
--- trunk/bow-ui/src/main/resources/i18n/bow-ui_en_GB.properties 2013-08-09 10:07:03 UTC (rev 356)
+++ trunk/bow-ui/src/main/resources/i18n/bow-ui_en_GB.properties 2013-09-19 09:27:16 UTC (rev 357)
@@ -1,8 +1,9 @@
bow.action.locale.english=English
-bow.action.locale.french=Fran\u00e7ais
+bow.action.locale.french=Fran\u00E7ais
bow.admin.dataMigration.success=Data migration successful
bow.admin.dataMigration04to05=Migrate all data from 0.4 to 0.5
-bow.admin.dataMigration05to06=Migrate all data from 0.5 to 1.1
+bow.admin.dataMigration05to06=Migrate all data from 1.1 to 1.2
+bow.admin.dataMigration11to12=
bow.admin.dataReindexation=All data reindexation
bow.admin.forbidden=You don't have admin rights \!
bow.admin.home=Return to the home page
@@ -24,6 +25,10 @@
bow.config.application.version.description=application version
bow.config.bow.addressFrom.description=mail from address
bow.config.bow.admins.description=admins email address list
+bow.config.bow.prefix.search.alias.description=
+bow.config.bow.prefix.search.fulltext.description=
+bow.config.bow.prefix.suggestion.alias.description=
+bow.config.bow.prefix.suggestion.fulltext.description=
bow.config.bow.smtpServer.description=smtp server address
bow.config.bow.url.description=Web server bow URL
bow.config.configFileName.description=bow configuration file
@@ -36,6 +41,8 @@
bow.config.opensearch.tag.search.prefix.description=prefix for tag search
bow.config.opensearch.web.search.prefix.description=prefix for web search
bow.config.search.engine.description=URL of web search engine to use
+bow.config.sprefix.search.tag.description=
+bow.config.sprefix.suggestion.tag.description=
bow.error.internal=An internal error occurred, please contact an administrator if the problem persists
bow.footer.bugreport=Bug report
bow.footer.license=AGPL License
Modified: trunk/bow-ui/src/main/resources/i18n/bow-ui_fr_FR.properties
===================================================================
--- trunk/bow-ui/src/main/resources/i18n/bow-ui_fr_FR.properties 2013-08-09 10:07:03 UTC (rev 356)
+++ trunk/bow-ui/src/main/resources/i18n/bow-ui_fr_FR.properties 2013-09-19 09:27:16 UTC (rev 357)
@@ -1,53 +1,60 @@
bow.action.locale.english=English
-bow.action.locale.french=Fran\u00e7ais
-bow.admin.dataMigration.success=Les donn\u00e9es ont \u00e9t\u00e9 migr\u00e9es avec succ\u00e8s
-bow.admin.dataMigration04to05=Migrer toutes les donn\u00e9es de la version 0.4 \u00e0 0.5
-bow.admin.dataMigration05to06=Migrer toutes les donn\u00e9es de la version 0.5 \u00e0 1.1
-bow.admin.dataReindexation=R\u00e9indexation des donn\u00e9es
-bow.admin.forbidden=Vous n'\u00eates pas administrateur \!
+bow.action.locale.french=Fran\u00E7ais
+bow.admin.dataMigration.success=Les donn\u00E9es ont \u00E9t\u00E9 migr\u00E9es avec succ\u00E8s
+bow.admin.dataMigration04to05=Migrer toutes les donn\u00E9es de la version 0.4 \u00E0 0.5
+bow.admin.dataMigration05to06=Migrer toutes les donn\u00E9es de la version 1.1 \u00E0 1.2
+bow.admin.dataMigration11to12=
+bow.admin.dataReindexation=R\u00E9indexation des donn\u00E9es
+bow.admin.forbidden=Vous n'\u00EAtes pas administrateur \!
bow.admin.home=Retour sur la page d''accueil
bow.admin.panel=Panneau d''administration
-bow.admin.reIndexationDone=Les donn\u00e9es ont bien \u00e9t\u00e9 r\u00e9index\u00e9es
-bow.alias.already.exists=L''alias {0} existe d\u00e9j\u00e0
-bow.alias.bookmarkId.unknown=Il n''y a pas de marque-page correspondant \u00e0 l''identifiant {0}
-bow.bookmark.add.successful=Marque-page ajout\u00e9 avec succ\u00e8s
-bow.bookmark.badFileFormat=Mauvais format de fichier de favoris \: import impossible (le format de type Netscape n'est pas support\u00e9)
+bow.admin.reIndexationDone=Les donn\u00E9es ont bien \u00E9t\u00E9 r\u00E9index\u00E9es
+bow.alias.already.exists=L''alias {0} existe d\u00E9j\u00E0
+bow.alias.bookmarkId.unknown=Il n''y a pas de marque-page correspondant \u00E0 l''identifiant {0}
+bow.bookmark.add.successful=Marque-page ajout\u00E9 avec succ\u00E8s
+bow.bookmark.badFileFormat=Mauvais format de fichier de favoris \: import impossible (le format de type Netscape n'est pas support\u00E9)
bow.bookmark.description=Description
-bow.bookmark.import.delete.successful=Les marque-pages import\u00e9s ont \u00e9t\u00e9 supprim\u00e9s avec succ\u00e8s
-bow.bookmark.import.successful=Les marque-pages ont \u00e9t\u00e9 import\u00e9s avec succ\u00e8s
-bow.bookmark.remove.successful=Le marque-page a \u00e9t\u00e9 supprim\u00e9 avec succ\u00e8s
-bow.bookmark.tag.deleted=Le tag a \u00e9t\u00e9 supprim\u00e9 avec succ\u00e8s
+bow.bookmark.import.delete.successful=Les marque-pages import\u00E9s ont \u00E9t\u00E9 supprim\u00E9s avec succ\u00E8s
+bow.bookmark.import.successful=Les marque-pages ont \u00E9t\u00E9 import\u00E9s avec succ\u00E8s
+bow.bookmark.remove.successful=Le marque-page a \u00E9t\u00E9 supprim\u00E9 avec succ\u00E8s
+bow.bookmark.tag.deleted=Le tag a \u00E9t\u00E9 supprim\u00E9 avec succ\u00E8s
bow.bookmark.tags=Tags
-bow.bookmark.update.successful=Le marque-page a \u00e9t\u00e9 mis \u00e0 jour avec succ\u00e8s
+bow.bookmark.update.successful=Le marque-page a \u00E9t\u00E9 mis \u00E0 jour avec succ\u00E8s
bow.bookmarks.noBookmarks=Pas de marque-page
bow.config.alias.url.description=Url public du serveur d'alias
bow.config.application.version.description=Version de l'application
bow.config.bow.addressFrom.description=Adresse expediteur des emails
bow.config.bow.admins.description=Liste des emails des admins de l'application
+bow.config.bow.prefix.search.alias.description=
+bow.config.bow.prefix.search.fulltext.description=
+bow.config.bow.prefix.suggestion.alias.description=
+bow.config.bow.prefix.suggestion.fulltext.description=
bow.config.bow.smtpServer.description=Adresse du serveur de mail
bow.config.bow.url.description=Url public du serveur bow
bow.config.configFileName.description=Fichier de configuration de bow
-bow.config.data.dir.description=R\u00e9pertoire de stockage des donn\u00e9es
+bow.config.data.dir.description=R\u00E9pertoire de stockage des donn\u00E9es
bow.config.opensearch.alias.prefix.description=Prefix de redirection via l'alias
-bow.config.opensearch.default.action.description=action par d\u00e9faut
-bow.config.opensearch.default.prefix.description=Prefix par d\u00e9faut
+bow.config.opensearch.default.action.description=action par d\u00E9faut
+bow.config.opensearch.default.prefix.description=Prefix par d\u00E9faut
bow.config.opensearch.fulltext.search.prefix.description=Fulltext
-bow.config.opensearch.prefix.separator.description=S\u00e9parateur de pr\u00e9fix
-bow.config.opensearch.tag.search.prefix.description=Pr\u00e9fix de recherche par tag
+bow.config.opensearch.prefix.separator.description=S\u00E9parateur de pr\u00E9fix
+bow.config.opensearch.tag.search.prefix.description=Pr\u00E9fix de recherche par tag
bow.config.opensearch.web.search.prefix.description=prefix de recherche sur le web
-bow.config.search.engine.description=Url du moteur de recherche Web \u00e0 utiliser
+bow.config.search.engine.description=Url du moteur de recherche Web \u00E0 utiliser
+bow.config.sprefix.search.tag.description=
+bow.config.sprefix.suggestion.tag.description=
bow.error.internal=Une erreur interne est survenue, merci de contacter un administrateur si cette erreur persiste
bow.footer.bugreport=Rapport de bug
bow.footer.license=Licence AGPL
bow.footer.userSupport=Support utilisateur
bow.forgotPassword.emailDoesntExist=Cette adresse email n''existe pas
bow.forgotpwd.submit=Envoyer
-bow.forgotpwd.title=Vous avez oubli\u00e9 votre mot de passe ?
-bow.home.latestBookmarks=Les derniers marque-pages ajout\u00e9s
-bow.home.mostUsedBookmarks=Les marque-pages les plus utilis\u00e9s
+bow.forgotpwd.title=Vous avez oubli\u00E9 votre mot de passe ?
+bow.home.latestBookmarks=Les derniers marque-pages ajout\u00E9s
+bow.home.mostUsedBookmarks=Les marque-pages les plus utilis\u00E9s
bow.home.title=Accueil
-bow.login.admin.failback=Probl\u00e8me d'authentification, vous devriez reconstruire l'index via la page d'admin
-bow.login.authenticationFailure=Soit votre adresse email n''existe pas, soit votre mot de passe est eronn\u00e9
+bow.login.admin.failback=Probl\u00E8me d'authentification, vous devriez reconstruire l'index via la page d'admin
+bow.login.authenticationFailure=Soit votre adresse email n''existe pas, soit votre mot de passe est eronn\u00E9
bow.login.email=Email
bow.login.email.required=Veuillez entrer votre adresse email
bow.login.email.wrongformat=Votre adresse email est invalide
@@ -57,68 +64,68 @@
bow.login.repeatPassword.required=Veuillez retaper votre mot de passe
bow.login.submit=Connexion
bow.login.title=Connexion
-bow.mail.badFormat=Votre adresse email est mal form\u00e9e \: aucun mail n''a pu \u00eatre envoy\u00e9
+bow.mail.badFormat=Votre adresse email est mal form\u00E9e \: aucun mail n''a pu \u00EAtre envoy\u00E9
bow.mail.sendError=Une erreur s''est produite lors de l''envoi du mail
-bow.opensearch.result=%s r\u00e9sultats
-bow.preference.opensearch.prefix.separator=Separateur de pr\u00e9fix
+bow.opensearch.result=%s r\u00E9sultats
+bow.preference.opensearch.prefix.separator=Separateur de pr\u00E9fix
bow.preferences.badCurrentPassword=Votre mot de passe actuel est incorrect
-bow.preferences.bookmarksHomePage=Nombre de marque-pages affich\u00e9s
+bow.preferences.bookmarksHomePage=Nombre de marque-pages affich\u00E9s
bow.preferences.colors=Couleur du site
bow.preferences.confirmNewPassword=Confirmez votre mot de passe
bow.preferences.currentPassword=Mot de passe actuel
-bow.preferences.emailAldyExists=Cette addresse email est d\u00e9j\u00e0 utilis\u00e9e par un autre compte
+bow.preferences.emailAldyExists=Cette addresse email est d\u00E9j\u00E0 utilis\u00E9e par un autre compte
bow.preferences.export.bookmarks=Exporter les marque-pages
bow.preferences.import.bookmarks=Importer des marques-pages
bow.preferences.import.submit=Importer
bow.preferences.importExport=Import / Export
-bow.preferences.importedBookmarks=Marque-pages import\u00e9s
+bow.preferences.importedBookmarks=Marque-pages import\u00E9s
bow.preferences.labels=Gestion des labels
bow.preferences.labels.delete.submit=Supprimer
bow.preferences.labels.name.field=Nouveau nom
bow.preferences.labels.rename.submit=Renomer
bow.preferences.newPassword=Nouveau mot de passe
-bow.preferences.noImportedBookmarks=Aucun marque-page import\u00e9
+bow.preferences.noImportedBookmarks=Aucun marque-page import\u00E9
bow.preferences.opensearch.alias.prefix=Alias
-bow.preferences.opensearch.default.action=action par d\u00e9faut
-bow.preferences.opensearch.default.prefix=Prefix par d\u00e9faut
+bow.preferences.opensearch.default.action=action par d\u00E9faut
+bow.preferences.opensearch.default.prefix=Prefix par d\u00E9faut
bow.preferences.opensearch.fulltext.search.prefix=Recherche Fulltext
-bow.preferences.opensearch.prefix=Pr\u00e9fix
-bow.preferences.opensearch.prefix.separator=S\u00e9parateur de pr\u00e9fix
+bow.preferences.opensearch.prefix=Pr\u00E9fix
+bow.preferences.opensearch.prefix.separator=S\u00E9parateur de pr\u00E9fix
bow.preferences.opensearch.tag.search.prefix=Recherche par tag
bow.preferences.opensearch.value=Valeur
bow.preferences.opensearch.web.search.prefix=Recherche Web
-bow.preferences.regenPermToken=Reg\u00e9n\u00e9rer le token permanent
-bow.preferences.searchEngineUrlResults=Search Engine URL Results ('{'searchTerms'}' sera remplac\u00e9 par votre recherche)
+bow.preferences.regenPermToken=Reg\u00E9n\u00E9rer le token permanent
+bow.preferences.searchEngineUrlResults=Search Engine URL Results ('{'searchTerms'}' sera remplac\u00E9 par votre recherche)
bow.preferences.searchEngineUrlSuggestions=Search Engine URL Suggestions
-bow.preferences.siteLook=Pr\u00e9f\u00e9rences du site
+bow.preferences.siteLook=Pr\u00E9f\u00E9rences du site
bow.preferences.submit=Changer
bow.preferences.tagsManagement=Edition des tags
-bow.preferences.tagsNb=Nombre de tags affich\u00e9s sur le nuage de tags
-bow.preferences.title=Pr\u00e9f\u00e9rences
-bow.preferences.update.successful=Vos pr\u00e9f\u00e9rences ont \u00e9t\u00e9 mises \u00e0 jour avec succ\u00e8s
+bow.preferences.tagsNb=Nombre de tags affich\u00E9s sur le nuage de tags
+bow.preferences.title=Pr\u00E9f\u00E9rences
+bow.preferences.update.successful=Vos pr\u00E9f\u00E9rences ont \u00E9t\u00E9 mises \u00E0 jour avec succ\u00E8s
bow.preferences.userInfo=Informations utilisateur
-bow.register.emailAldyUsed=Cette adresse email est d\u00e9j\u00e0 utilis\u00e9e
-bow.register.invalidLogin=Une erreur s''est produite pendant l''enregistrement de vos informations, merci d''essayer \u00e0 nouveau
+bow.register.emailAldyUsed=Cette adresse email est d\u00E9j\u00E0 utilis\u00E9e
+bow.register.invalidLogin=Une erreur s''est produite pendant l''enregistrement de vos informations, merci d''essayer \u00E0 nouveau
bow.register.mailEmail=Votre email
bow.register.mailHi=Bonjour
bow.register.mailPwd=Votre mot de passe
bow.register.mailSubject=[bow] Vos informations utilisateur
-bow.register.pwdDontMatch=Les mots de passe sont diff\u00e9rents
+bow.register.pwdDontMatch=Les mots de passe sont diff\u00E9rents
bow.register.submit=S''enregistrer
bow.register.title=S''enregistrer
bow.requiredstring=${getText(fieldKey)} est obligatoire
-bow.rightMenu.addUrl.link=Ajouter une entr\u00e9e
+bow.rightMenu.addUrl.link=Ajouter une entr\u00E9e
bow.rightMenu.admin=Admin
bow.rightMenu.bookmark.addModify=Ajouter / Modifier
bow.rightMenu.bookmark.alias=ALIAS
bow.rightMenu.bookmark.link=URL
bow.rightMenu.bookmark.name=DESC
bow.rightMenu.bookmark.permanentLink=Ajouter un bookmark (permanent)
-bow.rightMenu.bookmark.permanentLinkDescription=Ajoutez ce lien \u00e0 vos favoris pour pouvoir bookmarker vos liens dans le futur. Ce lien est toujours disponible \!
+bow.rightMenu.bookmark.permanentLinkDescription=Ajoutez ce lien \u00E0 vos favoris pour pouvoir bookmarker vos liens dans le futur. Ce lien est toujours disponible \!
bow.rightMenu.bookmark.submit=Sauvegarder
bow.rightMenu.bookmark.tags=TAGS
bow.rightMenu.bookmark.temporaryLink=Ajouter un bookmark (session)
-bow.rightMenu.bookmark.temporaryLinkDescription=Ajoutez ce lien \u00e0 vos favoris pour pouvoir bookmarker vos liens dans le futur. Ce lien est seulement disponible tant que vous \u00eates connect\u00e9 sur le site \!
+bow.rightMenu.bookmark.temporaryLinkDescription=Ajoutez ce lien \u00E0 vos favoris pour pouvoir bookmarker vos liens dans le futur. Ce lien est seulement disponible tant que vous \u00EAtes connect\u00E9 sur le site \!
bow.rightMenu.chromiumExtension=Extension pour chromium
bow.rightMenu.extensions=Extensions
bow.rightMenu.externSearchEngine=Web
@@ -127,7 +134,7 @@
bow.rightMenu.help=Aide
bow.rightMenu.import.submit=Importer
bow.rightMenu.importBookmarks=Importer des marque-pages
-bow.rightMenu.logout=D\u00e9connexion
+bow.rightMenu.logout=D\u00E9connexion
bow.rightMenu.search=Recherche
bow.rightMenu.search.tags=par tags
bow.rightMenu.token.permanent=Token permanent
@@ -139,18 +146,18 @@
bow.search.descdate=Date desc.
bow.search.descname=Nom desc.
bow.search.found=Total\:
-bow.search.order.ascClick=Les r\u00e9sultats de votre recherche ont \u00e9t\u00e9 tri\u00e9s par nombre de clics ascendants
-bow.search.order.ascDate=Les r\u00e9sultats de votre recherche ont \u00e9t\u00e9 tri\u00e9s par date ascendante
-bow.search.order.ascName=Les r\u00e9sultats de votre recherche ont \u00e9t\u00e9 tri\u00e9s par nom ascendant
-bow.search.order.descClick=Les r\u00e9sultats de votre recherche ont \u00e9t\u00e9 tri\u00e9s par nombre de clics descendants
-bow.search.order.descDate=Les r\u00e9sultats de votre recherche ont \u00e9t\u00e9 tri\u00e9s par date descendante
-bow.search.order.descName=Les r\u00e9sultats de votre recherche ont \u00e9t\u00e9 tri\u00e9s par nom descendant
+bow.search.order.ascClick=Les r\u00E9sultats de votre recherche ont \u00E9t\u00E9 tri\u00E9s par nombre de clics ascendants
+bow.search.order.ascDate=Les r\u00E9sultats de votre recherche ont \u00E9t\u00E9 tri\u00E9s par date ascendante
+bow.search.order.ascName=Les r\u00E9sultats de votre recherche ont \u00E9t\u00E9 tri\u00E9s par nom ascendant
+bow.search.order.descClick=Les r\u00E9sultats de votre recherche ont \u00E9t\u00E9 tri\u00E9s par nombre de clics descendants
+bow.search.order.descDate=Les r\u00E9sultats de votre recherche ont \u00E9t\u00E9 tri\u00E9s par date descendante
+bow.search.order.descName=Les r\u00E9sultats de votre recherche ont \u00E9t\u00E9 tri\u00E9s par nom descendant
bow.search.orderby=Trier par
-bow.search.results.deleted=Les r\u00e9sultats de la recherche ont \u00e9t\u00e9 supprim\u00e9s avec succ\u00e8s
+bow.search.results.deleted=Les r\u00E9sultats de la recherche ont \u00E9t\u00E9 supprim\u00E9s avec succ\u00E8s
bow.search.submit=Rechercher
bow.search.title=Recherche
-bow.token.generate.successful=Le token a \u00e9t\u00e9 reg\u00e9n\u00e9r\u00e9 avec succ\u00e8s
-popup.addurl.alias.private=Alias priv\u00e9
+bow.token.generate.successful=Le token a \u00E9t\u00E9 reg\u00E9n\u00E9r\u00E9 avec succ\u00E8s
+popup.addurl.alias.private=Alias priv\u00E9
popup.addurl.alias.public=Alias public
popup.addurl.link=Url
popup.addurl.name=Description
Modified: trunk/bow-ui/src/main/resources/log4j.properties
===================================================================
--- trunk/bow-ui/src/main/resources/log4j.properties 2013-08-09 10:07:03 UTC (rev 356)
+++ trunk/bow-ui/src/main/resources/log4j.properties 2013-09-19 09:27:16 UTC (rev 357)
@@ -30,10 +30,10 @@
log4j.appender.stdout.layout.ConversionPattern=%d %5p [%t] (%30.30c) %m%n
# package level
-log4j.logger.org.chorem.bow=DEBUG
-log4j.logger.org.chorem.bow.web.time=DEBUG
-log4j.logger.org.nuiton.wikitty.WikittyProxy.TimeLog=DEBUG
-log4j.logger.org.nuiton.wikitty.services.WikittyServiceSecurity.TimeLog=DEBUG
-log4j.logger.org.apache.struts2.dispatcher.mapper=DEBUG
+##log4j.logger.org.chorem.bow=DEBUG
+##log4j.logger.org.chorem.bow.web.time=DEBUG
+##log4j.logger.org.nuiton.wikitty.WikittyProxy.TimeLog=DEBUG
+##log4j.logger.org.nuiton.wikitty.services.WikittyServiceSecurity.TimeLog=DEBUG
+##log4j.logger.org.apache.struts2.dispatcher.mapper=DEBUG
log4j.logger.org.apache.solr=WARN
log4j.logger.org.apache.jcs=WARN
Modified: trunk/bow-ui/src/main/resources/struts.xml
===================================================================
--- trunk/bow-ui/src/main/resources/struts.xml 2013-08-09 10:07:03 UTC (rev 356)
+++ trunk/bow-ui/src/main/resources/struts.xml 2013-09-19 09:27:16 UTC (rev 357)
@@ -45,11 +45,13 @@
+-->
<package name="publicArea" extends="struts-default">
<interceptors>
+ <interceptor name="laxLogin" class="org.chorem.bow.interceptor.LaxLoginInterceptor"/>
<interceptor-stack name="publicAreaStack">
<interceptor-ref name="timer">
<param name="logLevel">debug</param>
<param name="logCategory">org.chorem.bow.web.time.render</param>
</interceptor-ref>
+ <interceptor-ref name="laxLogin"/>
<interceptor-ref name="defaultStack">
<param name="store.operationMode">AUTOMATIC</param>
<param name="fileUpload.allowedExtensions">.html</param>
@@ -86,10 +88,6 @@
<interceptor-stack name="restrictedAreaStack">
<interceptor-ref name="login"/>
<interceptor-ref name="publicAreaStack"/>
- <interceptor-ref name="timer">
- <param name="logLevel">debug</param>
- <param name="logCategory">org.chorem.bow.web.time.action</param>
- </interceptor-ref>
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="restrictedAreaStack"/>
@@ -101,6 +99,13 @@
<result name="success" type="redirect">${redirectTo}</result>
<result name="error">/WEB-INF/jsp/error.jsp</result>
</action>
+ <action name="alias" class="org.chorem.bow.action.AliasAction">
+ <result name="success" type="redirect">${redirectTo}</result>
+ <result name="error">/WEB-INF/jsp/error.jsp</result>
+ </action>
+ <action name="*Xml">
+ <result>/WEB-INF/jsp/{1}Xml.jsp</result>
+ </action>
</package>
<package name="login" extends="loginArea">
@@ -160,6 +165,14 @@
<action name="openSearchResult" class="org.chorem.bow.action.opensearch.OpenSearchResultAction">
<result type="redirect">${redirectTo}</result>
</action>
+ <action name="suggestion-*" class="org.chorem.bow.action.opensearch.SuggestionAction" method="{1}">
+ <result type="stream">
+ <param name="contentType">application/x-suggestions+json</param>
+ <param name="inputName">inputStream</param>
+ <param name="contentDisposition">inline</param>
+ <param name="allowCaching">false</param>
+ </result>
+ </action>
<action name="openSearchSuggestion" class="org.chorem.bow.action.opensearch.OpenSearchSuggestionAction">
<!-- <result>/WEB-INF/jsp/suggestions.jsp</result> -->
<result type="stream">
@@ -169,9 +182,6 @@
<param name="allowCaching">false</param>
</result>
</action>
- <action name="*Xml">
- <result>/WEB-INF/jsp/{1}Xml.jsp</result>
- </action>
</package>
<package name="preference" extends="restrictedArea">
@@ -199,6 +209,16 @@
<result>/WEB-INF/jsp/preferences.jsp</result>
</action>
+ <action name="addPrefix" class="org.chorem.bow.action.preference.UpdateSiteAction" method="addPrefix">
+ <result name="error">/WEB-INF/jsp/preferences.jsp</result>
+ <result>/WEB-INF/jsp/preferences.jsp</result>
+ </action>
+
+ <action name="removePrefix" class="org.chorem.bow.action.preference.UpdateSiteAction" method="removePrefix">
+ <result name="error">/WEB-INF/jsp/preferences.jsp</result>
+ <result>/WEB-INF/jsp/preferences.jsp</result>
+ </action>
+
<action name="adminlabels" class="org.chorem.bow.action.preference.AdminTagAction">
<result name="error">/WEB-INF/jsp/preferences.jsp</result>
<result>/WEB-INF/jsp/preferences.jsp</result>
Modified: trunk/bow-ui/src/main/webapp/WEB-INF/jsp/admin.jsp
===================================================================
--- trunk/bow-ui/src/main/webapp/WEB-INF/jsp/admin.jsp 2013-08-09 10:07:03 UTC (rev 356)
+++ trunk/bow-ui/src/main/webapp/WEB-INF/jsp/admin.jsp 2013-09-19 09:27:16 UTC (rev 357)
@@ -44,8 +44,8 @@
<s:if test="#session.BowSession.isAdmin()">
<ul id="adminActions">
<li><s:a action="reIndexation"><s:text name="bow.admin.dataReindexation" /></s:a></li>
- <li><s:a action="migrateData?versionFrom=0.4&versionTo=0.5"><s:text name="bow.admin.dataMigration04to05" /></s:a></li>
<li><s:a action="migrateData?versionFrom=0.6&versionTo=1.1"><s:text name="bow.admin.dataMigration05to06" /></s:a></li>
+ <li><s:a action="migrateData?versionFrom=1.1&versionTo=1.2"><s:text name="bow.admin.dataMigration11to12" /></s:a></li>
<li><s:a action="home" id="homePage"><s:text name="bow.admin.home" /></s:a></li>
</ul>
</s:if>
Modified: trunk/bow-ui/src/main/webapp/WEB-INF/jsp/permanentXml.jsp
===================================================================
--- trunk/bow-ui/src/main/webapp/WEB-INF/jsp/permanentXml.jsp 2013-08-09 10:07:03 UTC (rev 356)
+++ trunk/bow-ui/src/main/webapp/WEB-INF/jsp/permanentXml.jsp 2013-09-19 09:27:16 UTC (rev 357)
@@ -27,17 +27,17 @@
<%
String url = BowConfig.getBowUrl();
-%>
+%><?xml version="1.0" encoding="UTF-8"?>
<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/"
xmlns:moz="http://www.mozilla.org/2006/browser/search/"
xmlns:s="http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
xmlns:jsp="http://java.sun.com/JSP/Page">
<ShortName>Bow (permanent)</ShortName>
<Description>bookmarkSearch</Description>
- <InputEncoding>inputEncoding</InputEncoding>
+ <InputEncoding>UTF-8</InputEncoding>
<Image width="16" height="16" type="image/ico"><%=url%>img/bow.gif</Image>
<s:set var="token" value="#session.BowSession.getPermanentToken()" />
- <Url type="text/html" method="GET" template="<%=url%>openSearchResult.action?token=${token}&searchLine={searchTerms}" />
- <Url type="application/x-suggestions+json" method="GET" template="<%=url%>openSearchSuggestion.action?token=${token}&searchLine={searchTerms}" />
+ <Url type="text/html" method="get" template="<%=url%>openSearchResult.action?token=${token}&search={searchTerms}" />
+ <Url type="application/x-suggestions+json" method="get" template="<%=url%>openSearchSuggestion.action?token=${token}&search={searchTerms}" />
<moz:SearchForm><%=url%></moz:SearchForm>
</OpenSearchDescription>
Modified: trunk/bow-ui/src/main/webapp/WEB-INF/jsp/preferences.jsp
===================================================================
--- trunk/bow-ui/src/main/webapp/WEB-INF/jsp/preferences.jsp 2013-08-09 10:07:03 UTC (rev 356)
+++ trunk/bow-ui/src/main/webapp/WEB-INF/jsp/preferences.jsp 2013-09-19 09:27:16 UTC (rev 357)
@@ -25,11 +25,11 @@
<%@page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@taglib prefix="s" uri="/struts-tags" %>
-<%
+<%--
PreferenceBaseAction action = PreferenceBaseAction.getAction();
PreferenceBaseAction.DefaultPrefix defaultAction = action.getDefaultAction();
PreferenceBaseAction.DefaultPrefix defaultPrefix = action.getDefaultPrefix();
-%>
+--%>
<html xmlns:s="http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
xmlns:jsp="http://java.sun.com/JSP/Page">
@@ -110,65 +110,41 @@
<div class="formFrame fond">
<h3><s:text name="bow.preferences.siteLook"/></h3>
<br/>
- <s:form action="updateSitePref" theme="simple">
+
+ <script type="text/javascript">
+ function setRemoveIndex(removeIndex) {
+ $('input[name="removedPrefix"]').val(removeIndex);
+ document.updateSitePref.submit();
+ return false;
+ }
+ </script>
+
+ <s:form name="updateSitePref" action="updateSitePref" theme="simple">
+ <s:hidden name="removedPrefix" value="-1"/>
+
<s:text name="bow.preferences.tagsNb"/><br/>
<s:textfield name="tagsNb" labelposition="top"/><br/>
<s:text name="bow.preferences.bookmarksHomePage"/><br/>
<s:textfield name="bookmarksHomePage" labelposition="top"/><br/>
- <s:text name="bow.preferences.searchEngineUrlSuggestions"/><br/>
- <s:textfield name="searchEngineUrlSuggestions"
- labelposition="top"/><br/>
-
- <s:text name="bow.preferences.searchEngineUrlResults"/><br/>
- <s:textfield name="searchEngineUrlResults"
- size="50"
- labelposition="top"/><br/>
-
- <s:text name="bow.preference.opensearch.prefix.separator"/>
- <s:textfield name="separator" size="1" maxLength="1"/><br/>
-
<table>
<tr>
<th><s:text name="bow.preferences.opensearch.prefix"/></th>
<th><s:text name="bow.preferences.opensearch.value"/></th>
- <th><s:text name="bow.preferences.opensearch.default.prefix"/></th>
- <th><s:text name="bow.preferences.opensearch.default.action"/></th>
+ <th><s:text name="bow.preferences.searchEngineUrlSuggestions"/></th>
</tr>
+
+ <s:iterator value="searchPrefix" status="stat">
<tr>
- <td><s:text name="bow.preferences.opensearch.tag.search.prefix"/></td>
- <td><s:textfield name="tagPrefix" size="1" maxLength="1"/></td>
- <td><input type="radio" name="defaultPrefix" value="<%=PreferenceBaseAction.DefaultPrefix.TAG%>"
- <%=(defaultPrefix==PreferenceBaseAction.DefaultPrefix.TAG?"checked='true'":"")%>/></td>
- <td><input type="radio" name="defaultAction" value="<%=PreferenceBaseAction.DefaultPrefix.TAG%>"
- <%=(defaultAction==PreferenceBaseAction.DefaultPrefix.TAG?"checked='true'":"")%>/></td>
+ <td><s:textfield name="searchPrefix[%{#stat.index}].prefix" value="%{prefix}"/></td>
+ <td><s:textfield name="searchPrefix[%{#stat.index}].search" value="%{search}"/></td>
+ <td><s:textfield name="searchPrefix[%{#stat.index}].suggestion" value="%{suggestion}"/></td>
+ <td><s:submit action="removePrefix" value="X" onclick="return setRemoveIndex(%{#stat.index})"></s:submit></td>
</tr>
- <tr>
- <td><s:text name="bow.preferences.opensearch.fulltext.search.prefix"/></td>
- <td><s:textfield name="fulltextPrefix" size="1" maxLength="1"/></td>
- <td><input type="radio" name="defaultPrefix" value="<%=PreferenceBaseAction.DefaultPrefix.FULLTEXT%>"
- <%=(defaultPrefix==PreferenceBaseAction.DefaultPrefix.FULLTEXT?"checked='true'":"")%>/></td>
- <td><input type="radio" name="defaultAction" value="<%=PreferenceBaseAction.DefaultPrefix.FULLTEXT%>"
- <%=(defaultAction==PreferenceBaseAction.DefaultPrefix.FULLTEXT?"checked='true'":"")%>/></td>
- </tr>
- <tr>
- <td><s:text name="bow.preferences.opensearch.web.search.prefix"/></td>
- <td><s:textfield name="webPrefix" size="1" maxLength="1"/></td>
- <td><input type="radio" name="defaultPrefix" value="<%=PreferenceBaseAction.DefaultPrefix.WEB%>"
- <%=(defaultPrefix==PreferenceBaseAction.DefaultPrefix.WEB?"checked='true'":"")%>/></td>
- <td><input type="radio" name="defaultAction" value="<%=PreferenceBaseAction.DefaultPrefix.WEB%>"
- <%=(defaultAction==PreferenceBaseAction.DefaultPrefix.WEB?"checked='true'":"")%>/></td>
- <tr>
- <td><s:text name="bow.preferences.opensearch.alias.prefix"/></td>
- <td><s:textfield name="aliasPrefix" size="1" maxLength="1"/></td>
- <td><input type="radio" name="defaultPrefix" value="<%=PreferenceBaseAction.DefaultPrefix.ALIAS%>"
- <%=(defaultPrefix==PreferenceBaseAction.DefaultPrefix.ALIAS?"checked='true'":"")%>/></td>
- <td><input type="radio" name="defaultAction" value="<%=PreferenceBaseAction.DefaultPrefix.ALIAS%>"
- <%=(defaultAction==PreferenceBaseAction.DefaultPrefix.ALIAS?"checked='true'":"")%>/></td>
- </tr>
- </tr>
+ </s:iterator>
</table>
+ <s:submit action="addPrefix" value="add prefix"></s:submit>
<s:hidden name="update" value="site"/>
<s:submit key="bow.preferences.submit" name="submit"/>
Modified: trunk/bow-ui/src/main/webapp/WEB-INF/jsp/temporaryXml.jsp
===================================================================
--- trunk/bow-ui/src/main/webapp/WEB-INF/jsp/temporaryXml.jsp 2013-08-09 10:07:03 UTC (rev 356)
+++ trunk/bow-ui/src/main/webapp/WEB-INF/jsp/temporaryXml.jsp 2013-09-19 09:27:16 UTC (rev 357)
@@ -24,20 +24,19 @@
<%@page contentType="text/xml" pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags" %>
<%@page import="org.chorem.bow.BowConfig" %>
-
<%
String url = BowConfig.getBowUrl();
-%>
+%><?xml version="1.0" encoding="UTF-8"?>
<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/"
xmlns:moz="http://www.mozilla.org/2006/browser/search/"
xmlns:s="http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
xmlns:jsp="http://java.sun.com/JSP/Page">
<ShortName>Bow (temporary)</ShortName>
<Description>bookmarkSearch</Description>
- <InputEncoding>inputEncoding</InputEncoding>
+ <InputEncoding>UTF-8</InputEncoding>
<Image width="16" height="16" type="image/ico"><%=url%>img/bow.gif</Image>
<s:set var="token" value="%{#session.BowSession.getTemporaryToken()}" />
- <Url type="text/html" method="GET" template="<%=url%>openSearchResult.action?token=${token}&searchLine={searchTerms}" />
- <Url type="application/x-suggestions+json" method="GET" template="<%=url%>openSearchSuggestion.action?token=${token}&search={searchTerms}" />
+ <Url type="text/html" method="get" template="<%=url%>openSearchResult.action?token=${token}&search={searchTerms}" />
+ <Url type="application/x-suggestions+json" method="get" template="<%=url%>openSearchSuggestion.action?token=${token}&search={searchTerms}" />
<moz:SearchForm><%=url%></moz:SearchForm>
</OpenSearchDescription>
Modified: trunk/bow-ui/src/main/xmi/README
===================================================================
--- trunk/bow-ui/src/main/xmi/README 2013-08-09 10:07:03 UTC (rev 356)
+++ trunk/bow-ui/src/main/xmi/README 2013-09-19 09:27:16 UTC (rev 357)
@@ -1,2 +1,2 @@
bow-0.4.zargo data model for bow 0.4 and previous
-bow.zargo data model for current bow version
+bow-model.zargo data model for current bow version
Added: trunk/bow-ui/src/main/xmi/bow-model.zargo
===================================================================
(Binary files differ)
Property changes on: trunk/bow-ui/src/main/xmi/bow-model.zargo
___________________________________________________________________
Added: svn:mime-type
+ application/zip
1
0