com.liferay.dynamic.data.mapping.service.test.BaseDDMServiceTestCase.java Source code

Java tutorial

Introduction

Here is the source code for com.liferay.dynamic.data.mapping.service.test.BaseDDMServiceTestCase.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.dynamic.data.mapping.service.test;

import com.liferay.dynamic.data.mapping.io.DDMFormXSDDeserializer;
import com.liferay.dynamic.data.mapping.model.DDMForm;
import com.liferay.dynamic.data.mapping.model.DDMFormLayout;
import com.liferay.dynamic.data.mapping.model.DDMStructure;
import com.liferay.dynamic.data.mapping.model.DDMStructureConstants;
import com.liferay.dynamic.data.mapping.model.DDMTemplate;
import com.liferay.dynamic.data.mapping.model.DDMTemplateConstants;
import com.liferay.dynamic.data.mapping.service.DDMTemplateLocalServiceUtil;
import com.liferay.dynamic.data.mapping.storage.StorageType;
import com.liferay.dynamic.data.mapping.test.util.DDMStructureLayoutTestHelper;
import com.liferay.dynamic.data.mapping.test.util.DDMStructureTestHelper;
import com.liferay.dynamic.data.mapping.util.DDMUtil;
import com.liferay.dynamic.data.mapping.util.DDMXML;
import com.liferay.petra.string.StringPool;
import com.liferay.portal.kernel.model.Group;
import com.liferay.portal.kernel.service.ServiceContext;
import com.liferay.portal.kernel.template.TemplateConstants;
import com.liferay.portal.kernel.test.rule.DeleteAfterTestRun;
import com.liferay.portal.kernel.test.util.GroupTestUtil;
import com.liferay.portal.kernel.test.util.ServiceContextTestUtil;
import com.liferay.portal.kernel.test.util.TestPropsValues;
import com.liferay.portal.kernel.util.DateFormatFactoryUtil;
import com.liferay.portal.kernel.util.LocaleUtil;
import com.liferay.portal.kernel.util.PortalUtil;
import com.liferay.portal.kernel.util.StringUtil;
import com.liferay.portal.kernel.workflow.WorkflowConstants;
import com.liferay.registry.Registry;
import com.liferay.registry.RegistryUtil;

import java.io.Serializable;

import java.text.DateFormat;

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

import org.junit.Before;

/**
 * @author Eduardo Garcia
 * @author Rafael Praxedes
 */
public abstract class BaseDDMServiceTestCase {

    @Before
    public void setUp() throws Exception {
        setUpDDMFormXSDDeserializer();
        setUpDDMXML();

        group = GroupTestUtil.addGroup();

        ddmStructureTestHelper = new DDMStructureTestHelper(PortalUtil.getClassNameId(DDL_RECORD_SET_CLASS_NAME),
                group);
        ddmStructureLayoutTestHelper = new DDMStructureLayoutTestHelper(group);
    }

    protected DDMTemplate addDisplayTemplate(long classNameId, long classPK, long resourceClassNameId, String name,
            String description, int status) throws Exception {

        String language = TemplateConstants.LANG_TYPE_VM;

        return addTemplate(classNameId, classPK, resourceClassNameId, StringPool.BLANK, name, description,
                DDMTemplateConstants.TEMPLATE_TYPE_DISPLAY, StringPool.BLANK, language,
                getTestTemplateScript(language), status);
    }

    protected DDMTemplate addDisplayTemplate(long classNameId, long classPK, String name, int status)
            throws Exception {

        String language = TemplateConstants.LANG_TYPE_VM;

        return addTemplate(classNameId, classPK, name, DDMTemplateConstants.TEMPLATE_TYPE_DISPLAY, StringPool.BLANK,
                language, getTestTemplateScript(language), status);
    }

    protected DDMTemplate addDisplayTemplate(long classPK, String name, int status) throws Exception {

        return addDisplayTemplate(PortalUtil.getClassNameId(DDMStructure.class), classPK, name, status);
    }

    protected DDMTemplate addFormTemplate(long classPK, String name, int status) throws Exception {

        return addFormTemplate(classPK, name, getTestTemplateScript("xsd"), status);
    }

    protected DDMTemplate addFormTemplate(long classPK, String name, String definition, int status)
            throws Exception {

        return addTemplate(PortalUtil.getClassNameId(DDMStructure.class), classPK, name,
                DDMTemplateConstants.TEMPLATE_TYPE_FORM, DDMTemplateConstants.TEMPLATE_MODE_CREATE, "xsd",
                definition, status);
    }

    protected DDMStructure addStructure(long parentStructureId, long classNameId, String structureKey, String name,
            String definition, String storageType, int type) throws Exception {

        return addStructure(parentStructureId, classNameId, structureKey, name, StringPool.BLANK, definition,
                storageType, type);
    }

    protected DDMStructure addStructure(long parentStructureId, long classNameId, String structureKey, String name,
            String description, String definition, String storageType, int type) throws Exception {

        return addStructure(parentStructureId, classNameId, structureKey, name, description, definition,
                storageType, type, WorkflowConstants.STATUS_APPROVED);
    }

    protected DDMStructure addStructure(long parentStructureId, long classNameId, String structureKey, String name,
            String description, String definition, String storageType, int type, int status) throws Exception {

        DDMForm ddmForm = toDDMForm(definition);

        DDMFormLayout ddmFormLayout = DDMUtil.getDefaultDDMFormLayout(ddmForm);

        return ddmStructureTestHelper.addStructure(parentStructureId, classNameId, structureKey, name, description,
                ddmForm, ddmFormLayout, storageType, type, status);
    }

    protected DDMStructure addStructure(long classNameId, String name) throws Exception {

        return addStructure(classNameId, name, null);
    }

    protected DDMStructure addStructure(long classNameId, String name, String description) throws Exception {

        return addStructure(0, classNameId, null, name, description, read("test-structure.xsd"),
                StorageType.JSON.getValue(), DDMStructureConstants.TYPE_DEFAULT);
    }

    protected DDMStructure addStructure(long classNameId, String structureKey, String name, String definition,
            String storageType, int type) throws Exception {

        DDMForm ddmForm = toDDMForm(definition);

        return ddmStructureTestHelper.addStructure(classNameId, structureKey, name, ddmForm, storageType, type);
    }

    protected DDMTemplate addTemplate(long classNameId, long classPK, long resourceClassNameId, String templateKey,
            String name, String description, String type, String mode, String language, String script, int status)
            throws Exception {

        ServiceContext serviceContext = ServiceContextTestUtil.getServiceContext(group.getGroupId());

        serviceContext.setAttribute("status", status);

        return DDMTemplateLocalServiceUtil.addTemplate(TestPropsValues.getUserId(), group.getGroupId(), classNameId,
                classPK, resourceClassNameId, templateKey, getDefaultLocaleMap(name),
                getDefaultLocaleMap(description), type, mode, language, script, false, false, null, null,
                serviceContext);
    }

    protected DDMTemplate addTemplate(long classNameId, long classPK, String name, String type, String mode,
            String language, String script, int status) throws Exception {

        return addTemplate(classNameId, classPK, null, name, type, mode, language, script, status);
    }

    protected DDMTemplate addTemplate(long classNameId, long classPK, String templateKey, String name, String type,
            String mode, String language, String script, int status) throws Exception {

        return addTemplate(classNameId, classPK, PortalUtil.getClassNameId(DDL_RECORD_SET_CLASS_NAME), templateKey,
                name, StringPool.BLANK, type, mode, language, script, status);
    }

    protected String getBasePath() {
        return "com/liferay/dynamic/data/mapping/dependencies/";
    }

    protected Serializable getDateFieldValue(int month, int day, int year, Locale locale) {

        Date dateValue = PortalUtil.getDate(month, day, year);

        DateFormat dateFormat = DateFormatFactoryUtil.getSimpleDateFormat("yyyy-MM-dd", locale);

        return dateFormat.format(dateValue);
    }

    protected Map<Locale, String> getDefaultLocaleMap(String value) {
        Map<Locale, String> map = new HashMap<>();

        map.put(LocaleUtil.getSiteDefault(), value);

        return map;
    }

    protected String getTestTemplateScript(String language) throws Exception {
        String text = StringPool.BLANK;

        if (language.equals(TemplateConstants.LANG_TYPE_FTL)) {
            text = "${variable}";
        } else if (language.equals(TemplateConstants.LANG_TYPE_VM)) {
            text = "#set ($preferences = $renderRequest.getPreferences())";
        } else if (language.equals("xsd")) {
            text = read("test-template.xsd");
        }

        return text;
    }

    protected String read(String fileName) throws Exception {
        Class<?> clazz = getClass();

        return StringUtil.read(clazz.getClassLoader(), getBasePath() + fileName);
    }

    protected void setUpDDMFormXSDDeserializer() {
        Registry registry = RegistryUtil.getRegistry();

        _ddmFormXSDDeserializer = registry.getService(DDMFormXSDDeserializer.class);
    }

    protected void setUpDDMXML() throws Exception {
        Registry registry = RegistryUtil.getRegistry();

        ddmXML = registry.getService(DDMXML.class);
    }

    protected DDMForm toDDMForm(String definition) throws Exception {
        ddmXML.validateXML(definition);

        return _ddmFormXSDDeserializer.deserialize(definition);
    }

    protected static final String DDL_RECORD_CLASS_NAME = "com.liferay.dynamic.data.lists.model.DDLRecord";

    protected static final String DDL_RECORD_SET_CLASS_NAME = "com.liferay.dynamic.data.lists.model.DDLRecordSet";

    protected DDMStructureLayoutTestHelper ddmStructureLayoutTestHelper;
    protected DDMStructureTestHelper ddmStructureTestHelper;
    protected DDMXML ddmXML;

    @DeleteAfterTestRun
    protected Group group;

    private DDMFormXSDDeserializer _ddmFormXSDDeserializer;

}