Author: bbrossaud Date: 2010-06-01 15:24:13 +0200 (Tue, 01 Jun 2010) New Revision: 53 Url: http://chorem.org/repositories/revision/bow/53 Log: retrieve tagCloud thanks to facets Modified: trunk/src/main/java/org/chorem/bow/BookmarkActions.java trunk/src/main/java/org/chorem/bow/ControllerServlet.java trunk/src/main/webapp/home.jsp trunk/src/main/webapp/search.jsp Modified: trunk/src/main/java/org/chorem/bow/BookmarkActions.java =================================================================== --- trunk/src/main/java/org/chorem/bow/BookmarkActions.java 2010-06-01 10:55:42 UTC (rev 52) +++ trunk/src/main/java/org/chorem/bow/BookmarkActions.java 2010-06-01 13:24:13 UTC (rev 53) @@ -5,16 +5,14 @@ package org.chorem.bow; import java.util.ArrayList; -import java.util.Collection; import java.util.Date; -import java.util.HashMap; import java.util.Iterator; import java.util.List; -import java.util.Map; import java.util.Set; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.nuiton.util.StringUtil; +import org.nuiton.wikitty.FacetTopic; /** * @@ -25,8 +23,7 @@ protected String fullTextLine = ""; protected List<Bookmark> bookmarks = new ArrayList<Bookmark>(); // bookmarks which contain the search tags protected List<Bookmark> lastBookmarks = new ArrayList<Bookmark>(); - protected Map<String, Integer> tagCloud = new HashMap<String, Integer>(); // associate a tag with its frequency - // among all bookmarks + protected List<FacetTopic> tagCloud = new ArrayList<FacetTopic>(); // associate a tag with its frequency protected List<String> tagsSearch = new ArrayList<String>(); // contains the tags taped in the search field protected int tmax = -1; protected int tmin = -1; @@ -249,12 +246,28 @@ } } - public void createTagCloud() { - tagCloud.clear(); - createTagClougByBookmarks(); + public void createTagCloud(List<FacetTopic> cpy) { + setTagCloud(cpy); + deleteTagBySearch(); defineTValues(); } + public void setTagCloud(List<FacetTopic> cpy) { + if (cpy != null) { + tagCloud = new ArrayList<FacetTopic>(cpy); + } + } + + public void deleteTagBySearch() { + List<FacetTopic> save = new ArrayList<FacetTopic>(tagCloud); + for (FacetTopic topic : save) { + String name = topic.getTopicName(); + if (tagsSearch.contains(name)) { + tagCloud.remove(topic); + } + } + } + public void deleteBookmarkBySearch() { List<Bookmark> bookmarksList = new ArrayList<Bookmark>(bookmarks); for (Bookmark bookmark : bookmarksList) { @@ -276,42 +289,11 @@ } } - public void createTagClougByBookmarks() { - List<Bookmark> bookmarksList = new ArrayList<Bookmark>(bookmarks); - for (Bookmark bookmark : bookmarksList) { - addBookmarkTagsToTagCloud(bookmark); - } - } - - - /* @param bookmark user bookmark - * @return void - */ - protected void addBookmarkTagsToTagCloud(Bookmark bookmark) { - Set<String> tags = bookmark.getTags(); // bookmark tags - if (tags != null && !tags.isEmpty()) { - for (String tag : tags) { - if (!tagsSearch.contains(tag)) { // the tags cloud mustn't contained the tags taped in the search field - if (tagCloud.containsKey(tag)) { // check if it contains the tag - Integer count = tagCloud.get(tag); - ++count; - tagCloud.put(tag, count); - } else { - tagCloud.put(tag, 1); - } - } - } - } - } - protected void defineTValues() { - Collection values = tagCloud.values(); - Iterator it = values.iterator(); tmax = -1; // correspond to the most tag frequency in the tag cloud tmin = -1; // correspond to the less tag frequency in the tag cloud - int value; - while (it.hasNext()) { - value = (Integer) it.next(); + for (FacetTopic tag : tagCloud) { + int value = tag.getCount(); if (tmax < value) { // search the most tag frequancy tmax = value; } @@ -386,7 +368,7 @@ return font; } - public Map<String, Integer> getTagsCloud() { + public List<FacetTopic> getTagsCloud() { return tagCloud; } Modified: trunk/src/main/java/org/chorem/bow/ControllerServlet.java =================================================================== --- trunk/src/main/java/org/chorem/bow/ControllerServlet.java 2010-06-01 10:55:42 UTC (rev 52) +++ trunk/src/main/java/org/chorem/bow/ControllerServlet.java 2010-06-01 13:24:13 UTC (rev 53) @@ -12,8 +12,10 @@ import java.security.NoSuchAlgorithmException; import java.util.ArrayList; import java.util.Arrays; +import java.util.Collection; import java.util.Iterator; import java.util.List; +import java.util.Map; import javax.servlet.ServletException; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServlet; @@ -33,6 +35,8 @@ import org.htmlparser.util.SimpleNodeIterator; import org.nuiton.util.ArgumentsParserException; import org.nuiton.wikitty.Criteria; +import org.nuiton.wikitty.FacetTopic; +import org.nuiton.wikitty.PagedResult; import org.nuiton.wikitty.WikittyProxy; import org.nuiton.wikitty.search.Search; @@ -235,8 +239,8 @@ WikittyProxy proxy = model.getProxy(); Criteria criteria = getBookmarkListCriteriaByUser(user, searchLine); criteria = criteria.addSortDescending(Bookmark.FQ_FIELD_CLICK); - List<Bookmark> bookList = proxy.findAllByCriteria(Bookmark.class, criteria).getAll(); - BookmarkActions bookmarkActions = createBookmarkActions(request, bookList, searchLine); + PagedResult result = proxy.findAllByCriteria(Bookmark.class, criteria); + BookmarkActions bookmarkActions = createBookmarkActions(request, result, searchLine); request.setAttribute("bookmarkActions", bookmarkActions); request.setAttribute("token", token); request.getRequestDispatcher("openSearchResult.jsp").forward(request, response); @@ -302,18 +306,18 @@ Criteria baseCriteria = getBookmarkListCriteriaByUser(user, searchLine); if (type != null && baseCriteria != null && !type.isEmpty()) { WikittyProxy proxy = model.getProxy(); - List<Bookmark> bookList = null; + PagedResult result = null; if (type.equals("name")) { Criteria criteria = baseCriteria.addSortAscending(Bookmark.FQ_FIELD_DESCRIPTION); - bookList = proxy.findAllByCriteria(Bookmark.class, criteria).getAll(); + result = proxy.findAllByCriteria(Bookmark.class, criteria); } else if (type.equals("date")) { Criteria criteria = baseCriteria.addSortAscending(Bookmark.FQ_FIELD_DATE); - bookList = proxy.findAllByCriteria(Bookmark.class, criteria).getAll(); + result = proxy.findAllByCriteria(Bookmark.class, criteria); } else if (type.equals("click")) { Criteria criteria = baseCriteria.addSortAscending(Bookmark.FQ_FIELD_CLICK); - bookList = proxy.findAllByCriteria(Bookmark.class, criteria).getAll(); + result = proxy.findAllByCriteria(Bookmark.class, criteria); } - BookmarkActions bookmarkActions = createBookmarkActions(request, bookList, searchLine); + BookmarkActions bookmarkActions = createBookmarkActions(request, result, searchLine); request.setAttribute("bookmarkActions", bookmarkActions); } } @@ -325,18 +329,18 @@ Criteria baseCriteria = getBookmarkListCriteriaByUser(user, searchLine); if (type != null && baseCriteria != null && !type.isEmpty()) { WikittyProxy proxy = model.getProxy(); - List<Bookmark> bookList = null; + PagedResult result = null; if (type.equals("name")) { Criteria criteria = baseCriteria.addSortDescending(Bookmark.FQ_FIELD_DESCRIPTION); - bookList = proxy.findAllByCriteria(Bookmark.class, criteria).getAll(); + result = proxy.findAllByCriteria(Bookmark.class, criteria); } else if (type.equals("date")) { Criteria criteria = baseCriteria.addSortDescending(Bookmark.FQ_FIELD_DATE); - bookList = proxy.findAllByCriteria(Bookmark.class, criteria).getAll(); + result = proxy.findAllByCriteria(Bookmark.class, criteria); } else if (type.equals("click")) { Criteria criteria = baseCriteria.addSortDescending(Bookmark.FQ_FIELD_CLICK); - bookList = proxy.findAllByCriteria(Bookmark.class, criteria).getAll(); + result = proxy.findAllByCriteria(Bookmark.class, criteria); } - BookmarkActions bookmarkActions = createBookmarkActions(request, bookList, searchLine); + BookmarkActions bookmarkActions = createBookmarkActions(request, result, searchLine); request.setAttribute("bookmarkActions", bookmarkActions); } } @@ -507,29 +511,29 @@ WikittyProxy proxy = model.getProxy(); Criteria criteria = getBookmarkListCriteriaByUser(user, searchLine); criteria = criteria.addSortDescending(Bookmark.FQ_FIELD_CLICK); - List<Bookmark> bookList = proxy.findAllByCriteria(Bookmark.class, criteria).getAll(); // select all bookmarks by user - BookmarkActions bookmarkActions = createBookmarkActions(request, bookList, searchLine); + PagedResult result = proxy.findAllByCriteria(Bookmark.class, criteria); // select all bookmarks by user + BookmarkActions bookmarkActions = createBookmarkActions(request, result, searchLine); request.setAttribute("bookmarkActions", bookmarkActions); } - protected BookmarkActions createBookmarkActions(HttpServletRequest request, List<Bookmark> bookList, String searchLine) { + protected BookmarkActions createBookmarkActions(HttpServletRequest request, PagedResult result, String searchLine) { String fullText = request.getParameter("fullTextLine"); BookmarkActions bookmarkActions = new BookmarkActions(); + List<Bookmark> bookList = result.getAll(); if (bookList != null) { bookmarkActions.setBookmarks(bookList); } if (fullText != null && !fullText.isEmpty()) { bookmarkActions.fullText(fullText); - bookmarkActions.createTagClougByBookmarks(); - bookmarkActions.defineTValues(); } else { if (searchLine != null && searchLine.isEmpty()) { bookmarkActions.emptySearchline(); } else { bookmarkActions.addTags(searchLine); // add the new tags } - bookmarkActions.createTagCloud(); // create the tags cloud with the new informations } + List<FacetTopic> topics = result.getTopic(Bookmark.FQ_FIELD_TAGS); + bookmarkActions.createTagCloud(topics); return bookmarkActions; } @@ -647,11 +651,11 @@ Criteria criteria = getBookmarkListCriteriaByUser(user, null); if (criteria != null) { Criteria sortCriteria = criteria.addSortDescending(Bookmark.FQ_FIELD_CLICK); - List<Bookmark> bookList = proxy.findAllByCriteria(Bookmark.class, sortCriteria).getAll(); // select all bookmarks by user + PagedResult result = proxy.findAllByCriteria(Bookmark.class, sortCriteria); // select all bookmarks by user sortCriteria = criteria.addSortDescending(Bookmark.FQ_FIELD_DATE).setEndIndex(10); List<Bookmark> lastBookmarks = proxy.findAllByCriteria(Bookmark.class, sortCriteria).getAll(); - BookmarkActions bookmarkActions = createBookmarkActions(request, bookList, null); - bookList = bookmarkActions.getBookmarks(); + BookmarkActions bookmarkActions = createBookmarkActions(request, result, null); + List<Bookmark> bookList = bookmarkActions.getBookmarks(); if (bookList.size() > 10) { bookList = bookmarkActions.getBookmarks().subList(0, 10); bookmarkActions.setBookmarks(bookList); @@ -767,9 +771,9 @@ protected void actionFullText(HttpServletRequest request, User user) { WikittyProxy proxy = model.getProxy(); - Criteria criteria = Search.query().eq(Bookmark.FQ_FIELD_EMAIL, user.getEmail()).criteria(); - List<Bookmark> bookList = proxy.findAllByCriteria(Bookmark.class, criteria).getAll(); - BookmarkActions bookmarkActions = createBookmarkActions(request, bookList, null); + Criteria criteria = getBookmarkListCriteriaByUser(user, null); + PagedResult result = proxy.findAllByCriteria(Bookmark.class, criteria); + BookmarkActions bookmarkActions = createBookmarkActions(request, result, null); request.setAttribute("bookmarkActions", bookmarkActions); } @@ -793,10 +797,11 @@ if (searchLine != null && !searchLine.isEmpty()) { String[] words = searchLine.split("\\s+"); // put the tags in an array List<String> tags = new ArrayList<String>(Arrays.asList(words)); - log.debug(tags.size()); - criteria = Search.query().eq(Bookmark.FQ_FIELD_EMAIL, user.getEmail()).eq(Bookmark.FQ_FIELD_TAGS, tags).criteria(); + criteria = Search.query().eq(Bookmark.FQ_FIELD_EMAIL, user.getEmail()). + eq(Bookmark.FQ_FIELD_TAGS, tags).criteria().addFacetField(Bookmark.FQ_FIELD_TAGS); } else { - criteria = Search.query().eq(Bookmark.FQ_FIELD_EMAIL, user.getEmail()).criteria(); + criteria = Search.query().eq(Bookmark.FQ_FIELD_EMAIL, user.getEmail()). + criteria().addFacetField(Bookmark.FQ_FIELD_TAGS); } } return criteria; Modified: trunk/src/main/webapp/home.jsp =================================================================== --- trunk/src/main/webapp/home.jsp 2010-06-01 10:55:42 UTC (rev 52) +++ trunk/src/main/webapp/home.jsp 2010-06-01 13:24:13 UTC (rev 53) @@ -9,6 +9,7 @@ <%@page import="java.util.ArrayList" %> <%@page import="java.util.List" %> <%@page import="org.chorem.bow.TokenActions" %> +<%@page import="org.nuiton.wikitty.FacetTopic" %> <% TokenActions tokenActions = (TokenActions) session.getAttribute("tokenActions"); @@ -227,13 +228,13 @@ <div class="menu"> <div class="tagCloud"> <% if (bookmarkActions != null) { - Map<String, Integer> tagsCloud = bookmarkActions.getTagsCloud(); - Set<String> tags = tagsCloud.keySet(); - for (String tag : tags) { - int value = tagsCloud.get(tag); + List<FacetTopic> tagCloud = bookmarkActions.getTagsCloud(); + for (FacetTopic tag : tagCloud) { + int value = tag.getCount(); + String tagName = tag.getTopicName(); int font = bookmarkActions.getFont(value); %> - <a href="bow?action=search&addTag=<%=tag%>" title="<%=value%> results" class="tag" style="font-size: <%=font%>px;"><%=tag%></a> + <a href="bow?action=search&addTag=<%=tagName%>" title="<%=value%> results" class="tag" style="font-size: <%=font%>px;"><%=tagName%></a> <% } } Modified: trunk/src/main/webapp/search.jsp =================================================================== --- trunk/src/main/webapp/search.jsp 2010-06-01 10:55:42 UTC (rev 52) +++ trunk/src/main/webapp/search.jsp 2010-06-01 13:24:13 UTC (rev 53) @@ -9,6 +9,7 @@ <%@page import="java.util.ArrayList" %> <%@page import="java.util.List" %> <%@page import="org.chorem.bow.TokenActions" %> +<%@page import="org.nuiton.wikitty.FacetTopic" %> <% TokenActions tokenActions = (TokenActions) session.getAttribute("tokenActions"); @@ -161,13 +162,13 @@ <div class="menu"> <div class="tagCloud"> <% if (bookmarkActions != null) { - Map<String, Integer> tagsCloud = bookmarkActions.getTagsCloud(); - Set<String> tags = tagsCloud.keySet(); - for (String tag : tags) { - int value = tagsCloud.get(tag); + List<FacetTopic> tagCloud = bookmarkActions.getTagsCloud(); + for (FacetTopic tag : tagCloud) { + int value = tag.getCount(); + String tagName = tag.getTopicName(); int font = bookmarkActions.getFont(value); %> - <a href="bow?action=search&addTag=<%=tag%>&searchLine=<%=searchLine%>" title="<%=value%> results" class="tag" style="font-size: <%=font%>px;"><%=tag%></a> + <a href="bow?action=search&addTag=<%=tagName%>&searchLine=<%=searchLine%>" title="<%=value%> results" class="tag" style="font-size: <%=font%>px;"><%=tagName%></a> <% } }
participants (1)
-
bbrossaudï¼ users.chorem.org