001
014
015 package com.liferay.portlet.journal.lar;
016
017 import com.liferay.portal.kernel.exception.PortalException;
018 import com.liferay.portal.kernel.exception.SystemException;
019 import com.liferay.portal.kernel.lar.BaseStagedModelDataHandler;
020 import com.liferay.portal.kernel.lar.ExportImportPathUtil;
021 import com.liferay.portal.kernel.lar.PortletDataContext;
022 import com.liferay.portal.kernel.lar.StagedModelDataHandlerUtil;
023 import com.liferay.portal.kernel.trash.TrashHandler;
024 import com.liferay.portal.kernel.util.MapUtil;
025 import com.liferay.portal.kernel.xml.Element;
026 import com.liferay.portal.service.ServiceContext;
027 import com.liferay.portlet.journal.model.JournalFolder;
028 import com.liferay.portlet.journal.model.JournalFolderConstants;
029 import com.liferay.portlet.journal.service.JournalFolderLocalServiceUtil;
030
031 import java.util.Map;
032
033
036 public class JournalFolderStagedModelDataHandler
037 extends BaseStagedModelDataHandler<JournalFolder> {
038
039 public static final String[] CLASS_NAMES = {JournalFolder.class.getName()};
040
041 @Override
042 public void deleteStagedModel(
043 String uuid, long groupId, String className, String extraData)
044 throws PortalException, SystemException {
045
046 JournalFolder folder =
047 JournalFolderLocalServiceUtil.fetchJournalFolderByUuidAndGroupId(
048 uuid, groupId);
049
050 if (folder != null) {
051 JournalFolderLocalServiceUtil.deleteFolder(folder);
052 }
053 }
054
055 @Override
056 public String[] getClassNames() {
057 return CLASS_NAMES;
058 }
059
060 @Override
061 public String getDisplayName(JournalFolder folder) {
062 return folder.getName();
063 }
064
065 @Override
066 protected void doExportStagedModel(
067 PortletDataContext portletDataContext, JournalFolder folder)
068 throws Exception {
069
070 if (folder.getParentFolderId() !=
071 JournalFolderConstants.DEFAULT_PARENT_FOLDER_ID) {
072
073 StagedModelDataHandlerUtil.exportReferenceStagedModel(
074 portletDataContext, folder, folder.getParentFolder(),
075 PortletDataContext.REFERENCE_TYPE_PARENT);
076 }
077
078 Element folderElement = portletDataContext.getExportDataElement(folder);
079
080 portletDataContext.addClassedModel(
081 folderElement, ExportImportPathUtil.getModelPath(folder), folder);
082 }
083
084 @Override
085 protected void doImportStagedModel(
086 PortletDataContext portletDataContext, JournalFolder folder)
087 throws Exception {
088
089 long userId = portletDataContext.getUserId(folder.getUserUuid());
090
091 if (folder.getParentFolderId() !=
092 JournalFolderConstants.DEFAULT_PARENT_FOLDER_ID) {
093
094 String path = ExportImportPathUtil.getModelPath(
095 portletDataContext, JournalFolder.class.getName(),
096 folder.getParentFolderId());
097
098 JournalFolder parentFolder =
099 (JournalFolder)portletDataContext.getZipEntryAsObject(path);
100
101 StagedModelDataHandlerUtil.importReferenceStagedModel(
102 portletDataContext, parentFolder);
103 }
104
105 Map<Long, Long> folderIds =
106 (Map<Long, Long>)portletDataContext.getNewPrimaryKeysMap(
107 JournalFolder.class);
108
109 long parentFolderId = MapUtil.getLong(
110 folderIds, folder.getParentFolderId(), folder.getParentFolderId());
111
112 ServiceContext serviceContext = portletDataContext.createServiceContext(
113 folder);
114
115 JournalFolder importedFolder = null;
116
117 long groupId = portletDataContext.getScopeGroupId();
118
119 if (portletDataContext.isDataStrategyMirror()) {
120 JournalFolder existingFolder =
121 JournalFolderLocalServiceUtil.
122 fetchJournalFolderByUuidAndGroupId(
123 folder.getUuid(), groupId);
124
125 if (existingFolder == null) {
126 serviceContext.setUuid(folder.getUuid());
127
128 importedFolder = JournalFolderLocalServiceUtil.addFolder(
129 userId, groupId, parentFolderId, folder.getName(),
130 folder.getDescription(), serviceContext);
131 }
132 else {
133 importedFolder = JournalFolderLocalServiceUtil.updateFolder(
134 userId, existingFolder.getFolderId(), parentFolderId,
135 folder.getName(), folder.getDescription(), false,
136 serviceContext);
137 }
138 }
139 else {
140 importedFolder = JournalFolderLocalServiceUtil.addFolder(
141 userId, groupId, parentFolderId, folder.getName(),
142 folder.getDescription(), serviceContext);
143 }
144
145 portletDataContext.importClassedModel(folder, importedFolder);
146 }
147
148 @Override
149 protected void doRestoreStagedModel(
150 PortletDataContext portletDataContext, JournalFolder folder)
151 throws Exception {
152
153 long userId = portletDataContext.getUserId(folder.getUserUuid());
154
155 JournalFolder existingFolder =
156 JournalFolderLocalServiceUtil.fetchJournalFolderByUuidAndGroupId(
157 folder.getUuid(), portletDataContext.getScopeGroupId());
158
159 if ((existingFolder == null) || !existingFolder.isInTrash()) {
160 return;
161 }
162
163 TrashHandler trashHandler = existingFolder.getTrashHandler();
164
165 if (trashHandler.isRestorable(existingFolder.getFolderId())) {
166 trashHandler.restoreTrashEntry(
167 userId, existingFolder.getFolderId());
168 }
169 }
170
171 }