Example usage for com.liferay.portal.kernel.model LayoutTypePortlet getLayoutTemplate

List of usage examples for com.liferay.portal.kernel.model LayoutTypePortlet getLayoutTemplate

Introduction

In this page you can find the example usage for com.liferay.portal.kernel.model LayoutTypePortlet getLayoutTemplate.

Prototype

public LayoutTemplate getLayoutTemplate();

Source Link

Usage

From source file:com.liferay.layout.admin.web.internal.exportimport.data.handler.LayoutStagedModelDataHandler.java

License:Open Source License

protected void mergePortlets(Layout layout, String newTypeSettings, String portletsMergeMode) {

    try {/*from  w  ww .j a  v  a 2 s .c om*/
        UnicodeProperties previousTypeSettingsProperties = layout.getTypeSettingsProperties();

        LayoutTypePortlet previousLayoutType = (LayoutTypePortlet) layout.getLayoutType();

        LayoutTemplate previousLayoutTemplate = previousLayoutType.getLayoutTemplate();

        List<String> previousColumns = previousLayoutTemplate.getColumns();

        UnicodeProperties newTypeSettingsProperties = new UnicodeProperties(true);

        newTypeSettingsProperties.load(newTypeSettings);

        String layoutTemplateId = newTypeSettingsProperties
                .getProperty(LayoutTypePortletConstants.LAYOUT_TEMPLATE_ID);

        previousTypeSettingsProperties.setProperty(LayoutTypePortletConstants.LAYOUT_TEMPLATE_ID,
                layoutTemplateId);

        String nestedColumnIds = newTypeSettingsProperties
                .getProperty(LayoutTypePortletConstants.NESTED_COLUMN_IDS);

        if (Validator.isNotNull(nestedColumnIds)) {
            previousTypeSettingsProperties.setProperty(LayoutTypePortletConstants.NESTED_COLUMN_IDS,
                    nestedColumnIds);

            String[] nestedColumnIdsArray = StringUtil.split(nestedColumnIds);

            for (String nestedColumnId : nestedColumnIdsArray) {
                String nestedColumnValue = newTypeSettingsProperties.getProperty(nestedColumnId);

                previousTypeSettingsProperties.setProperty(nestedColumnId, nestedColumnValue);
            }
        }

        LayoutTemplate newLayoutTemplate = _layoutTemplateLocalService.getLayoutTemplate(layoutTemplateId,
                false, null);

        String[] newPortletIds = new String[0];

        for (String columnId : newLayoutTemplate.getColumns()) {
            String columnValue = newTypeSettingsProperties.getProperty(columnId);

            String[] portletIds = StringUtil.split(columnValue);

            if (!previousColumns.contains(columnId)) {
                newPortletIds = ArrayUtil.append(newPortletIds, portletIds);
            } else {
                String[] previousPortletIds = StringUtil
                        .split(previousTypeSettingsProperties.getProperty(columnId));

                portletIds = appendPortletIds(previousPortletIds, portletIds, portletsMergeMode);

                previousTypeSettingsProperties.setProperty(columnId, StringUtil.merge(portletIds));
            }
        }

        // Add portlets in non-existent column to the first column

        String columnId = previousColumns.get(0);

        String[] portletIds = StringUtil.split(previousTypeSettingsProperties.getProperty(columnId));

        appendPortletIds(portletIds, newPortletIds, portletsMergeMode);

        previousTypeSettingsProperties.setProperty(columnId, StringUtil.merge(portletIds));

        layout.setTypeSettings(previousTypeSettingsProperties.toString());
    } catch (IOException ioe) {
        layout.setTypeSettings(newTypeSettings);
    }
}