Author: bpoussin Date: 2011-02-11 18:48:26 +0100 (Fri, 11 Feb 2011) New Revision: 188 Url: http://chorem.org/repositories/revision/bow/188 Log: Evolution #258: Use wikitty 3.0 - refactore to use BowSession - refactire to use one Proxy by user (many other refactoring is needed :() Added: trunk/src/main/java/org/chorem/bow/BookmarkUtils.java trunk/src/main/java/org/chorem/bow/BowSession.java Removed: trunk/src/main/java/org/chorem/bow/BowBookmark.java trunk/src/main/java/org/chorem/bow/TokenActions.java trunk/src/main/resources/wikitty-jdbc-config.properties trunk/src/main/webapp/jsp/inc/bookmarkTop.jsp Modified: trunk/pom.xml trunk/src/main/java/org/chorem/bow/AliasServlet.java trunk/src/main/java/org/chorem/bow/BookmarkActions.java trunk/src/main/java/org/chorem/bow/BowConfig.java trunk/src/main/java/org/chorem/bow/BowInit.java trunk/src/main/java/org/chorem/bow/BowProxy.java trunk/src/main/java/org/chorem/bow/BowSearch.java trunk/src/main/java/org/chorem/bow/BowUtils.java trunk/src/main/java/org/chorem/bow/OpenSearchActions.java trunk/src/main/java/org/chorem/bow/SuggestionsComparator.java trunk/src/main/java/org/chorem/bow/UserMigration.java trunk/src/main/java/org/chorem/bow/action/AddClickAction.java trunk/src/main/java/org/chorem/bow/action/AddUrlAction.java trunk/src/main/java/org/chorem/bow/action/BowBaseAction.java trunk/src/main/java/org/chorem/bow/action/DeleteImportAction.java trunk/src/main/java/org/chorem/bow/action/DeleteSearchResultsAction.java trunk/src/main/java/org/chorem/bow/action/DeleteTagAction.java trunk/src/main/java/org/chorem/bow/action/EditBookmarkAction.java trunk/src/main/java/org/chorem/bow/action/ExportBookmarksAction.java trunk/src/main/java/org/chorem/bow/action/ForgotPasswordAction.java trunk/src/main/java/org/chorem/bow/action/FullTextSearchAction.java trunk/src/main/java/org/chorem/bow/action/GenerateTokenAction.java trunk/src/main/java/org/chorem/bow/action/HomeAction.java trunk/src/main/java/org/chorem/bow/action/ImportBookmarksAction.java trunk/src/main/java/org/chorem/bow/action/LoginAction.java trunk/src/main/java/org/chorem/bow/action/LogoutAction.java trunk/src/main/java/org/chorem/bow/action/ModifyBookmarkAction.java trunk/src/main/java/org/chorem/bow/action/OpenSearchResultAction.java trunk/src/main/java/org/chorem/bow/action/OpenSearchSuggestionAction.java trunk/src/main/java/org/chorem/bow/action/OrderAction.java trunk/src/main/java/org/chorem/bow/action/PreferencesAction.java trunk/src/main/java/org/chorem/bow/action/ReIndexationAction.java trunk/src/main/java/org/chorem/bow/action/RegisterAction.java trunk/src/main/java/org/chorem/bow/action/RemoveBookmarkAction.java trunk/src/main/java/org/chorem/bow/action/SearchAction.java trunk/src/main/java/org/chorem/bow/interceptor/AldyLoggedInterceptor.java trunk/src/main/java/org/chorem/bow/interceptor/LoginInterceptor.java trunk/src/main/resources/bow.properties trunk/src/main/webapp/WEB-INF/decorators/main.jsp trunk/src/main/webapp/WEB-INF/web.xml trunk/src/main/webapp/index.jsp trunk/src/main/webapp/jsp/admin.jsp trunk/src/main/webapp/jsp/error.jsp trunk/src/main/webapp/jsp/home.jsp trunk/src/main/webapp/jsp/inc/footer.jsp trunk/src/main/webapp/jsp/inc/header.jsp trunk/src/main/webapp/jsp/inc/rightMenu.jsp trunk/src/main/webapp/jsp/inc/tagsCloud.jsp trunk/src/main/webapp/jsp/login.jsp trunk/src/main/webapp/jsp/permanentXml.jsp trunk/src/main/webapp/jsp/preferences.jsp trunk/src/main/webapp/jsp/search.jsp trunk/src/main/webapp/jsp/suggestions.jsp trunk/src/main/webapp/jsp/temporaryXml.jsp trunk/src/main/xmi/bow.zargo Modified: trunk/pom.xml =================================================================== --- trunk/pom.xml 2011-02-11 17:31:09 UTC (rev 187) +++ trunk/pom.xml 2011-02-11 17:48:26 UTC (rev 188) @@ -57,6 +57,12 @@ </dependency> <dependency> + <groupId>org.nuiton.wikitty</groupId> + <artifactId>wikitty-solr-impl</artifactId> + <version>${wikittyVersion}</version> + </dependency> + + <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>${slf4jVersion}</version> @@ -113,7 +119,6 @@ <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> - <version>3.8.1</version> <scope>test</scope> </dependency> @@ -168,9 +173,9 @@ <platform>chorem.org</platform> <projectId>bow</projectId> - <nuitonUtilsVersion>1.4.2</nuitonUtilsVersion> - <nuitonI18nVersion>2.0</nuitonI18nVersion> - <wikittyVersion>2.0</wikittyVersion> + <nuitonUtilsVersion>2.0</nuitonUtilsVersion> + <nuitonI18nVersion>2.3</nuitonI18nVersion> + <wikittyVersion>3.0.4-SNAPSHOT</wikittyVersion> <slf4jVersion>1.6.1</slf4jVersion> <struts2.version>2.1.8.1</struts2.version> @@ -214,20 +219,19 @@ <plugin> <groupId>org.nuiton.eugene</groupId> <artifactId>maven-eugene-plugin</artifactId> - <version>2.1</version> +<!-- <version>2.1</version> --> <executions> <execution> <id>api generator</id> - <phase>process-sources</phase> + <phase>generate-sources</phase> +<!-- <phase>process-sources</phase> --> <configuration> <inputs> <input>zargo</input> </inputs> - <resolver>org.nuiton.util.FasterCachedResourceResolver</resolver> - <templates>org.nuiton.wikitty.generator.WikittyMetaGenerator - </templates> - <inputs>zargo</inputs> +<!-- <resolver>org.nuiton.util.FasterCachedResourceResolver</resolver> --> + <templates>org.nuiton.wikitty.generator.WikittyMetaGenerator</templates> <fullPackagePath>org.chorem.bow</fullPackagePath> <generatedPackages>org.chorem.bow</generatedPackages> </configuration> @@ -249,6 +253,7 @@ <plugin> <groupId>org.nuiton.i18n</groupId> <artifactId>maven-i18n-plugin</artifactId> + <version>${nuitonI18nVersion}</version> <executions> <execution> <id>scan-java-sources</id> Modified: trunk/src/main/java/org/chorem/bow/AliasServlet.java =================================================================== --- trunk/src/main/java/org/chorem/bow/AliasServlet.java 2011-02-11 17:31:09 UTC (rev 187) +++ trunk/src/main/java/org/chorem/bow/AliasServlet.java 2011-02-11 17:48:26 UTC (rev 188) @@ -30,7 +30,7 @@ import javax.servlet.http.HttpServletResponse; import org.apache.commons.lang.StringUtils; -import org.nuiton.wikitty.Criteria; +import org.nuiton.wikitty.search.Criteria; import org.nuiton.wikitty.WikittyProxy; import org.nuiton.wikitty.search.Search; @@ -66,8 +66,9 @@ if (!StringUtils.isEmpty(alias)) { // remove first '/' alias = alias.substring(1); - WikittyProxy proxy = BowProxy.getInstance(); - Criteria criteria = Search.query().eq(Bookmark.FQ_FIELD_ALIAS, alias).criteria(); + BowSession session = BowSession.getBowSession(request); + WikittyProxy proxy = session.getProxy(); + Criteria criteria = Search.query().eq(Bookmark.FQ_FIELD_BOOKMARK_ALIAS, alias).criteria(); Bookmark bookmark = proxy.findByCriteria(Bookmark.class, criteria); if (bookmark != null) { String redirect = bookmark.getLink(); Modified: trunk/src/main/java/org/chorem/bow/BookmarkActions.java =================================================================== --- trunk/src/main/java/org/chorem/bow/BookmarkActions.java 2011-02-11 17:31:09 UTC (rev 187) +++ trunk/src/main/java/org/chorem/bow/BookmarkActions.java 2011-02-11 17:48:26 UTC (rev 188) @@ -24,13 +24,14 @@ package org.chorem.bow; import java.util.ArrayList; +import java.util.Arrays; import java.util.Date; import java.util.List; import java.util.Set; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.nuiton.util.StringUtil; -import org.nuiton.wikitty.FacetTopic; +import org.nuiton.wikitty.search.FacetTopic; /** * @@ -46,227 +47,6 @@ protected int tmax = -1; protected int tmin = -1; - /* @param html String html - * @param name String name - * @param user User user - * @return Bookmark the bookmark filled - */ - public static Bookmark createBookmarkFromHtml(String html, String name, User user) { - String link = getUrlFromHtml(html); - String tags = getTagsFromHtml(html); - Date date = getDateFromHtml(html); - Bookmark bookmark = createBookmark(link, name, tags, user, null, date); - return bookmark; - } - - /* @param html String html - * @return Date from the html - */ - public static Date getDateFromHtml(String html) { - Date date = null; - if (html != null) { - Pattern p = Pattern.compile("ADD_DATE=\"([^\"]*)\""); - Matcher m = p.matcher(html); - if (m.find()) { - String str = m.group(1); - if (str != null && !str.isEmpty()) { - long time = Long.valueOf(str) * 1000; // the date in ms - date = new Date(time); - } - } - } - return date; - } - - /* @param bookmarks List<Bookmarks> bookmarks - * @return String the html file - */ - public static String getExportHtmlBookmark(List<Bookmark> bookmarks) { - String export; - export = "<!DOCTYPE NETSCAPE-Bookmark-file-1>\n" - + "<META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=UTF-8\">\n" - + "<DL><p>\n"; - if (bookmarks != null) { - for (Bookmark bookmark : bookmarks) { - export += "<DT><A HREF=\""; - export += bookmark.getLink() + "\" "; - Date date = bookmark.getDate(); - if (date != null) { - long milli = date.getTime(); - String time = String.valueOf(milli / 1000); - export += "ADD_DATE=\"" + time + "\" LAST_MODIFIED=\"" + time + "\" "; - } - export += "LAST_CHARSET=\"UTF-8\" "; - Set<String> tags = bookmark.getTags(); - if (tags != null && !tags.isEmpty()) { - export += "SHORTCUTURL=\"" + getBookmarkTagsString(bookmark) + "\""; - } - export += ">" + bookmark.getDescription() + "</A>\n"; - } - } - export += "</DL><p>"; - return export; - } - - /* @param html String html - * - */ - public static String getUrlFromHtml(String html) { - String url = ""; - if (html != null) { - Pattern p = Pattern.compile("A HREF=\"([^\"]*)\""); - Matcher m = p.matcher(html); - if (m.find()) { - url = m.group(1); - } - } - return url; - } - - public static String getTagsFromHtml(String html) { - String tags = ""; - if (html != null) { - Pattern p = Pattern.compile("SHORTCUTURL=\"([^\"]*)\""); - Matcher m = p.matcher(html); - if (m.find()) { - tags = m.group(1); - } - } - return tags; - } - - /* @param url String which contains the bookmark url - * @param nameAndTags String which contains the name and the tags of the - * bookmark separated by '|' ==> name|tag1 tag2... - * @param user bookmark user - * @return null if all fields are not correctly filled - * @return Bookmark the website bookmark - */ - public static Bookmark createBookmark(String url, String nameAndTags, User user) { - - Bookmark bookmark = new BookmarkImpl(); - - int nameIndex = nameAndTags.indexOf('|'); // get the index name of the website - if (nameIndex > 0) { - String name = nameAndTags.substring(0, nameIndex); // get the website name - if (!name.isEmpty()) { - name = name.trim(); - bookmark.setDescription(name); // set the description (website name) - bookmark.setAlias(name); - } - } - String tags = nameAndTags; - if (nameIndex >= 0) { - tags = nameAndTags.substring(nameIndex + 1); // get tags, +1 because of '|' - } - addTagsToBookmark(tags, bookmark); - addUrlToBookmark(url, bookmark); - bookmark.setClick(0); - bookmark.setEmail(user.getEmail()); // set the email (user name) - bookmark.setDate(new Date()); // set the date - return bookmark; - } - - public static void addUrlToBookmark(String url, Bookmark bookmark) { - if (url != null && !url.isEmpty()) { - String link = url.trim(); - if (! link.matches("[a-z]+://.+") ) { - link = "http://" + link; - } - bookmark.setLink(link); - } else { - bookmark.setLink(""); - } - } - - public static void addTagsToBookmark(String tags, Bookmark bookmark) { - if (tags != null && !tags.isEmpty()) { - tags = tags.trim(); - String[] tagsTab = tags.split("\\s+"); // put the tags in an array - for (String aTagsTab : tagsTab) { - if (aTagsTab == null) { - - continue; - } - Set<String> tagList = bookmark.getTags(); - if (tagList != null) { - if (!tagList.contains(aTagsTab) && !aTagsTab.isEmpty()) { - bookmark.addTags(aTagsTab); // Added tag for each rank (one tag by rank) - } - } else if (!aTagsTab.isEmpty()) { - bookmark.addTags(aTagsTab); - } - } - } - } - - public static void addTagsToBookmark(List<String> tagList, Bookmark bookmark) { - if (tagList != null && !tagList.isEmpty()) { - for (String tag : tagList) { - addTagsToBookmark(tag, bookmark); - } - } - } - - public static Bookmark createBookmark(String url, String name, String tags, User user, String alias, Date date) { - Bookmark bookmark = new BookmarkImpl(); - if (name != null) { - name = name.trim(); - bookmark.setDescription(name); - } else { - bookmark.setDescription(""); - } - - addTagsToBookmark(tags, bookmark); - - addUrlToBookmark(url, bookmark); - - bookmark.setClick(0); - - bookmark.setEmail(user.getEmail()); // set the email (user name) - if (date == null) { - date = new Date(); - } - bookmark.setDate(date); // set the date - if (alias != null) { - alias = alias.trim(); - bookmark.setAlias(alias); - } else { - bookmark.setAlias(""); - } - return bookmark; - } - - public static void updateBookmarkName(Bookmark bookmark, String name) { - if (name != null) { - name = name.trim(); - bookmark.setDescription(name); - } - } - - public static void updateBookmark(Bookmark bookmark, String name, String link, String tags, String alias) { - if (name != null) { - name = name.trim(); - bookmark.setDescription(name); - } - addUrlToBookmark(link, bookmark); - bookmark.clearTags(); - addTagsToBookmark(tags, bookmark); - if (alias != null) { - alias = alias.trim(); - bookmark.setAlias(alias); - } - } - - public static String getBookmarkTagsString(Bookmark bookmark) { - if (bookmark != null) { - Set<String> tags = bookmark.getTags(); - if (tags != null) { - return StringUtil.join(tags, " ", true); - } - } - return ""; - } public void createTagCloud(List<FacetTopic> cpy) { setTagCloud(cpy); Copied: trunk/src/main/java/org/chorem/bow/BookmarkUtils.java (from rev 184, trunk/src/main/java/org/chorem/bow/BowBookmark.java) =================================================================== --- trunk/src/main/java/org/chorem/bow/BookmarkUtils.java (rev 0) +++ trunk/src/main/java/org/chorem/bow/BookmarkUtils.java 2011-02-11 17:48:26 UTC (rev 188) @@ -0,0 +1,296 @@ +package org.chorem.bow; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Date; +import java.util.List; +import java.util.Set; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import javax.servlet.http.HttpServletRequest; +import org.nuiton.util.StringUtil; + +import org.nuiton.wikitty.search.Criteria; +import org.nuiton.wikitty.search.FacetTopic; +import org.nuiton.wikitty.search.PagedResult; +import org.nuiton.wikitty.WikittyProxy; +import org.nuiton.wikitty.search.operators.Element; +import org.nuiton.wikitty.search.Search; + +public class BookmarkUtils { + + static public Criteria getBookmarkListCriteriaByUser(User user, String searchLine) { + Criteria criteria = null; + if (user != null) { + if (searchLine != null && !searchLine.isEmpty()) { + String[] words = searchLine.split("\\s+"); //Puts the tags in an array + List<String> tags = new ArrayList<String>(Arrays.asList(words)); + criteria = Search.query().eq(Bookmark.FQ_FIELD_BOOKMARK_EMAIL, user.getEmail()). + eq(Bookmark.FQ_FIELD_BOOKMARK_TAGS, tags).criteria().addFacetField(Bookmark.FQ_FIELD_BOOKMARK_TAGS); + } else { + criteria = Search.query().eq(Bookmark.FQ_FIELD_BOOKMARK_EMAIL, user.getEmail()). + criteria().addFacetField(Bookmark.FQ_FIELD_BOOKMARK_TAGS); + } + } + return criteria; + } + + static public BookmarkActions createBookmarkActions(HttpServletRequest request, PagedResult<Bookmark> result, String searchLine) { + String fullText = request.getParameter("fullTextLine"); + BookmarkActions bookmarkActions = new BookmarkActions(); + bookmarkActions.setFullTextLine(fullText); + List<Bookmark> bookList = result.getAll(); + + if (bookList != null) { + bookmarkActions.setBookmarks(bookList); + } + if (fullText == null || fullText.isEmpty()) { + if (searchLine != null && searchLine.isEmpty()) { + bookmarkActions.emptySearchline(); + } else { + bookmarkActions.addTags(searchLine); //Adds the new tags + } + } + List<FacetTopic> topics = result.getTopic(Bookmark.FQ_FIELD_BOOKMARK_TAGS); + bookmarkActions.createTagCloud(topics); + return bookmarkActions; + } + + static public List<FacetTopic> getBookmarksByImportDate(HttpServletRequest request, User user) { + BowSession session = BowSession.getBowSession(request); + WikittyProxy proxy = session.getProxy(); + Criteria criteria = Search.query().eq(Element.ELT_EXTENSION, Import.EXT_IMPORT).eq(Bookmark.FQ_FIELD_BOOKMARK_EMAIL, user.getEmail()).criteria(). + addFacetField(Import.FQ_FIELD_IMPORT_DATE); + List<FacetTopic> bookmarksImportDate = + proxy.findAllByCriteria(Import.class, criteria).getTopic(Import.FQ_FIELD_IMPORT_DATE); + request.setAttribute("bookmarksImportDate", bookmarksImportDate); + return bookmarksImportDate; + } + + /* @param html String html + * @param name String name + * @param user User user + * @return Bookmark the bookmark filled + */ + public static Bookmark createBookmarkFromHtml(String html, String name, User user) { + String link = getUrlFromHtml(html); + String tags = getTagsFromHtml(html); + Date date = getDateFromHtml(html); + Bookmark bookmark = createBookmark(link, name, tags, user, null, date); + return bookmark; + } + + /* @param html String html + * @return Date from the html + */ + public static Date getDateFromHtml(String html) { + Date date = null; + if (html != null) { + Pattern p = Pattern.compile("ADD_DATE=\"([^\"]*)\""); + Matcher m = p.matcher(html); + if (m.find()) { + String str = m.group(1); + if (str != null && !str.isEmpty()) { + long time = Long.valueOf(str) * 1000; // the date in ms + date = new Date(time); + } + } + } + return date; + } + + /* @param bookmarks List<Bookmarks> bookmarks + * @return String the html file + */ + public static String getExportHtmlBookmark(List<Bookmark> bookmarks) { + String export; + export = "<!DOCTYPE NETSCAPE-Bookmark-file-1>\n" + + "<META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=UTF-8\">\n" + + "<DL><p>\n"; + if (bookmarks != null) { + for (Bookmark bookmark : bookmarks) { + export += "<DT><A HREF=\""; + export += bookmark.getLink() + "\" "; + Date date = bookmark.getDate(); + if (date != null) { + long milli = date.getTime(); + String time = String.valueOf(milli / 1000); + export += "ADD_DATE=\"" + time + "\" LAST_MODIFIED=\"" + time + "\" "; + } + export += "LAST_CHARSET=\"UTF-8\" "; + Set<String> tags = bookmark.getTags(); + if (tags != null && !tags.isEmpty()) { + export += "SHORTCUTURL=\"" + getBookmarkTagsString(bookmark) + "\""; + } + export += ">" + bookmark.getDescription() + "</A>\n"; + } + } + export += "</DL><p>"; + return export; + } + + /* @param html String html + * + */ + public static String getUrlFromHtml(String html) { + String url = ""; + if (html != null) { + Pattern p = Pattern.compile("A HREF=\"([^\"]*)\""); + Matcher m = p.matcher(html); + if (m.find()) { + url = m.group(1); + } + } + return url; + } + + public static String getTagsFromHtml(String html) { + String tags = ""; + if (html != null) { + Pattern p = Pattern.compile("SHORTCUTURL=\"([^\"]*)\""); + Matcher m = p.matcher(html); + if (m.find()) { + tags = m.group(1); + } + } + return tags; + } + + /* @param url String which contains the bookmark url + * @param nameAndTags String which contains the name and the tags of the + * bookmark separated by '|' ==> name|tag1 tag2... + * @param user bookmark user + * @return null if all fields are not correctly filled + * @return Bookmark the website bookmark + */ + public static Bookmark createBookmark(String url, String nameAndTags, User user) { + + Bookmark bookmark = new BookmarkImpl(); + + int nameIndex = nameAndTags.indexOf('|'); // get the index name of the website + if (nameIndex > 0) { + String name = nameAndTags.substring(0, nameIndex); // get the website name + if (!name.isEmpty()) { + name = name.trim(); + bookmark.setDescription(name); // set the description (website name) + bookmark.setAlias(name); + } + } + String tags = nameAndTags; + if (nameIndex >= 0) { + tags = nameAndTags.substring(nameIndex + 1); // get tags, +1 because of '|' + } + addTagsToBookmark(tags, bookmark); + addUrlToBookmark(url, bookmark); + bookmark.setClick(0); + bookmark.setEmail(user.getEmail()); // set the email (user name) + bookmark.setDate(new Date()); // set the date + return bookmark; + } + + public static void addUrlToBookmark(String url, Bookmark bookmark) { + if (url != null && !url.isEmpty()) { + String link = url.trim(); + if (! link.matches("[a-z]+://.+") ) { + link = "http://" + link; + } + bookmark.setLink(link); + } else { + bookmark.setLink(""); + } + } + + public static void addTagsToBookmark(String tags, Bookmark bookmark) { + if (tags != null && !tags.isEmpty()) { + String[] tagsTab = tags.split("\\s+"); // put the tags in an array + List<String> tagList = Arrays.asList(tagsTab); + addTagsToBookmark(tagList, bookmark); + } + } + + public static void addTagsToBookmark(List<String> tagList, Bookmark bookmark) { + if (tagList != null) { + for (String tag : tagList) { + if (tag != null && !tag.isEmpty()) { + // on peut ajouter plusieurs fois le meme tag, car on les + // stocke dans un Set + bookmark.addTags(tag); + } + } + } + } + + /** + * Create new Bookmark + * + * @param url + * @param name + * @param tags + * @param user + * @param alias + * @param date + * @return + */ + public static Bookmark createBookmark(String url, String name, String tags, + User user, String alias, Date date) { + Bookmark bookmark = new BookmarkImpl(); + if (name != null) { + name = name.trim(); + bookmark.setDescription(name); + } else { + bookmark.setDescription(""); + } + + addTagsToBookmark(tags, bookmark); + + addUrlToBookmark(url, bookmark); + + bookmark.setClick(0); + + bookmark.setEmail(user.getEmail()); // set the email (user name) + if (date == null) { + date = new Date(); + } + bookmark.setDate(date); // set the date + if (alias != null) { + alias = alias.trim(); + bookmark.setAlias(alias); + } else { + bookmark.setAlias(""); + } + return bookmark; + } + + public static void updateBookmarkName(Bookmark bookmark, String name) { + if (name != null) { + name = name.trim(); + bookmark.setDescription(name); + } + } + + public static void updateBookmark(Bookmark bookmark, String name, String link, String tags, String alias) { + if (name != null) { + name = name.trim(); + bookmark.setDescription(name); + } + addUrlToBookmark(link, bookmark); + bookmark.clearTags(); + addTagsToBookmark(tags, bookmark); + if (alias != null) { + alias = alias.trim(); + bookmark.setAlias(alias); + } + } + + public static String getBookmarkTagsString(Bookmark bookmark) { + if (bookmark != null) { + Set<String> tags = bookmark.getTags(); + if (tags != null) { + return StringUtil.join(tags, " ", true); + } + } + return ""; + } + +} Deleted: trunk/src/main/java/org/chorem/bow/BowBookmark.java =================================================================== --- trunk/src/main/java/org/chorem/bow/BowBookmark.java 2011-02-11 17:31:09 UTC (rev 187) +++ trunk/src/main/java/org/chorem/bow/BowBookmark.java 2011-02-11 17:48:26 UTC (rev 188) @@ -1,62 +0,0 @@ -package org.chorem.bow; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -import javax.servlet.http.HttpServletRequest; - -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.Element; -import org.nuiton.wikitty.search.Search; - -public class BowBookmark { - static public Criteria getBookmarkListCriteriaByUser(User user, String searchLine) { - Criteria criteria = null; - if (user != null) { - if (searchLine != null && !searchLine.isEmpty()) { - String[] words = searchLine.split("\\s+"); //Puts the tags in an array - List<String> tags = new ArrayList<String>(Arrays.asList(words)); - 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().addFacetField(Bookmark.FQ_FIELD_TAGS); - } - } - return criteria; - } - - static public BookmarkActions createBookmarkActions(HttpServletRequest request, PagedResult<Bookmark> result, String searchLine) { - String fullText = request.getParameter("fullTextLine"); - BookmarkActions bookmarkActions = new BookmarkActions(); - bookmarkActions.setFullTextLine(fullText); - List<Bookmark> bookList = result.getAll(); - - if (bookList != null) { - bookmarkActions.setBookmarks(bookList); - } - if (fullText == null || fullText.isEmpty()) { - if (searchLine != null && searchLine.isEmpty()) { - bookmarkActions.emptySearchline(); - } else { - bookmarkActions.addTags(searchLine); //Adds the new tags - } - } - List<FacetTopic> topics = result.getTopic(Bookmark.FQ_FIELD_TAGS); - bookmarkActions.createTagCloud(topics); - return bookmarkActions; - } - - static public List<FacetTopic> getBookmarksByImportDate(HttpServletRequest request, User user) { - WikittyProxy proxy = BowProxy.getInstance(); - Criteria criteria = Search.query().eq(Element.ELT_EXTENSION, Import.EXT_IMPORT).eq(Bookmark.FQ_FIELD_EMAIL, user.getEmail()).criteria(). - addFacetField(Import.FQ_FIELD_DATE); - List<FacetTopic> bookmarksImportDate = proxy.findAllByCriteria(Import.class, criteria).getTopic(Import.FQ_FIELD_DATE); - request.setAttribute("bookmarksImportDate", bookmarksImportDate); - return bookmarksImportDate; - } -} Modified: trunk/src/main/java/org/chorem/bow/BowConfig.java =================================================================== --- trunk/src/main/java/org/chorem/bow/BowConfig.java 2011-02-11 17:31:09 UTC (rev 187) +++ trunk/src/main/java/org/chorem/bow/BowConfig.java 2011-02-11 17:48:26 UTC (rev 188) @@ -62,7 +62,7 @@ try { instance = new BowConfig(); instance.parse(StringUtil.EMPTY_STRING_ARRAY); - instance.setDataDirInSystemProps(); +// instance.setDataDirInSystemProps(); } catch (Exception e) { throw new UnhandledException(e); } @@ -136,10 +136,10 @@ return result; } - public File getDataDirAsFile() { - File option = getOptionAsFile(Option.DATA_DIR.key); - return option; - } +// public File getDataDirAsFile() { +// File option = getOptionAsFile(Option.DATA_DIR.key); +// return option; +// } /** * Get bow smtp server as string. @@ -173,22 +173,22 @@ return StringUtil.split(str, ","); } - /** - * Set {@code solr} and {@code jms} system configuration. - * - * This is the "only" way to configure embedded solr. - */ - protected void setDataDirInSystemProps() { - String value = System.getProperty(Option.DATA_DIR.key, null); - if (value == null) { - value = getOption(Option.DATA_DIR.key); - if (log.isInfoEnabled()) { - log.info("Setting system property " + Option.DATA_DIR.key + " : " + value); - } - System.setProperty(Option.DATA_DIR.key, value); - env.put(Option.DATA_DIR.key, value); - } - } +// /** +// * Set {@code solr} and {@code jms} system configuration. +// * +// * This is the "only" way to configure embedded solr. +// */ +// protected void setDataDirInSystemProps() { +// String value = System.getProperty(Option.DATA_DIR.key, null); +// if (value == null) { +// value = getOption(Option.DATA_DIR.key); +// if (log.isInfoEnabled()) { +// log.info("Setting system property " + Option.DATA_DIR.key + " : " + value); +// } +// System.setProperty(Option.DATA_DIR.key, value); +// env.put(Option.DATA_DIR.key, value); +// } +// } /** * Vradi option definition. @@ -214,9 +214,9 @@ BOW_ADDRESSFROM("bow.addressFrom", _("bow.config.bow.addressFrom.description"), null, String.class, false, false), BOW_ADMINS("bow.admins", _("bow.config.bow.admins.description"), - null, String.class, false, false), - DATA_DIR("solr.data.dir", _("bow.config.data.dir.description"), - System.getProperty("user.home") + "/.bow/solr", String.class, false, false); + null, String.class, false, false); +// DATA_DIR("solr.data.dir", _("bow.config.data.dir.description"), +// System.getProperty("user.home") + "/.bow/solr", String.class, false, false); public final String key; public final String description; public final String defaultValue; Modified: trunk/src/main/java/org/chorem/bow/BowInit.java =================================================================== --- trunk/src/main/java/org/chorem/bow/BowInit.java 2011-02-11 17:31:09 UTC (rev 187) +++ trunk/src/main/java/org/chorem/bow/BowInit.java 2011-02-11 17:48:26 UTC (rev 188) @@ -1,90 +1,100 @@ package org.chorem.bow; -import java.security.NoSuchAlgorithmException; import java.util.List; -import java.util.Map; import javax.servlet.http.HttpServletRequest; -import org.nuiton.wikitty.Criteria; -import org.nuiton.wikitty.PagedResult; +import org.nuiton.wikitty.search.Criteria; +import org.nuiton.wikitty.search.PagedResult; import org.nuiton.wikitty.WikittyProxy; -import org.nuiton.wikitty.search.Search; public class BowInit { - static public void checkAdmin(Map<String, Object> session, String login) { - String[] admins = BowConfig.getInstance().getAdmins(); - if (admins != null) { - for (String admin : admins) { - if (login.equals(admin)) { - session.put("admin", true); - break; - } - } - } - else { - session.put("admin", false); - } - } +// static public void checkAdmin(Map<String, Object> session, String login) { +// String[] admins = BowConfig.getInstance().getAdmins(); +// +// boolean isAdmin = false; +// if (admins != null) { +// for (String admin : admins) { +// if (login.equals(admin)) { +// isAdmin = true; +// break; +// } +// } +// } +// BowSession bowSession = BowSession.getBowSession(session); +// bowSession.setAdmin(isAdmin); +// } +// +// /** +// * load token if not already loaded, or create new bow token if token not +// * found in data +// * +// * @param session +// * @param login +// * @throws NoSuchAlgorithmException +// */ +// static public void initializeToken(Map<String, Object> session, User login) +// throws NoSuchAlgorithmException { +// BowSession bowSession = BowSession.getBowSession(session); +// BowToken bowToken = bowSession.getBowToken(); +// if (bowToken == null) { +// WikittyProxy proxy = bowSession.getProxy(); +// Criteria criteria = Search.query().eq(Token.FQ_FIELD_TOKEN_EMAIL, login.getEmail()).criteria(); +// Token token = proxy.findByCriteria(Token.class, criteria); +// bowToken = new BowToken(); +// +// if (token == null) { +// token = new TokenImpl(); +// String newToken = bowToken.generateToken(); +// token.setToken(newToken); +// token.setEmail(login.getEmail()); +// proxy.store(token); +// } +// bowToken.setPermanentToken(token.getToken()); +// String temporaryToken = bowToken.generateToken(); +// bowToken.setTemporaryToken(temporaryToken); +// bowSession.setBowToken(bowToken); +// } +// } - static public void initializeToken(Map<String, Object> session, User login) - throws NoSuchAlgorithmException { - WikittyProxy proxy = BowProxy.getInstance(); - Criteria criteria = Search.query().eq(Token.FQ_FIELD_EMAIL, login.getEmail()).criteria(); - Token token = proxy.findByCriteria(Token.class, criteria); - TokenActions tokenActions = new TokenActions(); +// static public void initSession(Map<String, Object> session, User user) throws NoSuchAlgorithmException { +// BowSession bowSession = BowSession.getBowSession(session); +//// WikittyProxy proxy = bowSession.getProxy(); +// +// if (user != null) { +// bowSession.setUser(user); +// +// // pas ajouter dans bowSession car, en a t on vraiment besoin ? +//// session.put("version", config.getVersion()); +//// session.put("bowUrl", config.getBowUrl()); +//// initializeToken(session, user); +//// checkAdmin(session, user.getEmail()); +// } +// } +// + static public void initHomePage(HttpServletRequest request, User user) { + BowSession session = BowSession.getBowSession(request); + WikittyProxy proxy = session.getProxy(); + Criteria criteria = BookmarkUtils.getBookmarkListCriteriaByUser(user, null); - if (token == null) { - token = new TokenImpl(); - String newToken = tokenActions.generateToken(); - token.setToken(newToken); - token.setEmail(login.getEmail()); - proxy.store(token); - } - tokenActions.setPermanentToken(token.getToken()); - String temporaryToken = tokenActions.generateToken(); - tokenActions.setTemporaryToken(temporaryToken); - session.put("tokenActions", tokenActions); - } + if (criteria != null) { + Criteria sortCriteria = criteria.addSortDescending(Bookmark.FQ_FIELD_BOOKMARK_CLICK); + PagedResult<Bookmark> result = proxy.findAllByCriteria(Bookmark.class, sortCriteria); //Selects all bookmarks by user + sortCriteria = criteria.addSortDescending(Bookmark.FQ_FIELD_BOOKMARK_DATE).setEndIndex(10);//TODO: remove hardcoded value + List<Bookmark> lastBookmarks = proxy.findAllByCriteria(Bookmark.class, sortCriteria).getAll(); + BookmarkActions bookmarkActions = BookmarkUtils.createBookmarkActions(request, result, null); + bookmarkActions.setTagSearch(null); + List<Bookmark> bookList = bookmarkActions.getBookmarks(); - static public void initSession(Map<String, Object> session, User user) throws NoSuchAlgorithmException { - WikittyProxy proxy = BowProxy.getInstance(); - - if (user != null) { - Preference preference = proxy.restore(Preference.class, user.getWikittyId()); - BowConfig config = BowConfig.getInstance(); - - session.put("user", user); - session.put("preference", preference); - session.put("version", config.getVersion()); - session.put("bowUrl", config.getBowUrl()); - initializeToken(session, user); - checkAdmin(session, user.getEmail()); - } + if (bookList.size() > 10) { //TODO: remove hardcoded value + bookList = bookmarkActions.getBookmarks().subList(0, 10); //TODO: remove hardcoded value + bookmarkActions.setBookmarks(bookList); + } + if (lastBookmarks != null) { + bookmarkActions.setLastBookmarks(lastBookmarks); + } + request.setAttribute("bookmarkActions", bookmarkActions); + } } - - static public void initHomePage(HttpServletRequest request, User user) { - WikittyProxy proxy = BowProxy.getInstance(); - Criteria criteria = BowBookmark.getBookmarkListCriteriaByUser(user, null); - - if (criteria != null) { - Criteria sortCriteria = criteria.addSortDescending(Bookmark.FQ_FIELD_CLICK); - PagedResult<Bookmark> result = proxy.findAllByCriteria(Bookmark.class, sortCriteria); //Selects all bookmarks by user - sortCriteria = criteria.addSortDescending(Bookmark.FQ_FIELD_DATE).setEndIndex(10);//TODO: remove hardcoded value - List<Bookmark> lastBookmarks = proxy.findAllByCriteria(Bookmark.class, sortCriteria).getAll(); - BookmarkActions bookmarkActions = BowBookmark.createBookmarkActions(request, result, null); - bookmarkActions.setTagSearch(null); - List<Bookmark> bookList = bookmarkActions.getBookmarks(); - - if (bookList.size() > 10) { //TODO: remove hardcoded value - bookList = bookmarkActions.getBookmarks().subList(0, 10); //TODO: remove hardcoded value - bookmarkActions.setBookmarks(bookList); - } - if (lastBookmarks != null) { - bookmarkActions.setLastBookmarks(lastBookmarks); - } - request.setAttribute("bookmarkActions", bookmarkActions); - } - } } Modified: trunk/src/main/java/org/chorem/bow/BowProxy.java =================================================================== --- trunk/src/main/java/org/chorem/bow/BowProxy.java 2011-02-11 17:31:09 UTC (rev 187) +++ trunk/src/main/java/org/chorem/bow/BowProxy.java 2011-02-11 17:48:26 UTC (rev 188) @@ -25,12 +25,12 @@ import java.util.Arrays; import java.util.List; -import org.nuiton.wikitty.WikittyExtension; -import org.nuiton.wikitty.WikittyExtensionMigration; +import org.nuiton.util.ApplicationConfig; +import org.nuiton.wikitty.entities.WikittyExtension; +import org.nuiton.wikitty.services.WikittyExtensionMigration; import org.nuiton.wikitty.WikittyProxy; import org.nuiton.wikitty.WikittyService; -import org.nuiton.wikitty.WikittyServiceCached; -import org.nuiton.wikitty.jdbc.WikittyServiceJDBC; +import org.nuiton.wikitty.WikittyServiceFactory; /** * Proxy pour utiliser les wikitty convenablement initialise. @@ -43,30 +43,54 @@ */ public class BowProxy extends WikittyProxy { - static protected BowProxy instance; + static protected WikittyService ws = null; - synchronized static public BowProxy getInstance() { - if (instance == null) { - BowConfig config = BowConfig.getInstance(); - instance = new BowProxy(config); - /* - * Fixe me when wikitty will integrate this function - */ - WikittyExtensionMigration.migrationRegistry.put(User.EXT_USER, new UserMigration()); - } - return instance; + protected BowProxy(BowConfig config, WikittyService ws) { + super(config, ws); } - protected BowProxy(BowConfig config) { - List<WikittyExtension> extensions = Arrays.asList( - UserImpl.extensionUser, - PreferenceImpl.extensionPreference, - BookmarkImpl.extensionBookmark, - TokenImpl.extensionToken); - WikittyService ws = new WikittyServiceJDBC(config.getFlatOptions()); - ws = new WikittyServiceCached(ws); - String token = getSecurityToken(); - ws.storeExtension(token, extensions); - setWikittyService(ws); + /** + * Return instance of BowProxy with specified security token + * + * @param token + * @return + */ + static public BowProxy getInstance(String token) { + BowConfig config = BowConfig.getInstance(); + WikittyService ws = getWikittyService(config); + BowProxy result = new BowProxy(config, ws); + result.setSecurityToken(token); + + return result; } + + /** + * Return WikittyService to use. This WikittyService is singleton. + * + * @param config + * @return + */ + static protected WikittyService getWikittyService(ApplicationConfig config) { + if (ws == null) { + synchronized(BowProxy.class) { + if (ws == null) { + /* + * Fixe me when wikitty will integrate this function + */ + WikittyExtensionMigration.migrationRegistry.put(User.EXT_USER, new UserMigration()); + + List<WikittyExtension> extensions = Arrays.asList( + UserImpl.extensionUser, + PreferenceImpl.extensionPreference, + BookmarkImpl.extensionBookmark, + TokenImpl.extensionToken); + + ws = WikittyServiceFactory.buildWikittyService(config); + ws.storeExtension(null, extensions); + } + } + } + return ws; + } + } Modified: trunk/src/main/java/org/chorem/bow/BowSearch.java =================================================================== --- trunk/src/main/java/org/chorem/bow/BowSearch.java 2011-02-11 17:31:09 UTC (rev 187) +++ trunk/src/main/java/org/chorem/bow/BowSearch.java 2011-02-11 17:48:26 UTC (rev 188) @@ -5,64 +5,67 @@ import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; -import org.nuiton.wikitty.Criteria; -import org.nuiton.wikitty.PagedResult; +import org.nuiton.wikitty.search.Criteria; +import org.nuiton.wikitty.search.PagedResult; import org.nuiton.wikitty.WikittyProxy; import org.nuiton.wikitty.search.Search; public class BowSearch { + static public void search(HttpServletRequest request, User user) - throws IOException, ServletException { - String searchLine = request.getParameter("searchLine"); + throws IOException, ServletException { + String searchLine = request.getParameter("searchLine"); - if (searchLine == null) { - searchLine = ""; - } - String fulltext = request.getParameter("fullTextLine"); + if (searchLine == null) { + searchLine = ""; + } + String fulltext = request.getParameter("fullTextLine"); - if (fulltext != null && !fulltext.isEmpty() && searchLine.isEmpty()) { - fullText(request, user); - } else { - String tag = request.getParameter("addTag"); + if (fulltext != null && !fulltext.isEmpty() && searchLine.isEmpty()) { + fullText(request, user); + } else { + String tag = request.getParameter("addTag"); - if (tag != null && !tag.isEmpty()) { - if (searchLine.isEmpty()) { - searchLine = tag; - } else { - searchLine += " " + tag; - } - } - WikittyProxy proxy = BowProxy.getInstance(); - Criteria criteria = BowBookmark.getBookmarkListCriteriaByUser(user, searchLine); - criteria = criteria.addSortDescending(Bookmark.FQ_FIELD_CLICK); - - if (criteria != null) { - PagedResult<Bookmark> result = proxy.findAllByCriteria(Bookmark.class, criteria); //Selects all bookmarks by user - BookmarkActions bookmarkActions = BowBookmark.createBookmarkActions(request, result, searchLine); - request.setAttribute("bookmarkActions", bookmarkActions); - } - } + if (tag != null && !tag.isEmpty()) { + if (searchLine.isEmpty()) { + searchLine = tag; + } else { + searchLine += " " + tag; + } + } + BowSession session = BowSession.getBowSession(request); + WikittyProxy proxy = session.getProxy(); + Criteria criteria = BookmarkUtils.getBookmarkListCriteriaByUser(user, searchLine); + criteria = criteria.addSortDescending(Bookmark.FQ_FIELD_BOOKMARK_CLICK); + + if (criteria != null) { + PagedResult<Bookmark> result = proxy.findAllByCriteria(Bookmark.class, criteria); //Selects all bookmarks by user + BookmarkActions bookmarkActions = BookmarkUtils.createBookmarkActions(request, result, searchLine); + request.setAttribute("bookmarkActions", bookmarkActions); + } + } } - + static public void fullText(HttpServletRequest request, User user) throws IOException, ServletException { - String fullText = request.getParameter("fullTextLine"); + String fullText = request.getParameter("fullTextLine"); - if (fullText == null || fullText.isEmpty()) { - search(request, user); - } else { - WikittyProxy proxy = BowProxy.getInstance(); - Criteria criteria; + if (fullText == null || fullText.isEmpty()) { + search(request, user); + } else { + BowSession session = BowSession.getBowSession(request); + WikittyProxy proxy = session.getProxy(); + Criteria criteria; - if (!fullText.isEmpty()) { - criteria = Search.query().keyword(fullText). - eq(Bookmark.FQ_FIELD_EMAIL, user.getEmail()).criteria(). - addFacetField(Bookmark.FQ_FIELD_TAGS); - } else { - criteria = BowBookmark.getBookmarkListCriteriaByUser(user, null); - } - PagedResult<Bookmark> result = proxy.findAllByCriteria(Bookmark.class, criteria); - BookmarkActions bookmarkActions = BowBookmark.createBookmarkActions(request, result, null); - request.setAttribute("bookmarkActions", bookmarkActions); - } + if (!fullText.isEmpty()) { + criteria = Search.query().keyword(fullText). + eq(Bookmark.FQ_FIELD_BOOKMARK_EMAIL, user.getEmail()).criteria(). + addFacetField(Bookmark.FQ_FIELD_BOOKMARK_TAGS); + } else { + criteria = BookmarkUtils.getBookmarkListCriteriaByUser(user, null); + } + PagedResult<Bookmark> result = proxy.findAllByCriteria(Bookmark.class, criteria); + BookmarkActions bookmarkActions = BookmarkUtils.createBookmarkActions(request, result, null); + request.setAttribute("bookmarkActions", bookmarkActions); + } } } Added: trunk/src/main/java/org/chorem/bow/BowSession.java =================================================================== --- trunk/src/main/java/org/chorem/bow/BowSession.java (rev 0) +++ trunk/src/main/java/org/chorem/bow/BowSession.java 2011-02-11 17:48:26 UTC (rev 188) @@ -0,0 +1,184 @@ +package org.chorem.bow; + + +import java.util.Map; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpSession; +import org.apache.commons.lang.ObjectUtils; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.wikitty.search.Criteria; +import org.nuiton.wikitty.search.Search; + +/** + * Classe utilisee pour stocker les objets utils en session utilisateur + * + * @author poussin + * @version $Revision$ + * + * Last update: $Date$ + * by : $Author$ + */ +public class BowSession { + + /** to use log facility, just put in your code: log.info(\"...\"); */ + static private Log log = LogFactory.getLog(BowSession.class); + + static final private String BOW_SESSION_KEY = BowSession.class.getSimpleName(); + + protected BowProxy proxy; + protected User user = null; + protected Preference preference = null; + protected String permanentToken = null; + protected String temporaryToken = null; + protected boolean admin = false; + + public BowSession() { + proxy = BowProxy.getInstance(null); + } + + static public void invalidate(Map<String, Object> session) { + session.remove(BOW_SESSION_KEY); + } + + static public BowSession getBowSession(HttpServletRequest request) { + HttpSession session = request.getSession(); + BowSession result = getBowSession(session); + return result; + } + + static public BowSession getBowSession(HttpSession httpSession) { + BowSession result = (BowSession) httpSession.getAttribute(BOW_SESSION_KEY); + if (result == null) { + result = new BowSession(); + httpSession.setAttribute(BOW_SESSION_KEY, result); + } + return result; + } + + static public BowSession getBowSession(Map<String, Object> session) { + BowSession result = (BowSession)session.get(BOW_SESSION_KEY); + if (result == null) { + result = new BowSession(); + session.put(BOW_SESSION_KEY, result); + } + return result; + } + + public BowProxy getProxy() { + return proxy; + } + + public Preference getPreference() { + return preference; + } + + public void setPreference(Preference preference) { + this.preference = preference; + } + + public User getUser() { + return user; + } + + public void setUser(User user) { + // si c'est le meme user, on ne fait rien + if (ObjectUtils.equals(this.user, user)) { + return; + } + + this.user = user; + + if (user != null) { + // load user preference + Preference preference = getProxy().restore(Preference.class, user.getWikittyId()); + checkPreference(preference); + setPreference(preference); + + // check if this user is admin + String email = user.getEmail(); + String[] admins = BowConfig.getInstance().getAdmins(); + boolean isAdmin = false; + if (admins != null) { + for (String admin : admins) { + if (email.equals(admin)) { + isAdmin = true; + break; + } + } + } + setAdmin(isAdmin); + + // retrieve or generate permanent token + loadToken(); + } + } + + /** + * if user is set. Load or create token for this user. temporary token + * is regenerated + */ + public void loadToken() { + if (getUser() != null) { + String email = getUser().getEmail(); + + // retrieve or generate permanent token + Criteria criteria = Search.query().eq(Token.FQ_FIELD_TOKEN_EMAIL, email).criteria(); + Token token = getProxy().findByCriteria(Token.class, criteria); + if (token == null) { + token = new TokenImpl(); + String newToken = BowUtils.generateToken(); + token.setToken(newToken); + token.setEmail(email); + token = proxy.store(token); + } + // generate new temporary token + setPermanentToken(token.getToken()); + String temporaryToken = BowUtils.generateToken(); + setTemporaryToken(temporaryToken); + } + } + + protected void checkPreference(Preference preference) { + if (preference.getBookmarks() <= 0) { + preference.setBookmarks(100); // set default to 100 + } + if (preference.getTags() <= 0) { + preference.setTags(100); // set default to 100 + } + if (preference.getColors() == null) { + preference.setColors(""); + } + if (preference.getSearchEngineUrlResults() == null) { + preference.setSearchEngineUrlResults(BowConfig.getInstance().getSearchEngine()); + } + if (preference.getSearchEngineUrlSuggestions() == null) { + preference.setSearchEngineUrlSuggestions(""); // TODO add default value in config + } + } + + public String getPermanentToken() { + return permanentToken; + } + + public void setPermanentToken(String permanentToken) { + this.permanentToken = permanentToken; + } + + public String getTemporaryToken() { + return temporaryToken; + } + + public void setTemporaryToken(String temporaryToken) { + this.temporaryToken = temporaryToken; + } + + public boolean isAdmin() { + return admin; + } + + public void setAdmin(boolean admin) { + this.admin = admin; + } + +} Modified: trunk/src/main/java/org/chorem/bow/BowUtils.java =================================================================== --- trunk/src/main/java/org/chorem/bow/BowUtils.java 2011-02-11 17:31:09 UTC (rev 187) +++ trunk/src/main/java/org/chorem/bow/BowUtils.java 2011-02-11 17:48:26 UTC (rev 188) @@ -1,91 +1,76 @@ package org.chorem.bow; -import java.util.Map; - -import javax.servlet.http.HttpSession; - -import org.nuiton.wikitty.Criteria; +import java.security.NoSuchAlgorithmException; +import org.nuiton.util.StringUtil; +import org.nuiton.wikitty.search.Criteria; import org.nuiton.wikitty.WikittyProxy; import org.nuiton.wikitty.search.Search; public class BowUtils { + + private BowUtils() { + } + + static public String generateToken() { + Double rand = Math.random() * 100000000; + int res = (int) Math.abs(rand); // generate a token between 0 and 100 000 000 + String tokenGenerated = String.valueOf(res); + tokenGenerated = StringUtil.encodeMD5(tokenGenerated); // encode the token in MD5 + return tokenGenerated; // return the generate token + } + + static public String redirectTo(String searchLine, String fullTextLine) { - if (!searchLine.equals("") || !fullTextLine.equals("")) { - return "search.action?searchLine=" + searchLine + "&fullTextLine=" + fullTextLine; - } else { - return "home.action"; - } + if (!searchLine.equals("") || !fullTextLine.equals("")) { + return "search.action?searchLine=" + searchLine + "&fullTextLine=" + fullTextLine; + } else { + return "home.action"; + } } - /* @param token String token - * @param session HttpSession session - * @return User - * @description check if the token is valid and return the - * token owner - */ - static public User checkToken(String token, HttpSession session) { - if (checkTemporaryToken(token, session)) { - return (User) session.getAttribute("user"); - } - return checkPermanentToken(token); + static public User checkToken(BowSession session, String token) { + User result = null; + if (checkTemporaryToken(session, token) || checkPermanentToken(session, token)) { + result = session.getUser(); + } + return result; } - - static public User checkToken(String token, Map<String, Object> session) { - if (checkTemporaryToken(token, session)) { - return (User) session.get("user"); - } - return checkPermanentToken(token); - } - /* @param token String which contains the MD5 encoding token + /** + * check if token exist, if true, put User associated with it, in BowSession + * + * @param token String which contains the MD5 encoding token * @return null the token doesn't exist * @return User the token owner */ - protected static User checkPermanentToken(String token) { - if (token != null) { - WikittyProxy proxy = BowProxy.getInstance(); - Criteria criteria = Search.query().eq(Token.FQ_FIELD_TOKEN, token).criteria(); - Token DbToken = proxy.findByCriteria(Token.class, criteria); + protected static boolean checkPermanentToken(BowSession session, String token) { + WikittyProxy proxy = session.getProxy(); + boolean result = false; + if (token != null) { + Criteria criteria = Search.query().eq(Token.FQ_FIELD_TOKEN_TOKEN, token).criteria(); + Token DbToken = proxy.findByCriteria(Token.class, criteria); - if (DbToken != null) { // check if the token exists - String userEmail = DbToken.getEmail(); // the token owner user name (email) - criteria = Search.query().eq(User.FQ_FIELD_EMAIL, userEmail).criteria(); // retrieve user by token - return proxy.findByCriteria(User.class, criteria); - } - } - return null; + if (DbToken != null) { // check if the token exists + String userEmail = DbToken.getEmail(); // the token owner user name (email) + criteria = Search.query().eq(User.FQ_FIELD_USER_EMAIL, userEmail).criteria(); // retrieve user by token + User user = proxy.findByCriteria(User.class, criteria); + session.setUser(user); + result = true; + } + } + return result; } - /* @param token String which contains the MD5 encoding token + /** + * Check token with temporary token + * + * @param token String which contains the MD5 encoding token * @return null the token doesn't exist * @return User the token owner */ - protected static boolean checkTemporaryToken(String token, HttpSession session) { - TokenActions tokenActions = (TokenActions) session.getAttribute("tokenActions"); - - if (tokenActions != null) { - String temporaryToken = tokenActions.getTemporaryToken(); - if (temporaryToken != null) { - if (temporaryToken.equals(token)) { - return true; - } - } - } - return false; + protected static boolean checkTemporaryToken(BowSession session, String token) { + String temporaryToken = session.getTemporaryToken(); + boolean result = temporaryToken != null && temporaryToken.equals(token); + return result; } - - protected static boolean checkTemporaryToken(String token, Map<String, Object> session) { - TokenActions tokenActions = (TokenActions) session.get("tokenActions"); - - if (tokenActions != null) { - String temporaryToken = tokenActions.getTemporaryToken(); - - if (temporaryToken != null) { - if (temporaryToken.equals(token)) { - return true; - } - } - } - return false; - } } Modified: trunk/src/main/java/org/chorem/bow/OpenSearchActions.java =================================================================== --- trunk/src/main/java/org/chorem/bow/OpenSearchActions.java 2011-02-11 17:31:09 UTC (rev 187) +++ trunk/src/main/java/org/chorem/bow/OpenSearchActions.java 2011-02-11 17:48:26 UTC (rev 188) @@ -29,7 +29,7 @@ import java.util.List; import java.util.Set; import org.apache.commons.lang.StringUtils; -import org.nuiton.wikitty.FacetTopic; +import org.nuiton.wikitty.search.FacetTopic; /** * Modified: trunk/src/main/java/org/chorem/bow/SuggestionsComparator.java =================================================================== --- trunk/src/main/java/org/chorem/bow/SuggestionsComparator.java 2011-02-11 17:31:09 UTC (rev 187) +++ trunk/src/main/java/org/chorem/bow/SuggestionsComparator.java 2011-02-11 17:48:26 UTC (rev 188) @@ -24,7 +24,7 @@ package org.chorem.bow; import java.util.Comparator; -import org.nuiton.wikitty.FacetTopic; +import org.nuiton.wikitty.search.FacetTopic; /** * Deleted: trunk/src/main/java/org/chorem/bow/TokenActions.java =================================================================== --- trunk/src/main/java/org/chorem/bow/TokenActions.java 2011-02-11 17:31:09 UTC (rev 187) +++ trunk/src/main/java/org/chorem/bow/TokenActions.java 2011-02-11 17:48:26 UTC (rev 188) @@ -1,63 +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 java.security.NoSuchAlgorithmException; -import org.nuiton.util.StringUtil; - -/** - * - * @author bbrossaud - */ - -public class TokenActions { - - String temporaryToken = ""; - String permanentToken = ""; - - public String getPermanentToken() { - return permanentToken; - } - - public String getTemporaryToken() { - return temporaryToken; - } - - public String generateToken() - throws NoSuchAlgorithmException { - Double rand = Math.random() * 100000000; - int res = (int) Math.abs(rand); // generate a token between 0 and 100 000 000 - String tokenGenerated = String.valueOf(res); - tokenGenerated = StringUtil.encodeMD5(tokenGenerated); // encode the token in MD5 - return tokenGenerated; // return the generate token - } - - public void setPermanentToken(String token) { - permanentToken = token; - } - - public void setTemporaryToken(String token) { - temporaryToken = token; - } -} Modified: trunk/src/main/java/org/chorem/bow/UserMigration.java =================================================================== --- trunk/src/main/java/org/chorem/bow/UserMigration.java 2011-02-11 17:31:09 UTC (rev 187) +++ trunk/src/main/java/org/chorem/bow/UserMigration.java 2011-02-11 17:48:26 UTC (rev 188) @@ -27,12 +27,12 @@ import java.util.List; import java.util.Set; import org.nuiton.util.StringUtil; -import org.nuiton.wikitty.Wikitty; +import org.nuiton.wikitty.entities.Wikitty; import org.nuiton.wikitty.WikittyException; -import org.nuiton.wikitty.WikittyExtension; -import org.nuiton.wikitty.WikittyExtensionMigration; +import org.nuiton.wikitty.entities.WikittyExtension; +import org.nuiton.wikitty.services.WikittyExtensionMigration; import org.nuiton.wikitty.WikittyService; -import org.nuiton.wikitty.WikittyTransaction; +import org.nuiton.wikitty.entities.WikittyImpl; /** * @@ -42,14 +42,17 @@ @Override public Wikitty migrate(WikittyService service, - WikittyTransaction transaction, 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 Wikitty(id); + Wikitty newWikitty = new WikittyImpl(id); newWikitty.setVersion(version); List<WikittyExtension> extensions = Modified: trunk/src/main/java/org/chorem/bow/action/AddClickAction.java =================================================================== --- trunk/src/main/java/org/chorem/bow/action/AddClickAction.java 2011-02-11 17:31:09 UTC (rev 187) +++ trunk/src/main/java/org/chorem/bow/action/AddClickAction.java 2011-02-11 17:48:26 UTC (rev 188) @@ -1,10 +1,10 @@ package org.chorem.bow.action; import org.chorem.bow.Bookmark; -import org.chorem.bow.BowProxy; import org.nuiton.wikitty.WikittyProxy; public class AddClickAction extends BowBaseAction { + private static final long serialVersionUID = 8579081104294143087L; protected String bookmarkId; protected String link; @@ -34,17 +34,20 @@ public void setLink(String link) { this.link = link; } + public String execute() { - if (bookmarkId != null && !bookmarkId.isEmpty()) { - WikittyProxy proxy = BowProxy.getInstance(); - Bookmark bookmark = proxy.restore(Bookmark.class, bookmarkId); - if (bookmark != null) { - bookmark.setClick(bookmark.getClick() + 1); - proxy.store(bookmark); - link = bookmark.getLink(); - return SUCCESS; - } - } - return ERROR; + String result = ERROR; + if (bookmarkId != null && !bookmarkId.isEmpty()) { + WikittyProxy proxy = getBowProxy(); + Bookmark bookmark = proxy.restore(Bookmark.class, bookmarkId); + if (bookmark != null) { + bookmark.setClick(bookmark.getClick() + 1); + proxy.store(bookmark); + setLink(bookmark.getLink()); + result = SUCCESS; + } + } + return result; } + } \ No newline at end of file Modified: trunk/src/main/java/org/chorem/bow/action/AddUrlAction.java =================================================================== --- trunk/src/main/java/org/chorem/bow/action/AddUrlAction.java 2011-02-11 17:31:09 UTC (rev 187) +++ trunk/src/main/java/org/chorem/bow/action/AddUrlAction.java 2011-02-11 17:48:26 UTC (rev 188) @@ -1,18 +1,20 @@ package org.chorem.bow.action; -import java.util.Map; - -import org.apache.struts2.interceptor.SessionAware; import org.chorem.bow.Bookmark; -import org.chorem.bow.BookmarkActions; -import org.chorem.bow.BowProxy; +import org.chorem.bow.BookmarkUtils; import org.chorem.bow.BowUtils; import org.chorem.bow.User; -import org.nuiton.wikitty.Criteria; +import org.nuiton.wikitty.search.Criteria; import org.nuiton.wikitty.WikittyProxy; import org.nuiton.wikitty.search.Search; -public class AddUrlAction extends BowBaseAction implements SessionAware { +/** + * Ajoute un bookmark, soit par le formulaire, soit par un appel javascript + * + * @author poussin + */ +public class AddUrlAction extends BowBaseAction { + private static final long serialVersionUID = 3389170166034184139L; protected String link; protected String name; @@ -21,10 +23,8 @@ protected String nameAndTags; protected String redirectTo; protected String searchLine; - protected String fullTextLine; - protected Map<String, Object> session; + protected String fullTextLine; - /** * @return the link */ @@ -130,36 +130,32 @@ this.fullTextLine = fullTextLine; } - @Override - public void setSession(Map<String, Object> session) { - this.session = session; - } - public String execute() { - WikittyProxy proxy = BowProxy.getInstance(); - Bookmark bookmark = null; - - if (name != null) { - if (alias != null && !alias.isEmpty()) { - Criteria criteria = Search.query().eq(Bookmark.FQ_FIELD_ALIAS, alias).criteria(); - - if (proxy.findByCriteria(Bookmark.class, criteria) != null) { - alias = ""; - } - } - bookmark = BookmarkActions.createBookmark(link, name, tags, (User)session.get("user"), alias, null); - } else { //This part is for the bookmark addition by script - if (nameAndTags != null) { - bookmark = BookmarkActions.createBookmark(link, nameAndTags, (User)session.get("user")); - } - } - if (bookmark != null && !bookmark.getDescription().isEmpty() && !bookmark.getEmail().isEmpty()) { - proxy.store(bookmark); //Stores the bookmark if everything is ok - if (log.isDebugEnabled()) { - log.debug("Adding URL"); - } - } - redirectTo = BowUtils.redirectTo(searchLine, fullTextLine); - return SUCCESS; + WikittyProxy proxy = getBowProxy(); + Bookmark bookmark = null; + + User user = getBowSession().getUser(); + if (name != null) { + if (alias != null && !alias.isEmpty()) { + Criteria criteria = Search.query().eq(Bookmark.FQ_FIELD_BOOKMARK_ALIAS, alias).criteria(); + + if (proxy.findByCriteria(Bookmark.class, criteria) != null) { + alias = ""; + } + } + bookmark = BookmarkUtils.createBookmark(link, name, tags, user, alias, null); + } else { //This part is for the bookmark addition by script + if (nameAndTags != null) { + bookmark = BookmarkUtils.createBookmark(link, nameAndTags, user); + } + } + if (bookmark != null && !bookmark.getDescription().isEmpty() && !bookmark.getEmail().isEmpty()) { + proxy.store(bookmark); //Stores the bookmark if everything is ok + if (log.isDebugEnabled()) { + log.debug("Adding URL"); + } + } + redirectTo = BowUtils.redirectTo(searchLine, fullTextLine); + return SUCCESS; } } \ No newline at end of file Modified: trunk/src/main/java/org/chorem/bow/action/BowBaseAction.java =================================================================== --- trunk/src/main/java/org/chorem/bow/action/BowBaseAction.java 2011-02-11 17:31:09 UTC (rev 187) +++ trunk/src/main/java/org/chorem/bow/action/BowBaseAction.java 2011-02-11 17:48:26 UTC (rev 188) @@ -6,13 +6,37 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import java.util.List; +import java.util.Map; +import org.apache.struts2.interceptor.SessionAware; +import org.chorem.bow.BowProxy; +import org.chorem.bow.BowSession; -public class BowBaseAction extends ActionSupport { +public class BowBaseAction extends ActionSupport implements SessionAware { + private static final long serialVersionUID = 1L; + + protected static final Log log = LogFactory.getLog(BowBaseAction.class); + public static final String UNTRANSLATED_MARKER = "???"; - protected static final Log log = LogFactory.getLog(BowBaseAction.class); + protected Map<String, Object> session; + + public BowSession getBowSession() { + BowSession result = BowSession.getBowSession(session); + return result; + } + + public BowProxy getBowProxy() { + BowProxy result = getBowSession().getProxy(); + return result; + } + @Override + public void setSession(Map<String, Object> session) { + this.session = session; + } + + @Override public String getText(String aTextName) { String value = super.getText(aTextName); return getSafeText(aTextName, value); Modified: trunk/src/main/java/org/chorem/bow/action/DeleteImportAction.java =================================================================== --- trunk/src/main/java/org/chorem/bow/action/DeleteImportAction.java 2011-02-11 17:31:09 UTC (rev 187) +++ trunk/src/main/java/org/chorem/bow/action/DeleteImportAction.java 2011-02-11 17:48:26 UTC (rev 188) @@ -2,22 +2,26 @@ import java.util.ArrayList; import java.util.List; -import java.util.Map; -import org.apache.struts2.interceptor.SessionAware; import org.chorem.bow.Bookmark; -import org.chorem.bow.BowProxy; import org.chorem.bow.Import; import org.chorem.bow.User; -import org.nuiton.wikitty.Criteria; +import org.nuiton.wikitty.search.Criteria; import org.nuiton.wikitty.WikittyProxy; -import org.nuiton.wikitty.search.Element; +import org.nuiton.wikitty.search.operators.Element; import org.nuiton.wikitty.search.Search; -public class DeleteImportAction extends BowBaseAction implements SessionAware { +/** + * Supprime un import de bookmark + * + * FIXME poussin 20110211 la suppression devrait se faire par rapport a l'id + * de l'import et non pas par rapport a la date :( + * + * @author poussin + */ +public class DeleteImportAction extends BowBaseAction { private static final long serialVersionUID = 8714394293884265516L; protected String date; - protected Map<String, Object> session; /** * @return the date @@ -32,27 +36,24 @@ this.date = date; } - @Override - public void setSession(Map<String, Object> session) { - this.session = session; - } - public String execute() { - if (date != null) { - WikittyProxy proxy = BowProxy.getInstance(); - - if (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")) { - Criteria criteria = Search.query().eq(Element.ELT_EXTENSION, Import.EXT_IMPORT).eq(Bookmark.FQ_FIELD_EMAIL, ((User)session.get("user")).getEmail()). - eq(Import.FQ_FIELD_DATE, date).criteria(); - List<Import> bookmarks = proxy.findAllByCriteria(Import.class, criteria).getAll(); - List<String> ids = new ArrayList<String>(); - - for (Import bookmark : bookmarks) { - ids.add(bookmark.getWikittyId()); - } - proxy.delete(ids); - } - } - return SUCCESS; + if (date != null && + 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(); + User user = getBowSession().getUser(); + Criteria criteria = Search.query() + .eq(Element.ELT_EXTENSION, Import.EXT_IMPORT) + .eq(Bookmark.FQ_FIELD_BOOKMARK_EMAIL, user.getEmail()) + .eq(Import.FQ_FIELD_IMPORT_DATE, date).criteria(); + List<Import> bookmarks = proxy.findAllByCriteria(Import.class, criteria).getAll(); + List<String> ids = new ArrayList<String>(); + + for (Import bookmark : bookmarks) { + ids.add(bookmark.getWikittyId()); + } + proxy.delete(ids); + } + return SUCCESS; } + } \ No newline at end of file Modified: trunk/src/main/java/org/chorem/bow/action/DeleteSearchResultsAction.java =================================================================== --- trunk/src/main/java/org/chorem/bow/action/DeleteSearchResultsAction.java 2011-02-11 17:31:09 UTC (rev 187) +++ trunk/src/main/java/org/chorem/bow/action/DeleteSearchResultsAction.java 2011-02-11 17:48:26 UTC (rev 188) @@ -2,22 +2,26 @@ import java.util.ArrayList; import java.util.List; -import java.util.Map; -import org.apache.struts2.interceptor.SessionAware; import org.chorem.bow.Bookmark; -import org.chorem.bow.BowBookmark; -import org.chorem.bow.BowProxy; +import org.chorem.bow.BookmarkUtils; import org.chorem.bow.User; -import org.nuiton.wikitty.Criteria; +import org.nuiton.wikitty.search.Criteria; import org.nuiton.wikitty.WikittyProxy; import org.nuiton.wikitty.search.Search; -public class DeleteSearchResultsAction extends BowBaseAction implements SessionAware { +/** + * Supprime des bookmarks qui satisfont le critere de recherche. Si fullTextLine + * est non vide, alors elle est utilisee, pour la recherche, sinon on utilise + * searchLine + * + * @author poussin + */ +public class DeleteSearchResultsAction extends BowBaseAction { + private static final long serialVersionUID = -3903724044644625507L; protected String searchLine; protected String fullTextLine; - protected Map<String, Object> session; /** * @return the searchLine @@ -47,32 +51,28 @@ this.fullTextLine = fullTextLine; } - @Override - public void setSession(Map<String, Object> session) { - this.session = session; - } + public String execute() { + if (searchLine != null && fullTextLine != null) { + WikittyProxy proxy = getBowProxy(); + Criteria criteria; - public String execute() { - if (searchLine != null && fullTextLine != null) { - WikittyProxy proxy = BowProxy.getInstance(); - Criteria criteria; - - if (fullTextLine.isEmpty()) { - criteria = BowBookmark.getBookmarkListCriteriaByUser((User)session.get("user"), searchLine); - } else { - criteria = Search.query().keyword(fullTextLine).eq(Bookmark.FQ_FIELD_EMAIL, ((User)session.get("user")).getEmail()).criteria().addFacetField(Bookmark.FQ_FIELD_TAGS); - } - List<Bookmark> bookmarks = proxy.findAllByCriteria(Bookmark.class, criteria).getAll(); - List<String> ids = new ArrayList<String>(); - - for (Bookmark bookmark : bookmarks) { - if (searchLine.isEmpty() && bookmark.getTags() == null || !searchLine.isEmpty() || - fullTextLine.isEmpty() && bookmark.getTags() == null || !fullTextLine.isEmpty()) { - ids.add(bookmark.getWikittyId()); - } - } - proxy.delete(ids); - } - return SUCCESS; + User user = getBowSession().getUser(); + if (fullTextLine.isEmpty()) { + criteria = BookmarkUtils.getBookmarkListCriteriaByUser(user, searchLine); + } else { + criteria = Search.query().keyword(fullTextLine).eq(Bookmark.FQ_FIELD_BOOKMARK_EMAIL, user.getEmail()).criteria().addFacetField(Bookmark.FQ_FIELD_BOOKMARK_TAGS); + } + List<Bookmark> bookmarks = proxy.findAllByCriteria(Bookmark.class, criteria).getAll(); + List<String> ids = new ArrayList<String>(); + + for (Bookmark bookmark : bookmarks) { + if (searchLine.isEmpty() && bookmark.getTags() == null || !searchLine.isEmpty() + || fullTextLine.isEmpty() && bookmark.getTags() == null || !fullTextLine.isEmpty()) { + ids.add(bookmark.getWikittyId()); + } + } + proxy.delete(ids); + } + return SUCCESS; } } \ No newline at end of file Modified: trunk/src/main/java/org/chorem/bow/action/DeleteTagAction.java =================================================================== --- trunk/src/main/java/org/chorem/bow/action/DeleteTagAction.java 2011-02-11 17:31:09 UTC (rev 187) +++ trunk/src/main/java/org/chorem/bow/action/DeleteTagAction.java 2011-02-11 17:48:26 UTC (rev 188) @@ -1,10 +1,14 @@ package org.chorem.bow.action; import org.chorem.bow.Bookmark; -import org.chorem.bow.BowProxy; import org.chorem.bow.BowUtils; import org.nuiton.wikitty.WikittyProxy; +/** + * Supprime un tag d'un bookmark + * + * @author poussin + */ public class DeleteTagAction extends BowBaseAction { private static final long serialVersionUID = -6174966873862161966L; protected String bookmarkId; @@ -74,18 +78,18 @@ } public String execute() { - if (deleteTag != null && bookmarkId != null) { - if (!bookmarkId.isEmpty()) { - WikittyProxy proxy = BowProxy.getInstance(); - Bookmark bookmark = proxy.restore(Bookmark.class, bookmarkId); + if (deleteTag != null && bookmarkId != null) { + if (!bookmarkId.isEmpty()) { + WikittyProxy proxy = getBowProxy(); + Bookmark bookmark = proxy.restore(Bookmark.class, bookmarkId); - if (bookmark != null) { - bookmark.removeTags(deleteTag); - proxy.store(bookmark); - } - } - } - redirectTo = BowUtils.redirectTo(searchLine, fullTextLine); - return SUCCESS; + if (bookmark != null) { + bookmark.removeTags(deleteTag); + proxy.store(bookmark); + } + } + } + redirectTo = BowUtils.redirectTo(searchLine, fullTextLine); + return SUCCESS; } } \ No newline at end of file Modified: trunk/src/main/java/org/chorem/bow/action/EditBookmarkAction.java =================================================================== --- trunk/src/main/java/org/chorem/bow/action/EditBookmarkAction.java 2011-02-11 17:31:09 UTC (rev 187) +++ trunk/src/main/java/org/chorem/bow/action/EditBookmarkAction.java 2011-02-11 17:48:26 UTC (rev 188) @@ -1,27 +1,30 @@ package org.chorem.bow.action; import java.io.IOException; -import java.util.Map; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import org.apache.struts2.interceptor.ServletRequestAware; -import org.apache.struts2.interceptor.SessionAware; import org.chorem.bow.Bookmark; -import org.chorem.bow.BookmarkActions; +import org.chorem.bow.BookmarkUtils; +import org.chorem.bow.BowConfig; import org.chorem.bow.BowInit; -import org.chorem.bow.BowProxy; import org.chorem.bow.BowSearch; import org.chorem.bow.User; import org.nuiton.wikitty.WikittyProxy; -public class EditBookmarkAction extends BowBaseAction implements SessionAware, ServletRequestAware { +/** + * Prepare les données pour la modification d'un bookmark + * TODO poussin 20110211 peut-etre le remplacer par une popup JS d'edition ? + * + * @author poussin + */ +public class EditBookmarkAction extends BowBaseAction implements ServletRequestAware { private static final long serialVersionUID = 2706590901233864637L; protected String bookmarkId; protected String searchLine; protected String fullTextLine; - protected Map<String, Object> session; protected HttpServletRequest request; /** @@ -67,42 +70,43 @@ } @Override - public void setSession(Map<String, Object> session) { - this.session = session; - } - - @Override public void setServletRequest(HttpServletRequest request) { this.request = request; } public String execute() { if (bookmarkId != null && !bookmarkId.isEmpty()) { - WikittyProxy proxy = BowProxy.getInstance(); - Bookmark bookmark = proxy.restore(Bookmark.class, bookmarkId); + WikittyProxy proxy = getBowProxy(); + Bookmark bookmark = proxy.restore(Bookmark.class, bookmarkId); - if (bookmark != null) { - request.setAttribute("link", bookmark.getLink()); - request.setAttribute("name", bookmark.getDescription()); - request.setAttribute("alias", bookmark.getAlias()); - request.setAttribute("tags", BookmarkActions.getBookmarkTagsString(bookmark)); - request.setAttribute("formAction", "/bow/modifyBookmark.action?bookmarkId=" + bookmarkId + "&searchLine=" + searchLine + "&fullTextLine=" + fullTextLine); - } - } - if (searchLine == null || searchLine.equals("")) { - BowInit.initHomePage(request, (User)session.get("user")); - return "home"; - } else { - try { - BowSearch.search(request, (User)session.get("user")); - } catch (IOException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (ServletException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - return "search"; - } + if (bookmark != null) { + request.setAttribute("link", bookmark.getLink()); + request.setAttribute("name", bookmark.getDescription()); + request.setAttribute("alias", bookmark.getAlias()); + request.setAttribute("tags", BookmarkUtils.getBookmarkTagsString(bookmark)); + String servletName = BowConfig.getInstance().getServletBow(); + request.setAttribute("formAction", + "/" + servletName + "/modifyBookmark.action" + + "?bookmarkId=" + bookmarkId + + "&searchLine=" + searchLine + + "&fullTextLine=" + fullTextLine); + } + } + User user = getBowSession().getUser(); + if (searchLine == null || searchLine.equals("")) { + BowInit.initHomePage(request, user); + return "home"; + } else { + try { + BowSearch.search(request, user); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (ServletException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return "search"; + } } } \ No newline at end of file Modified: trunk/src/main/java/org/chorem/bow/action/ExportBookmarksAction.java =================================================================== --- trunk/src/main/java/org/chorem/bow/action/ExportBookmarksAction.java 2011-02-11 17:31:09 UTC (rev 187) +++ trunk/src/main/java/org/chorem/bow/action/ExportBookmarksAction.java 2011-02-11 17:48:26 UTC (rev 188) @@ -2,56 +2,56 @@ import java.io.IOException; import java.util.List; -import java.util.Map; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; import org.apache.struts2.interceptor.ServletResponseAware; -import org.apache.struts2.interceptor.SessionAware; import org.chorem.bow.Bookmark; -import org.chorem.bow.BookmarkActions; -import org.chorem.bow.BowProxy; +import org.chorem.bow.BookmarkUtils; import org.chorem.bow.User; -import org.nuiton.wikitty.Criteria; +import org.nuiton.wikitty.search.Criteria; import org.nuiton.wikitty.WikittyProxy; import org.nuiton.wikitty.search.Search; -public class ExportBookmarksAction extends BowBaseAction implements SessionAware, ServletResponseAware { +/** + * Export son bookmark au format HTML + * TODO poussin 20110211 n'y aurait-il pas une meilleur facon d'envoyer un fichier + * en struts ??? + * + * @author poussin + */ +public class ExportBookmarksAction extends BowBaseAction implements ServletResponseAware { private static final long serialVersionUID = 45880214686011946L; - protected Map<String, Object> session; protected HttpServletResponse response; @Override - public void setSession(Map<String, Object> session) { - this.session = session; - } - - @Override public void setServletResponse(HttpServletResponse response) { this.response = response; } public String execute() { - WikittyProxy proxy = BowProxy.getInstance(); - Criteria criteria = Search.query().eq(Bookmark.FQ_FIELD_EMAIL, ((User)session.get("user")).getEmail()).criteria(); - List<Bookmark> bookmarks = proxy.findAllByCriteria(Bookmark.class, criteria).getAll(); - String export = BookmarkActions.getExportHtmlBookmark(bookmarks); - byte[] buff = export.getBytes(); - ServletOutputStream op; + WikittyProxy proxy = getBowProxy(); + User user = getBowSession().getUser(); + Criteria criteria = Search.query() + .eq(Bookmark.FQ_FIELD_BOOKMARK_EMAIL, user.getEmail()).criteria(); + List<Bookmark> bookmarks = proxy.findAllByCriteria(Bookmark.class, criteria).getAll(); + String export = BookmarkUtils.getExportHtmlBookmark(bookmarks); + byte[] buff = export.getBytes(); + ServletOutputStream op; - try { - op = response.getOutputStream(); - response.setContentType("application/octet-stream"); - response.setHeader("Content-Disposition", "attachment; filename=\"bookmarks.html\""); - response.setContentLength(buff.length); - op.write(buff, 0, buff.length); - op.flush(); - op.close(); - } catch (IOException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - return SUCCESS; + try { + op = response.getOutputStream(); + response.setContentType("application/octet-stream"); + response.setHeader("Content-Disposition", "attachment; filename=\"bookmarks.html\""); + response.setContentLength(buff.length); + op.write(buff, 0, buff.length); + op.flush(); + op.close(); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return SUCCESS; } } \ No newline at end of file Modified: trunk/src/main/java/org/chorem/bow/action/ForgotPasswordAction.java =================================================================== --- trunk/src/main/java/org/chorem/bow/action/ForgotPasswordAction.java 2011-02-11 17:31:09 UTC (rev 187) +++ trunk/src/main/java/org/chorem/bow/action/ForgotPasswordAction.java 2011-02-11 17:48:26 UTC (rev 188) @@ -7,15 +7,24 @@ import org.apache.commons.lang.RandomStringUtils; import org.chorem.bow.BowMail; -import org.chorem.bow.BowProxy; import org.chorem.bow.User; import org.nuiton.util.StringUtil; -import org.nuiton.wikitty.Criteria; +import org.nuiton.wikitty.search.Criteria; import org.nuiton.wikitty.WikittyProxy; import org.nuiton.wikitty.search.Search; import static org.nuiton.i18n.I18n.n_; +/** + * Genere un nouveau mot de passe pour l'utilisateur et lui envoie par mail + * TODO poussin 20110211 il faudrait ajouter une securite pour eviter que + * quelqu'un s'amuse a demander la modification de password de quelqu'un d'autre + * toutes les 2s + * - soit en ne permettant l'envoi qu'une fois par jour + * - soit ???? + * + * @author poussin + */ public class ForgotPasswordAction extends BowBaseAction { private static final long serialVersionUID = -8207951465957204954L; protected String email; @@ -34,54 +43,57 @@ this.email = email; } - protected boolean passwordExists(String password) { - WikittyProxy proxy = BowProxy.getInstance(); - Criteria criteria = Search.query().eq(User.FQ_FIELD_PASSWORD, password).criteria(); - List<User> users = proxy.findAllByCriteria(User.class, criteria).getAll(); - if (users != null && users.size() > 0) { - return true; - } - return false; - } +// protected boolean passwordExists(String password) { +// WikittyProxy proxy = getBowProxy(); +// Criteria criteria = Search.query().eq(User.FQ_FIELD_USER_PASSWORD, password).criteria(); +// List<User> users = proxy.findAllByCriteria(User.class, criteria).getAll(); +// if (users != null && users.size() > 0) { +// return true; +// } +// return false; +// } public String execute() { - if (email != null) { - email = email.trim(); - if (!email.isEmpty()) { - WikittyProxy proxy = BowProxy.getInstance(); - Criteria criteria = Search.query().eq(User.FQ_FIELD_EMAIL, email).criteria(); - User user = proxy.findByCriteria(User.class, criteria); - - if (user != null) { - boolean bool = true; - String password = ""; - String md5 = ""; - - while (bool) { - password = RandomStringUtils.randomAlphanumeric(20); - md5 = StringUtil.encodeMD5(password); - bool = passwordExists(md5); - } - try { - String mailContent; + if (email != null) { + email = email.trim(); + if (!email.isEmpty()) { + WikittyProxy proxy = getBowProxy(); + Criteria criteria = Search.query().eq(User.FQ_FIELD_USER_EMAIL, email).criteria(); + User user = proxy.findByCriteria(User.class, criteria); - mailContent = getText(n_("bow.register.mailHi")) + ",\n\n" + getText(n_("bow.register.mailPwd")) + ": " + password + "\n\n" + getText(n_("bow.register.mailEmail")) + ": " + email + "\n\n"; - BowMail.sendMail(email, getText(n_("bow.register.mailSubject")), mailContent); - } catch (AddressException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (MessagingException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - user.setPassword(md5); - proxy.store(user); - return SUCCESS; - } else { - addFieldError("email", getText(n_("bow.forgotPassword.emailDoesntExist"))); - } - } - } - return INPUT; + if (user != null) { +// boolean bool = true; + String password = ""; + String md5 = ""; + +// while (bool) { + password = RandomStringUtils.randomAlphanumeric(20); + md5 = StringUtil.encodeMD5(password); +// bool = passwordExists(md5); +// } + try { + String mailContent; + + mailContent = getText(n_("bow.register.mailHi")) + ",\n\n" + getText(n_("bow.register.mailPwd")) + ": " + password + "\n\n" + getText(n_("bow.register.mailEmail")) + ": " + email + "\n\n"; + BowMail.sendMail(email, getText(n_("bow.register.mailSubject")), mailContent); + + // on ne change le mot de passe que si on a reussi a + // envoyer le mail + user.setPassword(md5); + proxy.store(user); + } catch (AddressException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (MessagingException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return SUCCESS; + } else { + addFieldError("email", getText(n_("bow.forgotPassword.emailDoesntExist"))); + } + } + } + return INPUT; } } \ No newline at end of file Modified: trunk/src/main/java/org/chorem/bow/action/FullTextSearchAction.java =================================================================== --- trunk/src/main/java/org/chorem/bow/action/FullTextSearchAction.java 2011-02-11 17:31:09 UTC (rev 187) +++ trunk/src/main/java/org/chorem/bow/action/FullTextSearchAction.java 2011-02-11 17:48:26 UTC (rev 188) @@ -1,19 +1,22 @@ package org.chorem.bow.action; import java.io.IOException; -import java.util.Map; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import org.apache.struts2.interceptor.ServletRequestAware; -import org.apache.struts2.interceptor.SessionAware; import org.chorem.bow.BowSearch; +import org.chorem.bow.BowSession; import org.chorem.bow.User; -public class FullTextSearchAction extends BowBaseAction implements SessionAware, ServletRequestAware { +/** + * Fait la recherche fulltext + * + * @author poussin + */ +public class FullTextSearchAction extends BowBaseAction implements ServletRequestAware { private static final long serialVersionUID = -7736099487284993426L; - protected Map<String, Object> session; protected String searchLine; protected String fullTextLine; protected HttpServletRequest request; @@ -22,11 +25,6 @@ public void setServletRequest(HttpServletRequest request) { this.request = request; } - - @Override - public void setSession(Map<String, Object> session) { - this.session = session; - } /** * @return the searchLine @@ -57,7 +55,8 @@ } public String execute() { - User user = (User)session.get("user"); + BowSession session = getBowSession(); + User user = session.getUser(); try { BowSearch.fullText(request, user); Modified: trunk/src/main/java/org/chorem/bow/action/GenerateTokenAction.java =================================================================== --- trunk/src/main/java/org/chorem/bow/action/GenerateTokenAction.java 2011-02-11 17:31:09 UTC (rev 187) +++ trunk/src/main/java/org/chorem/bow/action/GenerateTokenAction.java 2011-02-11 17:48:26 UTC (rev 188) @@ -1,61 +1,34 @@ package org.chorem.bow.action; -import java.security.NoSuchAlgorithmException; -import java.util.Map; - -import org.apache.struts2.interceptor.SessionAware; -import org.chorem.bow.BowProxy; import org.chorem.bow.Token; -import org.chorem.bow.TokenActions; -import org.chorem.bow.TokenImpl; import org.chorem.bow.User; -import org.nuiton.wikitty.Criteria; +import org.nuiton.wikitty.search.Criteria; import org.nuiton.wikitty.WikittyProxy; import org.nuiton.wikitty.search.Search; -public class GenerateTokenAction extends BowBaseAction implements SessionAware { +/** + * Force la regeneration de token permanent et temporaire + * + * @author poussin + */ +public class GenerateTokenAction extends BowBaseAction { + private static final long serialVersionUID = 1141019772989666309L; - protected Map<String, Object> session; - @Override - public void setSession(Map<String, Object> session) { - this.session = session; - } - public String execute() { - User user = (User)session.get("user"); - WikittyProxy proxy = BowProxy.getInstance(); - Criteria criteria = Search.query().eq(Token.FQ_FIELD_EMAIL, user.getEmail()).criteria(); - Token currentToken = proxy.findByCriteria(Token.class, criteria); + User user = getBowSession().getUser(); + WikittyProxy proxy = getBowProxy(); + Criteria criteria = Search.query().eq(Token.FQ_FIELD_TOKEN_EMAIL, user.getEmail()).criteria(); + Token currentToken = proxy.findByCriteria(Token.class, criteria); - if (currentToken != null) { - String id = currentToken.getWikittyId(); - proxy.delete(id); - } - TokenActions tokenActions = (TokenActions)session.get("tokenActions"); + if (currentToken != null) { + String id = currentToken.getWikittyId(); + proxy.delete(id); + } + // on vient d'effacer le token permanent, demande le load, va en + // regenerer un + getBowSession().loadToken(); - if (tokenActions != null) { - String token; - - try { - token = tokenActions.generateToken(); //Generates an encoding MD5 token - criteria = Search.query().eq(Token.FQ_FIELD_TOKEN, token).criteria(); - Token oldToken = proxy.findByCriteria(Token.class, criteria); - - if (oldToken == null) { //Checks if the token already exists - TokenImpl newToken = new TokenImpl(); - newToken.setToken(token); - newToken.setEmail(user.getEmail()); - proxy.store((Token) newToken); //If the token doesn't exist, it is stored - tokenActions.setPermanentToken(token); - } else { - tokenActions.setPermanentToken(""); - } - } catch (NoSuchAlgorithmException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - return SUCCESS; + return SUCCESS; } } \ No newline at end of file Modified: trunk/src/main/java/org/chorem/bow/action/HomeAction.java =================================================================== --- trunk/src/main/java/org/chorem/bow/action/HomeAction.java 2011-02-11 17:31:09 UTC (rev 187) +++ trunk/src/main/java/org/chorem/bow/action/HomeAction.java 2011-02-11 17:48:26 UTC (rev 188) @@ -1,18 +1,19 @@ package org.chorem.bow.action; -import java.util.Map; - import javax.servlet.http.HttpServletRequest; import org.apache.struts2.interceptor.ServletRequestAware; -import org.apache.struts2.interceptor.SessionAware; import org.chorem.bow.BowInit; import org.chorem.bow.User; -public class HomeAction extends BowBaseAction implements SessionAware, ServletRequestAware { +/** + * Prepare l'affichage de la page d'accueil + * + * @author poussin + */ +public class HomeAction extends BowBaseAction implements ServletRequestAware { private static final long serialVersionUID = -3735250067223062719L; protected String token; - protected Map<String, Object> session; protected HttpServletRequest request; /** @@ -29,17 +30,12 @@ } @Override - public void setSession(Map<String, Object> session) { - this.session = session; - } - - @Override public void setServletRequest(HttpServletRequest request) { this.request = request; } public String execute() { - User user = (User)session.get("user"); + User user = getBowSession().getUser(); BowInit.initHomePage(request, user); return SUCCESS; Modified: trunk/src/main/java/org/chorem/bow/action/ImportBookmarksAction.java =================================================================== --- trunk/src/main/java/org/chorem/bow/action/ImportBookmarksAction.java 2011-02-11 17:31:09 UTC (rev 187) +++ trunk/src/main/java/org/chorem/bow/action/ImportBookmarksAction.java 2011-02-11 17:48:26 UTC (rev 188) @@ -2,24 +2,21 @@ import java.io.File; import java.io.IOException; +import java.net.URL; import java.util.ArrayList; import java.util.Date; import java.util.List; -import java.util.Map; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; -import org.apache.commons.io.FileUtils; import org.apache.struts2.interceptor.ServletRequestAware; -import org.apache.struts2.interceptor.SessionAware; import org.chorem.bow.Bookmark; -import org.chorem.bow.BookmarkActions; +import org.chorem.bow.BookmarkUtils; import org.chorem.bow.BowInit; -import org.chorem.bow.BowProxy; import org.chorem.bow.BowSearch; import org.chorem.bow.BowUtils; -import org.chorem.bow.Import; +import org.chorem.bow.ImportHelper; import org.chorem.bow.User; import org.htmlparser.Node; import org.htmlparser.Parser; @@ -27,10 +24,16 @@ import org.htmlparser.util.ParserException; import org.htmlparser.util.SimpleNodeIterator; import org.nuiton.wikitty.WikittyProxy; +import org.nuiton.wikitty.entities.Wikitty; import static org.nuiton.i18n.I18n.n_; -public class ImportBookmarksAction extends BowBaseAction implements SessionAware, ServletRequestAware { +/** + * Import un bookmark HTML + * + * @author poussin + */ +public class ImportBookmarksAction extends BowBaseAction implements ServletRequestAware { private static final long serialVersionUID = -5962680416570797028L; protected File upfile; protected String upfileContentType; @@ -38,7 +41,6 @@ protected String searchLine; protected String fullTextLine; protected String redirectTo; - protected Map<String, Object> session; protected HttpServletRequest request; /** @@ -119,35 +121,31 @@ } @Override - public void setSession(Map<String, Object> session) { - this.session = session; - } - - @Override public void setServletRequest(HttpServletRequest request) { this.request = request; } - protected void createImportExtension(List<Bookmark> bookmarks) { - if (bookmarks != null && !bookmarks.isEmpty()) { - WikittyProxy proxy = BowProxy.getInstance(); - List<String> ids = new ArrayList<String>(); +// protected void createImportExtension(List<Bookmark> bookmarks) { +// if (bookmarks != null && !bookmarks.isEmpty()) { +// WikittyProxy proxy = getBowProxy(); +// List<String> ids = new ArrayList<String>(); +// +// for (Bookmark bookmark : bookmarks) { +// String id = bookmark.getWikittyId(); +// ids.add(id); +// } +// Date date = new Date(); +// List<Import> imports = proxy.restore(Import.class, ids); +// +// for (Import imp : imports) { +// imp.setDate(date); +// } +// proxy.store(imports); +// } +// } - for (Bookmark bookmark : bookmarks) { - String id = bookmark.getWikittyId(); - ids.add(id); - } - Date date = new Date(); - List<Import> imports = proxy.restore(Import.class, ids); - - for (Import imp : imports) { - imp.setDate(date); - } - proxy.store(imports); - } - } - - protected void parseHtmlToBookmarks(NodeList list, User user, List<Bookmark> bookmarks, List<String> tagList) + protected void parseHtmlToBookmarks(NodeList list, User user, Date date, + List<Bookmark> bookmarks, List<String> tagList) throws ParserException { if (list != null) { boolean isFolder = false; @@ -164,8 +162,11 @@ isFolder = true; } } else if (text != null && text.startsWith("A HREF")) { // HREF = new bookmarks - Bookmark bookmark = BookmarkActions.createBookmarkFromHtml(text, plainText, user); - BookmarkActions.addTagsToBookmark(tagList, bookmark); + Bookmark bookmark = BookmarkUtils.createBookmarkFromHtml(text, plainText, user); + Wikitty w = getBowProxy().getWikitty(bookmark); + ImportHelper.addExtension(w); + ImportHelper.setDate(w, date); + BookmarkUtils.addTagsToBookmark(tagList, bookmark); if (bookmark != null) { bookmarks.add(bookmark); @@ -174,7 +175,7 @@ NodeList children = node.getChildren(); if (children != null) { - parseHtmlToBookmarks(children, user, bookmarks, tagList); //If there is an under node = recursion + parseHtmlToBookmarks(children, user, date, bookmarks, tagList); //If there is an under node = recursion } } if (isFolder) { //If we find a folder, we have to remove it @@ -188,27 +189,26 @@ } public String execute() { - User user = (User)session.get("user"); + User user = getBowSession().getUser(); if (upfile != null) { - try { - List<?> lines; +// try { +// List<?> lines = FileUtils.readLines(upfile); +// String content = ""; +// +// for (Object line : lines) { +// content += (String)line; +// } + WikittyProxy proxy = getBowProxy(); - lines = FileUtils.readLines(upfile); - String content = ""; - - for (Object line : lines) { - content += (String)line; - } - WikittyProxy proxy = BowProxy.getInstance(); - try { - Parser parser = new Parser(content); + URL url = upfile.toURI().toURL(); + Parser parser = new Parser(url.openConnection()); NodeList list = parser.parse(null); List<Bookmark> bookmarks = new ArrayList<Bookmark>(); - parseHtmlToBookmarks(list, user, bookmarks, new ArrayList<String>()); + parseHtmlToBookmarks(list, user, new Date(), bookmarks, new ArrayList<String>()); bookmarks = proxy.store(bookmarks); - createImportExtension(bookmarks); +// createImportExtension(bookmarks); redirectTo = BowUtils.redirectTo(searchLine, fullTextLine); if (searchLine == null || searchLine.isEmpty()) { BowInit.initHomePage(request, user); @@ -245,12 +245,11 @@ } return SUCCESS; } - } } catch (IOException e2) { // TODO Auto-generated catch block e2.printStackTrace(); - } return ERROR; + } } return SUCCESS; } Modified: trunk/src/main/java/org/chorem/bow/action/LoginAction.java =================================================================== --- trunk/src/main/java/org/chorem/bow/action/LoginAction.java 2011-02-11 17:31:09 UTC (rev 187) +++ trunk/src/main/java/org/chorem/bow/action/LoginAction.java 2011-02-11 17:48:26 UTC (rev 188) @@ -25,27 +25,28 @@ package org.chorem.bow.action; import java.security.NoSuchAlgorithmException; -import java.util.Map; import javax.servlet.http.HttpServletRequest; import org.apache.struts2.interceptor.ServletRequestAware; -import org.apache.struts2.interceptor.SessionAware; -import org.chorem.bow.BowProxy; import org.chorem.bow.User; import org.chorem.bow.BowInit; import org.nuiton.util.StringUtil; -import org.nuiton.wikitty.Criteria; +import org.nuiton.wikitty.search.Criteria; import org.nuiton.wikitty.WikittyProxy; import org.nuiton.wikitty.search.Search; import static org.nuiton.i18n.I18n.n_; -public class LoginAction extends BowBaseAction implements SessionAware, ServletRequestAware { +/** + * authentifie l'utilisateur et place son objet User dans la bow session + * + * @author poussin + */ +public class LoginAction extends BowBaseAction implements ServletRequestAware { private static final long serialVersionUID = 6891064800288772246L; protected String email; protected String password; - protected Map<String, Object> session; protected HttpServletRequest servletRequest; public String getEmail() { @@ -65,11 +66,6 @@ } @Override - public void setSession(Map<String, Object> session) { - this.session = session; - } - - @Override public void setServletRequest(HttpServletRequest request) { this.servletRequest = request; } @@ -77,9 +73,9 @@ protected User checkLogin(String email, String password) throws NoSuchAlgorithmException { if (email != null && password != null) { if (!email.isEmpty() && !password.equals(StringUtil.encodeMD5(""))) { - WikittyProxy proxy = BowProxy.getInstance(); - Criteria criteria = Search.query().eq(User.FQ_FIELD_EMAIL, email). - eq(User.FQ_FIELD_PASSWORD, password).criteria(); + WikittyProxy proxy = getBowProxy(); + Criteria criteria = Search.query().eq(User.FQ_FIELD_USER_EMAIL, email). + eq(User.FQ_FIELD_USER_PASSWORD, password).criteria(); User user = proxy.findByCriteria(User.class, criteria); if (user == null) { @@ -92,29 +88,25 @@ } public String execute() { - if (email != null) { - email = email.trim(); - - if (password != null) { - String md5 = StringUtil.encodeMD5(password); - User user; - - try { - user = checkLogin(email, md5); - } catch (NoSuchAlgorithmException e) { - return ERROR; - } - if (user != null) { - try { - BowInit.initSession(session, user); - } catch (NoSuchAlgorithmException e) { - return ERROR; - } - BowInit.initHomePage(servletRequest, user); - return SUCCESS; - } - } - } - return INPUT; + if (email != null) { + email = email.trim(); + + if (password != null) { + String md5 = StringUtil.encodeMD5(password); + User user; + + try { + user = checkLogin(email, md5); + } catch (NoSuchAlgorithmException e) { + return ERROR; + } + if (user != null) { + getBowSession().setUser(user); + BowInit.initHomePage(servletRequest, user); + return SUCCESS; + } + } + } + return INPUT; } } \ No newline at end of file Modified: trunk/src/main/java/org/chorem/bow/action/LogoutAction.java =================================================================== --- trunk/src/main/java/org/chorem/bow/action/LogoutAction.java 2011-02-11 17:31:09 UTC (rev 187) +++ trunk/src/main/java/org/chorem/bow/action/LogoutAction.java 2011-02-11 17:48:26 UTC (rev 188) @@ -1,33 +1,17 @@ package org.chorem.bow.action; -import java.util.Map; +import org.chorem.bow.BowSession; -import org.apache.struts2.dispatcher.SessionMap; -import org.apache.struts2.interceptor.SessionAware; - -public class LogoutAction extends BowBaseAction implements SessionAware { +/** + * Invalide la session courante et donc de-authentifie l'utilisateur + * + * @author poussin + */ +public class LogoutAction extends BowBaseAction { private static final long serialVersionUID = 4806944250461551896L; - protected Map<String, Object> session; - @Override - public void setSession(Map<String, Object> session) { - this.session = session; - } - - public Map<String, Object> getSession() { - return this.session; - } - public String execute() { - if (session instanceof SessionMap) { - try { - ((SessionMap<String, Object>)session).invalidate(); - return SUCCESS; - } catch (IllegalStateException e) { - //TODO : logger l'erreur - //logger.error(msg, e); - } - } - return ERROR; + BowSession.invalidate(session); + return SUCCESS; } } Modified: trunk/src/main/java/org/chorem/bow/action/ModifyBookmarkAction.java =================================================================== --- trunk/src/main/java/org/chorem/bow/action/ModifyBookmarkAction.java 2011-02-11 17:31:09 UTC (rev 187) +++ trunk/src/main/java/org/chorem/bow/action/ModifyBookmarkAction.java 2011-02-11 17:48:26 UTC (rev 188) @@ -1,12 +1,16 @@ package org.chorem.bow.action; import org.chorem.bow.Bookmark; -import org.chorem.bow.BookmarkActions; -import org.chorem.bow.BowProxy; -import org.nuiton.wikitty.Criteria; +import org.chorem.bow.BookmarkUtils; +import org.nuiton.wikitty.search.Criteria; import org.nuiton.wikitty.WikittyProxy; import org.nuiton.wikitty.search.Search; +/** + * Modifie une entree du bookmark + * + * @author poussin + */ public class ModifyBookmarkAction extends BowBaseAction { private static final long serialVersionUID = 8197008295267924063L; protected String link; @@ -116,20 +120,20 @@ } public String execute() { - WikittyProxy proxy = BowProxy.getInstance(); - Bookmark bookmark = proxy.restore(Bookmark.class, bookmarkId); + WikittyProxy proxy = getBowProxy(); + Bookmark bookmark = proxy.restore(Bookmark.class, bookmarkId); - if (bookmark != null) { - if (alias != null && !alias.isEmpty()) { - Criteria criteria = Search.query().eq(Bookmark.FQ_FIELD_ALIAS, alias).criteria(); + if (bookmark != null) { + if (alias != null && !alias.isEmpty()) { + Criteria criteria = Search.query().eq(Bookmark.FQ_FIELD_BOOKMARK_ALIAS, alias).criteria(); - if (proxy.findByCriteria(Bookmark.class, criteria) != null) { - alias = bookmark.getAlias(); - } - } - BookmarkActions.updateBookmark(bookmark, name, link, tags, alias); - proxy.store(bookmark); - } - return SUCCESS; + if (proxy.findByCriteria(Bookmark.class, criteria) != null) { + alias = bookmark.getAlias(); + } + } + BookmarkUtils.updateBookmark(bookmark, name, link, tags, alias); + proxy.store(bookmark); + } + return SUCCESS; } } \ No newline at end of file Modified: trunk/src/main/java/org/chorem/bow/action/OpenSearchResultAction.java =================================================================== --- trunk/src/main/java/org/chorem/bow/action/OpenSearchResultAction.java 2011-02-11 17:31:09 UTC (rev 187) +++ trunk/src/main/java/org/chorem/bow/action/OpenSearchResultAction.java 2011-02-11 17:48:26 UTC (rev 188) @@ -1,34 +1,33 @@ package org.chorem.bow.action; -import java.security.NoSuchAlgorithmException; -import java.util.Map; - import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts2.interceptor.ServletRequestAware; import org.apache.struts2.interceptor.ServletResponseAware; -import org.apache.struts2.interceptor.SessionAware; import org.chorem.bow.Bookmark; import org.chorem.bow.BookmarkActions; -import org.chorem.bow.BowBookmark; +import org.chorem.bow.BookmarkUtils; import org.chorem.bow.BowConfig; -import org.chorem.bow.BowInit; -import org.chorem.bow.BowProxy; import org.chorem.bow.BowUtils; import org.chorem.bow.Preference; import org.chorem.bow.User; -import org.nuiton.wikitty.Criteria; -import org.nuiton.wikitty.PagedResult; +import org.nuiton.wikitty.search.Criteria; +import org.nuiton.wikitty.search.PagedResult; import org.nuiton.wikitty.WikittyProxy; import org.nuiton.wikitty.search.Search; -public class OpenSearchResultAction extends BowBaseAction implements SessionAware, ServletRequestAware, ServletResponseAware { +/** + * Traite toutes les demandes faite via l'opensearch + * a:, :, t:, ... + * + * @author poussin + */ +public class OpenSearchResultAction extends BowBaseAction implements ServletRequestAware, ServletResponseAware { private static final long serialVersionUID = -1691325797986483856L; protected String searchLine; protected String token; protected String redirectTo; - protected Map<String, Object> session; protected HttpServletRequest request; protected HttpServletResponse response; @@ -68,11 +67,6 @@ } @Override - public void setSession(Map<String, Object> session) { - this.session = session; - } - - @Override public void setServletRequest(HttpServletRequest request) { this.request = request; } @@ -83,75 +77,59 @@ } public String execute() { - User user = (User)session.get("user"); + User user = getBowSession().getUser(); + if (searchLine != null && searchLine.matches("^http://[^ ]*")) { + redirectTo = BowUtils.redirectTo(searchLine, null); + } else if (searchLine != null + && (searchLine.startsWith(":") || searchLine.startsWith("t:"))) { + //On fait une recherche sur les tags - if (searchLine != null && searchLine.matches("^http://[^ ]*")) { - redirectTo = BowUtils.redirectTo(searchLine, null); - } else if (searchLine != null - && (searchLine.startsWith(":") || searchLine.startsWith("t:")) ) { - //On fait une recherche sur les tags + int index = searchLine.indexOf(":"); + searchLine = searchLine.substring(index + 1); //Suppresses first ":" - int index = searchLine.indexOf(":"); - searchLine = searchLine.substring(index+1); //Suppresses first ":" + WikittyProxy proxy = getBowProxy(); + Criteria criteria = BookmarkUtils.getBookmarkListCriteriaByUser(user, searchLine); + criteria = criteria.addSortDescending(Bookmark.FQ_FIELD_BOOKMARK_CLICK); + PagedResult<Bookmark> result = proxy.findAllByCriteria(Bookmark.class, criteria); //Retrieves bookmarks by search + BookmarkActions bookmarkActions = BookmarkUtils.createBookmarkActions(request, result, searchLine); + request.setAttribute("bookmarkActions", bookmarkActions); + request.setAttribute("token", token); + redirectTo = BowUtils.redirectTo(searchLine, null); + } else if (searchLine != null && searchLine.startsWith("f:")) { + // recherche fulltext dans bow + String fullText = searchLine.substring(2); + WikittyProxy proxy = getBowProxy(); + Criteria criteria; + if (!fullText.isEmpty()) { + criteria = Search.query().keyword(fullText). + eq(Bookmark.FQ_FIELD_BOOKMARK_EMAIL, user.getEmail()).criteria(). + addFacetField(Bookmark.FQ_FIELD_BOOKMARK_TAGS); + } else { + criteria = BookmarkUtils.getBookmarkListCriteriaByUser(user, null); + } + PagedResult<Bookmark> result = proxy.findAllByCriteria(Bookmark.class, criteria); + BookmarkActions bookmarkActions = BookmarkUtils.createBookmarkActions(request, result, null); + request.setAttribute("bookmarkActions", bookmarkActions); + request.setAttribute("token", token); + redirectTo = BowUtils.redirectTo(searchLine, null); + } else if (searchLine != null && searchLine.startsWith("a:")) { + // on redirige vers l'alias demande + searchLine = searchLine.substring(2); + redirectTo = BowConfig.getInstance().getAliasUrl() + searchLine; + } else { + // on fait une recherche sur le moteur de recherche configure + WikittyProxy proxy = getBowProxy(); + Preference pref = proxy.restore(Preference.class, user.getWikittyId()); - session.put("user", user); - try { - BowInit.initializeToken(session, user); - } catch (NoSuchAlgorithmException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - WikittyProxy proxy = BowProxy.getInstance(); - Criteria criteria = BowBookmark.getBookmarkListCriteriaByUser(user, searchLine); - criteria = criteria.addSortDescending(Bookmark.FQ_FIELD_CLICK); - PagedResult<Bookmark> result = proxy.findAllByCriteria(Bookmark.class, criteria); //Retrieves bookmarks by search - BookmarkActions bookmarkActions = BowBookmark.createBookmarkActions(request, result, searchLine); - request.setAttribute("bookmarkActions", bookmarkActions); - request.setAttribute("token", token); - redirectTo = BowUtils.redirectTo(searchLine, null); - } else if (searchLine != null && searchLine.startsWith("f:")) { - // recherche fulltext dans bow - String fullText = searchLine.substring(2); - - session.put("user", user); - try { - BowInit.initializeToken(session, user); - } catch (NoSuchAlgorithmException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - WikittyProxy proxy = BowProxy.getInstance(); - Criteria criteria; - if (!fullText.isEmpty()) { - criteria = Search.query().keyword(fullText). - eq(Bookmark.FQ_FIELD_EMAIL, user.getEmail()).criteria(). - addFacetField(Bookmark.FQ_FIELD_TAGS); - } else { - criteria = BowBookmark.getBookmarkListCriteriaByUser(user, null); - } - PagedResult<Bookmark> result = proxy.findAllByCriteria(Bookmark.class, criteria); - BookmarkActions bookmarkActions = BowBookmark.createBookmarkActions(request, result, null); - request.setAttribute("bookmarkActions", bookmarkActions); - request.setAttribute("token", token); - redirectTo = BowUtils.redirectTo(searchLine, null); - } else if (searchLine != null && searchLine.startsWith("a:")) { - // on redirige vers l'alias demande - searchLine = searchLine.substring(2); - redirectTo = BowConfig.getInstance().getAliasUrl() + searchLine; - } else { - // on fait une recherche sur le moteur de recherche configure - WikittyProxy proxy = BowProxy.getInstance(); - Preference pref = proxy.restore(Preference.class, user.getWikittyId()); - - String searchEngineURL = pref.getSearchEngineUrlResults(); - if (searchEngineURL == null || "".equals(searchEngineURL)) { - BowConfig config = BowConfig.getInstance(); - searchEngineURL = config.getSearchEngine(); - } - searchEngineURL = searchEngineURL.replace("{searchTerms}", searchLine); - searchEngineURL = response.encodeRedirectURL(searchEngineURL); - redirectTo = searchEngineURL; - } - return SUCCESS; + String searchEngineURL = pref.getSearchEngineUrlResults(); + if (searchEngineURL == null || "".equals(searchEngineURL)) { + BowConfig config = BowConfig.getInstance(); + searchEngineURL = config.getSearchEngine(); + } + searchEngineURL = searchEngineURL.replace("{searchTerms}", searchLine); + searchEngineURL = response.encodeRedirectURL(searchEngineURL); + redirectTo = searchEngineURL; + } + return SUCCESS; } -} \ No newline at end of file +} Modified: trunk/src/main/java/org/chorem/bow/action/OpenSearchSuggestionAction.java =================================================================== --- trunk/src/main/java/org/chorem/bow/action/OpenSearchSuggestionAction.java 2011-02-11 17:31:09 UTC (rev 187) +++ trunk/src/main/java/org/chorem/bow/action/OpenSearchSuggestionAction.java 2011-02-11 17:48:26 UTC (rev 188) @@ -8,20 +8,23 @@ import javax.servlet.http.HttpServletRequest; import org.apache.struts2.interceptor.ServletRequestAware; -import org.apache.struts2.interceptor.SessionAware; import org.chorem.bow.Bookmark; -import org.chorem.bow.BowProxy; import org.chorem.bow.OpenSearchActions; import org.chorem.bow.User; -import org.nuiton.wikitty.Criteria; -import org.nuiton.wikitty.FacetTopic; -import org.nuiton.wikitty.PagedResult; +import org.nuiton.wikitty.search.Criteria; +import org.nuiton.wikitty.search.FacetTopic; +import org.nuiton.wikitty.search.PagedResult; import org.nuiton.wikitty.WikittyProxy; import org.nuiton.wikitty.search.Search; -public class OpenSearchSuggestionAction extends BowBaseAction implements SessionAware, ServletRequestAware { +/** + * Retourne les suggestions pour l'opensearch en fonction de ce qui a ete deja + * saisie + * + * @author poussin + */ +public class OpenSearchSuggestionAction extends BowBaseAction implements ServletRequestAware { private static final long serialVersionUID = 3973618635494129146L; - protected Map<String, Object> session; protected String searchLine; protected HttpServletRequest request; @@ -38,11 +41,6 @@ public void setSearchLine(String searchLine) { this.searchLine = searchLine; } - - @Override - public void setSession(Map<String, Object> session) { - this.session = session; - } @Override public void setServletRequest(HttpServletRequest request) { @@ -50,11 +48,11 @@ } public String execute() { - User user = (User)session.get("user"); + User user = getBowSession().getUser(); if (searchLine != null) { OpenSearchActions openSearchActions = new OpenSearchActions(); - WikittyProxy proxy = BowProxy.getInstance(); + WikittyProxy proxy = getBowProxy(); String[] words = searchLine.split("\\s+"); List<String> searchLineList = new ArrayList<String>(Arrays.asList(words)); @@ -66,15 +64,15 @@ if (searchLineList.size() > 1) { List<String> cpy = new ArrayList<String>(searchLineList); cpy.remove(cpy.size() - 1); - criteria = Search.query().eq(Bookmark.FQ_FIELD_EMAIL, user.getEmail()). - eq(Bookmark.FQ_FIELD_TAGS, cpy).criteria().addFacetField(Bookmark.FQ_FIELD_TAGS); + criteria = Search.query().eq(Bookmark.FQ_FIELD_BOOKMARK_EMAIL, user.getEmail()). + eq(Bookmark.FQ_FIELD_BOOKMARK_TAGS, cpy).criteria().addFacetField(Bookmark.FQ_FIELD_BOOKMARK_TAGS); } else { - criteria = Search.query().eq(Bookmark.FQ_FIELD_EMAIL, user.getEmail()). - criteria().addFacetField(Bookmark.FQ_FIELD_TAGS); + criteria = Search.query().eq(Bookmark.FQ_FIELD_BOOKMARK_EMAIL, user.getEmail()). + criteria().addFacetField(Bookmark.FQ_FIELD_BOOKMARK_TAGS); } PagedResult<Bookmark> result = proxy.findAllByCriteria(Bookmark.class, criteria); List<Bookmark> bookList = result.getAll(); - List<FacetTopic> topics = result.getTopic(Bookmark.FQ_FIELD_TAGS); + List<FacetTopic> topics = result.getTopic(Bookmark.FQ_FIELD_BOOKMARK_TAGS); openSearchActions.setBookmarkList(bookList); openSearchActions.setSuggestionList(topics); Modified: trunk/src/main/java/org/chorem/bow/action/OrderAction.java =================================================================== --- trunk/src/main/java/org/chorem/bow/action/OrderAction.java 2011-02-11 17:31:09 UTC (rev 187) +++ trunk/src/main/java/org/chorem/bow/action/OrderAction.java 2011-02-11 17:48:26 UTC (rev 188) @@ -1,31 +1,28 @@ package org.chorem.bow.action; -import java.util.Map; - import javax.servlet.http.HttpServletRequest; import org.apache.struts2.interceptor.ServletRequestAware; -import org.apache.struts2.interceptor.SessionAware; import org.chorem.bow.Bookmark; import org.chorem.bow.BookmarkActions; -import org.chorem.bow.BowBookmark; -import org.chorem.bow.BowProxy; +import org.chorem.bow.BookmarkUtils; import org.chorem.bow.User; -import org.nuiton.wikitty.Criteria; -import org.nuiton.wikitty.PagedResult; +import org.nuiton.wikitty.search.Criteria; +import org.nuiton.wikitty.search.PagedResult; import org.nuiton.wikitty.WikittyProxy; -public class OrderAction extends BowBaseAction implements SessionAware, ServletRequestAware { +/** + * Permet de modifie l'ordre de tri des bookmarks + * TODO poussin 20110211 cette action n'est pas vraiment pertinente et devrait + * etre des options de l'action de recherche + * + * @author poussin + */ +public class OrderAction extends BowBaseAction implements ServletRequestAware { private static final long serialVersionUID = 203690999710176818L; - protected Map<String, Object> session; protected String type; protected String searchLine; protected HttpServletRequest request; - - @Override - public void setSession(Map<String, Object> session) { - this.session = session; - } /** * @return the type @@ -61,34 +58,42 @@ } public String execute() { - Criteria baseCriteria = BowBookmark.getBookmarkListCriteriaByUser((User)session.get("user"), searchLine); + User user = getBowSession().getUser(); + Criteria baseCriteria = BookmarkUtils.getBookmarkListCriteriaByUser(user, searchLine); - if (type != null && baseCriteria != null && !type.isEmpty()) { - WikittyProxy proxy = BowProxy.getInstance(); - PagedResult<Bookmark> result = null; + if (type != null && baseCriteria != null && !type.isEmpty()) { + WikittyProxy proxy = getBowProxy(); + PagedResult<Bookmark> result = null; - if (type.equals("ascName")) { - Criteria criteria = baseCriteria.addSortAscending(Bookmark.FQ_FIELD_DESCRIPTION); - result = proxy.findAllByCriteria(Bookmark.class, criteria); - } else if (type.equals("ascDate")) { - Criteria criteria = baseCriteria.addSortAscending(Bookmark.FQ_FIELD_DATE); - result = proxy.findAllByCriteria(Bookmark.class, criteria); - } else if (type.equals("ascClick")) { - Criteria criteria = baseCriteria.addSortAscending(Bookmark.FQ_FIELD_CLICK); - result = proxy.findAllByCriteria(Bookmark.class, criteria); - } else if (type.equals("descName")) { - Criteria criteria = baseCriteria.addSortDescending(Bookmark.FQ_FIELD_DESCRIPTION); - result = proxy.findAllByCriteria(Bookmark.class, criteria); - } else if (type.equals("descDate")) { - Criteria criteria = baseCriteria.addSortDescending(Bookmark.FQ_FIELD_DATE); - result = proxy.findAllByCriteria(Bookmark.class, criteria); - } else if (type.equals("descClick")) { - Criteria criteria = baseCriteria.addSortDescending(Bookmark.FQ_FIELD_CLICK); - result = proxy.findAllByCriteria(Bookmark.class, criteria); - } - BookmarkActions bookmarkActions = BowBookmark.createBookmarkActions(request, result, searchLine); - request.setAttribute("bookmarkActions", bookmarkActions); - } - return SUCCESS; + if (type.equals("ascName")) { + Criteria criteria = baseCriteria.addSortAscending( + Bookmark.FQ_FIELD_BOOKMARK_DESCRIPTION); + result = proxy.findAllByCriteria(Bookmark.class, criteria); + } else if (type.equals("ascDate")) { + Criteria criteria = baseCriteria.addSortAscending( + Bookmark.FQ_FIELD_BOOKMARK_DATE); + result = proxy.findAllByCriteria(Bookmark.class, criteria); + } else if (type.equals("ascClick")) { + Criteria criteria = baseCriteria.addSortAscending( + Bookmark.FQ_FIELD_BOOKMARK_CLICK); + result = proxy.findAllByCriteria(Bookmark.class, criteria); + } else if (type.equals("descName")) { + Criteria criteria = baseCriteria.addSortDescending( + Bookmark.FQ_FIELD_BOOKMARK_DESCRIPTION); + result = proxy.findAllByCriteria(Bookmark.class, criteria); + } else if (type.equals("descDate")) { + Criteria criteria = baseCriteria.addSortDescending( + Bookmark.FQ_FIELD_BOOKMARK_DATE); + result = proxy.findAllByCriteria(Bookmark.class, criteria); + } else if (type.equals("descClick")) { + Criteria criteria = baseCriteria.addSortDescending( + Bookmark.FQ_FIELD_BOOKMARK_CLICK); + result = proxy.findAllByCriteria(Bookmark.class, criteria); + } + BookmarkActions bookmarkActions = + BookmarkUtils.createBookmarkActions(request, result, searchLine); + request.setAttribute("bookmarkActions", bookmarkActions); + } + return SUCCESS; } -} \ No newline at end of file +} Modified: trunk/src/main/java/org/chorem/bow/action/PreferencesAction.java =================================================================== --- trunk/src/main/java/org/chorem/bow/action/PreferencesAction.java 2011-02-11 17:31:09 UTC (rev 187) +++ trunk/src/main/java/org/chorem/bow/action/PreferencesAction.java 2011-02-11 17:48:26 UTC (rev 188) @@ -2,26 +2,28 @@ import java.security.NoSuchAlgorithmException; import java.util.List; -import java.util.Map; import javax.servlet.http.HttpServletRequest; import org.apache.struts2.interceptor.ServletRequestAware; -import org.apache.struts2.interceptor.SessionAware; -import org.chorem.bow.BowBookmark; +import org.chorem.bow.BookmarkUtils; import org.chorem.bow.BowInit; -import org.chorem.bow.BowProxy; import org.chorem.bow.Preference; import org.chorem.bow.User; import org.nuiton.util.StringUtil; -import org.nuiton.wikitty.Criteria; -import org.nuiton.wikitty.FacetTopic; +import org.nuiton.wikitty.search.Criteria; +import org.nuiton.wikitty.search.FacetTopic; import org.nuiton.wikitty.WikittyProxy; import org.nuiton.wikitty.search.Search; import static org.nuiton.i18n.I18n.n_; -public class PreferencesAction extends BowBaseAction implements SessionAware, ServletRequestAware { +/** + * Change les preferences de l'utilisateur (coleur, password, email, ...) + * + * @author poussin + */ +public class PreferencesAction extends BowBaseAction implements ServletRequestAware { private static final long serialVersionUID = -58341106356599721L; protected String colors; protected String tagsNb; @@ -34,7 +36,6 @@ protected String confirmNewPassword; protected String update; protected List<FacetTopic> bookmarksImportDate; - protected Map<String, Object> session; protected HttpServletRequest request; @@ -193,96 +194,90 @@ } @Override - public void setSession(Map<String, Object> session) { - this.session = session; - } - - @Override public void setServletRequest(HttpServletRequest request) { - this.request = request; + this.request = request; } protected Preference changePreference() { - Preference preference = (Preference)session.get("preference"); - - preference.setColors(colors); - if ((tagsNb != null && !tagsNb.isEmpty())) { - preference.setTags(Integer.valueOf(tagsNb)); - } - if (bookmarksHomePage != null && !bookmarksHomePage.isEmpty()) - preference.setBookmarks(Integer.valueOf(bookmarksHomePage)); - preference.setSearchEngineUrlSuggestions(searchEngineUrlSuggestions); - preference.setSearchEngineUrlResults(searchEngineUrlResults); + Preference preference = getBowSession().getPreference(); - return preference; + preference.setColors(colors); + if ((tagsNb != null && !tagsNb.isEmpty())) { + preference.setTags(Integer.valueOf(tagsNb)); + } + if (bookmarksHomePage != null && !bookmarksHomePage.isEmpty()) { + preference.setBookmarks(Integer.valueOf(bookmarksHomePage)); + } + preference.setSearchEngineUrlSuggestions(searchEngineUrlSuggestions); + preference.setSearchEngineUrlResults(searchEngineUrlResults); + + return preference; } - protected User changeUser(User newUser) - throws NoSuchAlgorithmException { + protected User changeUser(User newUser) { if (email != null && !email.isEmpty()) { - newUser.setEmail(email); - } - if (newPassword != null && confirmNewPassword != null && currentPassword != null) { - if (!newPassword.isEmpty() && !confirmNewPassword.isEmpty() && !currentPassword.isEmpty()) { - if (newPassword.equals(confirmNewPassword)) { - currentPassword = StringUtil.encodeMD5(currentPassword); - if (currentPassword.equals(newUser.getPassword())) { - newUser.setPassword(StringUtil.encodeMD5(newPassword)); - } else { - addFieldError("currentPassword", getText(n_("bow.preferences.badCurrentPassword"))); - return null; - } - } - } - } - return newUser; + newUser.setEmail(email); + } + if (newPassword != null && confirmNewPassword != null && currentPassword != null) { + if (!newPassword.isEmpty() && !confirmNewPassword.isEmpty() && !currentPassword.isEmpty()) { + if (newPassword.equals(confirmNewPassword)) { + currentPassword = StringUtil.encodeMD5(currentPassword); + if (currentPassword.equals(newUser.getPassword())) { + newUser.setPassword(StringUtil.encodeMD5(newPassword)); + } else { + addFieldError("currentPassword", getText(n_("bow.preferences.badCurrentPassword"))); + return null; + } + } + } + } + return newUser; } public String execute() { - User user = (User)session.get("user"); + User user = getBowSession().getUser(); - setBookmarksImportDate(BowBookmark.getBookmarksByImportDate(request, user)); - if (update != null) { //If the user submitted the form - WikittyProxy proxy = BowProxy.getInstance(); - Preference preference = changePreference(); - proxy.store(preference); + setBookmarksImportDate(BookmarkUtils.getBookmarksByImportDate(request, user)); + if (update != null) { //If the user submitted the form + WikittyProxy proxy = getBowProxy(); + Preference preference = changePreference(); + proxy.store(preference); - User newUser = proxy.restore(User.class, user.getWikittyId()); - Criteria criteria = Search.query().eq(User.FQ_FIELD_EMAIL, email).criteria(); - User find = proxy.findByCriteria(User.class, criteria); + User newUser = proxy.restore(User.class, user.getWikittyId()); + Criteria criteria = Search.query().eq(User.FQ_FIELD_USER_EMAIL, email).criteria(); + User find = proxy.findByCriteria(User.class, criteria); - if (find == null || find.getEmail().equals(user.getEmail())) { //If this email address isn't already used by someone else - try { - if ((newUser = changeUser(newUser)) == null) { - return ERROR; - } - } catch (NoSuchAlgorithmException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - newUser = proxy.store(newUser); - session.put("user", newUser); + if (find == null || find.getEmail().equals(user.getEmail())) { + if ((newUser = changeUser(newUser)) == null) { + return ERROR; + } + newUser = proxy.store(newUser); + getBowSession().setUser(newUser); - preference = proxy.restore(Preference.class, newUser.getWikittyId()); - session.put("preference", preference); - return "update"; - } - setEmail(user.getEmail()); - addActionError(getText("bow.preferences.emailAldyExists")); - return ERROR; - } else { //If the user didn't submit the form, the fields are filled with the current preferences values - Preference preference = (Preference)session.get("preference"); + preference = proxy.restore(Preference.class, newUser.getWikittyId()); + getBowSession().setPreference(preference); + return "update"; + } else { + // this email address is already used by someone else + setEmail(user.getEmail()); + addActionError(getText("bow.preferences.emailAldyExists")); + return ERROR; + } + } else { + // If the user didn't submit the form, the fields are filled with + // the current preferences values + Preference preference = getBowSession().getPreference(); - setEmail(user.getEmail()); - if (preference != null) { - setColors(preference.getColors()); - setTagsNb(String.valueOf(preference.getTags())); - setBookmarksHomePage(String.valueOf(preference.getBookmarks())); - setSearchEngineUrlSuggestions(preference.getSearchEngineUrlSuggestions()); - setSearchEngineUrlResults(preference.getSearchEngineUrlResults()); - } - } - BowInit.initHomePage(request, user); - return SUCCESS; + setEmail(user.getEmail()); + if (preference != null) { + setColors(preference.getColors()); + setTagsNb(String.valueOf(preference.getTags())); + setBookmarksHomePage(String.valueOf(preference.getBookmarks())); + setSearchEngineUrlSuggestions(preference.getSearchEngineUrlSuggestions()); + setSearchEngineUrlResults(preference.getSearchEngineUrlResults()); + } + } + BowInit.initHomePage(request, user); + return SUCCESS; } } Modified: trunk/src/main/java/org/chorem/bow/action/ReIndexationAction.java =================================================================== --- trunk/src/main/java/org/chorem/bow/action/ReIndexationAction.java 2011-02-11 17:31:09 UTC (rev 187) +++ trunk/src/main/java/org/chorem/bow/action/ReIndexationAction.java 2011-02-11 17:48:26 UTC (rev 188) @@ -1,26 +1,24 @@ package org.chorem.bow.action; -import java.util.Map; - -import org.apache.struts2.interceptor.SessionAware; -import org.chorem.bow.BowProxy; +import org.chorem.bow.BowSession; import org.nuiton.wikitty.WikittyProxy; -public class ReIndexationAction extends BowBaseAction implements SessionAware { +/** + * Lance la reindexation solr + * + * @author poussin + */ +public class ReIndexationAction extends BowBaseAction { + private static final long serialVersionUID = 6226574522402739559L; - protected Map<String, Object> session; - @Override - public void setSession(Map<String, Object> session) { - this.session = session; - } - public String execute() { - if ((Boolean)session.get("admin")) { //If is admin - WikittyProxy proxy = BowProxy.getInstance(); + BowSession session = getBowSession(); + if (session.isAdmin()) { //If is admin + WikittyProxy proxy = getBowProxy(); - proxy.getWikittyService().syncEngin(proxy.getSecurityToken()); - } - return SUCCESS; + proxy.getWikittyService().syncSearchEngine(proxy.getSecurityToken()); + } + return SUCCESS; } } \ No newline at end of file Modified: trunk/src/main/java/org/chorem/bow/action/RegisterAction.java =================================================================== --- trunk/src/main/java/org/chorem/bow/action/RegisterAction.java 2011-02-11 17:31:09 UTC (rev 187) +++ trunk/src/main/java/org/chorem/bow/action/RegisterAction.java 2011-02-11 17:48:26 UTC (rev 188) @@ -1,31 +1,31 @@ package org.chorem.bow.action; -import java.security.NoSuchAlgorithmException; -import java.util.Map; import javax.mail.MessagingException; import javax.mail.internet.AddressException; import javax.servlet.http.HttpServletRequest; import org.apache.struts2.interceptor.ServletRequestAware; -import org.apache.struts2.interceptor.SessionAware; import org.chorem.bow.BowMail; -import org.chorem.bow.BowProxy; import org.chorem.bow.User; import org.chorem.bow.UserImpl; import org.chorem.bow.BowInit; import org.nuiton.util.StringUtil; -import org.nuiton.wikitty.Criteria; +import org.nuiton.wikitty.search.Criteria; import org.nuiton.wikitty.WikittyProxy; import org.nuiton.wikitty.search.Search; import static org.nuiton.i18n.I18n.n_; -public class RegisterAction extends BowBaseAction implements SessionAware, ServletRequestAware { +/** + * Enregistre un nouvel utilisateur + * + * @author poussin + */ +public class RegisterAction extends BowBaseAction implements ServletRequestAware { private static final long serialVersionUID = 2204772861770399542L; protected String email; protected String password; protected String repeatPassword; - protected Map<String, Object> session; protected HttpServletRequest request; /** @@ -71,11 +71,6 @@ } @Override - public void setSession(Map<String, Object> session) { - this.session = session; - } - - @Override public void setServletRequest(HttpServletRequest request) { this.request = request; } @@ -83,8 +78,8 @@ protected boolean checkRegister(String passwordMD5) { if (email != null && passwordMD5 != null) { if (!email.isEmpty() && !passwordMD5.equals(StringUtil.encodeMD5(""))) { - WikittyProxy proxy = BowProxy.getInstance(); - Criteria criteria = Search.query().eq(User.FQ_FIELD_EMAIL, email).criteria(); //Retrieves user by user name (email) + WikittyProxy proxy = getBowProxy(); + Criteria criteria = Search.query().eq(User.FQ_FIELD_USER_EMAIL, email).criteria(); //Retrieves user by user name (email) if (proxy.findByCriteria(User.class, criteria) == null) { return false; @@ -100,49 +95,44 @@ } public String execute() { - if (email != null) { - email = email.trim(); - if (password != null) { - if (!password.equals(repeatPassword)) { - addActionError(getText(n_("bow.register.pwdDontMatch"))); - return INPUT; - } - String md5 = StringUtil.encodeMD5(password); - - if (!checkRegister(md5)) { - WikittyProxy proxy = BowProxy.getInstance(); - UserImpl newUser = new UserImpl(); - newUser.setPassword(md5); - newUser.setEmail(email); - User login = proxy.store((User) newUser); //Stores the new user - - if (login != null) { - try { - BowInit.initSession(session, login); - } catch (NoSuchAlgorithmException e) { - return ERROR; - } - BowInit.initHomePage(request, login); - try { - String mailContent; - - mailContent = getText(n_("bow.register.mailHi")) + ",\n\n" + getText(n_("bow.register.mailPwd")) + ": " + password + "\n\n" + getText(n_("bow.register.mailEmail")) + ": " + email + "\n\n"; - BowMail.sendMail(email, getText(n_("bow.register.mailSubject")), mailContent); - } catch (AddressException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (MessagingException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - return SUCCESS; - - } else { - addFieldError("email", getText(n_("bow.register.invalidLogin"))); - } - } - } - } - return INPUT; + if (email != null) { + email = email.trim(); + if (password != null) { + if (!password.equals(repeatPassword)) { + addActionError(getText(n_("bow.register.pwdDontMatch"))); + return INPUT; + } + String md5 = StringUtil.encodeMD5(password); + + if (!checkRegister(md5)) { + WikittyProxy proxy = getBowProxy(); + UserImpl newUser = new UserImpl(); + newUser.setPassword(md5); + newUser.setEmail(email); + User login = proxy.store(newUser); //Stores the new user + + if (login == null) { + addFieldError("email", getText(n_("bow.register.invalidLogin"))); + } else { + getBowSession().setUser(login); + BowInit.initHomePage(request, login); + try { + String mailContent; + + mailContent = getText(n_("bow.register.mailHi")) + ",\n\n" + getText(n_("bow.register.mailPwd")) + ": " + password + "\n\n" + getText(n_("bow.register.mailEmail")) + ": " + email + "\n\n"; + BowMail.sendMail(email, getText(n_("bow.register.mailSubject")), mailContent); + } catch (AddressException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (MessagingException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return SUCCESS; + } + } + } + } + return INPUT; } } Modified: trunk/src/main/java/org/chorem/bow/action/RemoveBookmarkAction.java =================================================================== --- trunk/src/main/java/org/chorem/bow/action/RemoveBookmarkAction.java 2011-02-11 17:31:09 UTC (rev 187) +++ trunk/src/main/java/org/chorem/bow/action/RemoveBookmarkAction.java 2011-02-11 17:48:26 UTC (rev 188) @@ -1,10 +1,14 @@ package org.chorem.bow.action; import org.chorem.bow.Bookmark; -import org.chorem.bow.BowProxy; import org.chorem.bow.BowUtils; import org.nuiton.wikitty.WikittyProxy; +/** + * Supprime un bookmark + * + * @author poussin + */ public class RemoveBookmarkAction extends BowBaseAction { private static final long serialVersionUID = 820566716695285561L; protected String bookmarkId; @@ -62,19 +66,19 @@ } public String execute() { - if (bookmarkId != null && !bookmarkId.isEmpty()) { - try { - WikittyProxy proxy = BowProxy.getInstance(); - Bookmark bookmark = proxy.restore(Bookmark.class, bookmarkId); + if (bookmarkId != null && !bookmarkId.isEmpty()) { + try { + WikittyProxy proxy = getBowProxy(); + Bookmark bookmark = proxy.restore(Bookmark.class, bookmarkId); - if (bookmark != null) { - proxy.delete(bookmarkId); - } - } catch (Exception e) { - log.error("Can't do action", e); - } - } - redirectTo = BowUtils.redirectTo(searchLine, fullTextLine); - return SUCCESS; + if (bookmark != null) { + proxy.delete(bookmarkId); + } + } catch (Exception e) { + log.error("Can't do action", e); + } + } + redirectTo = BowUtils.redirectTo(searchLine, fullTextLine); + return SUCCESS; } } \ No newline at end of file Modified: trunk/src/main/java/org/chorem/bow/action/SearchAction.java =================================================================== --- trunk/src/main/java/org/chorem/bow/action/SearchAction.java 2011-02-11 17:31:09 UTC (rev 187) +++ trunk/src/main/java/org/chorem/bow/action/SearchAction.java 2011-02-11 17:48:26 UTC (rev 188) @@ -1,29 +1,26 @@ package org.chorem.bow.action; import java.io.IOException; -import java.util.Map; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import org.apache.struts2.interceptor.ServletRequestAware; -import org.apache.struts2.interceptor.SessionAware; import org.chorem.bow.BowSearch; import org.chorem.bow.User; -public class SearchAction extends BowBaseAction implements SessionAware, ServletRequestAware { +/** + * gere les recherches de bookmark + * + * @author poussin + */ +public class SearchAction extends BowBaseAction implements ServletRequestAware { private static final long serialVersionUID = -2161661766242362907L; - protected Map<String, Object> session; protected String searchLine; protected String fullTextLine; protected String addTag; protected HttpServletRequest request; - @Override - public void setSession(Map<String, Object> session) { - this.session = session; - } - /** * @return the searchLine */ @@ -72,17 +69,16 @@ } public String execute() { - User user = (User)session.get("user"); - - try { - BowSearch.search(request, user); - } catch (IOException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (ServletException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - return SUCCESS; + try { + User user = getBowSession().getUser(); + BowSearch.search(request, user); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (ServletException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + return SUCCESS; } } \ No newline at end of file Modified: trunk/src/main/java/org/chorem/bow/interceptor/AldyLoggedInterceptor.java =================================================================== --- trunk/src/main/java/org/chorem/bow/interceptor/AldyLoggedInterceptor.java 2011-02-11 17:31:09 UTC (rev 187) +++ trunk/src/main/java/org/chorem/bow/interceptor/AldyLoggedInterceptor.java 2011-02-11 17:48:26 UTC (rev 188) @@ -8,6 +8,7 @@ import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionInvocation; import com.opensymphony.xwork2.interceptor.AbstractInterceptor; +import org.chorem.bow.BowSession; public class AldyLoggedInterceptor extends AbstractInterceptor { private static final long serialVersionUID = -2411549996072421471L; @@ -22,13 +23,15 @@ @Override public String intercept(ActionInvocation invocation) throws Exception { - Map<String, Object> session = ActionContext.getContext().getSession(); - - if ((User)session.get("user") != null) { - ServletActionContext.getResponse().sendRedirect(redirect); - return null; - } - return invocation.invoke(); + Map<String, Object> session = ActionContext.getContext().getSession(); + + BowSession bowSession = BowSession.getBowSession(session); + User user = bowSession.getUser(); + if (user != null) { + ServletActionContext.getResponse().sendRedirect(redirect); + return null; + } + return invocation.invoke(); } } Modified: trunk/src/main/java/org/chorem/bow/interceptor/LoginInterceptor.java =================================================================== --- trunk/src/main/java/org/chorem/bow/interceptor/LoginInterceptor.java 2011-02-11 17:31:09 UTC (rev 187) +++ trunk/src/main/java/org/chorem/bow/interceptor/LoginInterceptor.java 2011-02-11 17:48:26 UTC (rev 188) @@ -10,6 +10,7 @@ import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionInvocation; import com.opensymphony.xwork2.interceptor.AbstractInterceptor; +import org.chorem.bow.BowSession; public class LoginInterceptor extends AbstractInterceptor { private static final long serialVersionUID = -7520186185205372272L; @@ -24,23 +25,26 @@ @Override public String intercept(ActionInvocation invocation) throws Exception { - Map<String, Object> session = ActionContext.getContext().getSession(); + Map<String, Object> session = ActionContext.getContext().getSession(); - if ((User)session.get("user") == null) { - Map<String, Object> toto = ActionContext.getContext().getParameters(); - String[] token = (String[])toto.get("token"); - + BowSession bowSession = BowSession.getBowSession(session); + User user = bowSession.getUser(); + + if (user == null) { + Map<String, Object> params = ActionContext.getContext().getParameters(); + String[] token = (String[]) params.get("token"); + if (token != null && !token[0].isEmpty()) { - User user = BowUtils.checkToken(token[0], session); - - if (user != null) { - BowInit.initSession(session, user); - return invocation.invoke(); - } + user = BowUtils.checkToken(bowSession, token[0]); + + if (user != null) { + bowSession.setUser(user); + return invocation.invoke(); + } } ServletActionContext.getResponse().sendRedirect(redirect); return null; - } - return invocation.invoke(); + } + return invocation.invoke(); } } Modified: trunk/src/main/resources/bow.properties =================================================================== --- trunk/src/main/resources/bow.properties 2011-02-11 17:31:09 UTC (rev 187) +++ trunk/src/main/resources/bow.properties 2011-02-11 17:48:26 UTC (rev 188) @@ -28,5 +28,35 @@ servlet.alias=alias bow.smtpServer=smtp bow.addressFrom=bow@chorem.org -bow.admins=brossa_b@epitech.net +bow.admins=poussin@codelutin.com search.engine=http://seeks.fr/search?expansion=1&action=expand&q={searchTerms} + +wikitty.data.directory=/var/local/bow +wikitty.storage.jdbc.queryfile=wikitty-jdbc-query.properties +wikitty.storage.jdbc.driver=org.h2.Driver +wikitty.storage.jdbc.host=jdbc:h2:file:${wikitty.data.directory}/data/db +wikitty.storage.jdbc.login=sa +wikitty.storage.jdbc.password= +wikitty.storage.jdbc.xadatasource=org.h2.jdbcx.JdbcDataSource +wikitty.storage.jdbc.xadatasource.org.h2.jdbcx.JdbcDataSource.URL=${wikitty.storage.jdbc.host} +wikitty.storage.jdbc.xadatasource.org.h2.jdbcx.JdbcDataSource.user=${wikitty.storage.jdbc.login} +wikitty.storage.jdbc.xadatasource.org.h2.jdbcx.JdbcDataSource.password=${wikitty.storage.jdbc.password} +wikitty.searchengine.solr.directory.data=${wikitty.data.directory}/data/solr +wikitty.searchengine.solr.directory.factory=solr.StandardDirectoryFactory +wikitty.WikittyService.components=org.nuiton.wikitty.services.WikittyServiceStorage,\ +org.nuiton.wikitty.services.WikittyServiceNotifier,\ +org.nuiton.wikitty.services.WikittyServiceCached,\ +org.nuiton.wikitty.services.WikittyServiceSecurity +wikitty.WikittyServiceStorage.components=org.nuiton.wikitty.jdbc.WikittyExtensionStorageJDBC,\ +org.nuiton.wikitty.jdbc.WikittyStorageJDBC,\ +org.nuiton.wikitty.storage.solr.WikittySearchEngineSolr +wikitty.WikittyServiceCached.components=org.nuiton.wikitty.services.WikittyCacheJCS +wikitty.service.cache.listenevents=false +wikitty.service.cache.allwaysRestoreCopies=false +wikitty.service.event.propagate=false +wikitty.service.event.listen=false +wikitty.addon.export.threadnumber=1 +wikitty.addon.export.directory=${wikitty.data.directory}/export +wikitty.addon.export.publicurl=file://${wikitty.data.directory}/export/ +jcs.default= +jcs.default.cacheattributes.MaxObjects=1000 Deleted: trunk/src/main/resources/wikitty-jdbc-config.properties =================================================================== --- trunk/src/main/resources/wikitty-jdbc-config.properties 2011-02-11 17:31:09 UTC (rev 187) +++ trunk/src/main/resources/wikitty-jdbc-config.properties 2011-02-11 17:48:26 UTC (rev 188) @@ -1,28 +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% -### -#Connection parameters -jdbc.con.driver=org.h2.Driver -jdbc.con.host=jdbc:h2:file:~/.bow/localdb/localdb -jdbc.con.userName=sa -jdbc.con.password= Modified: trunk/src/main/webapp/WEB-INF/decorators/main.jsp =================================================================== --- trunk/src/main/webapp/WEB-INF/decorators/main.jsp 2011-02-11 17:31:09 UTC (rev 187) +++ trunk/src/main/webapp/WEB-INF/decorators/main.jsp 2011-02-11 17:48:26 UTC (rev 188) @@ -15,7 +15,7 @@ <s:url id="permanentXml" action="permanentXml" /> <s:url id="favicon" value="/img/favicon.png" /> <link rel="icon" type="image/png" href="${favicon}" /> - <s:if test="%{#session.user != null}"> + <s:if test="%{#session.BowSession.user != null}"> <link rel="search" type="application/opensearchdescription+xml" title="Bow (temporary)" href="${temporaryXml}" /> <link rel="search" type="application/opensearchdescription+xml" title="Bow (permanent)" href="${permanentXml}" /> </s:if> @@ -32,7 +32,7 @@ <%@include file="/jsp/inc/errorFrame.jsp" %> <decorator:body /> </div> - <s:if test="%{#session.user != null}"> + <s:if test="%{#session.BowSession.user != null}"> <jsp:include page="/jsp/inc/rightMenu.jsp" /> </s:if> </div> Modified: trunk/src/main/webapp/WEB-INF/web.xml =================================================================== --- trunk/src/main/webapp/WEB-INF/web.xml 2011-02-11 17:31:09 UTC (rev 187) +++ trunk/src/main/webapp/WEB-INF/web.xml 2011-02-11 17:48:26 UTC (rev 188) @@ -67,6 +67,7 @@ </listener> <!-- Servlets --> +<!-- <servlet> <servlet-name>dwr</servlet-name> <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class> @@ -75,17 +76,19 @@ <param-value>true</param-value> </init-param> </servlet> + --> <servlet> <servlet-name>jspSupportServlet</servlet-name> <servlet-class>org.apache.struts2.views.JspSupportServlet</servlet-class> <load-on-startup>5</load-on-startup> </servlet> - <servlet-mapping> +<!-- +<servlet-mapping> <servlet-name>dwr</servlet-name> <url-pattern>/dwr/*</url-pattern> </servlet-mapping> - +--> <!-- Welcome file lists --> <welcome-file-list> <welcome-file>index.jsp</welcome-file> Modified: trunk/src/main/webapp/index.jsp =================================================================== --- trunk/src/main/webapp/index.jsp 2011-02-11 17:31:09 UTC (rev 187) +++ trunk/src/main/webapp/index.jsp 2011-02-11 17:48:26 UTC (rev 188) @@ -1,6 +1,6 @@ -<%@page import="org.chorem.bow.User"%> +<%@page import="org.chorem.bow.BowSession"%> <% -if ((User)session.getAttribute("user") == null) { +if (BowSession.getBowSession(session).getUser() == null) { response.sendRedirect("login_input.action"); } else { response.sendRedirect("home.action"); Modified: trunk/src/main/webapp/jsp/admin.jsp =================================================================== --- trunk/src/main/webapp/jsp/admin.jsp 2011-02-11 17:31:09 UTC (rev 187) +++ trunk/src/main/webapp/jsp/admin.jsp 2011-02-11 17:48:26 UTC (rev 188) @@ -26,47 +26,31 @@ <%@taglib prefix="s" uri="/struts-tags"%> <%@page import="org.chorem.bow.Preference" %> <%@page import="org.chorem.bow.User" %> -<%@page import="org.chorem.bow.TokenActions" %> +<%@page import="org.chorem.bow.BowSession" %> +<html xmlns="http://www.w3.org/1999/xhtml" + xmlns:s="http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd" + xmlns:jsp="http://java.sun.com/JSP/Page" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <head> + <s:url id="css" value="/css/bookmark.css" /> + <link href="${css}" rel="stylesheet" type="text/css" /> + <s:head /> + </head> + <body> + <div id="content"> + <div id="formFrame"> + <h1>Admin panel</h1> + <br /><br /> <% -User user = (User) session.getAttribute("user"); -Preference preference = (Preference) session.getAttribute("preference"); -TokenActions tokenActions = (TokenActions) session.getAttribute("tokenActions"); -Boolean admin = (Boolean) session.getAttribute("admin"); -if (user != null && preference != null && tokenActions != null && admin) { -// String url = (String) request.getAttribute("bowUrl"); -// String version = (String) request.getAttribute("version"); -// String permanentToken = tokenActions.getPermanentToken(); - String check = preference.getColors(); - if (check == null) { - preference.setColors(""); - } - check = preference.getSearchEngineUrlResults(); - if (check == null) { - preference.setSearchEngineUrlResults(""); - } - check = preference.getSearchEngineUrlSuggestions(); - if (check == null) { - preference.setSearchEngineUrlSuggestions(""); - } - %> - <html xmlns="http://www.w3.org/1999/xhtml" - xmlns:s="http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd" - xmlns:jsp="http://java.sun.com/JSP/Page" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> - <head> - <s:url id="css" value="/css/bookmark.css" /> - <link href="${css}" rel="stylesheet" type="text/css" /> - <s:head /> - </head> - <body> - <div id="content"> - <div id="formFrame"> - <h1>Admin panel</h1> - <br /><br /> - <a href="/bow/reIndexation.action">All data re-indexation</a> - <a href="/bow/home.action" id="homePage">Return to the home page</a> - </div> - </div> - </body> - </html> +BowSession bowSession = BowSession.getBowSession(session); +if (bowSession.isAdmin()) { +%> + <a href="/bow/reIndexation.action">All data re-indexation</a> + <a href="/bow/home.action" id="homePage">Return to the home page</a> +<% } else { %> + <h2>You don't have admin right !</h2> <% } %> + </div> + </div> + </body> +</html> Modified: trunk/src/main/webapp/jsp/error.jsp =================================================================== --- trunk/src/main/webapp/jsp/error.jsp 2011-02-11 17:31:09 UTC (rev 187) +++ trunk/src/main/webapp/jsp/error.jsp 2011-02-11 17:48:26 UTC (rev 188) @@ -24,7 +24,6 @@ --> <%@page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@taglib prefix="s" uri="/struts-tags"%> -<%@page import="org.chorem.bow.TokenActions" %> <%-- String techError = (String) request.getAttribute("errorMsgTech"); --%> Modified: trunk/src/main/webapp/jsp/home.jsp =================================================================== --- trunk/src/main/webapp/jsp/home.jsp 2011-02-11 17:31:09 UTC (rev 187) +++ trunk/src/main/webapp/jsp/home.jsp 2011-02-11 17:48:26 UTC (rev 188) @@ -24,17 +24,17 @@ <%@page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@taglib prefix="s" uri="/struts-tags" %> <%@page import="org.chorem.bow.BookmarkActions" %> -<%@page import="org.chorem.bow.TokenActions" %> +<%@page import="org.chorem.bow.BowSession" %> <%@page import="org.chorem.bow.Bookmark" %> <%@page import="org.chorem.bow.Preference" %> <%@page import="java.util.List" %> <%@page import="java.text.SimpleDateFormat" %> <% -TokenActions tokenActions = (TokenActions) session.getAttribute("tokenActions"); +BowSession bowSession = BowSession.getBowSession(session); BookmarkActions bookmarkActions = (BookmarkActions) request.getAttribute("bookmarkActions"); -Preference preference = (Preference) session.getAttribute("preference"); +Preference preference = bowSession.getPreference(); -if (tokenActions != null && bookmarkActions != null) { +if (bookmarkActions != null) { %> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:s="http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd" @@ -52,11 +52,8 @@ </div> <div class="content"> <% - int nbBookmarks = 10; - if (preference != null) { - if (preference.getBookmarks() > 0) - nbBookmarks = preference.getBookmarks(); - } + int nbBookmarks = preference.getBookmarks(); + SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); List<Bookmark> bookmarkList = bookmarkActions.getBookmarks(); if (!bookmarkList.isEmpty()) { Deleted: trunk/src/main/webapp/jsp/inc/bookmarkTop.jsp =================================================================== --- trunk/src/main/webapp/jsp/inc/bookmarkTop.jsp 2011-02-11 17:31:09 UTC (rev 187) +++ trunk/src/main/webapp/jsp/inc/bookmarkTop.jsp 2011-02-11 17:48:26 UTC (rev 188) @@ -1,92 +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% - --> -<%@page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> -<%@page import="org.chorem.bow.BookmarkActions" %> -<%@page import="java.text.SimpleDateFormat" %> -<%@page import="java.util.Iterator" %> -<%@page import="java.util.Set" %> -<%@page import="java.util.ArrayList" %> -<%@page import="java.util.List" %> -<%@page import="org.chorem.bow.TokenActions" %> -<%@page import="org.nuiton.wikitty.FacetTopic" %> -<%@page import="org.chorem.bow.Bookmark" %> -<%@page import="org.chorem.bow.Preference" %> -<% -TokenActions tokenActions = (TokenActions) session.getAttribute("tokenActions"); -BookmarkActions bookmarkActions = (BookmarkActions) request.getAttribute("bookmarkActions"); -Boolean admin = (Boolean) session.getAttribute("admin"); -if (admin == null) { - admin = false; -} - -if (tokenActions != null && bookmarkActions != null) { - String temporaryToken = tokenActions.getTemporaryToken(); - String permanentToken = tokenActions.getPermanentToken(); - String url = (String) request.getAttribute("bowUrl"); - int nbTags = 100; - Preference preference = (Preference) session.getAttribute("preference"); -} - -int tags = preference.getTags(); -if (preference != null && tags > 0) { - nbTags = tags; -} - -request.setAttribute("nbTags", nbTags); -String formLink = (String) request.getAttribute("link"); -String formName = (String) request.getAttribute("name"); -String formTags = (String) request.getAttribute("tagsNb"); -String formAlias = (String) request.getAttribute("alias"); -String formAction = (String) request.getAttribute("action"); - -if (formLink == null) { - formLink = "URL"; -} - -if (formName == null) { - formName = "name"; -} - -if (formTags == null) { - formTags = "tag1 tag2..."; -} - -if (formAlias == null) { - formAlias = "alias"; -} - -if (formAction == null) { - formAction = "bow?action=addUrl"; -} - -if (tokenActions != null && bookmarkActions != null) { - if (searchLine != null) { - String searchLine = bookmarkActions.getSearchLine(); - String fullText = bookmarkActions.getFullTextLine(); - } else { - if (preference != null && preference.getBookmarks() > 0) { - nbBookmarks = preference.getBookmarks(); - } - } -%> \ No newline at end of file Modified: trunk/src/main/webapp/jsp/inc/footer.jsp =================================================================== --- trunk/src/main/webapp/jsp/inc/footer.jsp 2011-02-11 17:31:09 UTC (rev 187) +++ trunk/src/main/webapp/jsp/inc/footer.jsp 2011-02-11 17:48:26 UTC (rev 188) @@ -3,10 +3,10 @@ <div id="footer"> <p> - <a shape="rect" href="">bow</a> + <a shape="rect" href="http://www.chorem.org/projects/show/bow">bow</a> <a shape="rect" href="http://www.chorem.org/projects/list_files/bow"></a> - <a shape="rect" href="http://www.gnu.org/licenses/agpl.html"><s:text name="bow.footer.license" /></a> - - <span title="Copyright">©2010</span> + <span title="Copyright">©2011</span> <a shape="rect" href="http://www.codelutin.com">Code Lutin</a> - <a shape="rect" href="http://www.chorem.org/projects/bow/issues"><s:text name="bow.footer.bugreport" /></a> - <a shape="rect" href="http://list.chorem.org/cgi-bin/mailman/listinfo/bow-users"><s:text name="bow.footer.userSupport" /></a> - Modified: trunk/src/main/webapp/jsp/inc/header.jsp =================================================================== --- trunk/src/main/webapp/jsp/inc/header.jsp 2011-02-11 17:31:09 UTC (rev 187) +++ trunk/src/main/webapp/jsp/inc/header.jsp 2011-02-11 17:48:26 UTC (rev 188) @@ -1,8 +1,8 @@ <%@page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@taglib prefix="s" uri="/struts-tags"%> <div id="header"> - <s:if test="%{#session.user != null && #session.tokenActions != null}"> - <a class="logo" href="<s:property value='%{#session.bowUrl}' />home.action?token=<s:property value='%{#session.tokenActions.getPermanentToken()}' />">bow</a> + <s:if test="%{#session.BowSession.user != null}"> + <a class="logo" href="<s:property value='%{#session.bowUrl}' />home.action?token=<s:property value='%{#session.BowSession.getPermanentToken()}' />">bow</a> </s:if> <s:else> <a class="logo" href="">bow</a> Modified: trunk/src/main/webapp/jsp/inc/rightMenu.jsp =================================================================== --- trunk/src/main/webapp/jsp/inc/rightMenu.jsp 2011-02-11 17:31:09 UTC (rev 187) +++ trunk/src/main/webapp/jsp/inc/rightMenu.jsp 2011-02-11 17:48:26 UTC (rev 188) @@ -24,22 +24,17 @@ <%@page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> <%@taglib prefix="s" uri="/struts-tags" %> <%@page import="org.chorem.bow.BookmarkActions" %> -<%@page import="org.chorem.bow.TokenActions" %> +<%@page import="org.chorem.bow.BowSession" %> <%@page import="org.chorem.bow.Bookmark" %> <%@page import="org.chorem.bow.BowConfig" %> <%@page import="org.chorem.bow.Preference" %> <% -TokenActions tokenActions = (TokenActions)session.getAttribute("tokenActions"); +BowSession bowSession = BowSession.getBowSession(session); BookmarkActions bookmarkActions = (BookmarkActions)request.getAttribute("bookmarkActions"); -int nbTags = 100; -Preference preference = (Preference)session.getAttribute("preference"); -if (preference != null) { - int tags = preference.getTags(); - if (tags > 0) - nbTags = tags; -} -request.setAttribute("nbTags", nbTags); +String temporaryToken = bowSession.getTemporaryToken(); +String permanentToken = bowSession.getPermanentToken(); +String bowUrl = BowConfig.getInstance().getBowUrl(); if ((String)request.getAttribute("formAction") == null) request.setAttribute("formAction", "addUrl"); @@ -58,34 +53,33 @@ <div id="side"> <div id="colonneD"> <ul class="droite"> - <s:if test="%{#session.admin == true}"> + <%if (bowSession.isAdmin()) {%> <li><s:a action="admin"><s:text name="bow.rightMenu.admin" /></s:a></li> - </s:if> + <% } %> <li><s:a action="preferences"><s:text name="bow.preferences.title" /></s:a></li> - <li><s:a title="%{getText('bow.rightMenu.bookmark.temporaryLinkDescription')}" href="javascript:var%20url=location.href;var%20nameAndTags=prompt('Entrez%20le%20nom%20du%20lien%20et%20la%20liste%20des%20tags%20sous%20la%20forme:%20name|tag1%20tag2%20tag3',%20document.title+'|');if%20(nameAndTags!=(document.title+'|')){var%20link='%{#session.bowUrl}addUrl.action?token=%{#session.tokenActions.getTemporaryToken()}&url='+encodeURIComponent(url)+'&nameAndTags='+encodeURIComponent(nameAndTags);var%20script=document.createElement('script');script.src=link;script.type='text/javascript';document.body.appendChild(script);}void(0);"><s:text name="bow.rightMenu.bookmark.temporaryLink" /></s:a></li> - <li><s:a title="%{getText('bow.rightMenu.bookmark.permanentLinkDescription')}" href="javascript:var%20url=location.href;var%20nameAndTags=prompt('Entrez%20le%20nom%20du%20lien%20et%20la%20liste%20des%20tags%20sous%20la%20forme:%20name|tag1%20tag2%20tag3',%20document.title+'|');if%20(nameAndTags!=(document.title+'|')){var%20link='%{#session.bowUrl}addUrl.action?token=%{#session.tokenActions.getPermanentToken()}&url='+encodeURIComponent(url)+'&nameAndTags='+encodeURIComponent(nameAndTags);var%20script=document.createElement('script');script.src=link;script.type='text/javascript';document.body.appendChild(script);}void(0);"><s:text name="bow.rightMenu.bookmark.permanentLink" /></s:a></li> + <li><s:a title="%{getText('bow.rightMenu.bookmark.temporaryLinkDescription')}" href="javascript:var%20url=location.href;var%20nameAndTags=prompt('Entrez%20le%20nom%20du%20lien%20et%20la%20liste%20des%20tags%20sous%20la%20forme:%20name|tag1%20tag2%20tag3',%20document.title+'|');if%20(nameAndTags!=(document.title+'|')){var%20link='<%=bowUrl%>addUrl.action?token=<%=temporaryToken%>&url='+encodeURIComponent(url)+'&nameAndTags='+encodeURIComponent(nameAndTags);var%20script=document.createElement('script');script.src=link;script.type='text/javascript';document.body.appendChild(script);}void(0);"><s:text name="bow.rightMenu.bookmark.temporaryLink" /></s:a></li> + <li><s:a title="%{getText('bow.rightMenu.bookmark.permanentLinkDescription')}" href="javascript:var%20url=location.href;var%20nameAndTags=prompt('Entrez%20le%20nom%20du%20lien%20et%20la%20liste%20des%20tags%20sous%20la%20forme:%20name|tag1%20tag2%20tag3',%20document.title+'|');if%20(nameAndTags!=(document.title+'|')){var%20link='<%=bowUrl%>addUrl.action?token=<%=permanentToken%>&url='+encodeURIComponent(url)+'&nameAndTags='+encodeURIComponent(nameAndTags);var%20script=document.createElement('script');script.src=link;script.type='text/javascript';document.body.appendChild(script);}void(0);"><s:text name="bow.rightMenu.bookmark.permanentLink" /></s:a></li> </ul> <div id="extensions"> <h2><s:text name="bow.rightMenu.extensions" /></h2> <ul class="droite"> - <li><a href="extensions/bow4chromium.crx"><img src="img/chromium.png" alt="Chromium" class="extensionIcon" /><s:text name="bow.rightMenu.chromiumExtension" /></a></li> - <s:if test="%{#session.tokenActions != null}"> - <li><strong><s:text name="bow.rightMenu.token.permanent" /> :</strong><br /><s:property value="%{#session.tokenActions.getPermanentToken()}" /></li> - <li><strong><s:text name="bow.rightMenu.token.temporary" /> :</strong><br /><s:property value="%{#session.tokenActions.getTemporaryToken()}" /></li> - </s:if> + <li><a href="extensions/bow4chromium.crx"><img src="img/chromium.png" alt="Chromium" class="extensionIcon" /> + <s:text name="bow.rightMenu.chromiumExtension" /></a></li> + <li><strong><s:text name="bow.rightMenu.token.permanent" /> :</strong><br /><%=permanentToken%></li> + <li><strong><s:text name="bow.rightMenu.token.temporary" /> :</strong><br /><%=temporaryToken%></li> </ul> </div> <div id="add" class="clearfix"> <h2><s:text name="bow.rightMenu.bookmark.addModify" /></h2> <s:form id="bookmarkForm" action="%{#request.formAction}"> <p> - <s:textfield key="bow.rightMenu.bookmark.link" name="link" value="%{#request.link}" labelSeparator="" /><br /> - <s:textfield key="bow.rightMenu.bookmark.alias" name="alias" value="%{#request.alias}" labelSeparator="" /><br /> - <s:textfield key="bow.rightMenu.bookmark.name" name="name" value="%{#request.name}" labelSeparator="" /><br /> - <s:textfield key="bow.rightMenu.bookmark.tags" name="tags" value="%{#request.tags}" labelSeparator="" /><br /><br /> - <s:hidden name="searchLine" value="%{searchLine}" /> - <s:hidden name="fullTextLine" value="%{fullTextLine}" /> - <s:submit key="bow.rightMenu.bookmark.submit" name="submit" /> + <s:textfield key="bow.rightMenu.bookmark.link" name="link" value="%{#request.link}" labelSeparator="" /><br /> + <s:textfield key="bow.rightMenu.bookmark.alias" name="alias" value="%{#request.alias}" labelSeparator="" /><br /> + <s:textfield key="bow.rightMenu.bookmark.name" name="name" value="%{#request.name}" labelSeparator="" /><br /> + <s:textfield key="bow.rightMenu.bookmark.tags" name="tags" value="%{#request.tags}" labelSeparator="" /><br /><br /> + <s:hidden name="searchLine" value="%{searchLine}" /> + <s:hidden name="fullTextLine" value="%{fullTextLine}" /> + <s:submit key="bow.rightMenu.bookmark.submit" name="submit" /> </p> </s:form> </div> Modified: trunk/src/main/webapp/jsp/inc/tagsCloud.jsp =================================================================== --- trunk/src/main/webapp/jsp/inc/tagsCloud.jsp 2011-02-11 17:31:09 UTC (rev 187) +++ trunk/src/main/webapp/jsp/inc/tagsCloud.jsp 2011-02-11 17:48:26 UTC (rev 188) @@ -25,7 +25,7 @@ <%@taglib prefix="s" uri="/struts-tags" %> <%@page import="org.chorem.bow.BookmarkActions" %> <%@page import="java.util.List" %> -<%@page import="org.nuiton.wikitty.FacetTopic" %> +<%@page import="org.nuiton.wikitty.search.FacetTopic" %> <s:if test="%{#request.nbTags > #request.bookmarkActions.getTagsCloud().size()}"> <s:set var="maxTags" value="#request.bookmarkActions.getTagsCloud().size()" /> </s:if> Modified: trunk/src/main/webapp/jsp/login.jsp =================================================================== --- trunk/src/main/webapp/jsp/login.jsp 2011-02-11 17:31:09 UTC (rev 187) +++ trunk/src/main/webapp/jsp/login.jsp 2011-02-11 17:48:26 UTC (rev 188) @@ -5,27 +5,27 @@ xmlns:s="http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd" xmlns:jsp="http://java.sun.com/JSP/Page" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> - <head> - <title><s:text name="bow.login.title" /></title> - <s:url id="css" value="/css/connexion.css" /> - <link href="${css}" rel="stylesheet" type="text/css" /> - <s:head /> - </head> - <body> - <div id="content"> - <div id="formFrame"> - <h1><s:text name="bow.login.title" /></h1> - <s:actionerror /> - <s:form action="login"> - <p> - <s:textfield key="bow.login.email" name="email" labelposition="top" labelSeparator=" :" /><br /><br /> - <s:password key="bow.login.password" name="password" labelposition="top" labelSeparator=" :" /><br /><br /> - <s:submit key="bow.login.submit" name="submit" /> - </p> - </s:form> - <s:a action="register_input" id="registerLink"><s:text name="bow.register.title" /></s:a><br /> - <s:a action="forgotPassword_input" id="forgotPwd"><s:text name="bow.forgotpwd.title" /></s:a> - </div> - </div> - </body> + <head> + <title><s:text name="bow.login.title" /></title> + <s:url id="css" value="/css/connexion.css" /> + <link href="${css}" rel="stylesheet" type="text/css" /> + <s:head /> + </head> + <body> + <div id="content"> + <div id="formFrame"> + <h1><s:text name="bow.login.title" /></h1> + <s:actionerror /> + <s:form action="login"> + <p> + <s:textfield key="bow.login.email" name="email" labelposition="top" labelSeparator=" :" /><br /><br /> + <s:password key="bow.login.password" name="password" labelposition="top" labelSeparator=" :" /><br /><br /> + <s:submit key="bow.login.submit" name="submit" /> + </p> + </s:form> + <s:a action="register_input" id="registerLink"><s:text name="bow.register.title" /></s:a><br /> + <s:a action="forgotPassword_input" id="forgotPwd"><s:text name="bow.forgotpwd.title" /></s:a> + </div> + </div> + </body> </html> Modified: trunk/src/main/webapp/jsp/permanentXml.jsp =================================================================== --- trunk/src/main/webapp/jsp/permanentXml.jsp 2011-02-11 17:31:09 UTC (rev 187) +++ trunk/src/main/webapp/jsp/permanentXml.jsp 2011-02-11 17:48:26 UTC (rev 188) @@ -1,3 +1,4 @@ +<%@page import="org.chorem.bow.BowConfig"%> <!-- #%L bow @@ -22,17 +23,13 @@ #L% --> <%@page contentType="text/xml" pageEncoding="UTF-8"%> -<%@page import="org.chorem.bow.TokenActions" %> +<%@page import="org.chorem.bow.BowConfig" %> +<%@page import="org.chorem.bow.BowSession" %> <% -TokenActions tokenActions = (TokenActions) session.getAttribute("tokenActions"); -String token = ""; -if (tokenActions != null) { - token = tokenActions.getPermanentToken(); -} -String url = request.getRequestURL().toString(); -int index = url.indexOf("permanentXml.jsp"); -url = url.substring(0, index - 4); +BowSession bowSession = BowSession.getBowSession(session); +String token = bowSession.getPermanentToken(); +String url = BowConfig.getInstance().getBowUrl(); %> <OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/" Modified: trunk/src/main/webapp/jsp/preferences.jsp =================================================================== --- trunk/src/main/webapp/jsp/preferences.jsp 2011-02-11 17:31:09 UTC (rev 187) +++ trunk/src/main/webapp/jsp/preferences.jsp 2011-02-11 17:48:26 UTC (rev 188) @@ -23,10 +23,17 @@ --> <%@page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@taglib prefix="s" uri="/struts-tags"%> +<%@page import="org.chorem.bow.BowSession" %> <%@page import="org.chorem.bow.Import" %> -<%@page import="org.nuiton.wikitty.FacetTopic" %> +<%@page import="org.nuiton.wikitty.search.FacetTopic" %> <%@page import="java.util.List" %> + <% +BowSession bowSession = BowSession.getBowSession(session); +String permanentToken = bowSession.getPermanentToken(); +String temporaryToken = bowSession.getTemporaryToken(); + %> + <html xmlns="http://www.w3.org/1999/xhtml" xmlns:s="http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd" xmlns:jsp="http://java.sun.com/JSP/Page" @@ -51,6 +58,19 @@ <s:password key="bow.preferences.currentPassword" name="currentPassword" labelposition="top" /><br /> <s:password key="bow.preferences.newPassword" name="newPassword" labelposition="top" /><br /> <s:password key="bow.preferences.confirmNewPassword" name="confirmNewPassword" labelposition="top" /><br /> + <s:submit key="bow.preferences.submit" name="submit" /><br /> + </p> +<!-- + </p> + </div> + <div class="formFrame"> + <p> +--> + <p> + <ul> + <li><strong><s:text name="bow.rightMenu.token.permanent" /> :</strong><%=permanentToken%></li> + <li><strong><s:text name="bow.rightMenu.token.temporary" /> :</strong><%=temporaryToken%></li> + </ul> <s:url id="regenPermToken" action="regenPermToken" /> <s:a href="%{regenPermToken}" id="regenPermToken"><s:text name="bow.preferences.regenPermToken" /></s:a> </p> Modified: trunk/src/main/webapp/jsp/search.jsp =================================================================== --- trunk/src/main/webapp/jsp/search.jsp 2011-02-11 17:31:09 UTC (rev 187) +++ trunk/src/main/webapp/jsp/search.jsp 2011-02-11 17:48:26 UTC (rev 188) @@ -25,16 +25,14 @@ <%@page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@taglib prefix="s" uri="/struts-tags" %> <%@page import="org.chorem.bow.BookmarkActions" %> -<%@page import="org.chorem.bow.TokenActions" %> <%@page import="org.chorem.bow.Bookmark" %> <%@page import="org.chorem.bow.Preference" %> <%@page import="java.text.SimpleDateFormat" %> <%@page import="java.util.List" %> <% -TokenActions tokenActions = (TokenActions) session.getAttribute("tokenActions"); BookmarkActions bookmarkActions = (BookmarkActions) request.getAttribute("bookmarkActions"); -if (tokenActions != null && bookmarkActions != null) { +if (bookmarkActions != null) { %> <s:set var="searchLine" value="%{#request.bookmarkActions.getSearchLine()}" /> <s:set var="fullText" value="%{#request.bookmarkActions.getFullTextLine()}" /> Modified: trunk/src/main/webapp/jsp/suggestions.jsp =================================================================== --- trunk/src/main/webapp/jsp/suggestions.jsp 2011-02-11 17:31:09 UTC (rev 187) +++ trunk/src/main/webapp/jsp/suggestions.jsp 2011-02-11 17:48:26 UTC (rev 188) @@ -25,7 +25,7 @@ <%@page import="org.chorem.bow.OpenSearchActions" %> <%@page import="java.util.List" %> <%@page import="java.util.Iterator" %> -<%@page import="org.nuiton.wikitty.FacetTopic" %> +<%@page import="org.nuiton.wikitty.search.FacetTopic" %> <% OpenSearchActions osa = (OpenSearchActions) request.getAttribute("openSearchAction"); Modified: trunk/src/main/webapp/jsp/temporaryXml.jsp =================================================================== --- trunk/src/main/webapp/jsp/temporaryXml.jsp 2011-02-11 17:31:09 UTC (rev 187) +++ trunk/src/main/webapp/jsp/temporaryXml.jsp 2011-02-11 17:48:26 UTC (rev 188) @@ -22,17 +22,13 @@ #L% --> <%@page contentType="text/xml" pageEncoding="UTF-8"%> -<%@page import="org.chorem.bow.TokenActions" %> +<%@page import="org.chorem.bow.BowConfig" %> +<%@page import="org.chorem.bow.BowSession" %> <% -TokenActions tokenActions = (TokenActions) session.getAttribute("tokenActions"); -String token = ""; -if (tokenActions != null) { - token = tokenActions.getTemporaryToken(); -} -String url = request.getRequestURL().toString(); -int index = url.indexOf("temporaryXml.jsp"); -url = url.substring(0, index - 4); +BowSession bowSession = BowSession.getBowSession(session); +String token = bowSession.getTemporaryToken(); +String url = BowConfig.getInstance().getBowUrl(); %> <OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/" Modified: trunk/src/main/xmi/bow.zargo =================================================================== (Binary files differ)