r322 - in trunk/bow-ui/src/main: java/org/chorem/bow java/org/chorem/bow/action java/org/chorem/bow/action/bookmark resources/i18n webapp/WEB-INF/jsp webapp/WEB-INF/jsp/inc
Author: bpoussin Date: 2011-08-22 13:23:47 +0200 (Mon, 22 Aug 2011) New Revision: 322 Url: http://chorem.org/repositories/revision/bow/322 Log: Evolution #438: Refactore source code and simplify all - ajout de la possibilite d'avancer dans les bookmarks retrouve - conservation de l'ordre de tri choisi par l'utilisateur on va dire que c'est fini pour le refactore maintenant :) Il faudra faire d'autre ticket :) Modified: trunk/bow-ui/src/main/java/org/chorem/bow/BookmarkUtils.java trunk/bow-ui/src/main/java/org/chorem/bow/BowSearchResult.java trunk/bow-ui/src/main/java/org/chorem/bow/action/BowBaseAction.java trunk/bow-ui/src/main/java/org/chorem/bow/action/bookmark/HomeAction.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/webapp/WEB-INF/jsp/home.jsp trunk/bow-ui/src/main/webapp/WEB-INF/jsp/inc/bookmark.jsp trunk/bow-ui/src/main/webapp/WEB-INF/jsp/inc/header.jsp trunk/bow-ui/src/main/webapp/WEB-INF/jsp/inc/rightMenu.jsp trunk/bow-ui/src/main/webapp/WEB-INF/jsp/inc/tagsCloud.jsp Modified: trunk/bow-ui/src/main/java/org/chorem/bow/BookmarkUtils.java =================================================================== --- trunk/bow-ui/src/main/java/org/chorem/bow/BookmarkUtils.java 2011-08-22 10:13:04 UTC (rev 321) +++ trunk/bow-ui/src/main/java/org/chorem/bow/BookmarkUtils.java 2011-08-22 11:23:47 UTC (rev 322) @@ -56,8 +56,8 @@ return search; } - static public Criteria getBookmarkListCriteriaByUser( - BowUser user, String tagLine, String fullTextLine, String order) { + static public Criteria getBookmarkListCriteriaByUser(BowUser user, + String tagLine, String fullTextLine, String order, int first) { Search search = Search.query(); BookmarkUtils.addEqUser(search, user.getWikittyId()); @@ -75,8 +75,10 @@ // on fixe le nombre de tag max souhaite par l'utilisateur criteria.setFacetLimit(user.getTags()); + criteria.setFirstIndex(first); + // on fixe le nombre max d'element a ce qu'a defini l'utilisateur - criteria.setEndIndex(user.getBookmarks()); + criteria.setEndIndex(first + user.getBookmarks() - 1); boolean sortOrderAscending = StringUtils.startsWith(order, "asc"); String sortOrderField = null; Modified: trunk/bow-ui/src/main/java/org/chorem/bow/BowSearchResult.java =================================================================== --- trunk/bow-ui/src/main/java/org/chorem/bow/BowSearchResult.java 2011-08-22 10:13:04 UTC (rev 321) +++ trunk/bow-ui/src/main/java/org/chorem/bow/BowSearchResult.java 2011-08-22 11:23:47 UTC (rev 322) @@ -54,12 +54,6 @@ private static final Log log = LogFactory.getLog(BowSearchResult.class); - /** la ligne contenant les tags a rechercher */ - protected String tagLine; - /** la ligne contenant le fulltext a recherche */ - protected String fullTextLine; - /** l'ordre souhaite pour l'affichage */ - protected String order; /** nombre total de bookmark trouve */ protected int bookmarkCount = 0; protected List<BowBookmark> bookmarks; @@ -74,23 +68,9 @@ * @param session la session de l'utilisateur sur lequel on peut recuperer * le proxy et les preferences * @param tagLine (optionel) le liste des tags a rechercher - * @param fullTextLine (optionel) la chaine fulltext a rechercher - * @param order (optionnel) l'ordre d'affichage du resultat */ - public BowSearchResult(BowSession session, - String tagLine, String fullTextLine, String order) { - this.tagLine = StringUtils.defaultString(tagLine); - this.fullTextLine = StringUtils.defaultString(fullTextLine); - this.order = StringUtils.defaultString(order); + public BowSearchResult(PagedResult<BowBookmark> result, String tagLine) { - BowUser user = session.getUser(); - BowProxy proxy = session.getProxy(); - - Criteria criteria = BookmarkUtils.getBookmarkListCriteriaByUser( - user, tagLine, fullTextLine, order); - PagedResult<BowBookmark> result = - proxy.findAllByCriteria(BowBookmark.class, criteria); - bookmarkCount = result.getNumFound(); if (log.isDebugEnabled()) { log.debug(String.format("Find %s items, used %s", @@ -104,10 +84,10 @@ log.debug(String.format("There are %s tag in cloud", CollectionUtils.isEmpty(topics)?0:topics.size())); } - setTagCloud(topics); + setTagCloud(topics, tagLine); } - public void setTagCloud(List<FacetTopic> cpy) { + protected void setTagCloud(List<FacetTopic> cpy, String excludeTag) { tagsCloud = new ArrayList<FacetTopic>(); if (cpy != null) { tagsCloud.addAll(cpy); @@ -115,7 +95,7 @@ // on ne met pas dans le cloud les tags qui ont servi pour la recherche List<FacetTopic> save = new ArrayList<FacetTopic>(tagsCloud); // on recupere les tags dans un set pour optimiser la recherche - Set<String> tagsSearch = BowUtils.getWords(gettagLine()); + Set<String> tagsSearch = BowUtils.getWords(excludeTag); for(Iterator<FacetTopic> i=tagsCloud.iterator(); i.hasNext();) { FacetTopic topic = i.next(); @@ -143,10 +123,6 @@ } } - public String gettagLine() { - return tagLine; - } - public int getFont(int ti) { int font = 1; if (tmax > tmin) { @@ -162,15 +138,11 @@ return tagsCloud; } - public Set<String> getTagsSearch() { - return BowUtils.getWords(gettagLine()); - } - public List<BowBookmark> getBookmarks() { return bookmarks; } - public void setBookmarks(List<BowBookmark> bookmarks) { + protected void setBookmarks(List<BowBookmark> bookmarks) { this.bookmarks = new ArrayList<BowBookmark>(); if (bookmarks != null) { this.bookmarks.addAll(bookmarks); @@ -185,16 +157,8 @@ return tmax; } - public String getFullTextLine() { - return fullTextLine; - } - public int getBookmarkCount() { return bookmarkCount; } - public String getOrder() { - return order; - } - } 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 2011-08-22 10:13:04 UTC (rev 321) +++ trunk/bow-ui/src/main/java/org/chorem/bow/action/BowBaseAction.java 2011-08-22 11:23:47 UTC (rev 322) @@ -50,6 +50,7 @@ public static final String UNTRANSLATED_MARKER = "???"; + /** Liste des valeurs de tri possible */ // perhaps use enumeration ? final static protected List<String> possibleOrder = Arrays.asList( "ascName", "descName", "ascClick", "descClick", "ascDate", "descDate"); @@ -58,11 +59,29 @@ return possibleOrder; } + protected Map<String, Object> session; + /** + * Configuration, default null for lazy loading + */ protected BowConfig config = null; - protected Map<String, Object> session; + /** + * Les tags a recherche separer par un espace + */ protected String tagLine; + /** + * La ligne de recherche fulltext + */ protected String fullTextLine; + /** + * l'ordre d'affichage des resultats + */ protected String order; + /** + * indice du 1er element a recuperer, on en recupere le nombre defini + * dans les preferences utilisateur. Par defaut on prend a partir du 1er + * donc l'indice 0. + */ + protected int first = 0; public BowConfig getConfig() { if (config == null) { @@ -121,5 +140,13 @@ public void setOrder(String order) { this.order = order; } + + public int getFirst() { + return first; + } + + public void setFirst(int first) { + this.first = first; + } } \ No newline at end of file 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 2011-08-22 10:13:04 UTC (rev 321) +++ trunk/bow-ui/src/main/java/org/chorem/bow/action/bookmark/HomeAction.java 2011-08-22 11:23:47 UTC (rev 322) @@ -27,11 +27,17 @@ 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.BowProxy; import org.chorem.bow.BowSearchResult; import org.chorem.bow.BowSession; +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; /** * Prepare l'affichage de la page d'accueil @@ -87,7 +93,16 @@ } BowSession session = getBowSession(); - searchResult = new BowSearchResult(session, tagLine, fullTextLine, order); + + BowUser user = session.getUser(); + BowProxy proxy = session.getProxy(); + + Criteria criteria = BookmarkUtils.getBookmarkListCriteriaByUser( + user, tagLine, fullTextLine, order, first); + PagedResult<BowBookmark> result = + proxy.findAllByCriteria(BowBookmark.class, criteria); + + searchResult = new BowSearchResult(result, tagLine); } /** 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 2011-08-22 10:13:04 UTC (rev 321) +++ trunk/bow-ui/src/main/resources/i18n/bow-ui_en_GB.properties 2011-08-22 11:23:47 UTC (rev 322) @@ -126,14 +126,15 @@ bow.rightMenu.bookmark.temporaryLinkDescription=Add this link to your favourites to bookmark others in the future. This link is only available while you are connected on the site\! bow.rightMenu.chromiumExtension=Chromium extension bow.rightMenu.extensions=Extensions -bow.rightMenu.externSearchEngine=Web search +bow.rightMenu.externSearchEngine=Web bow.rightMenu.find.submit=Find -bow.rightMenu.fullTextSearch=Full text search +bow.rightMenu.fullTextSearch=Full text bow.rightMenu.help=Help bow.rightMenu.import.submit=Import bow.rightMenu.importBookmarks=Import bookmarks bow.rightMenu.logout=Logout -bow.rightMenu.search.tags=Search by tags +bow.rightMenu.search=Search +bow.rightMenu.search.tags=by tags bow.rightMenu.token.permanent=Permanent token id bow.rightMenu.token.temporary=Session token id bow.search.ascclick=Asc. clicks nb 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 2011-08-22 10:13:04 UTC (rev 321) +++ trunk/bow-ui/src/main/resources/i18n/bow-ui_fr_FR.properties 2011-08-22 11:23:47 UTC (rev 322) @@ -126,14 +126,15 @@ 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=Recherche Web +bow.rightMenu.externSearchEngine=Web bow.rightMenu.find.submit=Rechercher -bow.rightMenu.fullTextSearch=Recherche full text +bow.rightMenu.fullTextSearch=full text bow.rightMenu.help=Aide bow.rightMenu.import.submit=Importer bow.rightMenu.importBookmarks=Importer des marque-pages bow.rightMenu.logout=D\u00E9connexion -bow.rightMenu.search.tags=Recherche par tags +bow.rightMenu.search=Recherche +bow.rightMenu.search.tags=par tags bow.rightMenu.token.permanent=Token permanent bow.rightMenu.token.temporary=Token session bow.search.ascclick=Nb clics asc. Modified: trunk/bow-ui/src/main/webapp/WEB-INF/jsp/home.jsp =================================================================== --- trunk/bow-ui/src/main/webapp/WEB-INF/jsp/home.jsp 2011-08-22 10:13:04 UTC (rev 321) +++ trunk/bow-ui/src/main/webapp/WEB-INF/jsp/home.jsp 2011-08-22 11:23:47 UTC (rev 322) @@ -37,15 +37,35 @@ <body> <div class="menu clearfix"> <h2> - <s:text name="bow.search.found" /> - <s:property value="%{searchResult.bookmarkCount}"/> + <s:if test="first - bowSession.user.bookmarks >= 0"> + <s:url var="prev" action="home"> + <s:param name="tagLine" value="%{tagLine}" /> + <s:param name="fullTextLine" value="%{fullTextLine}" /> + <s:param name="order" value="%{order}"/> + <s:param name="first" value="%{first - bowSession.user.bookmarks}"/> + </s:url> + <s:a href="%{prev}"><<</s:a> + </s:if> + + <s:property value="%{first+1}"/>-<s:property value="%{first + bowSession.user.bookmarks}"/>/<s:property value="%{searchResult.bookmarkCount}"/> + + <s:if test="first + bowSession.user.bookmarks < searchResult.bookmarkCount"> + <s:url var="next" action="home"> + <s:param name="tagLine" value="%{tagLine}" /> + <s:param name="fullTextLine" value="%{fullTextLine}" /> + <s:param name="order" value="%{order}"/> + <s:param name="first" value="%{first + bowSession.user.bookmarks}"/> + </s:url> + <s:a href="%{next}">>></s:a> + </s:if> </h2> <s:set name="bookmarksToDelete" value="%{searchResult.bookmarkCount}" /> <s:if test="%{#bookmarksToDelete > 0}"> <s:url var="deleteSearchResults" action="deleteSearchResults" escapeAmp="false"> - <s:param name="tagLine"><s:property value="searchResult.tagLine" /></s:param> - <s:param name="fullTextLine"><s:property value="searchResult.fullTextLine" /></s:param> + <s:param name="tagLine" value="%{tagLine}" /> + <s:param name="fullTextLine" value="%{fullTextLine}" /> + <s:param name="order" value="%{order}"/> </s:url> <s:a id="deleteSearchResultsButton" title="delete all" href="" onclick="deleteConfirmation('%{deleteSearchResults}', %{#bookmarksToDelete}); return(false);"></s:a> </s:if> @@ -53,8 +73,9 @@ <label for="order"><s:text name="bow.search.orderby" /></label> <s:select id="order" name="order" list="possibleOrder"/> <s:submit key="bow.search.submit" name="submit" /> - <s:hidden name="tagLine" value="%{searchResult.tagLine}" /> - <s:hidden name="fullTextLine" value="%{searchResult.fullTextLine}" /> + <s:hidden name="tagLine" value="%{tagLine}" /> + <s:hidden name="fullTextLine" value="%{fullTextLine}" /> + <s:hidden name="first" value="%{first}" /> </s:form> </div> <div class="content"> @@ -64,10 +85,7 @@ <s:else> <s:iterator value="searchResult.bookmarks" var="bookmark"> <s:set name="bookmark" value="bookmark"/> - <jsp:include page="inc/bookmark.jsp" flush="true"> - <jsp:param name="tagLine" value="%{searchResult.tagLine}" /> - <jsp:param name="fullTextLine" value="%{searchResult.fullTextLine}" /> - </jsp:include> + <jsp:include page="inc/bookmark.jsp" flush="true"/> </s:iterator> </s:else> </div> Modified: trunk/bow-ui/src/main/webapp/WEB-INF/jsp/inc/bookmark.jsp =================================================================== --- trunk/bow-ui/src/main/webapp/WEB-INF/jsp/inc/bookmark.jsp 2011-08-22 10:13:04 UTC (rev 321) +++ trunk/bow-ui/src/main/webapp/WEB-INF/jsp/inc/bookmark.jsp 2011-08-22 11:23:47 UTC (rev 322) @@ -42,16 +42,20 @@ </s:a> </s:if> <s:url var="editBookmark" action="editBookmark" escapeAmp="true"> - <s:param name="id"><s:property value="%{#bookmark.wikittyId}" /></s:param> - <s:param name="tagLine"><s:property value="%{tagLine}" /></s:param> - <s:param name="fullTextLine"><s:property value="%{fullTextLine}" /></s:param> + <s:param name="id" value="%{#bookmark.wikittyId}" /> + <s:param name="tagLine" value="%{tagLine}" /> + <s:param name="fullTextLine" value="%{fullTextLine}" /> + <s:param name="order" value="%{order}"/> + <s:param name="first" value="%{first}"/> </s:url> <s:a cssClass="edit" href="%{editBookmark}"/> <s:url var="removeBookmark" action="removeBookmark" escapeAmp="true"> - <s:param name="bookmarkId"><s:property value="%{#bookmark.wikittyId}" /></s:param> - <s:param name="tagLine"><s:property value="%{tagLine}" /></s:param> - <s:param name="fullTextLine"><s:property value="%{fullTextLine}" /></s:param> + <s:param name="bookmarkId" value="%{#bookmark.wikittyId}" /> + <s:param name="tagLine" value="%{tagLine}" /> + <s:param name="fullTextLine" value="%{fullTextLine}" /> + <s:param name="order" value="%{order}"/> + <s:param name="first" value="%{first}"/> </s:url> <s:a cssClass="supprim" href="%{removeBookmark}" onclick="return deleteConfirmation('%{#removeBookmark}','%{#bookmark.link}');"></s:a> @@ -71,9 +75,11 @@ <strong><s:text name="bow.bookmark.tags" /> :</strong> <s:iterator value="#bookmark.labels" var="tag"> <s:url var="search" action="home"> + <s:param name="addTag" value="%{#tag}"/> <s:param name="tagLine" value="%{tagLine}"/> - <s:param name="addTag" value="%{#tag}"/> <s:param name="fullTextLine" value="%{fullTextLine}"/> + <s:param name="order" value="%{order}"/> + <%-- on ne met pas 'first', il faut repartir de 0 --%> </s:url> <s:a href="%{search}" cssClass="tag"><s:property value="%{#tag}"/></s:a> </s:iterator> 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 2011-08-22 10:13:04 UTC (rev 321) +++ trunk/bow-ui/src/main/webapp/WEB-INF/jsp/inc/header.jsp 2011-08-22 11:23:47 UTC (rev 322) @@ -29,7 +29,7 @@ <div> <s:if test="%{#session.BowSession.user != null}"> <s:url var="homeToken" action="home"> - <s:param name="token"><s:property value="%{#session.BowSession.getPermanentToken()}" /></s:param> + <s:param name="token" value="%{#session.BowSession.getPermanentToken()}" /> </s:url> <s:a cssClass="logo" href="%{homeToken}">bow</s:a> </s:if> @@ -39,16 +39,18 @@ </div> <s:if test="%{#session.BowSession.user != null}"> <div class="recherche right"> - <h3>Recherche</h3> + <h3><s:text name="bow.rightMenu.search" /></h3> <div class="input"> <s:form action="home" theme="simple"> <s:textfield name="tagLine" labelSeparator="" /> + <s:hidden name="order" value="%{order}"/> <s:submit key="bow.rightMenu.search.tags" name="submit" /> </s:form> </div> <div class="input"> <s:form action="home" theme="simple"> <s:textfield name="fullTextLine" labelSeparator="" /> + <s:hidden name="order" value="%{order}"/> <s:submit key="bow.rightMenu.fullTextSearch" name="submit" /> </s:form> </div> Modified: trunk/bow-ui/src/main/webapp/WEB-INF/jsp/inc/rightMenu.jsp =================================================================== --- trunk/bow-ui/src/main/webapp/WEB-INF/jsp/inc/rightMenu.jsp 2011-08-22 10:13:04 UTC (rev 321) +++ trunk/bow-ui/src/main/webapp/WEB-INF/jsp/inc/rightMenu.jsp 2011-08-22 11:23:47 UTC (rev 322) @@ -54,6 +54,8 @@ <s:url var="editBookmark" action="editBookmark" escapeAmp="true"> <s:param name="tagLine"><s:property value="%{tagLine}" /></s:param> <s:param name="fullTextLine"><s:property value="%{fullTextLine}" /></s:param> + <s:param name="order" value="%{order}"/> + <s:param name="first" value="%{first}"/> </s:url> <s:a href="%{editBookmark}"> <s:text name="bow.rightMenu.addUrl.link" /> @@ -61,10 +63,7 @@ </li> </ul> <!--div id="nuage"--> - <jsp:include page="tagsCloud.jsp" flush="true"> - <jsp:param name="tagLine" value="%{tagLine}" /> - <jsp:param name="fullTextLine" value="%{fullTextLine}"/> - </jsp:include> + <jsp:include page="tagsCloud.jsp" flush="true"/> <!--/div--> <div class="colonnebas"> <img src="img/piedmenu.jpg" width="401" height="77" alt="Pied de menu" /> Modified: trunk/bow-ui/src/main/webapp/WEB-INF/jsp/inc/tagsCloud.jsp =================================================================== --- trunk/bow-ui/src/main/webapp/WEB-INF/jsp/inc/tagsCloud.jsp 2011-08-22 10:13:04 UTC (rev 321) +++ trunk/bow-ui/src/main/webapp/WEB-INF/jsp/inc/tagsCloud.jsp 2011-08-22 11:23:47 UTC (rev 322) @@ -29,9 +29,11 @@ xmlns:jsp="http://java.sun.com/JSP/Page"> <s:iterator value="%{searchResult.tagsCloud}" status="tagStatus" var="tag"> <s:url var="search" action="home" escapeAmp="true"> + <s:param name="addTag" value="%{#tag.topicName}"/> <s:param name="tagLine" value="%{tagLine}"/> - <s:param name="addTag" value="%{#tag.topicName}"/> <s:param name="fullTextLine" value="%{fullTextLine}"/> + <s:param name="order" value="%{order}"/> + <%-- on ne met pas 'first', il faut repartir de 0 --%> </s:url> <!-- --> <s:a href="%{search}" title="%{#tag.count} results" cssClass="tag"
participants (1)
-
bpoussin@users.chorem.org