1   /**
2    * Copyright (c) 2000-2008 Liferay, Inc. All rights reserved.
3    *
4    * Permission is hereby granted, free of charge, to any person obtaining a copy
5    * of this software and associated documentation files (the "Software"), to deal
6    * in the Software without restriction, including without limitation the rights
7    * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8    * copies of the Software, and to permit persons to whom the Software is
9    * furnished to do so, subject to the following conditions:
10   *
11   * The above copyright notice and this permission notice shall be included in
12   * all copies or substantial portions of the Software.
13   *
14   * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15   * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16   * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17   * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18   * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19   * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20   * SOFTWARE.
21   */
22  
23  package com.liferay.portlet.bookmarks.util;
24  
25  import com.liferay.portal.kernel.language.LanguageUtil;
26  import com.liferay.portal.kernel.portlet.LiferayWindowState;
27  import com.liferay.portal.kernel.util.OrderByComparator;
28  import com.liferay.portal.kernel.util.ParamUtil;
29  import com.liferay.portal.kernel.util.StringPool;
30  import com.liferay.portlet.bookmarks.model.BookmarksEntry;
31  import com.liferay.portlet.bookmarks.model.BookmarksFolder;
32  import com.liferay.portlet.bookmarks.service.BookmarksEntryLocalServiceUtil;
33  import com.liferay.portlet.bookmarks.service.BookmarksFolderLocalServiceUtil;
34  import com.liferay.portlet.bookmarks.util.comparator.EntryCreateDateComparator;
35  import com.liferay.portlet.bookmarks.util.comparator.EntryModifiedDateComparator;
36  import com.liferay.portlet.bookmarks.util.comparator.EntryNameComparator;
37  import com.liferay.portlet.bookmarks.util.comparator.EntryPriorityComparator;
38  import com.liferay.portlet.bookmarks.util.comparator.EntryURLComparator;
39  import com.liferay.portlet.bookmarks.util.comparator.EntryVisitsComparator;
40  
41  import javax.portlet.PortletURL;
42  import javax.portlet.RenderRequest;
43  import javax.portlet.RenderResponse;
44  
45  import javax.servlet.jsp.PageContext;
46  
47  /**
48   * <a href="BookmarksUtil.java.html"><b><i>View Source</i></b></a>
49   *
50   * @author Brian Wing Shun Chan
51   *
52   */
53  public class BookmarksUtil {
54  
55      public static String getBreadcrumbs(
56              long folderId, long entryId, PageContext pageContext,
57              RenderRequest renderRequest, RenderResponse renderResponse)
58          throws Exception {
59  
60          if (entryId > 0) {
61              BookmarksEntry entry =
62                  BookmarksEntryLocalServiceUtil.getEntry(entryId);
63  
64              return getBreadcrumbs(
65                  entry.getFolder(), entry, pageContext, renderRequest,
66                  renderResponse);
67          }
68          else {
69              BookmarksFolder folder = null;
70  
71              try {
72                  folder = BookmarksFolderLocalServiceUtil.getFolder(folderId);
73              }
74              catch (Exception e) {
75              }
76  
77              return getBreadcrumbs(
78                  folder, null, pageContext, renderRequest, renderResponse);
79          }
80      }
81  
82      public static String getBreadcrumbs(
83              BookmarksFolder folder, BookmarksEntry entry,
84              PageContext pageContext, RenderRequest renderRequest,
85              RenderResponse renderResponse)
86          throws Exception {
87  
88          String strutsAction = ParamUtil.getString(
89              renderRequest, "struts_action");
90  
91          boolean selectFolder = strutsAction.equals("/bookmarks/select_folder");
92  
93          if ((entry != null) && (folder == null)) {
94              folder = entry.getFolder();
95          }
96  
97          PortletURL foldersURL = renderResponse.createRenderURL();
98  
99          if (selectFolder) {
100             foldersURL.setWindowState(LiferayWindowState.POP_UP);
101 
102             foldersURL.setParameter(
103                 "struts_action", "/bookmarks/select_folder");
104         }
105         else {
106             //foldersURL.setWindowState(WindowState.MAXIMIZED);
107 
108             foldersURL.setParameter("struts_action", "/bookmarks/view");
109         }
110 
111         String foldersLink =
112             "<a href=\"" + foldersURL.toString() + "\">" +
113                 LanguageUtil.get(pageContext, "folders") + "</a>";
114 
115         if (folder == null) {
116             return foldersLink;
117         }
118 
119         String breadcrumbs = StringPool.BLANK;
120 
121         if (folder != null) {
122             for (int i = 0;; i++) {
123                 folder = folder.toEscapedModel();
124 
125                 PortletURL portletURL = renderResponse.createRenderURL();
126 
127                 if (selectFolder) {
128                     portletURL.setWindowState(LiferayWindowState.POP_UP);
129 
130                     portletURL.setParameter(
131                         "struts_action", "/bookmarks/select_folder");
132                     portletURL.setParameter(
133                         "folderId", String.valueOf(folder.getFolderId()));
134                 }
135                 else {
136                     //portletURL.setWindowState(WindowState.MAXIMIZED);
137 
138                     portletURL.setParameter("struts_action", "/bookmarks/view");
139                     portletURL.setParameter(
140                         "folderId", String.valueOf(folder.getFolderId()));
141                 }
142 
143                 String folderLink =
144                     "<a href=\"" + portletURL.toString() + "\">" +
145                         folder.getName() + "</a>";
146 
147                 if (i == 0) {
148                     breadcrumbs = folderLink;
149                 }
150                 else {
151                     breadcrumbs = folderLink + " &raquo; " + breadcrumbs;
152                 }
153 
154                 if (folder.isRoot()) {
155                     break;
156                 }
157 
158                 folder = BookmarksFolderLocalServiceUtil.getFolder(
159                     folder.getParentFolderId());
160             }
161         }
162 
163         breadcrumbs = foldersLink + " &raquo; " + breadcrumbs;
164 
165         if (entry != null) {
166             entry = entry.toEscapedModel();
167 
168             PortletURL entryURL = renderResponse.createRenderURL();
169 
170             //entryURL.setWindowState(WindowState.MAXIMIZED);
171 
172             entryURL.setParameter("struts_action", "/bookmarks/edit_entry");
173             entryURL.setParameter(
174                 "entryId", String.valueOf(entry.getEntryId()));
175 
176             String entryLink =
177                 "<a href=\"" + entryURL.toString() + "\">" +
178                     entry.getEntryId() + "</a>";
179 
180             breadcrumbs = breadcrumbs + " &raquo; " + entryLink;
181         }
182 
183         return breadcrumbs;
184     }
185 
186     public static OrderByComparator getEntriesOrderByComparator(
187         String orderByCol, String orderByType) {
188 
189         boolean orderByAsc = false;
190 
191         if (orderByType.equals("asc")) {
192             orderByAsc = true;
193         }
194 
195         OrderByComparator orderByComparator = null;
196 
197         if (orderByCol.equals("create-date")) {
198             orderByComparator = new EntryCreateDateComparator(orderByAsc);
199         }
200         else if (orderByCol.equals("modified-date")) {
201             orderByComparator = new EntryModifiedDateComparator(orderByAsc);
202         }
203         else if (orderByCol.equals("name")) {
204             orderByComparator = new EntryNameComparator(orderByAsc);
205         }
206         else if (orderByCol.equals("priority")) {
207             orderByComparator = new EntryPriorityComparator(orderByAsc);
208         }
209         else if (orderByCol.equals("url")) {
210             orderByComparator = new EntryURLComparator(orderByAsc);
211         }
212         else if (orderByCol.equals("visits")) {
213             orderByComparator = new EntryVisitsComparator(orderByAsc);
214         }
215 
216         return orderByComparator;
217     }
218 
219 }