001    /**
002     * Copyright (c) 2000-2013 Liferay, Inc. All rights reserved.
003     *
004     * This library is free software; you can redistribute it and/or modify it under
005     * the terms of the GNU Lesser General Public License as published by the Free
006     * Software Foundation; either version 2.1 of the License, or (at your option)
007     * any later version.
008     *
009     * This library is distributed in the hope that it will be useful, but WITHOUT
010     * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
011     * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
012     * details.
013     */
014    
015    package com.liferay.portlet.portletdisplaytemplate.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.StagedModelDataHandlerUtil;
021    import com.liferay.portal.kernel.template.TemplateHandlerRegistryUtil;
022    import com.liferay.portal.kernel.xml.Element;
023    import com.liferay.portlet.dynamicdatamapping.model.DDMTemplate;
024    import com.liferay.portlet.dynamicdatamapping.service.DDMTemplateLocalServiceUtil;
025    
026    import java.util.List;
027    
028    import javax.portlet.PortletPreferences;
029    
030    /**
031     * @author Juan Fernández
032     */
033    public class PortletDisplayTemplatePortletDataHandler
034            extends BasePortletDataHandler {
035    
036            public static final String NAMESPACE = "portlet_display_templates";
037    
038            public PortletDisplayTemplatePortletDataHandler() {
039                    setAlwaysExportable(true);
040                    setExportControls(
041                            new PortletDataHandlerBoolean(
042                                    NAMESPACE, "application-display-templates"));
043            }
044    
045            @Override
046            protected String doExportData(
047                            PortletDataContext portletDataContext, String portletId,
048                            PortletPreferences portletPreferences)
049                    throws Exception {
050    
051                    Element rootElement = addExportDataRootElement(portletDataContext);
052    
053                    long[] classNameIds = TemplateHandlerRegistryUtil.getClassNameIds();
054    
055                    for (long classNameId : classNameIds) {
056                            List<DDMTemplate> ddmTemplates =
057                                    DDMTemplateLocalServiceUtil.getTemplates(
058                                            portletDataContext.getScopeGroupId(), classNameId);
059    
060                            for (DDMTemplate ddmTemplate : ddmTemplates) {
061                                    StagedModelDataHandlerUtil.exportStagedModel(
062                                            portletDataContext, ddmTemplate);
063                            }
064                    }
065    
066                    return getExportDataRootElementString(rootElement);
067            }
068    
069            @Override
070            protected PortletPreferences doImportData(
071                            PortletDataContext portletDataContext, String portletId,
072                            PortletPreferences portletPreferences, String data)
073                    throws Exception {
074    
075                    Element ddmTemplatesElement =
076                            portletDataContext.getImportDataGroupElement(DDMTemplate.class);
077    
078                    List<Element> ddmTemplateElements = ddmTemplatesElement.elements();
079    
080                    for (Element ddmTemplateElement : ddmTemplateElements) {
081                            StagedModelDataHandlerUtil.importStagedModel(
082                                    portletDataContext, ddmTemplateElement);
083                    }
084    
085                    return null;
086            }
087    
088    }