From: <fg...@us...> - 2010-09-10 15:29:23
|
Revision: 3034 http://openutils.svn.sourceforge.net/openutils/?rev=3034&view=rev Author: fgiust Date: 2010-09-10 15:29:16 +0000 (Fri, 10 Sep 2010) Log Message: ----------- MEDIA-179 enum for sorting options Modified Paths: -------------- trunk/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/media/advancedsearch/configuration/SearchMediaQueryConfiguration.java trunk/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/media/configuration/MediaConfigurationManager.java trunk/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/media/pages/MediaAdvancedSearchPage.java trunk/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/media/pages/MediaFolderViewPage.java Added Paths: ----------- trunk/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/media/pages/SortMode.java Modified: trunk/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/media/advancedsearch/configuration/SearchMediaQueryConfiguration.java =================================================================== --- trunk/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/media/advancedsearch/configuration/SearchMediaQueryConfiguration.java 2010-09-10 15:24:05 UTC (rev 3033) +++ trunk/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/media/advancedsearch/configuration/SearchMediaQueryConfiguration.java 2010-09-10 15:29:16 UTC (rev 3034) @@ -35,7 +35,7 @@ import net.sourceforge.openutils.mgnlmedia.media.advancedsearch.SearchFilter; import net.sourceforge.openutils.mgnlmedia.media.configuration.MediaConfigurationManager; import net.sourceforge.openutils.mgnlmedia.media.lifecycle.MediaModule; -import net.sourceforge.openutils.mgnlmedia.media.pages.MediaFolderViewPage; +import net.sourceforge.openutils.mgnlmedia.media.pages.SortMode; import net.sourceforge.openutils.mgnlmedia.media.types.MediaTypeHandler; import org.apache.commons.lang.StringUtils; @@ -103,7 +103,7 @@ } public AdvancedResult search(HttpServletRequest request, String mediaType, String path, boolean descendants, - String sorting, int itemsPerPage, int pageNumberStartingFromOne) + SortMode sorting, int itemsPerPage, int pageNumberStartingFromOne) { Criteria c = JCRCriteriaFactory .createCriteria() @@ -140,22 +140,26 @@ } // sorting - if (MediaFolderViewPage.SORT_BY_SCORE.equals(sorting)) + if (sorting == SortMode.SCORE) { c.addOrder(Order.desc("@jcr:score")); } - else if (MediaFolderViewPage.SORT_BY_CREATIONDATE.equals(sorting)) + else if (sorting == SortMode.CREATIONDATE_ASC) { c.addOrder(Order.asc("@jcr:created")); } - else if (MediaFolderViewPage.SORT_BY_TITLE.equals(sorting)) + else if (sorting == SortMode.CREATIONDATE_DESC) { - c.addOrder(Order.asc("@title")); + c.addOrder(Order.desc("@jcr:created")); } - else if (MediaFolderViewPage.SORT_BY_NAME.equals(sorting)) + else if (sorting == SortMode.FILENAME_ASC) { c.addOrder(Order.asc("@" + MediaTypeHandler.METADATA_NAME)); } + else if (sorting == SortMode.FILENAME_DESC) + { + c.addOrder(Order.desc("@" + MediaTypeHandler.METADATA_NAME)); + } // paging if (itemsPerPage > 0) Modified: trunk/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/media/configuration/MediaConfigurationManager.java =================================================================== --- trunk/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/media/configuration/MediaConfigurationManager.java 2010-09-10 15:24:05 UTC (rev 3033) +++ trunk/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/media/configuration/MediaConfigurationManager.java 2010-09-10 15:29:16 UTC (rev 3034) @@ -35,11 +35,7 @@ import info.magnolia.context.MgnlContext; import java.util.ArrayList; -import java.util.Calendar; import java.util.Collection; -import java.util.Collections; -import java.util.Comparator; -import java.util.HashMap; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.List; @@ -49,7 +45,6 @@ import javax.jcr.query.InvalidQueryException; import net.sourceforge.openutils.mgnlmedia.media.lifecycle.MediaModule; -import net.sourceforge.openutils.mgnlmedia.media.pages.MediaFolderViewPage; import org.apache.commons.lang.StringUtils; import org.apache.jackrabbit.util.ISO9075; @@ -198,18 +193,6 @@ } /** - * Get all media nodes in a folder - * @param folder folder - * @return all media nodes - * @deprecated use SearchMediaQueryConfiguration.search(...) - */ - @Deprecated - public Collection<Content> getMediaNodes(Content folder) - { - return getMediaNodes(folder, null, MediaFolderViewPage.SORT_BY_MODIFICATIONDATE); - } - - /** * Get the list of web pages where a media is used * @param uuid uuid of media * @return list of web pages where a media is used @@ -222,122 +205,6 @@ } /** - * Get all media nodes of given type in a folder - * @param folder folder - * @param type media - * @param sorting sorting - * @return all media nodes of passed type - * @deprecated use SearchMediaQueryConfiguration.search(...) - */ - @Deprecated - public Collection<Content> getMediaNodes(final Content folder, final String type, final String sorting) - { - List<Content> medias = (List<Content>) folder.getChildren(new Content.ContentFilter() - { - - /** - * {@inheritDoc} - */ - public boolean accept(Content content) - { - try - { - return content.getItemType().equals(MEDIA) && NodeDataUtil.getString(content, "type").equals(type); - } - catch (RepositoryException e) - { - log.error("Error getting item type on node {} module media", folder.getHandle(), e); - } - return false; - } - - }); - final MediaConfigurationManager mcm = this; - Collections.sort(medias, new Comparator<Content>() - { - - private Map<String, Integer> mapNpages = new HashMap<String, Integer>(); - - /** - * {@inheritDoc} - */ - public int compare(Content o1, Content o2) - { - if (sorting.equals(MediaFolderViewPage.SORT_BY_FILENAME)) - { - return o1.getName().compareTo(o2.getName()); - } - else if (sorting.equals(MediaFolderViewPage.SORT_BY_MODIFICATIONDATE)) - { - Calendar o1c = o1.getMetaData().getModificationDate() == null - ? o1.getMetaData().getCreationDate() - : o1.getMetaData().getModificationDate(); - Calendar o2c = o2.getMetaData().getModificationDate() == null - ? o2.getMetaData().getCreationDate() - : o2.getMetaData().getModificationDate(); - return o1c.compareTo(o2c); - } - else if (sorting.equals(MediaFolderViewPage.SORT_BY_USAGE)) - { - Integer nPages1 = mapNpages.get(o1.getHandle()); - Integer nPages2 = mapNpages.get(o1.getHandle()); - if (nPages1 == null) - { - try - { - nPages1 = mcm.getUsedInWebPages(o1.getUUID()).size(); - } - catch (InvalidQueryException e) - { - nPages1 = 0; - log.error("Exception getting web pages for media {}", o1.getHandle(), e); - } - catch (RepositoryException e) - { - nPages1 = 0; - log.error("Exception getting web pages for media {}", o1.getHandle(), e); - } - mapNpages.put(o1.getHandle(), nPages1); - } - if (nPages2 == null) - { - try - { - nPages2 = mcm.getUsedInWebPages(o2.getUUID()).size(); - } - catch (InvalidQueryException e) - { - nPages2 = 0; - log.error("Exception getting web pages for media {}", o2.getHandle(), e); - } - catch (RepositoryException e) - { - nPages2 = 0; - log.error("Exception getting web pages for media {}", o2.getHandle(), e); - } - mapNpages.put(o2.getHandle(), nPages2); - } - return nPages1.compareTo(nPages2); - } - else - { - try - { - return (o1.getIndex() >= o2.getIndex()) ? 1 : -1; - } - catch (RepositoryException e) - { - return 0; - } - } - } - - }); - - return medias; - } - - /** * Search media * @param text text to search * @param type if specified restricts the search to the type Modified: trunk/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/media/pages/MediaAdvancedSearchPage.java =================================================================== --- trunk/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/media/pages/MediaAdvancedSearchPage.java 2010-09-10 15:24:05 UTC (rev 3033) +++ trunk/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/media/pages/MediaAdvancedSearchPage.java 2010-09-10 15:29:16 UTC (rev 3034) @@ -98,7 +98,7 @@ return MediaEl .module() .getSearch() - .search(request, type.getName(), "/", true, SORT_BY_SCORE, 0, 1) + .search(request, type.getName(), "/", true, SortMode.SCORE, 0, 1) .getTotalSize(); } @@ -117,18 +117,13 @@ null, null, true, - SORT_BY_SCORE, + SortMode.SCORE, searchConfig.getXmlItemsPerPage(), page); } - return searchConfig.search( - request, - type, - "/", - true, - sorting, - MediaEl.module().getFolderViewItemsPerPage(), - page); + return searchConfig.search(request, type, "/", true, SortMode.valueOf(sorting), MediaEl + .module() + .getFolderViewItemsPerPage(), page); } @Override @@ -195,9 +190,9 @@ * {@inheritDoc} */ @Override - protected String getDefaultSorting() + protected SortMode getDefaultSorting() { - return SORT_BY_SCORE; + return SortMode.SCORE; } public String playlistTitle() Modified: trunk/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/media/pages/MediaFolderViewPage.java =================================================================== --- trunk/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/media/pages/MediaFolderViewPage.java 2010-09-10 15:24:05 UTC (rev 3033) +++ trunk/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/media/pages/MediaFolderViewPage.java 2010-09-10 15:29:16 UTC (rev 3034) @@ -72,41 +72,6 @@ public class MediaFolderViewPage extends MessagesTemplatedMVCHandler { - /** - * - */ - public static final String SORT_BY_NAME = "name"; - - /** - * - */ - public static final String SORT_BY_CREATIONDATE = "creationdate"; - - /** - * - */ - public static final String SORT_BY_FILENAME = "filename"; - - /** - * - */ - public static final String SORT_BY_MODIFICATIONDATE = "modificationdate"; - - /** - * - */ - public static final String SORT_BY_SCORE = "score"; - - /** - * - */ - public static final String SORT_BY_TITLE = "title"; - - /** - * - */ - public static final String SORT_BY_USAGE = "usage"; - protected String path; protected String node; @@ -207,8 +172,10 @@ } bgSelector = StringUtils.defaultIfEmpty(bgSelector, "white"); pagesizeSelector = StringUtils.defaultIfEmpty(pagesizeSelector, "size1"); - sorting = StringUtils.defaultIfEmpty(sorting, getDefaultSorting()); - + if (SortMode.valueOf(sorting) == null) + { + sorting = getDefaultSorting().name(); + } // for activation status handling develop = SystemProperty.getBooleanProperty("magnolia.develop"); } @@ -225,14 +192,10 @@ return 0; } // sorting must be specified for total-size to work (-1 otherwise) - AdvancedResult typeResult = MediaEl.module().getSearch().search( - request, - type.getName(), - path, - false, - getDefaultSorting(), - 0, - 1); + AdvancedResult typeResult = MediaEl + .module() + .getSearch() + .search(request, type.getName(), path, false, getDefaultSorting(), 0, 1); return typeResult.getTotalSize(); } @@ -259,7 +222,7 @@ { itemsPerPage = module.getFolderViewItemsPerPage(); } - return module.getSearch().search(request, type, path, false, sorting, itemsPerPage, page); + return module.getSearch().search(request, type, path, false, SortMode.valueOf(sorting), itemsPerPage, page); } /** @@ -852,9 +815,7 @@ public String getMessage(String key, String param) { - return getMsgs().get(key, new String[]{ - param - }); + return getMsgs().get(key, new String[]{param }); } /** @@ -867,9 +828,7 @@ String s = request.getQueryString(); s = StringUtils.isEmpty(s) ? StringUtils.EMPTY : "&" + s; int p1; - while ((p1 = StringUtils.indexOfAny(s, new String[]{ - "&type=", "&command=", "&page=" - })) != -1) + while ((p1 = StringUtils.indexOfAny(s, new String[]{"&type=", "&command=", "&page=" })) != -1) { int p2 = s.indexOf('&', p1 + 1); s = s.substring(0, p1) + (p2 != -1 ? s.substring(p2) : StringUtils.EMPTY); @@ -888,8 +847,8 @@ return '?' + s + (s.length() > 0 ? '&' : StringUtils.EMPTY) + "type=" + type.getName(); } - protected String getDefaultSorting() + protected SortMode getDefaultSorting() { - return SORT_BY_CREATIONDATE; + return SortMode.FILENAME_ASC; } } Added: trunk/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/media/pages/SortMode.java =================================================================== --- trunk/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/media/pages/SortMode.java (rev 0) +++ trunk/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/media/pages/SortMode.java 2010-09-10 15:29:16 UTC (rev 3034) @@ -0,0 +1,27 @@ +/** + * + * Magnolia SimpleMedia Module (http://www.openmindlab.com/lab/products/media.html) + * Copyright (C)2008 - 2010, Openmind S.r.l. http://www.openmindonline.it + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ +package net.sourceforge.openutils.mgnlmedia.media.pages; + +/** + * @author fgiust + * @version $Id$ + */ +public enum SortMode { + CREATIONDATE_ASC, CREATIONDATE_DESC, FILENAME_ASC, FILENAME_DESC, SCORE; +} Property changes on: trunk/openutils-mgnlmedia/src/main/java/net/sourceforge/openutils/mgnlmedia/media/pages/SortMode.java ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |