1   /**
2    * Copyright (c) 2000-2010 Liferay, Inc. All rights reserved.
3    *
4    * This library is free software; you can redistribute it and/or modify it under
5    * the terms of the GNU Lesser General Public License as published by the Free
6    * Software Foundation; either version 2.1 of the License, or (at your option)
7    * any later version.
8    *
9    * This library is distributed in the hope that it will be useful, but WITHOUT
10   * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
11   * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
12   * details.
13   */
14  
15  package com.liferay.portlet.bookmarks.util;
16  
17  import com.liferay.portal.kernel.portlet.LiferayWindowState;
18  import com.liferay.portal.kernel.util.OrderByComparator;
19  import com.liferay.portal.kernel.util.ParamUtil;
20  import com.liferay.portal.theme.ThemeDisplay;
21  import com.liferay.portal.util.PortalUtil;
22  import com.liferay.portal.util.WebKeys;
23  import com.liferay.portlet.bookmarks.model.BookmarksEntry;
24  import com.liferay.portlet.bookmarks.model.BookmarksFolder;
25  import com.liferay.portlet.bookmarks.model.BookmarksFolderConstants;
26  import com.liferay.portlet.bookmarks.service.BookmarksFolderLocalServiceUtil;
27  import com.liferay.portlet.bookmarks.util.comparator.EntryCreateDateComparator;
28  import com.liferay.portlet.bookmarks.util.comparator.EntryModifiedDateComparator;
29  import com.liferay.portlet.bookmarks.util.comparator.EntryNameComparator;
30  import com.liferay.portlet.bookmarks.util.comparator.EntryPriorityComparator;
31  import com.liferay.portlet.bookmarks.util.comparator.EntryURLComparator;
32  import com.liferay.portlet.bookmarks.util.comparator.EntryVisitsComparator;
33  
34  import java.util.Collections;
35  import java.util.List;
36  
37  import javax.portlet.PortletURL;
38  import javax.portlet.RenderResponse;
39  
40  import javax.servlet.http.HttpServletRequest;
41  
42  /**
43   * <a href="BookmarksUtil.java.html"><b><i>View Source</i></b></a>
44   *
45   * @author Brian Wing Shun Chan
46   */
47  public class BookmarksUtil {
48  
49      public static void addPortletBreadcrumbEntries(
50              BookmarksEntry entry, HttpServletRequest request,
51              RenderResponse renderResponse)
52          throws Exception {
53  
54          BookmarksFolder folder = entry.getFolder();
55  
56          addPortletBreadcrumbEntries(folder, request, renderResponse);
57  
58          PortletURL portletURL = renderResponse.createRenderURL();
59  
60          portletURL.setParameter("struts_action", "/bookmarks/view_entry");
61          portletURL.setParameter("entryId", String.valueOf(entry.getEntryId()));
62  
63          PortalUtil.addPortletBreadcrumbEntry(
64              request, entry.getName(), portletURL.toString());
65      }
66  
67      public static void addPortletBreadcrumbEntries(
68              long folderId, HttpServletRequest request,
69              RenderResponse renderResponse)
70          throws Exception {
71  
72          if (folderId == BookmarksFolderConstants.DEFAULT_PARENT_FOLDER_ID) {
73  
74              return;
75          }
76  
77          BookmarksFolder folder = BookmarksFolderLocalServiceUtil.getFolder(
78              folderId);
79  
80          addPortletBreadcrumbEntries(folder, request, renderResponse);
81      }
82  
83      public static void addPortletBreadcrumbEntries(
84              BookmarksFolder folder, HttpServletRequest request,
85              RenderResponse renderResponse)
86          throws Exception {
87  
88          String strutsAction = ParamUtil.getString(
89              request, "struts_action");
90  
91          boolean selectFolder = strutsAction.equals("/bookmarks/select_folder");
92  
93          PortletURL portletURL = renderResponse.createRenderURL();
94  
95          if (selectFolder) {
96              ThemeDisplay themeDisplay = (ThemeDisplay)request.getAttribute(
97                  WebKeys.THEME_DISPLAY);
98  
99              portletURL.setWindowState(LiferayWindowState.POP_UP);
100 
101             portletURL.setParameter(
102                 "struts_action", "/bookmarks/select_folder");
103 
104             PortalUtil.addPortletBreadcrumbEntry(
105                 request, themeDisplay.translate("bookmarks-home"),
106                 portletURL.toString());
107         }
108         else {
109             portletURL.setParameter("struts_action", "/bookmarks/view");
110         }
111 
112         List<BookmarksFolder> ancestorFolders = folder.getAncestors();
113 
114         Collections.reverse(ancestorFolders);
115 
116         for (BookmarksFolder ancestorFolder : ancestorFolders) {
117             portletURL.setParameter(
118                 "folderId", String.valueOf(ancestorFolder.getFolderId()));
119 
120             PortalUtil.addPortletBreadcrumbEntry(
121                 request, ancestorFolder.getName(), portletURL.toString());
122         }
123 
124         portletURL.setParameter(
125             "folderId", String.valueOf(folder.getFolderId()));
126 
127         PortalUtil.addPortletBreadcrumbEntry(
128             request, folder.getName(), portletURL.toString());
129     }
130 
131     public static OrderByComparator getEntriesOrderByComparator(
132         String orderByCol, String orderByType) {
133 
134         boolean orderByAsc = false;
135 
136         if (orderByType.equals("asc")) {
137             orderByAsc = true;
138         }
139 
140         OrderByComparator orderByComparator = null;
141 
142         if (orderByCol.equals("create-date")) {
143             orderByComparator = new EntryCreateDateComparator(orderByAsc);
144         }
145         else if (orderByCol.equals("modified-date")) {
146             orderByComparator = new EntryModifiedDateComparator(orderByAsc);
147         }
148         else if (orderByCol.equals("name")) {
149             orderByComparator = new EntryNameComparator(orderByAsc);
150         }
151         else if (orderByCol.equals("priority")) {
152             orderByComparator = new EntryPriorityComparator(orderByAsc);
153         }
154         else if (orderByCol.equals("url")) {
155             orderByComparator = new EntryURLComparator(orderByAsc);
156         }
157         else if (orderByCol.equals("visits")) {
158             orderByComparator = new EntryVisitsComparator(orderByAsc);
159         }
160 
161         return orderByComparator;
162     }
163 
164 }