001
014
015 package com.liferay.portlet.bookmarks.lar;
016
017 import com.liferay.portal.kernel.lar.BaseStagedModelDataHandler;
018 import com.liferay.portal.kernel.lar.PortletDataContext;
019 import com.liferay.portal.kernel.lar.StagedModelPathUtil;
020 import com.liferay.portal.kernel.util.MapUtil;
021 import com.liferay.portal.kernel.xml.Element;
022 import com.liferay.portal.service.ServiceContext;
023 import com.liferay.portlet.bookmarks.model.BookmarksFolder;
024 import com.liferay.portlet.bookmarks.model.BookmarksFolderConstants;
025 import com.liferay.portlet.bookmarks.service.BookmarksFolderLocalServiceUtil;
026 import com.liferay.portlet.bookmarks.service.persistence.BookmarksFolderUtil;
027
028 import java.util.Map;
029
030
034 public class BookmarksFolderStagedModelDataHandler
035 extends BaseStagedModelDataHandler<BookmarksFolder> {
036
037 @Override
038 public String getClassName() {
039 return BookmarksFolder.class.getName();
040 }
041
042 @Override
043 protected void doExportStagedModel(
044 PortletDataContext portletDataContext, Element[] elements,
045 BookmarksFolder folder)
046 throws Exception {
047
048 Element foldersElement = elements[0];
049
050 if (folder.getParentFolderId() !=
051 BookmarksFolderConstants.DEFAULT_PARENT_FOLDER_ID) {
052
053 exportStagedModel(
054 portletDataContext, foldersElement, folder.getParentFolder());
055 }
056
057 Element folderElement = foldersElement.addElement("folder");
058
059 portletDataContext.addClassedModel(
060 folderElement, StagedModelPathUtil.getPath(folder), folder,
061 BookmarksPortletDataHandler.NAMESPACE);
062 }
063
064 @Override
065 protected void doImportStagedModel(
066 PortletDataContext portletDataContext, Element element, String path,
067 BookmarksFolder folder)
068 throws Exception {
069
070 long userId = portletDataContext.getUserId(folder.getUserUuid());
071
072 Map<Long, Long> folderIds =
073 (Map<Long, Long>)portletDataContext.getNewPrimaryKeysMap(
074 BookmarksFolder.class);
075
076 long parentFolderId = MapUtil.getLong(
077 folderIds, folder.getParentFolderId(), folder.getParentFolderId());
078
079 if ((parentFolderId !=
080 BookmarksFolderConstants.DEFAULT_PARENT_FOLDER_ID) &&
081 (parentFolderId == folder.getParentFolderId())) {
082
083 String parentFolderPath = StagedModelPathUtil.getPath(
084 portletDataContext, BookmarksFolder.class.getName(),
085 parentFolderId);
086
087 BookmarksFolder parentFolder =
088 (BookmarksFolder)portletDataContext.getZipEntryAsObject(
089 parentFolderPath);
090
091 importStagedModel(
092 portletDataContext, element, parentFolderPath, parentFolder);
093
094 parentFolderId = MapUtil.getLong(
095 folderIds, folder.getParentFolderId(),
096 folder.getParentFolderId());
097 }
098
099 ServiceContext serviceContext = portletDataContext.createServiceContext(
100 path, folder, BookmarksPortletDataHandler.NAMESPACE);
101
102 BookmarksFolder importedFolder = null;
103
104 if (portletDataContext.isDataStrategyMirror()) {
105 BookmarksFolder existingFolder = BookmarksFolderUtil.fetchByUUID_G(
106 folder.getUuid(), portletDataContext.getScopeGroupId());
107
108 if (existingFolder == null) {
109 serviceContext.setUuid(folder.getUuid());
110
111 importedFolder = BookmarksFolderLocalServiceUtil.addFolder(
112 userId, parentFolderId, folder.getName(),
113 folder.getDescription(), serviceContext);
114 }
115 else {
116 importedFolder = BookmarksFolderLocalServiceUtil.updateFolder(
117 userId, existingFolder.getFolderId(), parentFolderId,
118 folder.getName(), folder.getDescription(), false,
119 serviceContext);
120 }
121 }
122 else {
123 importedFolder = BookmarksFolderLocalServiceUtil.addFolder(
124 userId, parentFolderId, folder.getName(),
125 folder.getDescription(), serviceContext);
126 }
127
128 portletDataContext.importClassedModel(
129 folder, importedFolder, BookmarksPortletDataHandler.NAMESPACE);
130 }
131
132 }