r309 - in trunk/bow-ui/src/main: java/org/chorem/bow java/org/chorem/bow/action webapp/jsp xmi
Author: bpoussin Date: 2011-08-18 12:15:48 +0200 (Thu, 18 Aug 2011) New Revision: 309 Url: http://chorem.org/repositories/revision/bow/309 Log: Evolution #438: Refactore source code and simplify all - change model: user require preference (not the inverse) this is possible with current wikitty that accept multiple require Modified: trunk/bow-ui/src/main/java/org/chorem/bow/BookmarkUtils.java trunk/bow-ui/src/main/java/org/chorem/bow/BowMigration04To05.java trunk/bow-ui/src/main/java/org/chorem/bow/BowSearchResult.java trunk/bow-ui/src/main/java/org/chorem/bow/BowSession.java trunk/bow-ui/src/main/java/org/chorem/bow/action/DeleteSearchResultsAction.java trunk/bow-ui/src/main/java/org/chorem/bow/action/ImportBookmarksAction.java trunk/bow-ui/src/main/java/org/chorem/bow/action/OpenSearchResultAction.java trunk/bow-ui/src/main/java/org/chorem/bow/action/PreferencesAction.java trunk/bow-ui/src/main/webapp/jsp/preferences.jsp trunk/bow-ui/src/main/xmi/bow.zargo Modified: trunk/bow-ui/src/main/java/org/chorem/bow/BookmarkUtils.java =================================================================== --- trunk/bow-ui/src/main/java/org/chorem/bow/BookmarkUtils.java 2011-08-18 06:46:15 UTC (rev 308) +++ trunk/bow-ui/src/main/java/org/chorem/bow/BookmarkUtils.java 2011-08-18 10:15:48 UTC (rev 309) @@ -60,13 +60,13 @@ return search; } - static public Criteria getBookmarkListCriteriaByUser(BowPreference user) { + static public Criteria getBookmarkListCriteriaByUser(BowUser user) { Criteria criteria = getBookmarkListCriteriaByUser(user, null, null, null); return criteria; } static public Criteria getBookmarkListCriteriaByUser( - BowPreference user, String searchLine, String fullTextLine, String order) { + BowUser user, String searchLine, String fullTextLine, String order) { Search search = Search.query(); BookmarkUtils.addEqUser(search, user.getWikittyId()); Modified: trunk/bow-ui/src/main/java/org/chorem/bow/BowMigration04To05.java =================================================================== --- trunk/bow-ui/src/main/java/org/chorem/bow/BowMigration04To05.java 2011-08-18 06:46:15 UTC (rev 308) +++ trunk/bow-ui/src/main/java/org/chorem/bow/BowMigration04To05.java 2011-08-18 10:15:48 UTC (rev 309) @@ -94,7 +94,7 @@ 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(); + BowUser bowUser = new BowUserImpl(); result.add(bowUser); // copie des informations du user Modified: trunk/bow-ui/src/main/java/org/chorem/bow/BowSearchResult.java =================================================================== --- trunk/bow-ui/src/main/java/org/chorem/bow/BowSearchResult.java 2011-08-18 06:46:15 UTC (rev 308) +++ trunk/bow-ui/src/main/java/org/chorem/bow/BowSearchResult.java 2011-08-18 10:15:48 UTC (rev 309) @@ -33,7 +33,6 @@ import org.apache.commons.lang.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.nuiton.util.StringUtil; import org.nuiton.wikitty.search.Criteria; import org.nuiton.wikitty.search.FacetTopic; import org.nuiton.wikitty.search.PagedResult; @@ -84,7 +83,7 @@ this.fullTextLine = StringUtils.defaultString(fullTextLine); this.order = StringUtils.defaultString(order); - BowPreference user = session.getPreference(); + BowUser user = session.getUser(); BowProxy proxy = session.getProxy(); Criteria criteria = BookmarkUtils.getBookmarkListCriteriaByUser( Modified: trunk/bow-ui/src/main/java/org/chorem/bow/BowSession.java =================================================================== --- trunk/bow-ui/src/main/java/org/chorem/bow/BowSession.java 2011-08-18 06:46:15 UTC (rev 308) +++ trunk/bow-ui/src/main/java/org/chorem/bow/BowSession.java 2011-08-18 10:15:48 UTC (rev 309) @@ -26,6 +26,7 @@ import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; +import org.apache.commons.lang.ArrayUtils; import org.apache.commons.lang.ObjectUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -48,8 +49,8 @@ static final private String BOW_SESSION_KEY = BowSession.class.getSimpleName(); protected BowProxy proxy; - // preference herite de user, on ne stocke que preference - protected BowPreference preference = null; + // user herite de preference, on ne stocke que user + protected BowUser user = null; protected String temporaryToken = null; protected boolean admin = false; @@ -89,63 +90,28 @@ return proxy; } - public BowPreference getPreference() { - return preference; - } - - public void setPreference(BowPreference preference) { - // si c'est le meme objet on ne fait rien - if (this.preference == preference) { - return; - } - - if (preference != null) { - checkPreference(preference); - - // check if this user is admin - String login = preference.getLogin(); - String[] admins = BowConfig.getAdmins(); - boolean isAdmin = false; - if (admins != null) { - for (String admin : admins) { - if (login.equals(admin)) { - isAdmin = true; - break; - } - } - } - setAdmin(isAdmin); - - // 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; - } - public BowUser getUser() { - return preference; + return user; } public void setUser(BowUser user) { - // si c'est le meme objet on ne fait rien - if (this.preference == user) { - return; - } + // check if this user is admin + String login = user.getLogin(); + String[] admins = BowConfig.getAdmins(); + boolean isAdmin = ArrayUtils.contains(admins, login); + setAdmin(isAdmin); - 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); - } + checkPreference(user); } - setPreference(preference); + + // si c'est le meme user, on ne regenere pas le temporaryToken + if (!ObjectUtils.equals(this.user, user)) { + // generate temporary token + String temporaryToken = BowUtils.generateToken(); + setTemporaryToken(temporaryToken); + } + this.user = user; } protected void checkPreference(BowPreference preference) { Modified: trunk/bow-ui/src/main/java/org/chorem/bow/action/DeleteSearchResultsAction.java =================================================================== --- trunk/bow-ui/src/main/java/org/chorem/bow/action/DeleteSearchResultsAction.java 2011-08-18 06:46:15 UTC (rev 308) +++ trunk/bow-ui/src/main/java/org/chorem/bow/action/DeleteSearchResultsAction.java 2011-08-18 10:15:48 UTC (rev 309) @@ -27,7 +27,7 @@ import org.apache.commons.lang.StringUtils; import org.chorem.bow.BookmarkUtils; -import org.chorem.bow.BowPreference; +import org.chorem.bow.BowUser; import org.nuiton.wikitty.search.Criteria; import org.nuiton.wikitty.WikittyProxy; @@ -47,7 +47,7 @@ try { if (StringUtils.isNotBlank(searchLine) || StringUtils.isNotBlank(fullTextLine)) { - BowPreference user = getBowSession().getPreference(); + BowUser user = getBowSession().getUser(); // FIXME poussin 20110817 ATTENTION, la recherche remonte // potentiellement des bookmarks qui ne nous appartiennent pas, // dans ce cas, ne faudrait-il pas seulement ce supprimer des Modified: trunk/bow-ui/src/main/java/org/chorem/bow/action/ImportBookmarksAction.java =================================================================== --- trunk/bow-ui/src/main/java/org/chorem/bow/action/ImportBookmarksAction.java 2011-08-18 06:46:15 UTC (rev 308) +++ trunk/bow-ui/src/main/java/org/chorem/bow/action/ImportBookmarksAction.java 2011-08-18 10:15:48 UTC (rev 309) @@ -33,7 +33,6 @@ import org.chorem.bow.BookmarkUtils; import org.chorem.bow.BowBookmark; import org.chorem.bow.BowImportHelper; -import org.chorem.bow.BowPreference; import org.chorem.bow.BowUser; import org.htmlparser.Node; import org.htmlparser.Parser; @@ -155,7 +154,7 @@ log.info("Importing boormarks : " + upfile); try { - BowPreference user = getBowSession().getPreference(); + BowUser user = getBowSession().getUser(); // Struts limite to html files, is null if not one if (upfile != null) { Modified: trunk/bow-ui/src/main/java/org/chorem/bow/action/OpenSearchResultAction.java =================================================================== --- trunk/bow-ui/src/main/java/org/chorem/bow/action/OpenSearchResultAction.java 2011-08-18 06:46:15 UTC (rev 308) +++ trunk/bow-ui/src/main/java/org/chorem/bow/action/OpenSearchResultAction.java 2011-08-18 10:15:48 UTC (rev 309) @@ -30,7 +30,7 @@ import org.chorem.bow.BowBookmark; import org.chorem.bow.BowConfig; import org.chorem.bow.BowUtils; -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; @@ -76,7 +76,7 @@ @Override public String execute() { - BowPreference user = getBowSession().getPreference(); + BowUser user = getBowSession().getUser(); if (searchLine != null && searchLine.matches("^http://[^ ]*")) { redirectTo = searchLine; @@ -116,7 +116,7 @@ } } else { // Search on the chosen search engine - BowPreference pref = getBowSession().getPreference(); + BowUser pref = getBowSession().getUser(); String searchEngineURL = pref.getSearchEngineUrlResults(); if (StringUtils.isEmpty(searchEngineURL)) { Modified: trunk/bow-ui/src/main/java/org/chorem/bow/action/PreferencesAction.java =================================================================== --- trunk/bow-ui/src/main/java/org/chorem/bow/action/PreferencesAction.java 2011-08-18 06:46:15 UTC (rev 308) +++ trunk/bow-ui/src/main/java/org/chorem/bow/action/PreferencesAction.java 2011-08-18 10:15:48 UTC (rev 309) @@ -39,7 +39,6 @@ import java.util.Set; import org.apache.commons.lang.StringUtils; -import org.apache.commons.lang.time.DateUtils; import org.chorem.bow.BowSession; import org.nuiton.util.StringUtil; @@ -291,7 +290,7 @@ } } - protected BowPreference changePreference(BowPreference preference) { + protected void changePreference(BowPreference preference) { preference.setColors(colors); if (StringUtils.isNotBlank(tagsNb)) { preference.setTags(Integer.valueOf(tagsNb)); @@ -301,29 +300,60 @@ } preference.setSearchEngineUrlSuggestions(searchEngineUrlSuggestions); preference.setSearchEngineUrlResults(searchEngineUrlResults); - - return preference; } - protected BowUser changeUser(BowUser newUser) { + /** + * Modifie l'email et le password si necessaire. Si la modif est impossible + * email deja utilise, ou mauvais password, alors la methode return false + * Si tout ce passe bien, la methode retourne true + * + * @param user + * @return + */ + protected boolean changeUser(BowUser user) { + boolean result = true; + if (StringUtils.isNotBlank(email)) { - email = email.trim(); - newUser.setLogin(email); + Criteria criteria = Search.query().eq(BowUser.FQ_FIELD_WIKITTYUSER_LOGIN, email).criteria(); + if (log.isDebugEnabled()) { + log.debug(String.format("Try to find user with email: '%s'", email)); + } + BowUser find = getBowProxy().findByCriteria(BowUser.class, criteria); + + //If this email address isn't already used (or if it hasn't changed) + if (find == null || find.getLogin().equals(user.getLogin())) { + email = email.trim(); + user.setLogin(email); + } else { + // this email address is already used by someone else + setEmail(user.getLogin()); + + // TODO poussin 20110818 addFieldError don't work (no message on web page :( + // add addActionError to prevent addFieldError that don't work + addFieldError("email", _("bow.preferences.emailAldyExists")); + addActionError(_("bow.preferences.emailAldyExists")); + result = false; + } } - if (StringUtils.isNotBlank(newPassword) + + if (result + && StringUtils.isNotBlank(newPassword) && StringUtils.isNotBlank(confirmNewPassword) && StringUtils.isNotBlank(currentPassword)) { if (newPassword.equals(confirmNewPassword)) { currentPassword = StringUtil.encodeMD5(currentPassword); - if (currentPassword.equals(newUser.getPassword())) { - newUser.setPassword(StringUtil.encodeMD5(newPassword)); + if (currentPassword.equals(user.getPassword())) { + user.setPassword(StringUtil.encodeMD5(newPassword)); } else { + // TODO poussin 20110818 addFieldError don't work (no message on web page :( + // add addActionError to prevent addFieldError that don't work addFieldError("currentPassword", _("bow.preferences.badCurrentPassword")); - return null; + addActionError(_("bow.preferences.badCurrentPassword")); + result = false; } } } - return newUser; + return result; } /** @@ -410,12 +440,12 @@ try { BowSession session = getBowSession(); BowProxy proxy = session.getProxy(); - // BowPreference extends BowUser, donc on l'utilise pour tout - BowPreference preference = getBowSession().getPreference(); + // BowUser extends BowPreference, donc on l'utilise pour tout + BowUser user = session.getUser(); loadLabels(proxy); Map<String,Integer> bookmarksByImportDate = - BookmarkUtils.getBookmarksByImportDate(session, preference); + BookmarkUtils.getBookmarksByImportDate(session, user); if (log.isDebugEnabled()) { log.debug("bookmarksByImportDate found : " + (bookmarksByImportDate == null ? "null" : bookmarksByImportDate.size())); @@ -426,47 +456,34 @@ // modification des preferences du site if ("site".equals(update)) { //If the user submitted the form - preference = changePreference(preference); - preference = proxy.store(preference); - getBowSession().setPreference(preference); + changePreference(user); + user = proxy.store(user); + getBowSession().setUser(user); } // modification des preferences user (email, password) if ("user".equals(update)) { - Criteria criteria = Search.query().eq(BowUser.FQ_FIELD_WIKITTYUSER_LOGIN, email).criteria(); - if (log.isDebugEnabled()) { - log.debug(String.format("Try to find user with email: '%s'", email)); - } - BowUser find = proxy.findByCriteria(BowUser.class, criteria); - - //If this email address isn't already used (or if it hasn't changed) - if (find == null || find.getLogin().equals(preference.getLogin())) { - BowUser newUser = changeUser(preference); - if (newUser == null) { - result = ERROR; - } else { - newUser = proxy.store(newUser); - getBowSession().setUser(newUser); - result = "update"; - addActionMessage(_("bow.preferences.update.successful")); - } + if (changeUser(user)) { + user = proxy.store(user); + getBowSession().setUser(user); + result = "update"; + addActionMessage(_("bow.preferences.update.successful")); } else { - // this email address is already used by someone else - setEmail(preference.getLogin()); - addActionError(_("bow.preferences.emailAldyExists")); result = ERROR; } } - } else { - // If the user didn't submit the form, the fields are filled with - // the current preferences values - setEmail(preference.getLogin()); - setColors(preference.getColors()); - setTagsNb(String.valueOf(preference.getTags())); - setBookmarksHomePage(String.valueOf(preference.getBookmarks())); - setSearchEngineUrlSuggestions(preference.getSearchEngineUrlSuggestions()); - setSearchEngineUrlResults(preference.getSearchEngineUrlResults()); } + + // reload all time data (otherwize if submit user info, site info disappear) + + // If the user didn't submit the form, the fields are filled with + // the current preferences values + setEmail(user.getLogin()); + setColors(user.getColors()); + setTagsNb(String.valueOf(user.getTags())); + setBookmarksHomePage(String.valueOf(user.getBookmarks())); + setSearchEngineUrlSuggestions(user.getSearchEngineUrlSuggestions()); + setSearchEngineUrlResults(user.getSearchEngineUrlResults()); } catch (Exception eee) { addActionError(_("bow.error.internal")); log.error(eee.getMessage(), eee); Modified: trunk/bow-ui/src/main/webapp/jsp/preferences.jsp =================================================================== --- trunk/bow-ui/src/main/webapp/jsp/preferences.jsp 2011-08-18 06:46:15 UTC (rev 308) +++ trunk/bow-ui/src/main/webapp/jsp/preferences.jsp 2011-08-18 10:15:48 UTC (rev 309) @@ -40,8 +40,8 @@ <s:actionerror/> <div class="formFrame fond"> - <s:set var="permanentToken" value="#session.BowSession.getPermanentToken()" /> - <s:set var="temporaryToken" value="#session.BowSession.getTemporaryToken()" /> + <s:set var="permanentToken" value="bowSession.getPermanentToken()" /> + <s:set var="temporaryToken" value="bowSession.getTemporaryToken()" /> <ul> <li> <s:a title="%{getText('bow.rightMenu.bookmark.temporaryLinkDescription')}" Modified: trunk/bow-ui/src/main/xmi/bow.zargo =================================================================== (Binary files differ)
participants (1)
-
bpoussin@users.chorem.org