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(
145 "file-entry-types");
146
147 List<Element> fileEntryTypeElements = fileEntryTypesElement.elements(
148 "file-entry-type");
149
150 for (Element fileEntryTypeElement : fileEntryTypeElements) {
151 DLPortletDataHandlerImpl.importFileEntryType(
152 portletDataContext, fileEntryTypeElement);
153 }
154
155 Element foldersElement = rootElement.element("folders");
156
157 List<Element> folderElements = foldersElement.elements("folder");
158
159 for (Element folderElement : folderElements) {
160 DLPortletDataHandlerImpl.importFolder(
161 portletDataContext, folderElement);
162 }
163
164 Element fileEntriesElement = rootElement.element("file-entries");
165
166 List<Element> fileEntryElements = fileEntriesElement.elements(
167 "file-entry");
168
169 for (Element fileEntryElement : fileEntryElements) {
170 DLPortletDataHandlerImpl.importFileEntry(
171 portletDataContext, fileEntryElement);
172 }
173
174 if (portletDataContext.getBooleanParameter(_NAMESPACE, "shortcuts")) {
175 List<Element> fileShortcutElements = rootElement.element(
176 "file-shortcuts").elements("file-shortcut");
177
178 for (Element fileShortcutElement : fileShortcutElements) {
179 DLPortletDataHandlerImpl.importFileShortcut(
180 portletDataContext, fileShortcutElement);
181 }
182 }
183
184 if (portletDataContext.getBooleanParameter(_NAMESPACE, "ranks")) {
185 Element fileRanksElement = rootElement.element("file-ranks");
186
187 List<Element> fileRankElements = fileRanksElement.elements(
188 "file-rank");
189
190 for (Element fileRankElement : fileRankElements) {
191 DLPortletDataHandlerImpl.importFileRank(
192 portletDataContext, fileRankElement);
193 }
194 }
195
196 long rootFolderId = GetterUtil.getLong(
197 rootElement.attributeValue("root-folder-id"));
198
199 if (rootFolderId > 0) {
200 Map<Long, Long> folderPKs =
201 (Map<Long, Long>)portletDataContext.getNewPrimaryKeysMap(
202 Folder.class);
203
204 rootFolderId = MapUtil.getLong(
205 folderPKs, rootFolderId, rootFolderId);
206
207 portletPreferences.setValue(
208 "rootFolderId", String.valueOf(rootFolderId));
209 }
210
211 return portletPreferences;
212 }
213
214 private static final String _NAMESPACE = "document_library";
215
216 private static PortletDataHandlerBoolean _comments =
217 new PortletDataHandlerBoolean(_NAMESPACE, "comments");
218
219 private static PortletDataHandlerBoolean _foldersAndDocuments =
220 new PortletDataHandlerBoolean(
221 _NAMESPACE, "folders-and-documents", true, true);
222
223 private static PortletDataHandlerBoolean _ranks =
224 new PortletDataHandlerBoolean(_NAMESPACE, "ranks");
225
226 private static PortletDataHandlerBoolean _ratings =
227 new PortletDataHandlerBoolean(_NAMESPACE, "ratings");
228
229 private static PortletDataHandlerBoolean _shortcuts=
230 new PortletDataHandlerBoolean(_NAMESPACE, "shortcuts");
231
232 private static PortletDataHandlerBoolean _tags =
233 new PortletDataHandlerBoolean(_NAMESPACE, "tags");
234
235 }