com.liferay.knowledgebase.admin.lar.AdminPortletDataHandler.java Source code

Java tutorial

Introduction

Here is the source code for com.liferay.knowledgebase.admin.lar.AdminPortletDataHandler.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.knowledgebase.admin.lar;

import com.liferay.knowledgebase.model.KBArticle;
import com.liferay.knowledgebase.model.KBComment;
import com.liferay.knowledgebase.model.KBTemplate;
import com.liferay.knowledgebase.service.KBArticleLocalServiceUtil;
import com.liferay.knowledgebase.service.KBCommentLocalServiceUtil;
import com.liferay.knowledgebase.service.KBTemplateLocalServiceUtil;
import com.liferay.knowledgebase.util.comparator.KBArticleVersionComparator;
import com.liferay.portal.kernel.dao.orm.ActionableDynamicQuery;
import com.liferay.portal.kernel.dao.orm.DynamicQuery;
import com.liferay.portal.kernel.dao.orm.ExportActionableDynamicQuery;
import com.liferay.portal.kernel.dao.orm.OrderFactoryUtil;
import com.liferay.portal.kernel.lar.BasePortletDataHandler;
import com.liferay.portal.kernel.lar.DataLevel;
import com.liferay.portal.kernel.lar.PortletDataContext;
import com.liferay.portal.kernel.lar.PortletDataHandlerBoolean;
import com.liferay.portal.kernel.lar.StagedModelDataHandlerUtil;
import com.liferay.portal.kernel.lar.StagedModelType;
import com.liferay.portal.kernel.xml.Element;
import com.liferay.portal.util.PortalUtil;

import java.util.List;

import javax.portlet.PortletPreferences;

/**
 * @author Peter Shin
 * @author Brian Wing Shun Chan
 */
public class AdminPortletDataHandler extends BasePortletDataHandler {

    public static final String NAMESPACE = "knowledge_base";

    public AdminPortletDataHandler() {
        setDataLevel(DataLevel.SITE);
        setDeletionSystemEventStagedModelTypes(new StagedModelType(KBArticle.class),
                new StagedModelType(KBComment.class), new StagedModelType(KBTemplate.class));
        setExportControls(
                new PortletDataHandlerBoolean(NAMESPACE, "kb-articles", true, true, null,
                        KBArticle.class.getName()),
                new PortletDataHandlerBoolean(NAMESPACE, "kb-templates", true, true, null,
                        KBTemplate.class.getName()),
                new PortletDataHandlerBoolean(NAMESPACE, "kb-comments", true, true, null,
                        KBComment.class.getName()));
    }

    @Override
    protected PortletPreferences doDeleteData(PortletDataContext portletDataContext, String portletId,
            PortletPreferences portletPreferences) throws Exception {

        if (portletDataContext.addPrimaryKey(AdminPortletDataHandler.class, "deleteData")) {

            return portletPreferences;
        }

        KBArticleLocalServiceUtil.deleteGroupKBArticles(portletDataContext.getScopeGroupId());

        KBTemplateLocalServiceUtil.deleteGroupKBTemplates(portletDataContext.getScopeGroupId());

        return portletPreferences;
    }

    @Override
    protected String doExportData(PortletDataContext portletDataContext, String portletId,
            PortletPreferences portletPreferences) throws Exception {

        portletDataContext.addPortletPermissions(RESOURCE_NAME);

        Element rootElement = addExportDataRootElement(portletDataContext);

        rootElement.addAttribute("group-id", String.valueOf(portletDataContext.getScopeGroupId()));

        ActionableDynamicQuery kbArticleActionableDynamicQuery = getKBArticleActionableDynamicQuery(
                portletDataContext);

        kbArticleActionableDynamicQuery.performActions();

        ActionableDynamicQuery kbTemplateActionableDynamicQuery = KBTemplateLocalServiceUtil
                .getExportActionableDynamicQuery(portletDataContext);

        kbTemplateActionableDynamicQuery.performActions();

        ActionableDynamicQuery kbCommentActionableDynamicQuery = getKBCommentActionableDynamicQuery(
                portletDataContext);

        kbCommentActionableDynamicQuery.performActions();

        return getExportDataRootElementString(rootElement);
    }

    @Override
    protected PortletPreferences doImportData(PortletDataContext portletDataContext, String portletId,
            PortletPreferences portletPreferences, String data) throws Exception {

        portletDataContext.importPortletPermissions(RESOURCE_NAME);

        Element kbArticlesElement = portletDataContext.getImportDataGroupElement(KBArticle.class);

        List<Element> kbArticleElements = kbArticlesElement.elements();

        for (Element kbArticleElement : kbArticleElements) {
            StagedModelDataHandlerUtil.importStagedModel(portletDataContext, kbArticleElement);
        }

        Element kbTemplatesElement = portletDataContext.getImportDataGroupElement(KBTemplate.class);

        List<Element> kbTemplateElements = kbTemplatesElement.elements();

        for (Element kbTemplateElement : kbTemplateElements) {
            StagedModelDataHandlerUtil.importStagedModel(portletDataContext, kbTemplateElement);
        }

        Element kbCommentsElement = portletDataContext.getImportDataGroupElement(KBComment.class);

        List<Element> kbCommentElements = kbCommentsElement.elements();

        for (Element kbCommentElement : kbCommentElements) {
            StagedModelDataHandlerUtil.importStagedModel(portletDataContext, kbCommentElement);
        }

        return null;
    }

    @Override
    protected void doPrepareManifestSummary(PortletDataContext portletDataContext,
            PortletPreferences portletPreferences) throws Exception {

        ActionableDynamicQuery kbArticleActionableDynamicQuery = KBArticleLocalServiceUtil
                .getExportActionableDynamicQuery(portletDataContext);

        kbArticleActionableDynamicQuery.performCount();

        ActionableDynamicQuery kbTemplateActionableDynamicQuery = KBTemplateLocalServiceUtil
                .getExportActionableDynamicQuery(portletDataContext);

        kbTemplateActionableDynamicQuery.performCount();

        ActionableDynamicQuery kbCommentActionableDynamicQuery = getKBCommentActionableDynamicQuery(
                portletDataContext);

        kbCommentActionableDynamicQuery.performCount();
    }

    protected ActionableDynamicQuery getKBArticleActionableDynamicQuery(final PortletDataContext portletDataContext)
            throws Exception {

        ExportActionableDynamicQuery exportActionableDynamicQuery = KBArticleLocalServiceUtil
                .getExportActionableDynamicQuery(portletDataContext);

        final ActionableDynamicQuery.AddCriteriaMethod addCriteriaMethod = exportActionableDynamicQuery
                .getAddCriteriaMethod();

        exportActionableDynamicQuery.setAddCriteriaMethod(new ActionableDynamicQuery.AddCriteriaMethod() {

            @Override
            public void addCriteria(DynamicQuery dynamicQuery) {
                addCriteriaMethod.addCriteria(dynamicQuery);

                OrderFactoryUtil.addOrderByComparator(dynamicQuery, new KBArticleVersionComparator(true));
            }

        });

        return exportActionableDynamicQuery;
    }

    protected ActionableDynamicQuery getKBCommentActionableDynamicQuery(PortletDataContext portletDataContext)
            throws Exception {

        ExportActionableDynamicQuery exportActionableDynamicQuery = KBCommentLocalServiceUtil
                .getExportActionableDynamicQuery(portletDataContext);

        exportActionableDynamicQuery.setStagedModelType(new StagedModelType(
                PortalUtil.getClassNameId(KBComment.class), StagedModelType.REFERRER_CLASS_NAME_ID_ALL));

        return exportActionableDynamicQuery;
    }

    protected static final String RESOURCE_NAME = "com.liferay.knowledgebase.admin";

}