/** * Copyright (c) 2000-present 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.dynamic.data.lists.web.internal.exportimport.data.handler; import com.liferay.dynamic.data.lists.constants.DDLPortletKeys; import com.liferay.dynamic.data.lists.model.DDLRecord; import com.liferay.dynamic.data.lists.model.DDLRecordSet; import com.liferay.dynamic.data.lists.service.DDLRecordLocalService; import com.liferay.dynamic.data.lists.service.DDLRecordSetLocalService; import com.liferay.dynamic.data.lists.service.permission.DDLPermission; import com.liferay.dynamic.data.mapping.model.DDMStructure; import com.liferay.dynamic.data.mapping.model.DDMTemplate; import com.liferay.dynamic.data.mapping.service.DDMStructureLocalService; import com.liferay.exportimport.kernel.lar.BasePortletDataHandler; import com.liferay.exportimport.kernel.lar.PortletDataContext; import com.liferay.exportimport.kernel.lar.PortletDataHandler; import com.liferay.exportimport.kernel.lar.PortletDataHandlerBoolean; import com.liferay.exportimport.kernel.lar.StagedModelDataHandlerUtil; import com.liferay.exportimport.kernel.lar.StagedModelType; import com.liferay.exportimport.staged.model.repository.StagedModelRepository; import com.liferay.portal.kernel.dao.orm.ActionableDynamicQuery; import com.liferay.portal.kernel.dao.orm.DynamicQuery; import com.liferay.portal.kernel.exception.PortalException; import com.liferay.portal.kernel.module.framework.ModuleServiceLifecycle; import com.liferay.portal.kernel.xml.Element; import java.util.List; import java.util.Set; import javax.portlet.PortletPreferences; import org.osgi.service.component.annotations.Activate; import org.osgi.service.component.annotations.Component; import org.osgi.service.component.annotations.Reference; /** * @author Michael C. Han */ @Component( property = {"javax.portlet.name=" + DDLPortletKeys.DYNAMIC_DATA_LISTS}, service = PortletDataHandler.class ) public class DDLPortletDataHandler extends BasePortletDataHandler { public static final String NAMESPACE = "dynamic_data_lists"; public static final String SCHEMA_VERSION = "1.0.0"; @Override public String getSchemaVersion() { return SCHEMA_VERSION; } @Activate protected void activate() { setDataLocalized(true); setDeletionSystemEventStagedModelTypes( new StagedModelType(DDLRecord.class), new StagedModelType(DDLRecordSet.class)); setExportControls( new PortletDataHandlerBoolean( NAMESPACE, "record-sets", true, false, null, DDLRecordSet.class.getName()), new PortletDataHandlerBoolean( NAMESPACE, "records", true, false, null, DDLRecord.class.getName())); } /** * @deprecated As of 1.1.0 */ @Deprecated protected DynamicQuery createRecordSetDynamicQuery() { return null; } /** * @deprecated As of 1.1.0 */ @Deprecated protected DynamicQuery createRecordVersionDynamicQuery() { return null; } /** * @deprecated As of 1.1.0 */ @Deprecated protected void deleteDDMStructures(Set<Long> ddmStructureIds) throws PortalException { } /** * @deprecated As of 1.1.0 */ @Deprecated protected void deleteRecordSets(PortletDataContext portletDataContext) throws PortalException { _ddlRecordSetStagedModelRepository.deleteStagedModels( portletDataContext); } @Override protected PortletPreferences doDeleteData( PortletDataContext portletDataContext, String portletId, PortletPreferences portletPreferences) throws Exception { if (portletDataContext.addPrimaryKey( DDLPortletDataHandler.class, "deleteData")) { return portletPreferences; } _ddlRecordSetStagedModelRepository.deleteStagedModels( portletDataContext); return portletPreferences; } @Override protected String doExportData( final PortletDataContext portletDataContext, String portletId, PortletPreferences portletPreferences) throws Exception { portletDataContext.addPortletPermissions(DDLPermission.RESOURCE_NAME); Element rootElement = addExportDataRootElement(portletDataContext); if (portletDataContext.getBooleanParameter(NAMESPACE, "record-sets")) { ActionableDynamicQuery recordSetActionableDynamicQuery = _ddlRecordSetStagedModelRepository. getExportActionableDynamicQuery(portletDataContext); recordSetActionableDynamicQuery.performActions(); } if (portletDataContext.getBooleanParameter(NAMESPACE, "records")) { ActionableDynamicQuery recordActionableDynamicQuery = _ddlRecordStagedModelRepository.getExportActionableDynamicQuery( portletDataContext); recordActionableDynamicQuery.performActions(); } return getExportDataRootElementString(rootElement); } @Override protected PortletPreferences doImportData( PortletDataContext portletDataContext, String portletId, PortletPreferences portletPreferences, String data) throws Exception { portletDataContext.importPortletPermissions( DDLPermission.RESOURCE_NAME); if (portletDataContext.getBooleanParameter(NAMESPACE, "record-sets")) { Element recordSetsElement = portletDataContext.getImportDataGroupElement( DDLRecordSet.class); List<Element> recordSetElements = recordSetsElement.elements(); for (Element recordSetElement : recordSetElements) { StagedModelDataHandlerUtil.importStagedModel( portletDataContext, recordSetElement); } Element ddmStructuresElement = portletDataContext.getImportDataGroupElement( DDMStructure.class); List<Element> ddmStructureElements = ddmStructuresElement.elements(); for (Element ddmStructureElement : ddmStructureElements) { StagedModelDataHandlerUtil.importStagedModel( portletDataContext, ddmStructureElement); } Element ddmTemplatesElement = portletDataContext.getImportDataGroupElement(DDMTemplate.class); List<Element> ddmTemplateElements = ddmTemplatesElement.elements(); for (Element ddmTemplateElement : ddmTemplateElements) { StagedModelDataHandlerUtil.importStagedModel( portletDataContext, ddmTemplateElement); } } if (portletDataContext.getBooleanParameter(NAMESPACE, "records")) { Element recordsElement = portletDataContext.getImportDataGroupElement(DDLRecord.class); List<Element> recordElements = recordsElement.elements(); for (Element recordElement : recordElements) { StagedModelDataHandlerUtil.importStagedModel( portletDataContext, recordElement); } } return portletPreferences; } @Override protected void doPrepareManifestSummary( PortletDataContext portletDataContext, PortletPreferences portletPreferences) throws Exception { ActionableDynamicQuery recordSetActionableDynamicQuery = _ddlRecordSetStagedModelRepository.getExportActionableDynamicQuery( portletDataContext); recordSetActionableDynamicQuery.performCount(); ActionableDynamicQuery recordActionableDynamicQuery = _ddlRecordStagedModelRepository.getExportActionableDynamicQuery( portletDataContext); recordActionableDynamicQuery.performCount(); } /** * @deprecated As of 1.1.0 */ @Deprecated protected ActionableDynamicQuery getRecordActionableDynamicQuery( final PortletDataContext portletDataContext) { return _ddlRecordStagedModelRepository.getExportActionableDynamicQuery( portletDataContext); } /** * @deprecated As of 1.1.0 */ @Deprecated protected ActionableDynamicQuery getRecordSetActionableDynamicQuery( final PortletDataContext portletDataContext) { return _ddlRecordSetStagedModelRepository. getExportActionableDynamicQuery(portletDataContext); } /** * @deprecated As of 1.1.0 */ @Deprecated protected void setDDLRecordLocalService( DDLRecordLocalService ddlRecordLocalService) { } /** * @deprecated As of 1.1.0 */ @Deprecated protected void setDDLRecordSetLocalService( DDLRecordSetLocalService ddlRecordSetLocalService) { } @Reference( target = "(model.class.name=com.liferay.dynamic.data.lists.model.DDLRecordSet)", unbind = "-" ) protected void setDDLRecordSetStagedModelRepository( StagedModelRepository<DDLRecordSet> ddlRecordSetStagedModelRepository) { _ddlRecordSetStagedModelRepository = ddlRecordSetStagedModelRepository; } @Reference( target = "(model.class.name=com.liferay.dynamic.data.lists.model.DDLRecord)", unbind = "-" ) protected void setDDLRecordStagedModelRepository( StagedModelRepository<DDLRecord> ddlRecordStagedModelRepository) { _ddlRecordStagedModelRepository = ddlRecordStagedModelRepository; } /** * @deprecated As of 1.1.0 */ @Deprecated protected void setDDMStructureLocalService( DDMStructureLocalService ddmStructureLocalService) { } @Reference(target = ModuleServiceLifecycle.PORTAL_INITIALIZED, unbind = "-") protected void setModuleServiceLifecycle( ModuleServiceLifecycle moduleServiceLifecycle) { } private StagedModelRepository<DDLRecordSet> _ddlRecordSetStagedModelRepository; private StagedModelRepository<DDLRecord> _ddlRecordStagedModelRepository; }