/**
* 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();
}