001
014
015 package com.liferay.portlet.bookmarks.lar;
016
017 import com.liferay.portal.kernel.dao.orm.ActionableDynamicQuery;
018 import com.liferay.portal.kernel.lar.BasePortletDataHandler;
019 import com.liferay.portal.kernel.lar.ExportImportPathUtil;
020 import com.liferay.portal.kernel.lar.PortletDataContext;
021 import com.liferay.portal.kernel.lar.PortletDataHandlerBoolean;
022 import com.liferay.portal.kernel.lar.StagedModelDataHandlerUtil;
023 import com.liferay.portal.kernel.lar.StagedModelType;
024 import com.liferay.portal.kernel.util.GetterUtil;
025 import com.liferay.portal.kernel.util.MapUtil;
026 import com.liferay.portal.kernel.xml.Element;
027 import com.liferay.portal.model.Portlet;
028 import com.liferay.portal.service.PortletLocalServiceUtil;
029 import com.liferay.portal.util.PropsValues;
030 import com.liferay.portlet.bookmarks.model.BookmarksEntry;
031 import com.liferay.portlet.bookmarks.model.BookmarksFolder;
032 import com.liferay.portlet.bookmarks.model.BookmarksFolderConstants;
033 import com.liferay.portlet.bookmarks.service.BookmarksEntryLocalServiceUtil;
034 import com.liferay.portlet.bookmarks.service.BookmarksFolderLocalServiceUtil;
035 import com.liferay.portlet.bookmarks.service.permission.BookmarksPermission;
036 import com.liferay.portlet.bookmarks.service.persistence.BookmarksEntryExportActionableDynamicQuery;
037 import com.liferay.portlet.bookmarks.service.persistence.BookmarksFolderExportActionableDynamicQuery;
038
039 import java.util.List;
040 import java.util.Map;
041
042 import javax.portlet.PortletPreferences;
043
044
052 public class BookmarksPortletDataHandler extends BasePortletDataHandler {
053
054 public static final String NAMESPACE = "bookmarks";
055
056 public BookmarksPortletDataHandler() {
057 setDataPortletPreferences("rootFolderId");
058 setDeletionSystemEventStagedModelTypes(
059 new StagedModelType(BookmarksEntry.class),
060 new StagedModelType(BookmarksFolder.class));
061 setExportControls(
062 new PortletDataHandlerBoolean(
063 NAMESPACE, "entries", true, false, null,
064 BookmarksEntry.class.getName()));
065 setImportControls(getExportControls());
066 setPublishToLiveByDefault(
067 PropsValues.BOOKMARKS_PUBLISH_TO_LIVE_BY_DEFAULT);
068 }
069
070 @Override
071 protected PortletPreferences doDeleteData(
072 PortletDataContext portletDataContext, String portletId,
073 PortletPreferences portletPreferences)
074 throws Exception {
075
076 if (portletDataContext.addPrimaryKey(
077 BookmarksPortletDataHandler.class, "deleteData")) {
078
079 return portletPreferences;
080 }
081
082 BookmarksFolderLocalServiceUtil.deleteFolders(
083 portletDataContext.getScopeGroupId());
084
085 BookmarksEntryLocalServiceUtil.deleteEntries(
086 portletDataContext.getScopeGroupId(),
087 BookmarksFolderConstants.DEFAULT_PARENT_FOLDER_ID);
088
089 return portletPreferences;
090 }
091
092 @Override
093 protected String doExportData(
094 final PortletDataContext portletDataContext, String portletId,
095 PortletPreferences portletPreferences)
096 throws Exception {
097
098 Element rootElement = addExportDataRootElement(portletDataContext);
099
100 if (!portletDataContext.getBooleanParameter(NAMESPACE, "entries")) {
101 return getExportDataRootElementString(rootElement);
102 }
103
104 portletDataContext.addPortletPermissions(
105 BookmarksPermission.RESOURCE_NAME);
106
107 rootElement.addAttribute(
108 "group-id", String.valueOf(portletDataContext.getScopeGroupId()));
109
110 ActionableDynamicQuery folderActionableDynamicQuery =
111 new BookmarksFolderExportActionableDynamicQuery(portletDataContext);
112
113 folderActionableDynamicQuery.performActions();
114
115 ActionableDynamicQuery entryActionableDynamicQuery =
116 new BookmarksEntryExportActionableDynamicQuery(portletDataContext);
117
118 entryActionableDynamicQuery.performActions();
119
120 return getExportDataRootElementString(rootElement);
121 }
122
123 @Override
124 protected PortletPreferences doImportData(
125 PortletDataContext portletDataContext, String portletId,
126 PortletPreferences portletPreferences, String data)
127 throws Exception {
128
129 if (!portletDataContext.getBooleanParameter(NAMESPACE, "entries")) {
130 return null;
131 }
132
133 portletDataContext.importPortletPermissions(
134 BookmarksPermission.RESOURCE_NAME);
135
136 Element foldersElement = portletDataContext.getImportDataGroupElement(
137 BookmarksFolder.class);
138
139 List<Element> folderElements = foldersElement.elements();
140
141 for (Element folderElement : folderElements) {
142 StagedModelDataHandlerUtil.importStagedModel(
143 portletDataContext, folderElement);
144 }
145
146 Element entriesElement = portletDataContext.getImportDataGroupElement(
147 BookmarksEntry.class);
148
149 List<Element> entryElements = entriesElement.elements();
150
151 for (Element entryElement : entryElements) {
152 StagedModelDataHandlerUtil.importStagedModel(
153 portletDataContext, entryElement);
154 }
155
156 return null;
157 }
158
159 @Override
160 protected void doPrepareManifestSummary(
161 PortletDataContext portletDataContext,
162 PortletPreferences portletPreferences)
163 throws Exception {
164
165 ActionableDynamicQuery entryExportActionableDynamicQuery =
166 new BookmarksEntryExportActionableDynamicQuery(portletDataContext);
167
168 entryExportActionableDynamicQuery.performCount();
169
170 ActionableDynamicQuery folderExportActionableDynamicQuery =
171 new BookmarksFolderExportActionableDynamicQuery(portletDataContext);
172
173 folderExportActionableDynamicQuery.performCount();
174 }
175
176 @Override
177 protected PortletPreferences doProcessExportPortletPreferences(
178 PortletDataContext portletDataContext, String portletId,
179 PortletPreferences portletPreferences)
180 throws Exception {
181
182 long rootFolderId = GetterUtil.getLong(
183 portletPreferences.getValue("rootFolderId", null));
184
185 if (rootFolderId != BookmarksFolderConstants.DEFAULT_PARENT_FOLDER_ID) {
186 BookmarksFolder folder = BookmarksFolderLocalServiceUtil.getFolder(
187 rootFolderId);
188
189 Portlet portlet = PortletLocalServiceUtil.getPortletById(
190 portletDataContext.getCompanyId(), portletId);
191
192 portletDataContext.addReferenceElement(
193 portlet, portletDataContext.getExportDataRootElement(), folder,
194 PortletDataContext.REFERENCE_TYPE_DEPENDENCY,
195 !portletDataContext.getBooleanParameter(NAMESPACE, "entries"));
196 }
197
198 return portletPreferences;
199 }
200
201 @Override
202 protected PortletPreferences doProcessImportPortletPreferences(
203 PortletDataContext portletDataContext, String portletId,
204 PortletPreferences portletPreferences)
205 throws Exception {
206
207 long rootFolderId = GetterUtil.getLong(
208 portletPreferences.getValue("rootFolderId", null));
209
210 if (rootFolderId > 0) {
211 String rootFolderPath = ExportImportPathUtil.getModelPath(
212 portletDataContext, BookmarksFolder.class.getName(),
213 rootFolderId);
214
215 BookmarksFolder folder =
216 (BookmarksFolder)portletDataContext.getZipEntryAsObject(
217 rootFolderPath);
218
219 StagedModelDataHandlerUtil.importStagedModel(
220 portletDataContext, folder);
221
222 Map<Long, Long> folderIds =
223 (Map<Long, Long>)portletDataContext.getNewPrimaryKeysMap(
224 BookmarksFolder.class);
225
226 rootFolderId = MapUtil.getLong(
227 folderIds, rootFolderId, rootFolderId);
228
229 portletPreferences.setValue(
230 "rootFolderId", String.valueOf(rootFolderId));
231 }
232
233 return portletPreferences;
234 }
235
236 }