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