r206 - in trunk: . src/main/java/org/chorem/bow src/main/java/org/chorem/bow/action src/main/java/org/chorem/bow/interceptor src/main/resources src/main/resources/i18n src/main/webapp/jsp src/main/webapp/jsp/inc src/main/xmi
Author: bpoussin Date: 2011-02-17 02:16:20 +0100 (Thu, 17 Feb 2011) New Revision: 206 Url: http://chorem.org/repositories/revision/bow/206 Log: Anomalie #279: Bookmarks loss on email change Evolution #289: Change data model (user, token, Bookmark) Evolution #291: Create application to migrate data model Evolution #297: Permit admin authentification with password in config file Evolution #298: Add migration link in admin page (data ok et ca refonctionne, reste maintenant un gros refactoring/reecriture) Added: trunk/src/main/java/org/chorem/bow/BowMigration04To05.java trunk/src/main/java/org/chorem/bow/action/Migrate04To05Action.java trunk/src/main/xmi/README trunk/src/main/xmi/bow-0.4.zargo 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/BookmarkUtils.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/BowSession.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/action/AddClickAction.java trunk/src/main/java/org/chorem/bow/action/AddUrlAction.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/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/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/i18n/bow_en_GB.properties trunk/src/main/resources/i18n/bow_fr_FR.properties trunk/src/main/resources/struts.xml trunk/src/main/webapp/jsp/admin.jsp trunk/src/main/webapp/jsp/home.jsp trunk/src/main/webapp/jsp/inc/bookmark.jsp trunk/src/main/webapp/jsp/inc/tagsCloud.jsp trunk/src/main/webapp/jsp/preferences.jsp trunk/src/main/webapp/jsp/search.jsp trunk/src/main/xmi/bow.zargo Modified: trunk/pom.xml =================================================================== --- trunk/pom.xml 2011-02-16 21:44:28 UTC (rev 205) +++ trunk/pom.xml 2011-02-17 01:16:20 UTC (rev 206) @@ -47,7 +47,7 @@ <eugenePluginVersion>2.3.2</eugenePluginVersion> <nuitonUtilsVersion>2.0</nuitonUtilsVersion> <nuitonI18nVersion>2.3.1</nuitonI18nVersion> - <wikittyVersion>3.0.4</wikittyVersion> + <wikittyVersion>3.0.5-SNAPSHOT</wikittyVersion> <slf4jVersion>1.6.1</slf4jVersion> <struts2Version>2.1.8.1</struts2Version> @@ -257,11 +257,16 @@ <configuration> <inputs> <input>zargo</input> + <input>classpath:model:/:wikitty.objectmodel</input> </inputs> <!-- <resolver>org.nuiton.util.FasterCachedResourceResolver</resolver> --> <templates>org.nuiton.wikitty.generator.WikittyMetaGenerator </templates> <fullPackagePath>org.chorem.bow</fullPackagePath> + <defaultPackage>org.chorem.bow</defaultPackage> + <extractedPackages> + org.chorem.bow,org.nuiton.wikitty + </extractedPackages> <generatedPackages>org.chorem.bow</generatedPackages> </configuration> <goals> Modified: trunk/src/main/java/org/chorem/bow/AliasServlet.java =================================================================== --- trunk/src/main/java/org/chorem/bow/AliasServlet.java 2011-02-16 21:44:28 UTC (rev 205) +++ trunk/src/main/java/org/chorem/bow/AliasServlet.java 2011-02-17 01:16:20 UTC (rev 206) @@ -35,6 +35,7 @@ import org.nuiton.wikitty.search.Search; /** + * TODO poussin 20110216 a revoir avec le ticket http://www.chorem.org/issues/show/295 * * @author bbrossaud */ @@ -68,8 +69,9 @@ alias = alias.substring(1); 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); + Criteria criteria = Search.query().eq( + BowBookmark.FQ_FIELD_BOWBOOKMARK_PRIVATEALIAS, alias).criteria(); + BowBookmark bookmark = proxy.findByCriteria(BowBookmark.class, criteria); if (bookmark != null) { String redirect = bookmark.getLink(); int clicks = bookmark.getClick() + 1; Modified: trunk/src/main/java/org/chorem/bow/BookmarkActions.java =================================================================== --- trunk/src/main/java/org/chorem/bow/BookmarkActions.java 2011-02-16 21:44:28 UTC (rev 205) +++ trunk/src/main/java/org/chorem/bow/BookmarkActions.java 2011-02-17 01:16:20 UTC (rev 206) @@ -40,8 +40,8 @@ public class BookmarkActions { protected String fullTextLine = ""; - protected List<Bookmark> bookmarks = new ArrayList<Bookmark>(); // bookmarks which contain the search tags - protected List<Bookmark> lastBookmarks = new ArrayList<Bookmark>(); + protected List<BowBookmark> bookmarks = new ArrayList<BowBookmark>(); // bookmarks which contain the search tags + protected List<BowBookmark> lastBookmarks = new ArrayList<BowBookmark>(); protected List<FacetTopic> tagsCloud = new ArrayList<FacetTopic>(); // associate a tag with its frequency protected List<String> tagsSearch = new ArrayList<String>(); // contains the tags taped in the search field protected int tmax = -1; @@ -101,9 +101,9 @@ } public void emptySearchline() { - List<Bookmark> bookmarkList = new ArrayList<Bookmark>(bookmarks); - for (Bookmark bookmark : bookmarkList) { - Set<String> tags = bookmark.getTags(); + List<BowBookmark> bookmarkList = new ArrayList<BowBookmark>(bookmarks); + for (BowBookmark bookmark : bookmarkList) { + Set<String> tags = bookmark.getLabels(); if (tags != null && !tags.isEmpty()) { bookmarks.remove(bookmark); } @@ -126,13 +126,13 @@ } } - public void setBookmarks(List<Bookmark> bookmarksList) { - List<Bookmark> newList = new ArrayList<Bookmark>(bookmarksList); + public void setBookmarks(List<BowBookmark> bookmarksList) { + List<BowBookmark> newList = new ArrayList<BowBookmark>(bookmarksList); bookmarks = newList; } - public void setLastBookmarks(List<Bookmark> bookmarksList) { - List<Bookmark> newList = new ArrayList<Bookmark>(bookmarksList); + public void setLastBookmarks(List<BowBookmark> bookmarksList) { + List<BowBookmark> newList = new ArrayList<BowBookmark>(bookmarksList); lastBookmarks = newList; } @@ -166,11 +166,11 @@ return tagsSearch; } - public List<Bookmark> getBookmarks() { + public List<BowBookmark> getBookmarks() { return bookmarks; } - public List<Bookmark> getLastBookmarks() { + public List<BowBookmark> getLastBookmarks() { return lastBookmarks; } Modified: trunk/src/main/java/org/chorem/bow/BookmarkUtils.java =================================================================== --- trunk/src/main/java/org/chorem/bow/BookmarkUtils.java 2011-02-16 21:44:28 UTC (rev 205) +++ trunk/src/main/java/org/chorem/bow/BookmarkUtils.java 2011-02-17 01:16:20 UTC (rev 206) @@ -43,27 +43,31 @@ public class BookmarkUtils { - static public Criteria getBookmarkListCriteriaByUser(User user, String searchLine) { + static public Criteria getBookmarkListCriteriaByUser(BowPreference 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); + criteria = Search.query() + .eq(BowBookmark.FQ_FIELD_BOWBOOKMARK_BOWUSER, user.getWikittyId()) + .eq(BowBookmark.FQ_FIELD_WIKITTYLABEL_LABELS, tags).criteria() + .addFacetField(BowBookmark.FQ_FIELD_WIKITTYLABEL_LABELS); } else { - criteria = Search.query().eq(Bookmark.FQ_FIELD_BOOKMARK_EMAIL, user.getEmail()). - criteria().addFacetField(Bookmark.FQ_FIELD_BOOKMARK_TAGS); + criteria = Search.query().eq(BowBookmark.FQ_FIELD_BOWBOOKMARK_BOWUSER, user.getWikittyId()). + criteria().addFacetField(BowBookmark.FQ_FIELD_WIKITTYLABEL_LABELS); } + criteria.setEndIndex(user.getBookmarks()); } return criteria; } - static public BookmarkActions createBookmarkActions(HttpServletRequest request, PagedResult<Bookmark> result, String searchLine) { + static public BookmarkActions createBookmarkActions(HttpServletRequest request, + PagedResult<BowBookmark> result, String searchLine) { String fullText = request.getParameter("fullTextLine"); BookmarkActions bookmarkActions = new BookmarkActions(); bookmarkActions.setFullTextLine(fullText); - List<Bookmark> bookList = result.getAll(); + List<BowBookmark> bookList = result.getAll(); if (bookList != null) { bookmarkActions.setBookmarks(bookList); @@ -75,18 +79,22 @@ bookmarkActions.addTags(searchLine); //Adds the new tags } } - List<FacetTopic> topics = result.getTopic(Bookmark.FQ_FIELD_BOOKMARK_TAGS); + List<FacetTopic> topics = result.getTopic(BowBookmark.FQ_FIELD_WIKITTYLABEL_LABELS); bookmarkActions.createTagCloud(topics); return bookmarkActions; } - static public List<FacetTopic> getBookmarksByImportDate(HttpServletRequest request, User user) { + static public List<FacetTopic> getBookmarksByImportDate(HttpServletRequest request, BowUser 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); + Criteria criteria = Search.query() + .eq(Element.ELT_EXTENSION, BowImport.EXT_BOWIMPORT) + .eq(BowBookmark.FQ_FIELD_BOWBOOKMARK_BOWUSER, user.getWikittyId()).criteria() + .addFacetField(BowImport.FQ_FIELD_BOWIMPORT_IMPORTDATE) + .setFirstIndex(0).setEndIndex(0); List<FacetTopic> bookmarksImportDate = - proxy.findAllByCriteria(Import.class, criteria).getTopic(Import.FQ_FIELD_IMPORT_DATE); + proxy.findAllByCriteria(BowImport.class, criteria) + .getTopic(BowImport.FQ_FIELD_BOWIMPORT_IMPORTDATE); request.setAttribute("bookmarksImportDate", bookmarksImportDate); return bookmarksImportDate; } @@ -96,11 +104,11 @@ * @param user User user * @return Bookmark the bookmark filled */ - public static Bookmark createBookmarkFromHtml(String html, String name, User user) { + public static BowBookmark createBookmarkFromHtml(String html, String name, BowUser user) { String link = getUrlFromHtml(html); String tags = getTagsFromHtml(html); Date date = getDateFromHtml(html); - Bookmark bookmark = createBookmark(link, name, tags, user, null, date); + BowBookmark bookmark = createBookmark(link, name, tags, user, null, date); return bookmark; } @@ -126,23 +134,23 @@ /* @param bookmarks List<Bookmarks> bookmarks * @return String the html file */ - public static String getExportHtmlBookmark(List<Bookmark> bookmarks) { + public static String getExportHtmlBookmark(List<BowBookmark> 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) { + for (BowBookmark bookmark : bookmarks) { export += "<DT><A HREF=\""; export += bookmark.getLink() + "\" "; - Date date = bookmark.getDate(); + Date date = bookmark.getCreationDate(); 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(); + Set<String> tags = bookmark.getLabels(); if (tags != null && !tags.isEmpty()) { export += "SHORTCUTURL=\"" + getBookmarkTagsString(bookmark) + "\""; } @@ -187,9 +195,9 @@ * @return null if all fields are not correctly filled * @return Bookmark the website bookmark */ - public static Bookmark createBookmark(String url, String nameAndTags, User user) { + public static BowBookmark createBookmark(String url, String nameAndTags, BowUser user) { - Bookmark bookmark = new BookmarkImpl(); + BowBookmark bookmark = new BowBookmarkImpl(); int nameIndex = nameAndTags.indexOf('|'); // get the index name of the website if (nameIndex > 0) { @@ -197,7 +205,7 @@ if (!name.isEmpty()) { name = name.trim(); bookmark.setDescription(name); // set the description (website name) - bookmark.setAlias(name); + bookmark.setPrivateAlias(name); } } String tags = nameAndTags; @@ -207,12 +215,12 @@ 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 + bookmark.setBowUser(user.getWikittyId()); // set the email (user name) + bookmark.setCreationDate(new Date()); // set the date return bookmark; } - public static void addUrlToBookmark(String url, Bookmark bookmark) { + public static void addUrlToBookmark(String url, BowBookmark bookmark) { if (url != null && !url.isEmpty()) { String link = url.trim(); if (! link.matches("[a-z]+://.+") ) { @@ -224,7 +232,7 @@ } } - public static void addTagsToBookmark(String tags, Bookmark bookmark) { + public static void addTagsToBookmark(String tags, BowBookmark bookmark) { if (tags != null && !tags.isEmpty()) { String[] tagsTab = tags.split("\\s+"); // put the tags in an array List<String> tagList = Arrays.asList(tagsTab); @@ -232,13 +240,13 @@ } } - public static void addTagsToBookmark(List<String> tagList, Bookmark bookmark) { + public static void addTagsToBookmark(List<String> tagList, BowBookmark 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); + bookmark.addLabels(tag); } } } @@ -255,9 +263,9 @@ * @param date * @return */ - public static Bookmark createBookmark(String url, String name, String tags, - User user, String alias, Date date) { - Bookmark bookmark = new BookmarkImpl(); + public static BowBookmark createBookmark(String url, String name, String tags, + BowUser user, String alias, Date date) { + BowBookmark bookmark = new BowBookmarkImpl(); if (name != null) { name = name.trim(); bookmark.setDescription(name); @@ -271,44 +279,45 @@ bookmark.setClick(0); - bookmark.setEmail(user.getEmail()); // set the email (user name) + bookmark.setBowUser(user.getWikittyId()); // set the email (user name) if (date == null) { date = new Date(); } - bookmark.setDate(date); // set the date + bookmark.setCreationDate(date); // set the date if (alias != null) { alias = alias.trim(); - bookmark.setAlias(alias); + bookmark.setPrivateAlias(alias); } else { - bookmark.setAlias(""); + bookmark.setPrivateAlias(""); } return bookmark; } - public static void updateBookmarkName(Bookmark bookmark, String name) { + public static void updateBookmarkName(BowBookmark 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) { + public static void updateBookmark(BowBookmark bookmark, String name, + String link, String tags, String alias) { if (name != null) { name = name.trim(); bookmark.setDescription(name); } addUrlToBookmark(link, bookmark); - bookmark.clearTags(); + bookmark.clearLabels(); addTagsToBookmark(tags, bookmark); if (alias != null) { alias = alias.trim(); - bookmark.setAlias(alias); + bookmark.setPrivateAlias(alias); } } - public static String getBookmarkTagsString(Bookmark bookmark) { + public static String getBookmarkTagsString(BowBookmark bookmark) { if (bookmark != null) { - Set<String> tags = bookmark.getTags(); + Set<String> tags = bookmark.getLabels(); if (tags != null) { return StringUtil.join(tags, " ", true); } Modified: trunk/src/main/java/org/chorem/bow/BowConfig.java =================================================================== --- trunk/src/main/java/org/chorem/bow/BowConfig.java 2011-02-16 21:44:28 UTC (rev 205) +++ trunk/src/main/java/org/chorem/bow/BowConfig.java 2011-02-17 01:16:20 UTC (rev 206) @@ -173,6 +173,15 @@ return StringUtil.split(str, ","); } + /** + * Return password for specified admin email + * @param admin + * @return null or password if available + */ + public String getAdminPassword(String admin) { + String str = getOption(Option.BOW_ADMINS.key + ".password." + admin); + return str; + } // /** // * Set {@code solr} and {@code jms} system configuration. // * Modified: trunk/src/main/java/org/chorem/bow/BowInit.java =================================================================== --- trunk/src/main/java/org/chorem/bow/BowInit.java 2011-02-16 21:44:28 UTC (rev 205) +++ trunk/src/main/java/org/chorem/bow/BowInit.java 2011-02-17 01:16:20 UTC (rev 206) @@ -96,19 +96,27 @@ // } // } // - static public void initHomePage(HttpServletRequest request, User user) { + static public void initHomePage(HttpServletRequest request, BowPreference user) { BowSession session = BowSession.getBowSession(request); + BowPreference pref = session.getPreference(); + WikittyProxy proxy = session.getProxy(); Criteria criteria = BookmarkUtils.getBookmarkListCriteriaByUser(user, null); 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); + Criteria sortCriteria = + criteria.addSortDescending(BowBookmark.FQ_FIELD_BOWBOOKMARK_CLICK) + .setEndIndex(10); //TODO: remove hardcoded value + PagedResult<BowBookmark> result = proxy.findAllByCriteria(BowBookmark.class, sortCriteria); //Selects all bookmarks by user + sortCriteria = + criteria.addSortDescending(BowBookmark.FQ_FIELD_BOWBOOKMARK_CREATIONDATE) + .setEndIndex(10); //TODO: remove hardcoded value + List<BowBookmark> lastBookmarks = + proxy.findAllByCriteria(BowBookmark.class, sortCriteria).getAll(); + BookmarkActions bookmarkActions = + BookmarkUtils.createBookmarkActions(request, result, null); bookmarkActions.setTagSearch(null); - List<Bookmark> bookList = bookmarkActions.getBookmarks(); + List<BowBookmark> bookList = bookmarkActions.getBookmarks(); if (bookList.size() > 10) { //TODO: remove hardcoded value bookList = bookmarkActions.getBookmarks().subList(0, 10); //TODO: remove hardcoded value Added: trunk/src/main/java/org/chorem/bow/BowMigration04To05.java =================================================================== --- trunk/src/main/java/org/chorem/bow/BowMigration04To05.java (rev 0) +++ trunk/src/main/java/org/chorem/bow/BowMigration04To05.java 2011-02-17 01:16:20 UTC (rev 206) @@ -0,0 +1,139 @@ +package org.chorem.bow; + + +import java.util.ArrayList; +import java.util.List; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.wikitty.WikittyProxy; +import org.nuiton.wikitty.entities.Wikitty; +import org.nuiton.wikitty.search.PagedResult; + +/** + * Migre les données depuis la version 0.4 vers la version 0.5. + * On suppose que les données sont convenablement indexee. + * + * <li> renomage de User -> BowUser (qui hérite de WikittyUser) + * <li> renomage de Preference -> BowPreference + * <li> renomage de Bookmark -> BowBookmark + * <li> renomage de Import -> BowImport + * + * <li> deplacement de User.email -> BowUser(WikittyUser).login + * <li> deplacement de User.password -> BowUser(WikittyUser).password + * <li> deplacement de Token.token -> BowUser.permanentToken + * <li> deplacement de Bookmark.date -> BowBookmark.creationDate + * <li> deplacement de Bookmark.alias -> BowBookmark.privateAlias + * <li> deplacement de Bookmark.tags -> BowBookmark(WikittyLabel).labels + * <li> deplacement de Import.date -> BowImport(BowBookmark).importDate + * + * <li> suppression de Token + * + * <li> remplacement de Bookmark.email -> lien vers BowUser + * + * <li> ajout sur BowBookmark d'un lien vers BowImport + * <li> ajout sur BowImport d'un lien vers BowUser + * + * Le nouvel objet BowAlias a ete ajoute, rien est a faire avec pour la + * migration. + * + * @author poussin + * @version $Revision$ + * + * Last update: $Date$ + * by : $Author$ + */ +public class BowMigration04To05 { + + /** to use log facility, just put in your code: log.info(\"...\"); */ + static private Log log = LogFactory.getLog(BowMigration04To05.class); + + /** nombre d'objet a charger en 1 fois */ + final static public int MAX = 100; + + /** + * Point d'entree de la migration + * + * @param proxy + */ + static public void migrate(WikittyProxy proxy) { + UserImpl userExample = new UserImpl(); + int i = 0; + PagedResult<UserImpl> pagedUser; + do { + pagedUser = proxy.findAllByExample(userExample, i, i += MAX); + List<UserImpl> users = pagedUser.getAll(); + List<BowUser> bowUsers = migrateUser(proxy, users); + proxy.store(bowUsers); + proxy.delete(users); + } while (pagedUser.size() >= MAX); + } + + static public List<BowUser> migrateUser(WikittyProxy proxy, List<UserImpl> users) { + List<BowUser> result = new ArrayList<BowUser>(users.size()); + for (UserImpl user : users) { + BowPreference bowUser = new BowPreferenceImpl(); + result.add(bowUser); + + // copie des informations du user + bowUser.setLogin(user.getEmail()); + bowUser.setPassword(user.getPassword()); + + // copie des preferences + Preference pref = proxy.restore(Preference.class, user.getWikittyId()); + bowUser.setColors(pref.getColors()); + bowUser.setSearchEngineUrlResults(pref.getSearchEngineUrlResults()); + bowUser.setSearchEngineUrlSuggestions(pref.getSearchEngineUrlSuggestions()); + bowUser.setTags(pref.getTags()); + bowUser.setBookmarks(pref.getBookmarks()); + + // copie du permanent token + TokenImpl tokenExample = new TokenImpl(); + tokenExample.setEmail(user.getEmail()); + TokenImpl permanentToken = proxy.findByExample(tokenExample); + bowUser.setPermanentToken(permanentToken.getToken()); + + // migration des bookmarks + BookmarkImpl bookmarkExample = new BookmarkImpl(); + bookmarkExample.setEmail(user.getEmail()); + int i = 0; + PagedResult<BookmarkImpl> pagedBookmark; + do { + pagedBookmark = proxy.findAllByExample(bookmarkExample, i, i+=MAX); + List<BookmarkImpl> bookmarks = pagedBookmark.getAll(); + List<BowBookmark> bowbookmarks = + migrateBookmark(proxy, bowUser, bookmarks); + proxy.store(bowbookmarks); + proxy.delete(bookmarks); + } while (pagedBookmark.size() >= MAX); + } + return result; + } + + static public List<BowBookmark> migrateBookmark(WikittyProxy proxy, BowUser user, + List<BookmarkImpl> bookmarks) { + List<BowBookmark> result = new ArrayList<BowBookmark>(bookmarks.size()); + for (BookmarkImpl bookmark : bookmarks) { + BowBookmark bowBookmark = new BowBookmarkImpl(); + result.add(bowBookmark); + + // copie du bookmark + bowBookmark.setBowUser(user.getWikittyId()); + bowBookmark.setClick(bookmark.getClick()); + bowBookmark.setCreationDate(bookmark.getDate()); + bowBookmark.setDescription(bookmark.getDescription()); + bowBookmark.setLabels(bookmark.getTags()); + bowBookmark.setLink(bookmark.getLink()); + bowBookmark.setPrivateAlias(bookmark.getAlias()); + + // copie de l'import si besoin + Wikitty w = proxy.getWikitty(bookmark); + if (ImportHelper.hasExtension(w)) { + Wikitty bowImport = proxy.getWikitty(bowBookmark); + BowImportHelper.addExtension(bowImport); + BowImportHelper.setImportDate(bowImport, ImportHelper.getDate(w)); + } + } + return result; + } + +} Modified: trunk/src/main/java/org/chorem/bow/BowProxy.java =================================================================== --- trunk/src/main/java/org/chorem/bow/BowProxy.java 2011-02-16 21:44:28 UTC (rev 205) +++ trunk/src/main/java/org/chorem/bow/BowProxy.java 2011-02-17 01:16:20 UTC (rev 206) @@ -23,6 +23,7 @@ */ package org.chorem.bow; +import java.util.ArrayList; import java.util.Arrays; import java.util.List; import org.nuiton.util.ApplicationConfig; @@ -73,17 +74,11 @@ 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); + if (ws == null) { + List<WikittyExtension> extensions = new ArrayList<WikittyExtension>(); + extensions.addAll(BowPreferenceImpl.extensions); // inherit BowUSer, WikittyUser + extensions.addAll(BowImportImpl.extensions); // inherit BowBookmark, WikittyLabel + extensions.addAll(BowAliasImpl.extensions); ws = WikittyServiceFactory.buildWikittyService(config); ws.storeExtension(null, extensions); Modified: trunk/src/main/java/org/chorem/bow/BowSearch.java =================================================================== --- trunk/src/main/java/org/chorem/bow/BowSearch.java 2011-02-16 21:44:28 UTC (rev 205) +++ trunk/src/main/java/org/chorem/bow/BowSearch.java 2011-02-17 01:16:20 UTC (rev 206) @@ -35,7 +35,7 @@ public class BowSearch { - static public void search(HttpServletRequest request, User user) + static public void search(HttpServletRequest request, BowPreference user) throws IOException, ServletException { String searchLine = request.getParameter("searchLine"); @@ -59,17 +59,18 @@ BowSession session = BowSession.getBowSession(request); WikittyProxy proxy = session.getProxy(); Criteria criteria = BookmarkUtils.getBookmarkListCriteriaByUser(user, searchLine); - criteria = criteria.addSortDescending(Bookmark.FQ_FIELD_BOOKMARK_CLICK); + criteria = criteria.addSortDescending(BowBookmark.FQ_FIELD_BOWBOOKMARK_CLICK); if (criteria != null) { - PagedResult<Bookmark> result = proxy.findAllByCriteria(Bookmark.class, criteria); //Selects all bookmarks by user + PagedResult<BowBookmark> result = + proxy.findAllByCriteria(BowBookmark.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 { + static public void fullText(HttpServletRequest request, BowPreference user) throws IOException, ServletException { String fullText = request.getParameter("fullTextLine"); if (fullText == null || fullText.isEmpty()) { @@ -81,12 +82,12 @@ if (!fullText.isEmpty()) { criteria = Search.query().keyword(fullText). - eq(Bookmark.FQ_FIELD_BOOKMARK_EMAIL, user.getEmail()).criteria(). - addFacetField(Bookmark.FQ_FIELD_BOOKMARK_TAGS); + eq(BowBookmark.FQ_FIELD_BOWBOOKMARK_BOWUSER, user.getWikittyId()).criteria(). + addFacetField(BowBookmark.FQ_FIELD_WIKITTYLABEL_LABELS); } else { criteria = BookmarkUtils.getBookmarkListCriteriaByUser(user, null); } - PagedResult<Bookmark> result = proxy.findAllByCriteria(Bookmark.class, criteria); + PagedResult<BowBookmark> result = proxy.findAllByCriteria(BowBookmark.class, criteria); BookmarkActions bookmarkActions = BookmarkUtils.createBookmarkActions(request, result, null); request.setAttribute("bookmarkActions", bookmarkActions); } Modified: trunk/src/main/java/org/chorem/bow/BowSession.java =================================================================== --- trunk/src/main/java/org/chorem/bow/BowSession.java 2011-02-16 21:44:28 UTC (rev 205) +++ trunk/src/main/java/org/chorem/bow/BowSession.java 2011-02-17 01:16:20 UTC (rev 206) @@ -23,15 +23,13 @@ */ 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; +import org.nuiton.wikitty.entities.Wikitty; /** * Classe utilisee pour stocker les objets utils en session utilisateur @@ -50,9 +48,8 @@ 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; + // preference herite de user, on ne stocke que preference + protected BowPreference preference = null; protected String temporaryToken = null; protected boolean admin = false; @@ -92,39 +89,26 @@ return proxy; } - public Preference getPreference() { + public BowPreference 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)) { + public void setPreference(BowPreference preference) { + // si c'est le meme objet on ne fait rien + if (this.preference == preference) { return; } - this.user = user; - - if (user != null) { - // load user preference - Preference preference = getProxy().restore(Preference.class, user.getWikittyId()); + if (preference != null) { checkPreference(preference); - setPreference(preference); // check if this user is admin - String email = user.getEmail(); + String login = preference.getLogin(); String[] admins = BowConfig.getInstance().getAdmins(); boolean isAdmin = false; if (admins != null) { for (String admin : admins) { - if (email.equals(admin)) { + if (login.equals(admin)) { isAdmin = true; break; } @@ -132,37 +116,39 @@ } setAdmin(isAdmin); - // retrieve or generate permanent token - loadToken(); + // si c'est le meme user, on ne regenere pas le temporaryToken + if (!ObjectUtils.equals(this.preference, preference)) { + // generate temporary token + String temporaryToken = BowUtils.generateToken(); + setTemporaryToken(temporaryToken); + } } + this.preference = preference; } - /** - * 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); + public BowUser getUser() { + return preference; + } + + public void setUser(BowUser user) { + // si c'est le meme objet on ne fait rien + if (this.preference == user) { + return; + } + + BowPreference preference = null; + if (user != null) { + // load user preference + preference = getProxy().restore(BowPreference.class, user.getWikittyId()); + if (preference == null) { + Wikitty w = getProxy().getWikitty(user); + preference = new BowPreferenceImpl(w); } - // generate new temporary token - setPermanentToken(token.getToken()); - String temporaryToken = BowUtils.generateToken(); - setTemporaryToken(temporaryToken); } + setPreference(preference); } - protected void checkPreference(Preference preference) { + protected void checkPreference(BowPreference preference) { if (preference.getBookmarks() <= 0) { preference.setBookmarks(100); // set default to 100 } @@ -181,13 +167,9 @@ } public String getPermanentToken() { - return permanentToken; + return getUser().getPermanentToken(); } - public void setPermanentToken(String permanentToken) { - this.permanentToken = permanentToken; - } - public String getTemporaryToken() { return temporaryToken; } Modified: trunk/src/main/java/org/chorem/bow/BowUtils.java =================================================================== --- trunk/src/main/java/org/chorem/bow/BowUtils.java 2011-02-16 21:44:28 UTC (rev 205) +++ trunk/src/main/java/org/chorem/bow/BowUtils.java 2011-02-17 01:16:20 UTC (rev 206) @@ -23,7 +23,6 @@ */ package org.chorem.bow; -import java.security.NoSuchAlgorithmException; import org.nuiton.util.StringUtil; import org.nuiton.wikitty.search.Criteria; import org.nuiton.wikitty.WikittyProxy; @@ -51,8 +50,8 @@ } } - static public User checkToken(BowSession session, String token) { - User result = null; + static public BowUser checkToken(BowSession session, String token) { + BowUser result = null; if (checkTemporaryToken(session, token) || checkPermanentToken(session, token)) { result = session.getUser(); } @@ -70,13 +69,10 @@ 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_USER_EMAIL, userEmail).criteria(); // retrieve user by token - User user = proxy.findByCriteria(User.class, criteria); + Criteria criteria = Search.query().eq( + BowUser.FQ_FIELD_BOWUSER_PERMANENTTOKEN, token).criteria(); + BowUser user = proxy.findByCriteria(BowUser.class, criteria); + if (user != null) { session.setUser(user); result = true; } Modified: trunk/src/main/java/org/chorem/bow/OpenSearchActions.java =================================================================== --- trunk/src/main/java/org/chorem/bow/OpenSearchActions.java 2011-02-16 21:44:28 UTC (rev 205) +++ trunk/src/main/java/org/chorem/bow/OpenSearchActions.java 2011-02-17 01:16:20 UTC (rev 206) @@ -37,7 +37,7 @@ */ public class OpenSearchActions { - protected List<Bookmark> bookmarkList = new ArrayList<Bookmark>(); + protected List<BowBookmark> bookmarkList = new ArrayList<BowBookmark>(); protected List<FacetTopic> suggestions = new ArrayList<FacetTopic>(); protected String[] search; @@ -54,9 +54,9 @@ } } } - List<Bookmark> cpy = new ArrayList<Bookmark>(bookmarkList); - for (Bookmark bookmark : cpy) { - Set<String> tags = bookmark.getTags(); + List<BowBookmark> cpy = new ArrayList<BowBookmark>(bookmarkList); + for (BowBookmark bookmark : cpy) { + Set<String> tags = bookmark.getLabels(); boolean delete = true; for (FacetTopic topic : suggestions) { String name = topic.getTopicName(); @@ -72,8 +72,8 @@ Collections.sort(suggestions, new SuggestionsComparator()); } - protected boolean bookmarkHasTag(Bookmark bookmark, String tag) { - Set<String> tagList = bookmark.getTags(); + protected boolean bookmarkHasTag(BowBookmark bookmark, String tag) { + Set<String> tagList = bookmark.getLabels(); if (tagList != null) { if (tagList.contains(tag)) { return true; @@ -82,9 +82,9 @@ return false; } - public void setBookmarkList(List<Bookmark> bookmarks) { + public void setBookmarkList(List<BowBookmark> bookmarks) { if (bookmarks != null) { - List<Bookmark> newList = new ArrayList<Bookmark>(bookmarks); + List<BowBookmark> newList = new ArrayList<BowBookmark>(bookmarks); bookmarkList = newList; } } @@ -116,7 +116,7 @@ } } if (bookmarkList.size() <= 5 && suggestions.size() > 0) { - for (Bookmark bookmark : bookmarkList) { + for (BowBookmark bookmark : bookmarkList) { str += ",\"" + bookmark.getLink() + "\""; } } @@ -148,7 +148,7 @@ } } - public List<Bookmark> getBookmarkList() { + public List<BowBookmark> getBookmarkList() { return bookmarkList; } Modified: trunk/src/main/java/org/chorem/bow/action/AddClickAction.java =================================================================== --- trunk/src/main/java/org/chorem/bow/action/AddClickAction.java 2011-02-16 21:44:28 UTC (rev 205) +++ trunk/src/main/java/org/chorem/bow/action/AddClickAction.java 2011-02-17 01:16:20 UTC (rev 206) @@ -23,7 +23,7 @@ */ package org.chorem.bow.action; -import org.chorem.bow.Bookmark; +import org.chorem.bow.BowBookmark; import org.nuiton.wikitty.WikittyProxy; public class AddClickAction extends BowBaseAction { @@ -62,7 +62,7 @@ String result = ERROR; if (bookmarkId != null && !bookmarkId.isEmpty()) { WikittyProxy proxy = getBowProxy(); - Bookmark bookmark = proxy.restore(Bookmark.class, bookmarkId); + BowBookmark bookmark = proxy.restore(BowBookmark.class, bookmarkId); if (bookmark != null) { bookmark.setClick(bookmark.getClick() + 1); proxy.store(bookmark); Modified: trunk/src/main/java/org/chorem/bow/action/AddUrlAction.java =================================================================== --- trunk/src/main/java/org/chorem/bow/action/AddUrlAction.java 2011-02-16 21:44:28 UTC (rev 205) +++ trunk/src/main/java/org/chorem/bow/action/AddUrlAction.java 2011-02-17 01:16:20 UTC (rev 206) @@ -23,10 +23,10 @@ */ package org.chorem.bow.action; -import org.chorem.bow.Bookmark; +import org.chorem.bow.BowBookmark; import org.chorem.bow.BookmarkUtils; import org.chorem.bow.BowUtils; -import org.chorem.bow.User; +import org.chorem.bow.BowUser; import org.nuiton.wikitty.search.Criteria; import org.nuiton.wikitty.WikittyProxy; import org.nuiton.wikitty.search.Search; @@ -155,14 +155,15 @@ public String execute() { WikittyProxy proxy = getBowProxy(); - Bookmark bookmark = null; + BowBookmark bookmark = null; - User user = getBowSession().getUser(); + BowUser user = getBowSession().getUser(); if (name != null) { if (alias != null && !alias.isEmpty()) { - Criteria criteria = Search.query().eq(Bookmark.FQ_FIELD_BOOKMARK_ALIAS, alias).criteria(); + Criteria criteria = Search.query().eq( + BowBookmark.FQ_FIELD_BOWBOOKMARK_PRIVATEALIAS, alias).criteria(); - if (proxy.findByCriteria(Bookmark.class, criteria) != null) { + if (proxy.findByCriteria(BowBookmark.class, criteria) != null) { alias = ""; } } @@ -172,7 +173,7 @@ bookmark = BookmarkUtils.createBookmark(link, nameAndTags, user); } } - if (bookmark != null && !bookmark.getDescription().isEmpty() && !bookmark.getEmail().isEmpty()) { + if (bookmark != null && !bookmark.getDescription().isEmpty() && !bookmark.getBowUser().isEmpty()) { proxy.store(bookmark); //Stores the bookmark if everything is ok if (log.isDebugEnabled()) { log.debug("Adding URL"); Modified: trunk/src/main/java/org/chorem/bow/action/DeleteImportAction.java =================================================================== --- trunk/src/main/java/org/chorem/bow/action/DeleteImportAction.java 2011-02-16 21:44:28 UTC (rev 205) +++ trunk/src/main/java/org/chorem/bow/action/DeleteImportAction.java 2011-02-17 01:16:20 UTC (rev 206) @@ -23,15 +23,13 @@ */ package org.chorem.bow.action; -import java.util.ArrayList; import java.util.List; -import org.chorem.bow.Bookmark; -import org.chorem.bow.Import; -import org.chorem.bow.User; +import org.chorem.bow.BowBookmark; +import org.chorem.bow.BowImport; +import org.chorem.bow.BowUser; import org.nuiton.wikitty.search.Criteria; import org.nuiton.wikitty.WikittyProxy; -import org.nuiton.wikitty.search.operators.Element; import org.nuiton.wikitty.search.Search; /** @@ -63,18 +61,12 @@ 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(); + BowUser 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); + .eq(BowBookmark.FQ_FIELD_BOWBOOKMARK_BOWUSER, user.getWikittyId()) + .eq(BowImport.FQ_FIELD_BOWIMPORT_IMPORTDATE, date).criteria(); + List<BowImport> bookmarks = proxy.findAllByCriteria(BowImport.class, criteria).getAll(); + proxy.delete(bookmarks); } return SUCCESS; } Modified: trunk/src/main/java/org/chorem/bow/action/DeleteSearchResultsAction.java =================================================================== --- trunk/src/main/java/org/chorem/bow/action/DeleteSearchResultsAction.java 2011-02-16 21:44:28 UTC (rev 205) +++ trunk/src/main/java/org/chorem/bow/action/DeleteSearchResultsAction.java 2011-02-17 01:16:20 UTC (rev 206) @@ -26,9 +26,10 @@ import java.util.ArrayList; import java.util.List; -import org.chorem.bow.Bookmark; +import org.chorem.bow.BowBookmark; import org.chorem.bow.BookmarkUtils; -import org.chorem.bow.User; +import org.chorem.bow.BowPreference; +import org.chorem.bow.BowUser; import org.nuiton.wikitty.search.Criteria; import org.nuiton.wikitty.WikittyProxy; import org.nuiton.wikitty.search.Search; @@ -79,18 +80,21 @@ WikittyProxy proxy = getBowProxy(); Criteria criteria; - User user = getBowSession().getUser(); + BowPreference user = getBowSession().getPreference(); 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); + criteria = Search.query().keyword(fullTextLine) + .eq(BowBookmark.FQ_FIELD_BOWBOOKMARK_BOWUSER, user.getWikittyId()).criteria() + .addFacetField(BowBookmark.FQ_FIELD_WIKITTYLABEL_LABELS); } - List<Bookmark> bookmarks = proxy.findAllByCriteria(Bookmark.class, criteria).getAll(); + List<BowBookmark> bookmarks = proxy.findAllByCriteria(BowBookmark.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()) { + // TODO poussin 20110216 a revoir, incomprehensible :( + for (BowBookmark bookmark : bookmarks) { + if (searchLine.isEmpty() && bookmark.getLabels() == null || !searchLine.isEmpty() + || fullTextLine.isEmpty() && bookmark.getLabels() == null || !fullTextLine.isEmpty()) { ids.add(bookmark.getWikittyId()); } } Modified: trunk/src/main/java/org/chorem/bow/action/DeleteTagAction.java =================================================================== --- trunk/src/main/java/org/chorem/bow/action/DeleteTagAction.java 2011-02-16 21:44:28 UTC (rev 205) +++ trunk/src/main/java/org/chorem/bow/action/DeleteTagAction.java 2011-02-17 01:16:20 UTC (rev 206) @@ -23,7 +23,7 @@ */ package org.chorem.bow.action; -import org.chorem.bow.Bookmark; +import org.chorem.bow.BowBookmark; import org.chorem.bow.BowUtils; import org.nuiton.wikitty.WikittyProxy; @@ -104,10 +104,10 @@ if (deleteTag != null && bookmarkId != null) { if (!bookmarkId.isEmpty()) { WikittyProxy proxy = getBowProxy(); - Bookmark bookmark = proxy.restore(Bookmark.class, bookmarkId); + BowBookmark bookmark = proxy.restore(BowBookmark.class, bookmarkId); if (bookmark != null) { - bookmark.removeTags(deleteTag); + bookmark.removeLabels(deleteTag); proxy.store(bookmark); } } Modified: trunk/src/main/java/org/chorem/bow/action/EditBookmarkAction.java =================================================================== --- trunk/src/main/java/org/chorem/bow/action/EditBookmarkAction.java 2011-02-16 21:44:28 UTC (rev 205) +++ trunk/src/main/java/org/chorem/bow/action/EditBookmarkAction.java 2011-02-17 01:16:20 UTC (rev 206) @@ -29,12 +29,13 @@ import javax.servlet.http.HttpServletRequest; import org.apache.struts2.interceptor.ServletRequestAware; -import org.chorem.bow.Bookmark; +import org.chorem.bow.BowBookmark; import org.chorem.bow.BookmarkUtils; import org.chorem.bow.BowConfig; import org.chorem.bow.BowInit; +import org.chorem.bow.BowPreference; import org.chorem.bow.BowSearch; -import org.chorem.bow.User; +import org.chorem.bow.BowUser; import org.nuiton.wikitty.WikittyProxy; /** @@ -100,12 +101,12 @@ public String execute() { if (bookmarkId != null && !bookmarkId.isEmpty()) { WikittyProxy proxy = getBowProxy(); - Bookmark bookmark = proxy.restore(Bookmark.class, bookmarkId); + BowBookmark bookmark = proxy.restore(BowBookmark.class, bookmarkId); if (bookmark != null) { request.setAttribute("link", bookmark.getLink()); request.setAttribute("name", bookmark.getDescription()); - request.setAttribute("alias", bookmark.getAlias()); + request.setAttribute("alias", bookmark.getPrivateAlias()); request.setAttribute("tags", BookmarkUtils.getBookmarkTagsString(bookmark)); String servletName = BowConfig.getInstance().getServletBow(); request.setAttribute("formAction", @@ -115,7 +116,7 @@ + "&fullTextLine=" + fullTextLine); } } - User user = getBowSession().getUser(); + BowPreference user = getBowSession().getPreference(); if (searchLine == null || searchLine.equals("")) { BowInit.initHomePage(request, user); return "home"; Modified: trunk/src/main/java/org/chorem/bow/action/ExportBookmarksAction.java =================================================================== --- trunk/src/main/java/org/chorem/bow/action/ExportBookmarksAction.java 2011-02-16 21:44:28 UTC (rev 205) +++ trunk/src/main/java/org/chorem/bow/action/ExportBookmarksAction.java 2011-02-17 01:16:20 UTC (rev 206) @@ -30,9 +30,9 @@ import javax.servlet.http.HttpServletResponse; import org.apache.struts2.interceptor.ServletResponseAware; -import org.chorem.bow.Bookmark; +import org.chorem.bow.BowBookmark; import org.chorem.bow.BookmarkUtils; -import org.chorem.bow.User; +import org.chorem.bow.BowUser; import org.nuiton.wikitty.search.Criteria; import org.nuiton.wikitty.WikittyProxy; import org.nuiton.wikitty.search.Search; @@ -55,10 +55,10 @@ public String execute() { WikittyProxy proxy = getBowProxy(); - User user = getBowSession().getUser(); + BowUser 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(); + .eq(BowBookmark.FQ_FIELD_BOWBOOKMARK_BOWUSER, user.getWikittyId()).criteria(); + List<BowBookmark> bookmarks = proxy.findAllByCriteria(BowBookmark.class, criteria).getAll(); String export = BookmarkUtils.getExportHtmlBookmark(bookmarks); byte[] buff = export.getBytes(); ServletOutputStream op; Modified: trunk/src/main/java/org/chorem/bow/action/ForgotPasswordAction.java =================================================================== --- trunk/src/main/java/org/chorem/bow/action/ForgotPasswordAction.java 2011-02-16 21:44:28 UTC (rev 205) +++ trunk/src/main/java/org/chorem/bow/action/ForgotPasswordAction.java 2011-02-17 01:16:20 UTC (rev 206) @@ -30,7 +30,7 @@ import org.apache.commons.lang.RandomStringUtils; import org.chorem.bow.BowMail; -import org.chorem.bow.User; +import org.chorem.bow.BowUser; import org.nuiton.util.StringUtil; import org.nuiton.wikitty.search.Criteria; import org.nuiton.wikitty.WikittyProxy; @@ -81,8 +81,8 @@ 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); + Criteria criteria = Search.query().eq(BowUser.FQ_FIELD_WIKITTYUSER_LOGIN, email).criteria(); + BowUser user = proxy.findByCriteria(BowUser.class, criteria); if (user != null) { // boolean bool = true; Modified: trunk/src/main/java/org/chorem/bow/action/FullTextSearchAction.java =================================================================== --- trunk/src/main/java/org/chorem/bow/action/FullTextSearchAction.java 2011-02-16 21:44:28 UTC (rev 205) +++ trunk/src/main/java/org/chorem/bow/action/FullTextSearchAction.java 2011-02-17 01:16:20 UTC (rev 206) @@ -29,9 +29,10 @@ import javax.servlet.http.HttpServletRequest; import org.apache.struts2.interceptor.ServletRequestAware; +import org.chorem.bow.BowPreference; import org.chorem.bow.BowSearch; import org.chorem.bow.BowSession; -import org.chorem.bow.User; +import org.chorem.bow.BowUser; /** * Fait la recherche fulltext @@ -79,7 +80,7 @@ public String execute() { BowSession session = getBowSession(); - User user = session.getUser(); + BowPreference user = session.getPreference(); 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-16 21:44:28 UTC (rev 205) +++ trunk/src/main/java/org/chorem/bow/action/GenerateTokenAction.java 2011-02-17 01:16:20 UTC (rev 206) @@ -23,8 +23,8 @@ */ package org.chorem.bow.action; -import org.chorem.bow.Token; -import org.chorem.bow.User; +import org.chorem.bow.BowUser; +import org.chorem.bow.BowUtils; import org.nuiton.wikitty.search.Criteria; import org.nuiton.wikitty.WikittyProxy; import org.nuiton.wikitty.search.Search; @@ -39,19 +39,16 @@ private static final long serialVersionUID = 1141019772989666309L; public String execute() { - User user = getBowSession().getUser(); + BowUser 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); - } - // on vient d'effacer le token permanent, demande le load, va en - // regenerer un - getBowSession().loadToken(); + String permanentToken = BowUtils.generateToken(); + user.setPermanentToken(permanentToken); + proxy.store(user); + String temporaryToken = BowUtils.generateToken(); + getBowSession().setTemporaryToken(temporaryToken); + 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-16 21:44:28 UTC (rev 205) +++ trunk/src/main/java/org/chorem/bow/action/HomeAction.java 2011-02-17 01:16:20 UTC (rev 206) @@ -27,7 +27,8 @@ import org.apache.struts2.interceptor.ServletRequestAware; import org.chorem.bow.BowInit; -import org.chorem.bow.User; +import org.chorem.bow.BowPreference; +import org.chorem.bow.BowUser; /** * Prepare l'affichage de la page d'accueil @@ -58,7 +59,7 @@ } public String execute() { - User user = getBowSession().getUser(); + BowPreference user = getBowSession().getPreference(); 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-16 21:44:28 UTC (rev 205) +++ trunk/src/main/java/org/chorem/bow/action/ImportBookmarksAction.java 2011-02-17 01:16:20 UTC (rev 206) @@ -34,13 +34,14 @@ import javax.servlet.http.HttpServletRequest; import org.apache.struts2.interceptor.ServletRequestAware; -import org.chorem.bow.Bookmark; +import org.chorem.bow.BowBookmark; import org.chorem.bow.BookmarkUtils; import org.chorem.bow.BowInit; import org.chorem.bow.BowSearch; import org.chorem.bow.BowUtils; -import org.chorem.bow.ImportHelper; -import org.chorem.bow.User; +import org.chorem.bow.BowImportHelper; +import org.chorem.bow.BowPreference; +import org.chorem.bow.BowUser; import org.htmlparser.Node; import org.htmlparser.Parser; import org.htmlparser.util.NodeList; @@ -167,8 +168,8 @@ // } // } - protected void parseHtmlToBookmarks(NodeList list, User user, Date date, - List<Bookmark> bookmarks, List<String> tagList) + protected void parseHtmlToBookmarks(NodeList list, BowUser user, Date date, + List<BowBookmark> bookmarks, List<String> tagList) throws ParserException { if (list != null) { boolean isFolder = false; @@ -185,10 +186,10 @@ isFolder = true; } } else if (text != null && text.startsWith("A HREF")) { // HREF = new bookmarks - Bookmark bookmark = BookmarkUtils.createBookmarkFromHtml(text, plainText, user); + BowBookmark bookmark = BookmarkUtils.createBookmarkFromHtml(text, plainText, user); Wikitty w = getBowProxy().getWikitty(bookmark); - ImportHelper.addExtension(w); - ImportHelper.setDate(w, date); + BowImportHelper.addExtension(w); + BowImportHelper.setImportDate(w, date); BookmarkUtils.addTagsToBookmark(tagList, bookmark); if (bookmark != null) { @@ -212,7 +213,7 @@ } public String execute() { - User user = getBowSession().getUser(); + BowPreference user = getBowSession().getPreference(); if (upfile != null) { // try { @@ -228,7 +229,7 @@ URL url = upfile.toURI().toURL(); Parser parser = new Parser(url.openConnection()); NodeList list = parser.parse(null); - List<Bookmark> bookmarks = new ArrayList<Bookmark>(); + List<BowBookmark> bookmarks = new ArrayList<BowBookmark>(); parseHtmlToBookmarks(list, user, new Date(), bookmarks, new ArrayList<String>()); bookmarks = proxy.store(bookmarks); // createImportExtension(bookmarks); Modified: trunk/src/main/java/org/chorem/bow/action/LoginAction.java =================================================================== --- trunk/src/main/java/org/chorem/bow/action/LoginAction.java 2011-02-16 21:44:28 UTC (rev 205) +++ trunk/src/main/java/org/chorem/bow/action/LoginAction.java 2011-02-17 01:16:20 UTC (rev 206) @@ -24,13 +24,14 @@ package org.chorem.bow.action; -import java.security.NoSuchAlgorithmException; - import javax.servlet.http.HttpServletRequest; import org.apache.struts2.interceptor.ServletRequestAware; -import org.chorem.bow.User; +import org.chorem.bow.BowConfig; +import org.chorem.bow.BowUser; import org.chorem.bow.BowInit; +import org.chorem.bow.BowPreference; +import org.chorem.bow.BowUserImpl; import org.nuiton.util.StringUtil; import org.nuiton.wikitty.search.Criteria; import org.nuiton.wikitty.WikittyProxy; @@ -69,22 +70,43 @@ public void setServletRequest(HttpServletRequest request) { this.servletRequest = request; } - - protected User checkLogin(String email, String password) throws NoSuchAlgorithmException { - if (email != null && password != null) { - if (!email.isEmpty() && !password.equals(StringUtil.encodeMD5(""))) { - 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) { - addActionError(getText(n_("bow.login.authenticationFailure"))); - } - return user; - } - } - return null; + /** + * Check password in solr index, if fail try to check password admin in config file + * + * @param email + * @param password + * @return + */ + protected BowUser checkLogin(String email, String password) { + BowUser result = null; + if (email != null && password != null) { + if (!email.isEmpty() && !password.equals(StringUtil.encodeMD5(""))) { + WikittyProxy proxy = getBowProxy(); + Criteria criteria = Search.query().eq(BowUser.FQ_FIELD_WIKITTYUSER_LOGIN, email). + eq(BowUser.FQ_FIELD_WIKITTYUSER_PASSWORD, password).criteria(); + result = proxy.findByCriteria(BowUser.class, criteria); + + if (result == null) { + // failback: try to authenticate admin with config info + String configPassword = BowConfig.getInstance().getAdminPassword(email); + log.info("failback password: " + password + " configPassword: " + configPassword); + if (password.equals(configPassword)) { + // admin authenticate with config, this is possible when + // solr index is corrupted or missed. Admin must go to admin + // page en recreate index + result = new BowUserImpl(); + result.setLogin(email); + result.setPassword(configPassword); + addActionMessage(getText(n_("bow.login.admin.failback"))); + log.warn(getText(n_("bow.login.admin.failback"))); + } else { + addActionError(getText(n_("bow.login.authenticationFailure"))); + } + } + } + } + return result; } public String execute() { @@ -93,16 +115,13 @@ if (password != null) { String md5 = StringUtil.encodeMD5(password); - User user; + BowUser user; - try { - user = checkLogin(email, md5); - } catch (NoSuchAlgorithmException e) { - return ERROR; - } + user = checkLogin(email, md5); if (user != null) { getBowSession().setUser(user); - BowInit.initHomePage(servletRequest, user); + BowPreference pref = getBowSession().getPreference(); + BowInit.initHomePage(servletRequest, pref); return SUCCESS; } } Added: trunk/src/main/java/org/chorem/bow/action/Migrate04To05Action.java =================================================================== --- trunk/src/main/java/org/chorem/bow/action/Migrate04To05Action.java (rev 0) +++ trunk/src/main/java/org/chorem/bow/action/Migrate04To05Action.java 2011-02-17 01:16:20 UTC (rev 206) @@ -0,0 +1,34 @@ +package org.chorem.bow.action; + + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.chorem.bow.BowMigration04To05; +import org.chorem.bow.BowSession; +import org.nuiton.wikitty.WikittyProxy; + +/** + * Lance la migration des données de la version 0.4 vers 0.5 + * + * @author poussin + * @version $Revision$ + * + * Last update: $Date$ + * by : $Author$ + */ +public class Migrate04To05Action extends BowBaseAction { + + /** to use log facility, just put in your code: log.info(\"...\"); */ + static private Log log = LogFactory.getLog(Migrate04To05Action.class); + + public String execute() { + BowSession session = getBowSession(); + if (session.isAdmin()) { //If is admin + WikittyProxy proxy = getBowProxy(); + + BowMigration04To05.migrate(proxy); + } + 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-16 21:44:28 UTC (rev 205) +++ trunk/src/main/java/org/chorem/bow/action/ModifyBookmarkAction.java 2011-02-17 01:16:20 UTC (rev 206) @@ -23,7 +23,7 @@ */ package org.chorem.bow.action; -import org.chorem.bow.Bookmark; +import org.chorem.bow.BowBookmark; import org.chorem.bow.BookmarkUtils; import org.nuiton.wikitty.search.Criteria; import org.nuiton.wikitty.WikittyProxy; @@ -143,15 +143,16 @@ } public String execute() { - WikittyProxy proxy = getBowProxy(); - Bookmark bookmark = proxy.restore(Bookmark.class, bookmarkId); + WikittyProxy proxy = getBowProxy(); + BowBookmark bookmark = proxy.restore(BowBookmark.class, bookmarkId); if (bookmark != null) { if (alias != null && !alias.isEmpty()) { - Criteria criteria = Search.query().eq(Bookmark.FQ_FIELD_BOOKMARK_ALIAS, alias).criteria(); + Criteria criteria = Search.query().eq( + BowBookmark.FQ_FIELD_BOWBOOKMARK_PRIVATEALIAS, alias).criteria(); - if (proxy.findByCriteria(Bookmark.class, criteria) != null) { - alias = bookmark.getAlias(); + if (proxy.findByCriteria(BowBookmark.class, criteria) != null) { + alias = bookmark.getPrivateAlias(); } } BookmarkUtils.updateBookmark(bookmark, name, link, tags, alias); Modified: trunk/src/main/java/org/chorem/bow/action/OpenSearchResultAction.java =================================================================== --- trunk/src/main/java/org/chorem/bow/action/OpenSearchResultAction.java 2011-02-16 21:44:28 UTC (rev 205) +++ trunk/src/main/java/org/chorem/bow/action/OpenSearchResultAction.java 2011-02-17 01:16:20 UTC (rev 206) @@ -28,13 +28,13 @@ import org.apache.struts2.interceptor.ServletRequestAware; import org.apache.struts2.interceptor.ServletResponseAware; -import org.chorem.bow.Bookmark; +import org.chorem.bow.BowBookmark; import org.chorem.bow.BookmarkActions; import org.chorem.bow.BookmarkUtils; import org.chorem.bow.BowConfig; import org.chorem.bow.BowUtils; -import org.chorem.bow.Preference; -import org.chorem.bow.User; +import org.chorem.bow.BowPreference; +import org.chorem.bow.BowUser; import org.nuiton.wikitty.search.Criteria; import org.nuiton.wikitty.search.PagedResult; import org.nuiton.wikitty.WikittyProxy; @@ -100,7 +100,7 @@ } public String execute() { - User user = getBowSession().getUser(); + BowPreference user = getBowSession().getPreference(); if (searchLine != null && searchLine.matches("^http://[^ ]*")) { redirectTo = BowUtils.redirectTo(searchLine, null); } else if (searchLine != null @@ -112,8 +112,8 @@ 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 + criteria = criteria.addSortDescending(BowBookmark.FQ_FIELD_BOWBOOKMARK_CLICK); + PagedResult<BowBookmark> result = proxy.findAllByCriteria(BowBookmark.class, criteria); //Retrieves bookmarks by search BookmarkActions bookmarkActions = BookmarkUtils.createBookmarkActions(request, result, searchLine); request.setAttribute("bookmarkActions", bookmarkActions); request.setAttribute("token", token); @@ -125,12 +125,12 @@ 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); + eq(BowBookmark.FQ_FIELD_BOWBOOKMARK_BOWUSER, user.getWikittyId()).criteria(). + addFacetField(BowBookmark.FQ_FIELD_WIKITTYLABEL_LABELS); } else { criteria = BookmarkUtils.getBookmarkListCriteriaByUser(user, null); } - PagedResult<Bookmark> result = proxy.findAllByCriteria(Bookmark.class, criteria); + PagedResult<BowBookmark> result = proxy.findAllByCriteria(BowBookmark.class, criteria); BookmarkActions bookmarkActions = BookmarkUtils.createBookmarkActions(request, result, null); request.setAttribute("bookmarkActions", bookmarkActions); request.setAttribute("token", token); @@ -141,8 +141,7 @@ 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()); + BowPreference pref = getBowSession().getPreference(); String searchEngineURL = pref.getSearchEngineUrlResults(); if (searchEngineURL == null || "".equals(searchEngineURL)) { Modified: trunk/src/main/java/org/chorem/bow/action/OpenSearchSuggestionAction.java =================================================================== --- trunk/src/main/java/org/chorem/bow/action/OpenSearchSuggestionAction.java 2011-02-16 21:44:28 UTC (rev 205) +++ trunk/src/main/java/org/chorem/bow/action/OpenSearchSuggestionAction.java 2011-02-17 01:16:20 UTC (rev 206) @@ -30,9 +30,9 @@ import javax.servlet.http.HttpServletRequest; import org.apache.struts2.interceptor.ServletRequestAware; -import org.chorem.bow.Bookmark; +import org.chorem.bow.BowBookmark; import org.chorem.bow.OpenSearchActions; -import org.chorem.bow.User; +import org.chorem.bow.BowUser; import org.nuiton.wikitty.search.Criteria; import org.nuiton.wikitty.search.FacetTopic; import org.nuiton.wikitty.search.PagedResult; @@ -70,37 +70,41 @@ } public String execute() { - User user = getBowSession().getUser(); + BowUser user = getBowSession().getUser(); - if (searchLine != null) { - OpenSearchActions openSearchActions = new OpenSearchActions(); - WikittyProxy proxy = getBowProxy(); - String[] words = searchLine.split("\\s+"); - List<String> searchLineList = new ArrayList<String>(Arrays.asList(words)); + if (searchLine != null) { + OpenSearchActions openSearchActions = new OpenSearchActions(); + WikittyProxy proxy = getBowProxy(); + String[] words = searchLine.split("\\s+"); + List<String> searchLineList = new ArrayList<String>(Arrays.asList(words)); - if (searchLine.charAt(searchLine.length() - 1) == ' ') { - searchLineList.add(""); //If the user doesn't type anything, we have to propose suggestions - } - Criteria criteria; + if (searchLine.charAt(searchLine.length() - 1) == ' ') { + searchLineList.add(""); //If the user doesn't type anything, we have to propose suggestions + } + Criteria criteria; - if (searchLineList.size() > 1) { - List<String> cpy = new ArrayList<String>(searchLineList); - cpy.remove(cpy.size() - 1); - 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_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_BOOKMARK_TAGS); + if (searchLineList.size() > 1) { + List<String> cpy = new ArrayList<String>(searchLineList); + cpy.remove(cpy.size() - 1); + criteria = Search.query() + .eq(BowBookmark.FQ_FIELD_BOWBOOKMARK_BOWUSER, user.getWikittyId()) + // TODO poussin 20110216 eq n'est sans doute pas bon, plutot un contains ? + .eq(BowBookmark.FQ_FIELD_WIKITTYLABEL_LABELS, cpy).criteria() + .addFacetField(BowBookmark.FQ_FIELD_WIKITTYLABEL_LABELS); + } else { + criteria = Search.query() + .eq(BowBookmark.FQ_FIELD_BOWBOOKMARK_BOWUSER, user.getWikittyId()).criteria() + .addFacetField(BowBookmark.FQ_FIELD_WIKITTYLABEL_LABELS); + } + PagedResult<BowBookmark> result = proxy.findAllByCriteria(BowBookmark.class, criteria); + List<BowBookmark> bookList = result.getAll(); + List<FacetTopic> topics = result.getTopic(BowBookmark.FQ_FIELD_WIKITTYLABEL_LABELS); - openSearchActions.setBookmarkList(bookList); - openSearchActions.setSuggestionList(topics); - openSearchActions.findSuggestions(searchLineList); - request.setAttribute("openSearchAction", openSearchActions); - } - return SUCCESS; + openSearchActions.setBookmarkList(bookList); + openSearchActions.setSuggestionList(topics); + openSearchActions.findSuggestions(searchLineList); + request.setAttribute("openSearchAction", openSearchActions); + } + return SUCCESS; } } \ No newline at end of file Modified: trunk/src/main/java/org/chorem/bow/action/OrderAction.java =================================================================== --- trunk/src/main/java/org/chorem/bow/action/OrderAction.java 2011-02-16 21:44:28 UTC (rev 205) +++ trunk/src/main/java/org/chorem/bow/action/OrderAction.java 2011-02-17 01:16:20 UTC (rev 206) @@ -26,10 +26,11 @@ import javax.servlet.http.HttpServletRequest; import org.apache.struts2.interceptor.ServletRequestAware; -import org.chorem.bow.Bookmark; +import org.chorem.bow.BowBookmark; import org.chorem.bow.BookmarkActions; import org.chorem.bow.BookmarkUtils; -import org.chorem.bow.User; +import org.chorem.bow.BowPreference; +import org.chorem.bow.BowUser; import org.nuiton.wikitty.search.Criteria; import org.nuiton.wikitty.search.PagedResult; import org.nuiton.wikitty.WikittyProxy; @@ -81,37 +82,37 @@ } public String execute() { - User user = getBowSession().getUser(); + BowPreference user = getBowSession().getPreference(); Criteria baseCriteria = BookmarkUtils.getBookmarkListCriteriaByUser(user, searchLine); if (type != null && baseCriteria != null && !type.isEmpty()) { WikittyProxy proxy = getBowProxy(); - PagedResult<Bookmark> result = null; + PagedResult<BowBookmark> result = null; if (type.equals("ascName")) { Criteria criteria = baseCriteria.addSortAscending( - Bookmark.FQ_FIELD_BOOKMARK_DESCRIPTION); - result = proxy.findAllByCriteria(Bookmark.class, criteria); + BowBookmark.FQ_FIELD_BOWBOOKMARK_DESCRIPTION); + result = proxy.findAllByCriteria(BowBookmark.class, criteria); } else if (type.equals("ascDate")) { Criteria criteria = baseCriteria.addSortAscending( - Bookmark.FQ_FIELD_BOOKMARK_DATE); - result = proxy.findAllByCriteria(Bookmark.class, criteria); + BowBookmark.FQ_FIELD_BOWBOOKMARK_CREATIONDATE); + result = proxy.findAllByCriteria(BowBookmark.class, criteria); } else if (type.equals("ascClick")) { Criteria criteria = baseCriteria.addSortAscending( - Bookmark.FQ_FIELD_BOOKMARK_CLICK); - result = proxy.findAllByCriteria(Bookmark.class, criteria); + BowBookmark.FQ_FIELD_BOWBOOKMARK_CLICK); + result = proxy.findAllByCriteria(BowBookmark.class, criteria); } else if (type.equals("descName")) { Criteria criteria = baseCriteria.addSortDescending( - Bookmark.FQ_FIELD_BOOKMARK_DESCRIPTION); - result = proxy.findAllByCriteria(Bookmark.class, criteria); + BowBookmark.FQ_FIELD_BOWBOOKMARK_DESCRIPTION); + result = proxy.findAllByCriteria(BowBookmark.class, criteria); } else if (type.equals("descDate")) { Criteria criteria = baseCriteria.addSortDescending( - Bookmark.FQ_FIELD_BOOKMARK_DATE); - result = proxy.findAllByCriteria(Bookmark.class, criteria); + BowBookmark.FQ_FIELD_BOWBOOKMARK_CREATIONDATE); + result = proxy.findAllByCriteria(BowBookmark.class, criteria); } else if (type.equals("descClick")) { Criteria criteria = baseCriteria.addSortDescending( - Bookmark.FQ_FIELD_BOOKMARK_CLICK); - result = proxy.findAllByCriteria(Bookmark.class, criteria); + BowBookmark.FQ_FIELD_BOWBOOKMARK_CLICK); + result = proxy.findAllByCriteria(BowBookmark.class, criteria); } BookmarkActions bookmarkActions = BookmarkUtils.createBookmarkActions(request, result, searchLine); Modified: trunk/src/main/java/org/chorem/bow/action/PreferencesAction.java =================================================================== --- trunk/src/main/java/org/chorem/bow/action/PreferencesAction.java 2011-02-16 21:44:28 UTC (rev 205) +++ trunk/src/main/java/org/chorem/bow/action/PreferencesAction.java 2011-02-17 01:16:20 UTC (rev 206) @@ -31,8 +31,9 @@ import org.apache.struts2.interceptor.ServletRequestAware; import org.chorem.bow.BookmarkUtils; import org.chorem.bow.BowInit; -import org.chorem.bow.Preference; -import org.chorem.bow.User; +import org.chorem.bow.BowPreference; +import org.chorem.bow.BowProxy; +import org.chorem.bow.BowUser; import org.nuiton.util.StringUtil; import org.nuiton.wikitty.search.Criteria; import org.nuiton.wikitty.search.FacetTopic; @@ -221,9 +222,7 @@ this.request = request; } - protected Preference changePreference() { - Preference preference = getBowSession().getPreference(); - + protected BowPreference changePreference(BowPreference preference) { preference.setColors(colors); if ((tagsNb != null && !tagsNb.isEmpty())) { preference.setTags(Integer.valueOf(tagsNb)); @@ -237,9 +236,9 @@ return preference; } - protected User changeUser(User newUser) { + protected BowUser changeUser(BowUser newUser) { if (email != null && !email.isEmpty()) { - newUser.setEmail(email); + newUser.setLogin(email); } if (newPassword != null && confirmNewPassword != null && currentPassword != null) { if (!newPassword.isEmpty() && !confirmNewPassword.isEmpty() && !currentPassword.isEmpty()) { @@ -258,49 +257,47 @@ } public String execute() { - User user = getBowSession().getUser(); + BowProxy proxy = getBowSession().getProxy(); + // BowPreference etends BowUser, donc on l'utilise pour tout + BowPreference preference = getBowSession().getPreference(); - setBookmarksImportDate(BookmarkUtils.getBookmarksByImportDate(request, user)); + setBookmarksImportDate(BookmarkUtils.getBookmarksByImportDate(request, preference)); if (update != null) { //If the user submitted the form - WikittyProxy proxy = getBowProxy(); - Preference preference = changePreference(); - proxy.store(preference); + preference = changePreference(preference); + preference = proxy.store(preference); + getBowSession().setPreference(preference); - 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); + Criteria criteria = Search.query().eq(BowUser.FQ_FIELD_WIKITTYUSER_LOGIN, email).criteria(); + BowUser find = proxy.findByCriteria(BowUser.class, criteria); - if (find == null || find.getEmail().equals(user.getEmail())) { - if ((newUser = changeUser(newUser)) == null) { + if (find == null || find.getLogin().equals(preference.getLogin())) { + BowUser newUser = changeUser(preference); + if (newUser == null) { return ERROR; } newUser = proxy.store(newUser); getBowSession().setUser(newUser); - 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()); + setEmail(preference.getLogin()); 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()); - } + setEmail(preference.getLogin()); + setColors(preference.getColors()); + setTagsNb(String.valueOf(preference.getTags())); + setBookmarksHomePage(String.valueOf(preference.getBookmarks())); + setSearchEngineUrlSuggestions(preference.getSearchEngineUrlSuggestions()); + setSearchEngineUrlResults(preference.getSearchEngineUrlResults()); } - BowInit.initHomePage(request, user); + // retrieve last reference + preference = getBowSession().getPreference(); + BowInit.initHomePage(request, preference); return SUCCESS; } } Modified: trunk/src/main/java/org/chorem/bow/action/RegisterAction.java =================================================================== --- trunk/src/main/java/org/chorem/bow/action/RegisterAction.java 2011-02-16 21:44:28 UTC (rev 205) +++ trunk/src/main/java/org/chorem/bow/action/RegisterAction.java 2011-02-17 01:16:20 UTC (rev 206) @@ -29,9 +29,11 @@ import org.apache.struts2.interceptor.ServletRequestAware; import org.chorem.bow.BowMail; -import org.chorem.bow.User; -import org.chorem.bow.UserImpl; +import org.chorem.bow.BowUser; +import org.chorem.bow.BowUserImpl; import org.chorem.bow.BowInit; +import org.chorem.bow.BowPreference; +import org.chorem.bow.BowUtils; import org.nuiton.util.StringUtil; import org.nuiton.wikitty.search.Criteria; import org.nuiton.wikitty.WikittyProxy; @@ -102,9 +104,9 @@ if (email != null && passwordMD5 != null) { if (!email.isEmpty() && !passwordMD5.equals(StringUtil.encodeMD5(""))) { WikittyProxy proxy = getBowProxy(); - Criteria criteria = Search.query().eq(User.FQ_FIELD_USER_EMAIL, email).criteria(); //Retrieves user by user name (email) + Criteria criteria = Search.query().eq(BowUser.FQ_FIELD_WIKITTYUSER_LOGIN, email).criteria(); //Retrieves user by user name (email) - if (proxy.findByCriteria(User.class, criteria) == null) { + if (proxy.findByCriteria(BowUser.class, criteria) == null) { return false; } //FIXME : message d'erreur mais return true ??? @@ -129,16 +131,19 @@ if (!checkRegister(md5)) { WikittyProxy proxy = getBowProxy(); - UserImpl newUser = new UserImpl(); + BowUserImpl newUser = new BowUserImpl(); newUser.setPassword(md5); - newUser.setEmail(email); - User login = proxy.store(newUser); //Stores the new user + newUser.setLogin(email); + String permanentToken = BowUtils.generateToken(); + newUser.setPermanentToken(permanentToken); + BowUser 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); + BowPreference pref = getBowSession().getPreference(); + BowInit.initHomePage(request, pref); try { String mailContent; Modified: trunk/src/main/java/org/chorem/bow/action/RemoveBookmarkAction.java =================================================================== --- trunk/src/main/java/org/chorem/bow/action/RemoveBookmarkAction.java 2011-02-16 21:44:28 UTC (rev 205) +++ trunk/src/main/java/org/chorem/bow/action/RemoveBookmarkAction.java 2011-02-17 01:16:20 UTC (rev 206) @@ -23,7 +23,7 @@ */ package org.chorem.bow.action; -import org.chorem.bow.Bookmark; +import org.chorem.bow.BowBookmark; import org.chorem.bow.BowUtils; import org.nuiton.wikitty.WikittyProxy; @@ -92,7 +92,7 @@ if (bookmarkId != null && !bookmarkId.isEmpty()) { try { WikittyProxy proxy = getBowProxy(); - Bookmark bookmark = proxy.restore(Bookmark.class, bookmarkId); + BowBookmark bookmark = proxy.restore(BowBookmark.class, bookmarkId); if (bookmark != null) { proxy.delete(bookmarkId); Modified: trunk/src/main/java/org/chorem/bow/action/SearchAction.java =================================================================== --- trunk/src/main/java/org/chorem/bow/action/SearchAction.java 2011-02-16 21:44:28 UTC (rev 205) +++ trunk/src/main/java/org/chorem/bow/action/SearchAction.java 2011-02-17 01:16:20 UTC (rev 206) @@ -29,8 +29,9 @@ import javax.servlet.http.HttpServletRequest; import org.apache.struts2.interceptor.ServletRequestAware; +import org.chorem.bow.BowPreference; import org.chorem.bow.BowSearch; -import org.chorem.bow.User; +import org.chorem.bow.BowUser; /** * gere les recherches de bookmark @@ -93,7 +94,7 @@ public String execute() { try { - User user = getBowSession().getUser(); + BowPreference user = getBowSession().getPreference(); BowSearch.search(request, user); } catch (IOException e) { // TODO Auto-generated catch block Modified: trunk/src/main/java/org/chorem/bow/interceptor/AldyLoggedInterceptor.java =================================================================== --- trunk/src/main/java/org/chorem/bow/interceptor/AldyLoggedInterceptor.java 2011-02-16 21:44:28 UTC (rev 205) +++ trunk/src/main/java/org/chorem/bow/interceptor/AldyLoggedInterceptor.java 2011-02-17 01:16:20 UTC (rev 206) @@ -26,7 +26,7 @@ import java.util.Map; import org.apache.struts2.ServletActionContext; -import org.chorem.bow.User; +import org.chorem.bow.BowUser; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionInvocation; @@ -49,7 +49,7 @@ Map<String, Object> session = ActionContext.getContext().getSession(); BowSession bowSession = BowSession.getBowSession(session); - User user = bowSession.getUser(); + BowUser user = bowSession.getUser(); if (user != null) { ServletActionContext.getResponse().sendRedirect(redirect); return null; Modified: trunk/src/main/java/org/chorem/bow/interceptor/LoginInterceptor.java =================================================================== --- trunk/src/main/java/org/chorem/bow/interceptor/LoginInterceptor.java 2011-02-16 21:44:28 UTC (rev 205) +++ trunk/src/main/java/org/chorem/bow/interceptor/LoginInterceptor.java 2011-02-17 01:16:20 UTC (rev 206) @@ -26,9 +26,8 @@ import java.util.Map; import org.apache.struts2.ServletActionContext; -import org.chorem.bow.BowInit; import org.chorem.bow.BowUtils; -import org.chorem.bow.User; +import org.chorem.bow.BowUser; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionInvocation; @@ -51,7 +50,7 @@ Map<String, Object> session = ActionContext.getContext().getSession(); BowSession bowSession = BowSession.getBowSession(session); - User user = bowSession.getUser(); + BowUser user = bowSession.getUser(); if (user == null) { Map<String, Object> params = ActionContext.getContext().getParameters(); Modified: trunk/src/main/resources/i18n/bow_en_GB.properties =================================================================== --- trunk/src/main/resources/i18n/bow_en_GB.properties 2011-02-16 21:44:28 UTC (rev 205) +++ trunk/src/main/resources/i18n/bow_en_GB.properties 2011-02-17 01:16:20 UTC (rev 206) @@ -25,6 +25,7 @@ bow.home.title=Home bow.label.locale.english= bow.label.locale.french= +bow.login.admin.failback=Authentication problem, you must recreate index in admin page bow.login.authenticationFailure=Either your email address doesn''t exist or your password is incorrect bow.login.email=Email bow.login.email.required=Email is required Modified: trunk/src/main/resources/i18n/bow_fr_FR.properties =================================================================== --- trunk/src/main/resources/i18n/bow_fr_FR.properties 2011-02-16 21:44:28 UTC (rev 205) +++ trunk/src/main/resources/i18n/bow_fr_FR.properties 2011-02-17 01:16:20 UTC (rev 206) @@ -25,6 +25,7 @@ bow.home.title=Accueil bow.label.locale.english= bow.label.locale.french= +bow.login.admin.failback=Probl\u00E8me d''authentification, vous devriez reconstruire l''index via la page d'admin bow.login.authenticationFailure=Soit votre adresse email n''existe pas, soit votre mot de passe est eronn\u00E9 bow.login.email=Email bow.login.email.required=Veuillez entrer votre adresse email Modified: trunk/src/main/resources/struts.xml =================================================================== --- trunk/src/main/resources/struts.xml 2011-02-16 21:44:28 UTC (rev 205) +++ trunk/src/main/resources/struts.xml 2011-02-17 01:16:20 UTC (rev 206) @@ -187,5 +187,9 @@ <interceptor-ref name="loginStack" /> <result>/jsp/admin.jsp</result> </action> + <action name="migrate04To05" class="org.chorem.bow.action.Migrate04To05Action"> + <interceptor-ref name="loginStack" /> + <result>/jsp/admin.jsp</result> + </action> </package> </struts> Modified: trunk/src/main/webapp/jsp/admin.jsp =================================================================== --- trunk/src/main/webapp/jsp/admin.jsp 2011-02-16 21:44:28 UTC (rev 205) +++ trunk/src/main/webapp/jsp/admin.jsp 2011-02-17 01:16:20 UTC (rev 206) @@ -24,8 +24,6 @@ --> <%@page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@taglib prefix="s" uri="/struts-tags"%> -<%@page import="org.chorem.bow.Preference" %> -<%@page import="org.chorem.bow.User" %> <%@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" @@ -41,15 +39,18 @@ <div id="formFrame"> <h1>Admin panel</h1> <br /><br /> -<% + <% 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 { %> + %> + <ul> + <li><a href="/bow/reIndexation.action">All data re-indexation</a></li> + <li><a href="/bow/migrate04To05.action">Migration all data from 0.4 to 0.5</a></li> + <li><a href="/bow/home.action" id="homePage">Return to the home page</a></li> + </ul> + <% } else {%> <h2>You don't have admin right !</h2> -<% } %> + <% }%> </div> </div> </body> Modified: trunk/src/main/webapp/jsp/home.jsp =================================================================== --- trunk/src/main/webapp/jsp/home.jsp 2011-02-16 21:44:28 UTC (rev 205) +++ trunk/src/main/webapp/jsp/home.jsp 2011-02-17 01:16:20 UTC (rev 206) @@ -25,14 +25,14 @@ <%@taglib prefix="s" uri="/struts-tags" %> <%@page import="org.chorem.bow.BookmarkActions" %> <%@page import="org.chorem.bow.BowSession" %> -<%@page import="org.chorem.bow.Bookmark" %> -<%@page import="org.chorem.bow.Preference" %> +<%@page import="org.chorem.bow.BowBookmark" %> +<%@page import="org.chorem.bow.BowPreference" %> <%@page import="java.util.List" %> <%@page import="java.text.SimpleDateFormat" %> <% BowSession bowSession = BowSession.getBowSession(session); BookmarkActions bookmarkActions = (BookmarkActions) request.getAttribute("bookmarkActions"); -Preference preference = bowSession.getPreference(); +BowPreference preference = bowSession.getPreference(); if (bookmarkActions != null) { %> @@ -53,10 +53,10 @@ int nbBookmarks = preference.getBookmarks(); SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); - List<Bookmark> bookmarkList = bookmarkActions.getBookmarks(); + List<BowBookmark> bookmarkList = bookmarkActions.getBookmarks(); if (!bookmarkList.isEmpty()) { int count = 0; - for (Bookmark bookmark : bookmarkList) { + for (BowBookmark bookmark : bookmarkList) { request.setAttribute("bookmark", bookmark); request.setAttribute("sdf", sdf); %> @@ -78,11 +78,11 @@ </div> <div class="content"> <% - List<Bookmark> lastBookmarks = bookmarkActions.getLastBookmarks(); + List<BowBookmark> lastBookmarks = bookmarkActions.getLastBookmarks(); if (!lastBookmarks.isEmpty()) { int count = 0; - for (Bookmark bookmark : lastBookmarks) { + for (BowBookmark bookmark : lastBookmarks) { request.setAttribute("bookmark", bookmark); request.setAttribute("sdf", sdf); %> Modified: trunk/src/main/webapp/jsp/inc/bookmark.jsp =================================================================== --- trunk/src/main/webapp/jsp/inc/bookmark.jsp 2011-02-16 21:44:28 UTC (rev 205) +++ trunk/src/main/webapp/jsp/inc/bookmark.jsp 2011-02-17 01:16:20 UTC (rev 206) @@ -32,12 +32,12 @@ <s:set var="fullTextLine" value="%{#request.fullTextLine}" /> <s:set var="wikittyId" value="%{#request.bookmark.getWikittyId()}" /> <s:set var="bookmarkLink" value="%{#request.bookmark.getLink()}" /> - <s:set var="bookmarkAlias" value="%{#request.bookmark.getAlias()}" /> + <s:set var="bookmarkAlias" value="%{#request.bookmark.getPrivateAlias()}" /> <s:set var="bookmarkDescription" value="%{#request.bookmark.getDescription()}" /> <s:set var="bookmarkClicks" value="%{#request.bookmark.getClick()}" /> <s:set var="formBookmarkId" value="%{#request.formBookmarkId}" /> <s:set var="aliasUrl" value="%{@org.chorem.bow.BowConfig@getInstance().getServletAliasUrl() + #bookmarkAlias}" /> - <s:set var="date" value="%{#request.sdf.format(#request.bookmark.getDate())}" /> + <s:set var="date" value="%{#request.sdf.format(#request.bookmark.getCreationDate())}" /> <div class="bookmarkhead"> <s:a cssClass="alias" href="%{#aliasUrl}" title="%{#bookmarkLink}" onclick="window.open(this.href); return false;"> @@ -75,7 +75,7 @@ </p> <p class="tags"> <strong><s:text name="bow.bookmark.tags" /> :</strong> - <s:iterator value="#request.bookmark.tags"> + <s:iterator value="#request.bookmark.labels"> <s:url id="deleteTag" action="deleteTag" escapeAmp="false"> <s:param name="bookmarkId"><s:property value="%{#wikittyId}" /></s:param> <s:param name="deleteTag"><s:property /></s:param> Modified: trunk/src/main/webapp/jsp/inc/tagsCloud.jsp =================================================================== --- trunk/src/main/webapp/jsp/inc/tagsCloud.jsp 2011-02-16 21:44:28 UTC (rev 205) +++ trunk/src/main/webapp/jsp/inc/tagsCloud.jsp 2011-02-17 01:16:20 UTC (rev 206) @@ -1,3 +1,4 @@ +<%@page import="org.chorem.bow.BookmarkActions"%> <!-- #%L bow @@ -27,11 +28,11 @@ <div id="nuage" xmlns:s="http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd" xmlns:jsp="http://java.sun.com/JSP/Page"> - <s:if test="%{#request.nbTags > #request.bookmarkActions.getTagsCloud().size()}"> + <s:if test="%{#session.BowSession.preference.tags > #request.bookmarkActions.getTagsCloud().size()}"> <s:set var="maxTags" value="#request.bookmarkActions.getTagsCloud().size()" /> </s:if> <s:else> - <s:set var="maxTags" value="#request.nbTags" /> + <s:set var="maxTags" value="#session.BowSession.preference.tags" /> </s:else> <s:iterator value="%{#request.bookmarkActions.tagsCloud}" status="tag" begin="0" end="%{#maxTags - 1}"> <s:url id="search" action="search" escapeAmp="true"> Modified: trunk/src/main/webapp/jsp/preferences.jsp =================================================================== --- trunk/src/main/webapp/jsp/preferences.jsp 2011-02-16 21:44:28 UTC (rev 205) +++ trunk/src/main/webapp/jsp/preferences.jsp 2011-02-17 01:16:20 UTC (rev 206) @@ -24,7 +24,7 @@ <%@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.chorem.bow.BowImport" %> <%@page import="org.nuiton.wikitty.search.FacetTopic" %> <%@page import="java.util.List" %> Modified: trunk/src/main/webapp/jsp/search.jsp =================================================================== --- trunk/src/main/webapp/jsp/search.jsp 2011-02-16 21:44:28 UTC (rev 205) +++ trunk/src/main/webapp/jsp/search.jsp 2011-02-17 01:16:20 UTC (rev 206) @@ -24,7 +24,7 @@ --> <%@page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@taglib prefix="s" uri="/struts-tags" %> -<%@page import="org.chorem.bow.Bookmark" %> +<%@page import="org.chorem.bow.BowBookmark" %> <%@page import="org.chorem.bow.BookmarkActions" %> <%@page import="java.text.SimpleDateFormat" %> <%@page import="java.util.List" %> @@ -78,11 +78,11 @@ </div> <div class="content"> <% - List<Bookmark> bookmarkList = bookmarkActions.getBookmarks(); + List<BowBookmark> bookmarkList = bookmarkActions.getBookmarks(); if (!bookmarkList.isEmpty()) { SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); - for (Bookmark bookmark : bookmarkList) { + for (BowBookmark bookmark : bookmarkList) { request.setAttribute("bookmark", bookmark); request.setAttribute("sdf", sdf); %> Added: trunk/src/main/xmi/README =================================================================== --- trunk/src/main/xmi/README (rev 0) +++ trunk/src/main/xmi/README 2011-02-17 01:16:20 UTC (rev 206) @@ -0,0 +1,2 @@ +bow-0.4.zargo data model for bow 0.4 and previous +bow.zargo data model for current bow version Added: trunk/src/main/xmi/bow-0.4.zargo =================================================================== (Binary files differ) Property changes on: trunk/src/main/xmi/bow-0.4.zargo ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Modified: trunk/src/main/xmi/bow.zargo =================================================================== (Binary files differ)
participants (1)
-
bpoussin@users.chorem.org