Java tutorial
/** * Copyright (c) 2000-2012 Liferay, Inc. All rights reserved. * * This library is free software; you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the Free * Software Foundation; either version 2.1 of the License, or (at your option) * any later version. * * This library is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more * details. */ package com.liferay.portlet.documentlibrary.lar; import com.liferay.portal.kernel.lar.BasePortletDataHandler; import com.liferay.portal.kernel.lar.PortletDataContext; import com.liferay.portal.kernel.lar.PortletDataHandlerBoolean; import com.liferay.portal.kernel.lar.PortletDataHandlerControl; import com.liferay.portal.kernel.repository.model.Folder; import com.liferay.portal.kernel.util.GetterUtil; import com.liferay.portal.kernel.util.MapUtil; import com.liferay.portal.kernel.util.StringPool; import com.liferay.portal.kernel.xml.Document; import com.liferay.portal.kernel.xml.Element; import com.liferay.portal.kernel.xml.SAXReaderUtil; import com.liferay.portal.util.PropsValues; import com.liferay.portlet.documentlibrary.model.DLFolderConstants; import java.util.List; import java.util.Map; import javax.portlet.PortletPreferences; /** * @author Raymond Aug */ public class DLDisplayPortletDataHandlerImpl extends BasePortletDataHandler { @Override public PortletDataHandlerControl[] getExportControls() { return new PortletDataHandlerControl[] { _foldersAndDocuments, _shortcuts, _ranks, _comments, _ratings, _tags }; } @Override public PortletDataHandlerControl[] getImportControls() { return new PortletDataHandlerControl[] { _foldersAndDocuments, _shortcuts, _ranks, _comments, _ratings, _tags }; } @Override public boolean isPublishToLiveByDefault() { return PropsValues.DL_PUBLISH_TO_LIVE_BY_DEFAULT; } @Override protected PortletPreferences doDeleteData(PortletDataContext portletDataContext, String portletId, PortletPreferences portletPreferences) throws Exception { portletPreferences.setValue("rootFolderId", StringPool.BLANK); portletPreferences.setValue("showFoldersSearch", StringPool.BLANK); portletPreferences.setValue("showSubfolders", StringPool.BLANK); portletPreferences.setValue("foldersPerPage", StringPool.BLANK); portletPreferences.setValue("folderColumns", StringPool.BLANK); portletPreferences.setValue("fileEntriesPerPage", StringPool.BLANK); portletPreferences.setValue("fileEntryColumns", StringPool.BLANK); portletPreferences.setValue("enable-comment-ratings", StringPool.BLANK); return portletPreferences; } @Override protected String doExportData(PortletDataContext portletDataContext, String portletId, PortletPreferences portletPreferences) throws Exception { portletDataContext.addPermissions("com.liferay.portlet.documentlibrary", portletDataContext.getScopeGroupId()); long rootFolderId = GetterUtil.getLong(portletPreferences.getValue("rootFolderId", null)); Document document = SAXReaderUtil.createDocument(); Element rootElement = document.addElement("documentlibrary-display-data"); Element fileEntryTypesElement = rootElement.addElement("file-entry-types"); Element foldersElement = rootElement.addElement("folders"); Element fileEntriesElement = rootElement.addElement("file-entries"); Element fileShortcutsElement = rootElement.addElement("file-shortcuts"); Element fileRanksElement = rootElement.addElement("file-ranks"); if (rootFolderId == DLFolderConstants.DEFAULT_PARENT_FOLDER_ID) { List<Folder> folders = FolderUtil.findByRepositoryId(portletDataContext.getScopeGroupId()); for (Folder folder : folders) { DLPortletDataHandlerImpl.exportFolder(portletDataContext, fileEntryTypesElement, foldersElement, fileEntriesElement, fileShortcutsElement, fileRanksElement, folder, false); } } else { Folder folder = FolderUtil.findByPrimaryKey(rootFolderId); rootElement.addAttribute("root-folder-id", String.valueOf(folder.getFolderId())); DLPortletDataHandlerImpl.exportFolder(portletDataContext, fileEntryTypesElement, foldersElement, fileEntriesElement, fileShortcutsElement, fileRanksElement, folder, true); } return document.formattedString(); } @Override protected PortletPreferences doImportData(PortletDataContext portletDataContext, String portletId, PortletPreferences portletPreferences, String data) throws Exception { portletDataContext.importPermissions("com.liferay.portlet.documentlibrary", portletDataContext.getSourceGroupId(), portletDataContext.getScopeGroupId()); Document document = SAXReaderUtil.read(data); Element rootElement = document.getRootElement(); Element fileEntryTypesElement = rootElement.element("file-entry-types"); List<Element> fileEntryTypeElements = fileEntryTypesElement.elements("file-entry-type"); for (Element fileEntryTypeElement : fileEntryTypeElements) { DLPortletDataHandlerImpl.importFileEntryType(portletDataContext, fileEntryTypeElement); } Element foldersElement = rootElement.element("folders"); List<Element> folderElements = foldersElement.elements("folder"); for (Element folderElement : folderElements) { DLPortletDataHandlerImpl.importFolder(portletDataContext, folderElement); } Element fileEntriesElement = rootElement.element("file-entries"); List<Element> fileEntryElements = fileEntriesElement.elements("file-entry"); for (Element fileEntryElement : fileEntryElements) { DLPortletDataHandlerImpl.importFileEntry(portletDataContext, fileEntryElement); } if (portletDataContext.getBooleanParameter(_NAMESPACE, "shortcuts")) { List<Element> fileShortcutElements = rootElement.element("file-shortcuts").elements("file-shortcut"); for (Element fileShortcutElement : fileShortcutElements) { DLPortletDataHandlerImpl.importFileShortcut(portletDataContext, fileShortcutElement); } } if (portletDataContext.getBooleanParameter(_NAMESPACE, "ranks")) { Element fileRanksElement = rootElement.element("file-ranks"); List<Element> fileRankElements = fileRanksElement.elements("file-rank"); for (Element fileRankElement : fileRankElements) { DLPortletDataHandlerImpl.importFileRank(portletDataContext, fileRankElement); } } long rootFolderId = GetterUtil.getLong(rootElement.attributeValue("root-folder-id")); if (rootFolderId > 0) { Map<Long, Long> folderPKs = (Map<Long, Long>) portletDataContext.getNewPrimaryKeysMap(Folder.class); rootFolderId = MapUtil.getLong(folderPKs, rootFolderId, rootFolderId); portletPreferences.setValue("rootFolderId", String.valueOf(rootFolderId)); } return portletPreferences; } private static final String _NAMESPACE = "document_library"; private static PortletDataHandlerBoolean _comments = new PortletDataHandlerBoolean(_NAMESPACE, "comments"); private static PortletDataHandlerBoolean _foldersAndDocuments = new PortletDataHandlerBoolean(_NAMESPACE, "folders-and-documents", true, true); private static PortletDataHandlerBoolean _ranks = new PortletDataHandlerBoolean(_NAMESPACE, "ranks"); private static PortletDataHandlerBoolean _ratings = new PortletDataHandlerBoolean(_NAMESPACE, "ratings"); private static PortletDataHandlerBoolean _shortcuts = new PortletDataHandlerBoolean(_NAMESPACE, "shortcuts"); private static PortletDataHandlerBoolean _tags = new PortletDataHandlerBoolean(_NAMESPACE, "tags"); }