001
014
015 package com.liferay.portlet.documentlibrary.lar;
016
017 import com.liferay.portal.kernel.lar.BasePortletDataHandler;
018 import com.liferay.portal.kernel.lar.PortletDataContext;
019 import com.liferay.portal.kernel.lar.PortletDataHandlerBoolean;
020 import com.liferay.portal.kernel.lar.PortletDataHandlerControl;
021 import com.liferay.portal.kernel.repository.model.Folder;
022 import com.liferay.portal.kernel.util.GetterUtil;
023 import com.liferay.portal.kernel.util.MapUtil;
024 import com.liferay.portal.kernel.util.StringPool;
025 import com.liferay.portal.kernel.xml.Document;
026 import com.liferay.portal.kernel.xml.Element;
027 import com.liferay.portal.kernel.xml.SAXReaderUtil;
028 import com.liferay.portal.util.PropsValues;
029 import com.liferay.portlet.documentlibrary.model.DLFolderConstants;
030
031 import java.util.List;
032 import java.util.Map;
033
034 import javax.portlet.PortletPreferences;
035
036
039 public class DLDisplayPortletDataHandlerImpl extends BasePortletDataHandler {
040
041 @Override
042 public PortletDataHandlerControl[] getExportControls() {
043 return new PortletDataHandlerControl[] {
044 _foldersAndDocuments, _shortcuts, _ranks, _comments, _ratings, _tags
045 };
046 }
047
048 @Override
049 public PortletDataHandlerControl[] getImportControls() {
050 return new PortletDataHandlerControl[] {
051 _foldersAndDocuments, _shortcuts, _ranks, _comments, _ratings, _tags
052 };
053 }
054
055 @Override
056 public boolean isPublishToLiveByDefault() {
057 return PropsValues.DL_PUBLISH_TO_LIVE_BY_DEFAULT;
058 }
059
060 @Override
061 protected PortletPreferences doDeleteData(
062 PortletDataContext portletDataContext, String portletId,
063 PortletPreferences portletPreferences)
064 throws Exception {
065
066 portletPreferences.setValue("rootFolderId", StringPool.BLANK);
067 portletPreferences.setValue("showFoldersSearch", StringPool.BLANK);
068 portletPreferences.setValue("showSubfolders", StringPool.BLANK);
069 portletPreferences.setValue("foldersPerPage", StringPool.BLANK);
070 portletPreferences.setValue("folderColumns", StringPool.BLANK);
071 portletPreferences.setValue("fileEntriesPerPage", StringPool.BLANK);
072 portletPreferences.setValue("fileEntryColumns", StringPool.BLANK);
073 portletPreferences.setValue("enable-comment-ratings", StringPool.BLANK);
074
075 return portletPreferences;
076 }
077
078 @Override
079 protected String doExportData(
080 PortletDataContext portletDataContext, String portletId,
081 PortletPreferences portletPreferences)
082 throws Exception {
083
084 portletDataContext.addPermissions(
085 "com.liferay.portlet.documentlibrary",
086 portletDataContext.getScopeGroupId());
087
088 long rootFolderId = GetterUtil.getLong(
089 portletPreferences.getValue("rootFolderId", null));
090
091 Document document = SAXReaderUtil.createDocument();
092
093 Element rootElement = document.addElement(
094 "documentlibrary-display-data");
095
096 Element fileEntryTypesElement = rootElement.addElement(
097 "file-entry-types");
098 Element foldersElement = rootElement.addElement("folders");
099 Element fileEntriesElement = rootElement.addElement("file-entries");
100 Element fileShortcutsElement = rootElement.addElement("file-shortcuts");
101 Element fileRanksElement = rootElement.addElement("file-ranks");
102
103 if (rootFolderId == DLFolderConstants.DEFAULT_PARENT_FOLDER_ID) {
104 List<Folder> folders = FolderUtil.findByRepositoryId(
105 portletDataContext.getScopeGroupId());
106
107 for (Folder folder : folders) {
108 DLPortletDataHandlerImpl.exportFolder(
109 portletDataContext, fileEntryTypesElement, foldersElement,
110 fileEntriesElement, fileShortcutsElement, fileRanksElement,
111 folder, false);
112 }
113 }
114 else {
115 Folder folder = FolderUtil.findByPrimaryKey(rootFolderId);
116
117 rootElement.addAttribute(
118 "root-folder-id", String.valueOf(folder.getFolderId()));
119
120 DLPortletDataHandlerImpl.exportFolder(
121 portletDataContext, fileEntryTypesElement, foldersElement,
122 fileEntriesElement, fileShortcutsElement, fileRanksElement,
123 folder, true);
124 }
125
126 return document.formattedString();
127 }
128
129 @Override
130 protected PortletPreferences doImportData(
131 PortletDataContext portletDataContext, String portletId,
132 PortletPreferences portletPreferences, String data)
133 throws Exception {
134
135 portletDataContext.importPermissions(
136 "com.liferay.portlet.documentlibrary",
137 portletDataContext.getSourceGroupId(),
138 portletDataContext.getScopeGroupId());
139
140 Document document = SAXReaderUtil.read(data);
141
142 Element rootElement = document.getRootElement();
143
144 Element fileEntryTypesElement = rootElement.element("file-entry-types");
145
146 List<Element> fileEntryTypeElements = fileEntryTypesElement.elements(
147 "file-entry-type");
148
149 for (Element fileEntryTypeElement : fileEntryTypeElements) {
150 DLPortletDataHandlerImpl.importFileEntryType(
151 portletDataContext, fileEntryTypeElement);
152 }
153
154 Element foldersElement = rootElement.element("folders");
155
156 List<Element> folderElements = foldersElement.elements("folder");
157
158 for (Element folderElement : folderElements) {
159 DLPortletDataHandlerImpl.importFolder(
160 portletDataContext, folderElement);
161 }
162
163 Element fileEntriesElement = rootElement.element("file-entries");
164
165 List<Element> fileEntryElements = fileEntriesElement.elements(
166 "file-entry");
167
168 for (Element fileEntryElement : fileEntryElements) {
169 DLPortletDataHandlerImpl.importFileEntry(
170 portletDataContext, fileEntryElement);
171 }
172
173 if (portletDataContext.getBooleanParameter(_NAMESPACE, "shortcuts")) {
174 List<Element> fileShortcutElements = rootElement.element(
175 "file-shortcuts").elements("file-shortcut");
176
177 for (Element fileShortcutElement : fileShortcutElements) {
178 DLPortletDataHandlerImpl.importFileShortcut(
179 portletDataContext, fileShortcutElement);
180 }
181 }
182
183 if (portletDataContext.getBooleanParameter(_NAMESPACE, "ranks")) {
184 Element fileRanksElement = rootElement.element("file-ranks");
185
186 List<Element> fileRankElements = fileRanksElement.elements(
187 "file-rank");
188
189 for (Element fileRankElement : fileRankElements) {
190 DLPortletDataHandlerImpl.importFileRank(
191 portletDataContext, fileRankElement);
192 }
193 }
194
195 long rootFolderId = GetterUtil.getLong(
196 rootElement.attributeValue("root-folder-id"));
197
198 if (rootFolderId > 0) {
199 Map<Long, Long> folderPKs =
200 (Map<Long, Long>)portletDataContext.getNewPrimaryKeysMap(
201 Folder.class);
202
203 rootFolderId = MapUtil.getLong(
204 folderPKs, rootFolderId, rootFolderId);
205
206 portletPreferences.setValue(
207 "rootFolderId", String.valueOf(rootFolderId));
208 }
209
210 return portletPreferences;
211 }
212
213 private static final String _NAMESPACE = "document_library";
214
215 private static PortletDataHandlerBoolean _comments =
216 new PortletDataHandlerBoolean(_NAMESPACE, "comments");
217
218 private static PortletDataHandlerBoolean _foldersAndDocuments =
219 new PortletDataHandlerBoolean(
220 _NAMESPACE, "folders-and-documents", true, true);
221
222 private static PortletDataHandlerBoolean _ranks =
223 new PortletDataHandlerBoolean(_NAMESPACE, "ranks");
224
225 private static PortletDataHandlerBoolean _ratings =
226 new PortletDataHandlerBoolean(_NAMESPACE, "ratings");
227
228 private static PortletDataHandlerBoolean _shortcuts=
229 new PortletDataHandlerBoolean(_NAMESPACE, "shortcuts");
230
231 private static PortletDataHandlerBoolean _tags =
232 new PortletDataHandlerBoolean(_NAMESPACE, "tags");
233
234 }