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