1   /**
2    * Copyright (c) 2000-2010 Liferay, Inc. All rights reserved.
3    *
4    * The contents of this file are subject to the terms of the Liferay Enterprise
5    * Subscription License ("License"). You may not use this file except in
6    * compliance with the License. You can obtain a copy of the License by
7    * contacting Liferay, Inc. See the License for the specific language governing
8    * permissions and limitations under the License, including but not limited to
9    * distribution rights of the Software.
10   *
11   *
12   *
13   */
14  
15  package com.liferay.portlet.bookmarks.util;
16  
17  import com.liferay.portal.kernel.language.LanguageUtil;
18  import com.liferay.portal.kernel.portlet.LiferayWindowState;
19  import com.liferay.portal.kernel.util.OrderByComparator;
20  import com.liferay.portal.kernel.util.ParamUtil;
21  import com.liferay.portal.kernel.util.StringPool;
22  import com.liferay.portlet.bookmarks.model.BookmarksEntry;
23  import com.liferay.portlet.bookmarks.model.BookmarksFolder;
24  import com.liferay.portlet.bookmarks.service.BookmarksEntryLocalServiceUtil;
25  import com.liferay.portlet.bookmarks.service.BookmarksFolderLocalServiceUtil;
26  import com.liferay.portlet.bookmarks.util.comparator.EntryCreateDateComparator;
27  import com.liferay.portlet.bookmarks.util.comparator.EntryModifiedDateComparator;
28  import com.liferay.portlet.bookmarks.util.comparator.EntryNameComparator;
29  import com.liferay.portlet.bookmarks.util.comparator.EntryPriorityComparator;
30  import com.liferay.portlet.bookmarks.util.comparator.EntryURLComparator;
31  import com.liferay.portlet.bookmarks.util.comparator.EntryVisitsComparator;
32  
33  import javax.portlet.PortletURL;
34  import javax.portlet.RenderRequest;
35  import javax.portlet.RenderResponse;
36  
37  import javax.servlet.jsp.PageContext;
38  
39  /**
40   * <a href="BookmarksUtil.java.html"><b><i>View Source</i></b></a>
41   *
42   * @author Brian Wing Shun Chan
43   */
44  public class BookmarksUtil {
45  
46      public static String getBreadcrumbs(
47              long folderId, long entryId, PageContext pageContext,
48              RenderRequest renderRequest, RenderResponse renderResponse)
49          throws Exception {
50  
51          if (entryId > 0) {
52              BookmarksEntry entry =
53                  BookmarksEntryLocalServiceUtil.getEntry(entryId);
54  
55              return getBreadcrumbs(
56                  entry.getFolder(), entry, pageContext, renderRequest,
57                  renderResponse);
58          }
59          else {
60              BookmarksFolder folder = null;
61  
62              try {
63                  folder = BookmarksFolderLocalServiceUtil.getFolder(folderId);
64              }
65              catch (Exception e) {
66              }
67  
68              return getBreadcrumbs(
69                  folder, null, pageContext, renderRequest, renderResponse);
70          }
71      }
72  
73      public static String getBreadcrumbs(
74              BookmarksFolder folder, BookmarksEntry entry,
75              PageContext pageContext, RenderRequest renderRequest,
76              RenderResponse renderResponse)
77          throws Exception {
78  
79          String strutsAction = ParamUtil.getString(
80              renderRequest, "struts_action");
81  
82          boolean selectFolder = strutsAction.equals("/bookmarks/select_folder");
83  
84          if ((entry != null) && (folder == null)) {
85              folder = entry.getFolder();
86          }
87  
88          PortletURL foldersURL = renderResponse.createRenderURL();
89  
90          if (selectFolder) {
91              foldersURL.setWindowState(LiferayWindowState.POP_UP);
92  
93              foldersURL.setParameter(
94                  "struts_action", "/bookmarks/select_folder");
95          }
96          else {
97              //foldersURL.setWindowState(WindowState.MAXIMIZED);
98  
99              foldersURL.setParameter("struts_action", "/bookmarks/view");
100         }
101 
102         String foldersLink =
103             "<a href=\"" + foldersURL.toString() + "\">" +
104                 LanguageUtil.get(pageContext, "folders") + "</a>";
105 
106         if (folder == null) {
107             return "<span class=\"first last\">" + foldersLink + "</span>";
108         }
109 
110         String breadcrumbs = StringPool.BLANK;
111 
112         if (folder != null) {
113             for (int i = 0;; i++) {
114                 folder = folder.toEscapedModel();
115 
116                 PortletURL portletURL = renderResponse.createRenderURL();
117 
118                 if (selectFolder) {
119                     portletURL.setWindowState(LiferayWindowState.POP_UP);
120 
121                     portletURL.setParameter(
122                         "struts_action", "/bookmarks/select_folder");
123                     portletURL.setParameter(
124                         "folderId", String.valueOf(folder.getFolderId()));
125                 }
126                 else {
127                     //portletURL.setWindowState(WindowState.MAXIMIZED);
128 
129                     portletURL.setParameter("struts_action", "/bookmarks/view");
130                     portletURL.setParameter(
131                         "folderId", String.valueOf(folder.getFolderId()));
132                 }
133 
134                 String folderLink =
135                     "<a href=\"" + portletURL.toString() + "\">" +
136                         folder.getName() + "</a>";
137 
138                 if (i == 0) {
139                     if (entry != null) {
140                         breadcrumbs += folderLink;
141                     }
142                     else {
143                         breadcrumbs =
144                             "<span class=\"last\">" + folderLink + "</span>";
145                     }
146                 }
147                 else {
148                     breadcrumbs = folderLink + " &raquo; " + breadcrumbs;
149                 }
150 
151                 if (folder.isRoot()) {
152                     break;
153                 }
154 
155                 folder = BookmarksFolderLocalServiceUtil.getFolder(
156                     folder.getParentFolderId());
157             }
158         }
159 
160         breadcrumbs =
161             "<span class=\"first\">" + foldersLink + " &raquo; </span>" +
162                 breadcrumbs;
163 
164         if (entry != null) {
165             entry = entry.toEscapedModel();
166 
167             PortletURL entryURL = renderResponse.createRenderURL();
168 
169             //entryURL.setWindowState(WindowState.MAXIMIZED);
170 
171             entryURL.setParameter("struts_action", "/bookmarks/edit_entry");
172             entryURL.setParameter(
173                 "entryId", String.valueOf(entry.getEntryId()));
174 
175             String entryLink =
176                 "<span class=\"last\"><a href=\"" + entryURL.toString() +
177                     "\">" + entry.getEntryId() + "</a></span>";
178 
179             breadcrumbs = breadcrumbs + " &raquo; " + entryLink;
180         }
181 
182         return breadcrumbs;
183     }
184 
185     public static OrderByComparator getEntriesOrderByComparator(
186         String orderByCol, String orderByType) {
187 
188         boolean orderByAsc = false;
189 
190         if (orderByType.equals("asc")) {
191             orderByAsc = true;
192         }
193 
194         OrderByComparator orderByComparator = null;
195 
196         if (orderByCol.equals("create-date")) {
197             orderByComparator = new EntryCreateDateComparator(orderByAsc);
198         }
199         else if (orderByCol.equals("modified-date")) {
200             orderByComparator = new EntryModifiedDateComparator(orderByAsc);
201         }
202         else if (orderByCol.equals("name")) {
203             orderByComparator = new EntryNameComparator(orderByAsc);
204         }
205         else if (orderByCol.equals("priority")) {
206             orderByComparator = new EntryPriorityComparator(orderByAsc);
207         }
208         else if (orderByCol.equals("url")) {
209             orderByComparator = new EntryURLComparator(orderByAsc);
210         }
211         else if (orderByCol.equals("visits")) {
212             orderByComparator = new EntryVisitsComparator(orderByAsc);
213         }
214 
215         return orderByComparator;
216     }
217 
218 }