com.liferay.exportimport.lar.ThemeExporter.java Source code

Java tutorial

Introduction

Here is the source code for com.liferay.exportimport.lar.ThemeExporter.java

Source

/**
 * 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.exportimport.lar;

import aQute.bnd.annotation.ProviderType;

import com.liferay.exportimport.kernel.lar.PortletDataContext;
import com.liferay.exportimport.kernel.lar.PortletDataHandlerKeys;
import com.liferay.portal.kernel.log.Log;
import com.liferay.portal.kernel.log.LogFactoryUtil;
import com.liferay.portal.kernel.model.LayoutSet;
import com.liferay.portal.kernel.model.LayoutSetBranch;
import com.liferay.portal.kernel.model.Theme;
import com.liferay.portal.kernel.model.adapter.ModelAdapterUtil;
import com.liferay.portal.kernel.model.adapter.StagedTheme;
import com.liferay.portal.kernel.util.MapUtil;
import com.liferay.portal.kernel.xml.Element;

/**
 * @author Mate Thurzo
 */
@ProviderType
public class ThemeExporter {

    public static ThemeExporter getInstance() {
        return _instance;
    }

    public void exportTheme(PortletDataContext portletDataContext, LayoutSet layoutSet) throws Exception {

        boolean exportThemeSettings = MapUtil.getBoolean(portletDataContext.getParameterMap(),
                PortletDataHandlerKeys.THEME_REFERENCE);

        if (_log.isDebugEnabled()) {
            _log.debug("Export theme settings " + exportThemeSettings);
        }

        if (!exportThemeSettings) {
            return;
        }

        Theme theme = layoutSet.getTheme();

        if (theme == null) {
            if (_log.isWarnEnabled()) {
                _log.warn("Unable to export theme " + layoutSet.getThemeId());
            }

            return;
        }

        StagedTheme stagedTheme = ModelAdapterUtil.adapt(theme, Theme.class, StagedTheme.class);

        if (!portletDataContext.isPerformDirectBinaryImport()) {
            Element layoutSetElement = portletDataContext.getExportDataElement(layoutSet);

            portletDataContext.addReferenceElement(layoutSet, layoutSetElement, stagedTheme,
                    PortletDataContext.REFERENCE_TYPE_DEPENDENCY, true);
        }

        exportThemeSettings(portletDataContext, stagedTheme.getThemeId(), layoutSet.getColorSchemeId(),
                layoutSet.getCss());
    }

    public void exportTheme(PortletDataContext portletDataContext, LayoutSetBranch layoutSetBranch)
            throws Exception {

        boolean exportThemeSettings = MapUtil.getBoolean(portletDataContext.getParameterMap(),
                PortletDataHandlerKeys.THEME_REFERENCE);

        if (_log.isDebugEnabled()) {
            _log.debug("Export theme settings " + exportThemeSettings);
        }

        if (!exportThemeSettings) {
            return;
        }

        StagedTheme stagedTheme = ModelAdapterUtil.adapt(layoutSetBranch.getTheme(), Theme.class,
                StagedTheme.class);

        if (!portletDataContext.isPerformDirectBinaryImport()) {
            Element layoutSetBranchElement = portletDataContext.getExportDataElement(layoutSetBranch);

            portletDataContext.addReferenceElement(layoutSetBranch, layoutSetBranchElement, stagedTheme,
                    PortletDataContext.REFERENCE_TYPE_DEPENDENCY, true);
        }

        exportThemeSettings(portletDataContext, stagedTheme.getThemeId(), layoutSetBranch.getColorSchemeId(),
                layoutSetBranch.getCss());
    }

    protected void exportThemeSettings(PortletDataContext portletDataContext, String themeId, String colorSchemeId,
            String css) throws Exception {

        Element exportDataRootElement = portletDataContext.getExportDataRootElement();

        Element headerElement = exportDataRootElement.element("header");

        headerElement.addAttribute("theme-id", themeId);
        headerElement.addAttribute("color-scheme-id", colorSchemeId);

        Element cssElement = headerElement.addElement("css");

        cssElement.addCDATA(css);
    }

    private ThemeExporter() {
    }

    private static final Log _log = LogFactoryUtil.getLog(ThemeExporter.class);

    private static final ThemeExporter _instance = new ThemeExporter();

}