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              return;
74          }
75  
76          BookmarksFolder folder = BookmarksFolderLocalServiceUtil.getFolder(
77              folderId);
78  
79          addPortletBreadcrumbEntries(folder, request, renderResponse);
80      }
81  
82      public static void addPortletBreadcrumbEntries(
83              BookmarksFolder folder, HttpServletRequest request,
84              RenderResponse renderResponse)
85          throws Exception {
86  
87          String strutsAction = ParamUtil.getString(
88              request, "struts_action");
89  
90          boolean selectFolder = strutsAction.equals("/bookmarks/select_folder");
91  
92          PortletURL portletURL = renderResponse.createRenderURL();
93  
94          if (selectFolder) {
95              ThemeDisplay themeDisplay = (ThemeDisplay)request.getAttribute(
96                  WebKeys.THEME_DISPLAY);
97  
98              portletURL.setWindowState(LiferayWindowState.POP_UP);
99  
100             portletURL.setParameter(
101                 "struts_action", "/bookmarks/select_folder");
102 
103             PortalUtil.addPortletBreadcrumbEntry(
104                 request, themeDisplay.translate("bookmarks-home"),
105                 portletURL.toString());
106         }
107         else {
108             portletURL.setParameter("struts_action", "/bookmarks/view");
109         }
110 
111         List<BookmarksFolder> ancestorFolders = folder.getAncestors();
112 
113         Collections.reverse(ancestorFolders);
114 
115         for (BookmarksFolder ancestorFolder : ancestorFolders) {
116             portletURL.setParameter(
117                 "folderId", String.valueOf(ancestorFolder.getFolderId()));
118 
119             PortalUtil.addPortletBreadcrumbEntry(
120                 request, ancestorFolder.getName(), portletURL.toString());
121         }
122 
123         portletURL.setParameter(
124             "folderId", String.valueOf(folder.getFolderId()));
125 
126         PortalUtil.addPortletBreadcrumbEntry(
127             request, folder.getName(), portletURL.toString());
128     }
129 
130     public static OrderByComparator getEntriesOrderByComparator(
131         String orderByCol, String orderByType) {
132 
133         boolean orderByAsc = false;
134 
135         if (orderByType.equals("asc")) {
136             orderByAsc = true;
137         }
138 
139         OrderByComparator orderByComparator = null;
140 
141         if (orderByCol.equals("create-date")) {
142             orderByComparator = new EntryCreateDateComparator(orderByAsc);
143         }
144         else if (orderByCol.equals("modified-date")) {
145             orderByComparator = new EntryModifiedDateComparator(orderByAsc);
146         }
147         else if (orderByCol.equals("name")) {
148             orderByComparator = new EntryNameComparator(orderByAsc);
149         }
150         else if (orderByCol.equals("priority")) {
151             orderByComparator = new EntryPriorityComparator(orderByAsc);
152         }
153         else if (orderByCol.equals("url")) {
154             orderByComparator = new EntryURLComparator(orderByAsc);
155         }
156         else if (orderByCol.equals("visits")) {
157             orderByComparator = new EntryVisitsComparator(orderByAsc);
158         }
159 
160         return orderByComparator;
161     }
162 
163 }