com.liferay.content.targeting.service.test.util.LayoutTestUtil.java Source code

Java tutorial

Introduction

Here is the source code for com.liferay.content.targeting.service.test.util.LayoutTestUtil.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.content.targeting.service.test.util;

import com.liferay.content.targeting.service.test.service.ServiceTestUtil;
import com.liferay.portal.NoSuchLayoutException;
import com.liferay.portal.kernel.util.FriendlyURLNormalizerUtil;
import com.liferay.portal.kernel.util.LocaleUtil;
import com.liferay.portal.kernel.util.StringPool;
import com.liferay.portal.kernel.util.UnicodeProperties;
import com.liferay.portal.model.CustomizedPages;
import com.liferay.portal.model.Layout;
import com.liferay.portal.model.LayoutConstants;
import com.liferay.portal.model.LayoutPrototype;
import com.liferay.portal.model.LayoutSetPrototype;
import com.liferay.portal.model.LayoutTemplate;
import com.liferay.portal.model.LayoutTypePortlet;
import com.liferay.portal.model.Portlet;
import com.liferay.portal.service.LayoutLocalServiceUtil;
import com.liferay.portal.service.LayoutPrototypeLocalServiceUtil;
import com.liferay.portal.service.LayoutServiceUtil;
import com.liferay.portal.service.LayoutSetPrototypeLocalServiceUtil;
import com.liferay.portal.service.ServiceContext;
import com.liferay.portlet.PortletPreferencesFactoryUtil;

import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;

import javax.portlet.PortletPreferences;

/**
 * @author Manuel de la Pea
 * @author Mate Thurzo
 */
public class LayoutTestUtil {

    public static Layout addLayout(long groupId, boolean privateLayout, Map<Locale, String> nameMap,
            Map<Locale, String> friendlyURLMap) throws Exception {

        ServiceContext serviceContext = ServiceTestUtil.getServiceContext(groupId);

        return LayoutLocalServiceUtil.addLayout(serviceContext.getUserId(), groupId, privateLayout,
                LayoutConstants.DEFAULT_PARENT_LAYOUT_ID, nameMap, nameMap, new HashMap<Locale, String>(),
                new HashMap<Locale, String>(), new HashMap<Locale, String>(), LayoutConstants.TYPE_PORTLET,
                StringPool.BLANK, false, friendlyURLMap, serviceContext);
    }

    public static Layout addLayout(long groupId, String name) throws Exception {
        return addLayout(groupId, name, false);
    }

    public static Layout addLayout(long groupId, String name, boolean privateLayout) throws Exception {

        return addLayout(groupId, name, privateLayout, null, false);
    }

    public static Layout addLayout(long groupId, String name, boolean privateLayout,
            LayoutPrototype layoutPrototype, boolean linkEnabled) throws Exception {

        String friendlyURL = StringPool.SLASH + FriendlyURLNormalizerUtil.normalize(name);

        Layout layout = null;

        try {
            layout = LayoutLocalServiceUtil.getFriendlyURLLayout(groupId, false, friendlyURL);

            return layout;
        } catch (NoSuchLayoutException nsle) {
        }

        String description = "This is a test page.";

        ServiceContext serviceContext = ServiceTestUtil.getServiceContext();

        if (layoutPrototype != null) {
            serviceContext.setAttribute("layoutPrototypeLinkEnabled", linkEnabled);
            serviceContext.setAttribute("layoutPrototypeUuid", layoutPrototype.getUuid());
        }

        return LayoutLocalServiceUtil.addLayout(TestPropsValues.getUserId(), groupId, privateLayout,
                LayoutConstants.DEFAULT_PARENT_LAYOUT_ID, name, null, description, LayoutConstants.TYPE_PORTLET,
                false, friendlyURL, serviceContext);
    }

    public static Layout addLayout(long groupId, String name, long parentLayoutPlid) throws Exception {

        Layout layout = addLayout(groupId, name, false);

        LayoutLocalServiceUtil.updateParentLayoutId(layout.getPlid(), parentLayoutPlid);

        return LayoutLocalServiceUtil.fetchLayout(layout.getPlid());
    }

    public static LayoutPrototype addLayoutPrototype(String name) throws Exception {

        HashMap<Locale, String> nameMap = new HashMap<Locale, String>();

        nameMap.put(LocaleUtil.getDefault(), name);

        return LayoutPrototypeLocalServiceUtil.addLayoutPrototype(TestPropsValues.getUserId(),
                TestPropsValues.getCompanyId(), nameMap, null, true, ServiceTestUtil.getServiceContext());
    }

    public static LayoutSetPrototype addLayoutSetPrototype(String name) throws Exception {

        HashMap<Locale, String> nameMap = new HashMap<Locale, String>();

        nameMap.put(LocaleUtil.getDefault(), name);

        return LayoutSetPrototypeLocalServiceUtil.addLayoutSetPrototype(TestPropsValues.getUserId(),
                TestPropsValues.getCompanyId(), nameMap, null, true, true, ServiceTestUtil.getServiceContext());
    }

    public static String addPortletToLayout(Layout layout, String portletId) throws Exception {

        Map<String, String[]> preferenceMap = null;

        return addPortletToLayout(layout, portletId, preferenceMap);
    }

    public static String addPortletToLayout(Layout layout, String portletId, Map<String, String[]> preferenceMap)
            throws Exception {

        long userId = TestPropsValues.getUserId();

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

        LayoutTemplate layoutTemplate = layoutTypePortlet.getLayoutTemplate();

        List<String> columns = layoutTemplate.getColumns();

        String columnId = columns.get(0);

        return addPortletToLayout(userId, layout, portletId, columnId, preferenceMap);
    }

    public static String addPortletToLayout(long userId, Layout layout, String portletId, String columnId,
            Map<String, String[]> preferenceMap) throws Exception {

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

        String newPortletId = layoutTypePortlet.addPortletId(userId, portletId, columnId, -1);

        LayoutLocalServiceUtil.updateLayout(layout.getGroupId(), layout.isPrivateLayout(), layout.getLayoutId(),
                layout.getTypeSettings());

        if (preferenceMap == null) {
            return newPortletId;
        }

        PortletPreferences portletPreferences = getPortletPreferences(layout, newPortletId);

        for (String key : preferenceMap.keySet()) {
            portletPreferences.setValues(key, preferenceMap.get(key));
        }

        portletPreferences.store();

        return newPortletId;
    }

    public static Layout addTypeArticleLayout(long groupId, String name, String articleId) throws Exception {

        Layout layout = addLayout(groupId, name);

        UnicodeProperties typeSettingsProperties = layout.getTypeSettingsProperties();

        typeSettingsProperties.setProperty("article-id", articleId);

        layout.setType(LayoutConstants.TYPE_ARTICLE);

        LayoutLocalServiceUtil.updateLayout(layout);

        return layout;
    }

    public static Layout addTypeLinkToLayoutLayout(long groupId, String name, long linkedToLayoutId)
            throws Exception {

        Layout layout = addLayout(groupId, name);

        UnicodeProperties typeSettingsProperties = layout.getTypeSettingsProperties();

        typeSettingsProperties.setProperty("linkToLayoutId", String.valueOf(linkedToLayoutId));

        layout.setType(LayoutConstants.TYPE_LINK_TO_LAYOUT);

        LayoutLocalServiceUtil.updateLayout(layout);

        return layout;
    }

    public static String getLayoutTemplateId(Layout layout) {
        LayoutTypePortlet layoutTypePortlet = (LayoutTypePortlet) layout.getLayoutType();

        return layoutTypePortlet.getLayoutTemplateId();
    }

    public static PortletPreferences getPortletPreferences(Layout layout, String portletId) throws Exception {

        return PortletPreferencesFactoryUtil.getPortletSetup(layout, portletId, null);
    }

    public static PortletPreferences getPortletPreferences(long plid, String portletId) throws Exception {

        Layout layout = LayoutLocalServiceUtil.getLayout(plid);

        return getPortletPreferences(layout, portletId);
    }

    public static List<Portlet> getPortlets(Layout layout) throws Exception {
        LayoutTypePortlet layoutTypePortlet = (LayoutTypePortlet) layout.getLayoutType();

        return layoutTypePortlet.getPortlets();
    }

    public static boolean isLayoutColumnCustomizable(Layout layout, String columnId) {

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

        return layoutTypePortlet.isColumnCustomizable(columnId);
    }

    public static Layout updateLayoutColumnCustomizable(Layout layout, String columnId, boolean customizable)
            throws Exception {

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

        layoutTypePortlet.setTypeSettingsProperty(CustomizedPages.namespaceColumnId(columnId),
                String.valueOf(customizable));

        layoutTypePortlet.setUpdatePermission(customizable);

        return LayoutServiceUtil.updateLayout(layout.getGroupId(), layout.isPrivateLayout(), layout.getLayoutId(),
                layout.getTypeSettings());
    }

    public static Layout updateLayoutTemplateId(Layout layout, String layoutTemplateId) throws Exception {

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

        layoutTypePortlet.setLayoutTemplateId(TestPropsValues.getUserId(), layoutTemplateId);

        return LayoutServiceUtil.updateLayout(layout.getGroupId(), layout.isPrivateLayout(), layout.getLayoutId(),
                layout.getTypeSettings());
    }

}