com.liferay.polls.internal.exportimport.data.handler.PollsPortletDataHandler.java Source code

Java tutorial

Introduction

Here is the source code for com.liferay.polls.internal.exportimport.data.handler.PollsPortletDataHandler.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.polls.internal.exportimport.data.handler;

import com.liferay.exportimport.kernel.lar.BasePortletDataHandler;
import com.liferay.exportimport.kernel.lar.PortletDataContext;
import com.liferay.exportimport.kernel.lar.PortletDataHandler;
import com.liferay.exportimport.kernel.lar.PortletDataHandlerBoolean;
import com.liferay.exportimport.kernel.lar.PortletDataHandlerControl;
import com.liferay.exportimport.kernel.lar.StagedModelDataHandlerUtil;
import com.liferay.exportimport.kernel.lar.StagedModelType;
import com.liferay.polls.constants.PollsPortletKeys;
import com.liferay.polls.model.PollsChoice;
import com.liferay.polls.model.PollsQuestion;
import com.liferay.polls.model.PollsVote;
import com.liferay.polls.service.PollsChoiceLocalService;
import com.liferay.polls.service.PollsQuestionLocalService;
import com.liferay.polls.service.PollsVoteLocalService;
import com.liferay.polls.service.permission.PollsResourcePermissionChecker;
import com.liferay.portal.kernel.dao.orm.ActionableDynamicQuery;
import com.liferay.portal.kernel.module.framework.ModuleServiceLifecycle;
import com.liferay.portal.kernel.xml.Element;

import java.util.List;

import javax.portlet.PortletPreferences;

import org.osgi.service.component.annotations.Activate;
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Reference;

/**
 * @author Bruno Farache
 * @author Marcellus Tavares
 * @author Mate Thurzo
 */
@Component(immediate = true, property = {
        "javax.portlet.name=" + PollsPortletKeys.POLLS }, service = PortletDataHandler.class)
public class PollsPortletDataHandler extends BasePortletDataHandler {

    public static final String NAMESPACE = "polls";

    public static final String SCHEMA_VERSION = "1.0.0";

    @Override
    public String getSchemaVersion() {
        return SCHEMA_VERSION;
    }

    @Activate
    protected void activate() {
        setDataLocalized(true);
        setDeletionSystemEventStagedModelTypes(new StagedModelType(PollsQuestion.class));
        setExportControls(new PortletDataHandlerBoolean(NAMESPACE, "questions", true, false,
                new PortletDataHandlerControl[] { new PortletDataHandlerBoolean(NAMESPACE, "votes", true, false,
                        null, PollsVote.class.getName()) },
                PollsQuestion.class.getName()));
        setImportControls(getExportControls());
    }

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

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

            return portletPreferences;
        }

        _pollsQuestionLocalService.deleteQuestions(portletDataContext.getScopeGroupId());

        return portletPreferences;
    }

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

        portletDataContext.addPortletPermissions(PollsResourcePermissionChecker.RESOURCE_NAME);

        Element rootElement = addExportDataRootElement(portletDataContext);

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

        if (portletDataContext.getBooleanParameter(PollsPortletDataHandler.NAMESPACE, "questions")) {

            ActionableDynamicQuery questionActionableDynamicQuery = _pollsQuestionLocalService
                    .getExportActionableDynamicQuery(portletDataContext);

            questionActionableDynamicQuery.performActions();

            ActionableDynamicQuery choiceActionableDynamicQuery = _pollsChoiceLocalService
                    .getExportActionableDynamicQuery(portletDataContext);

            choiceActionableDynamicQuery.performActions();

            if (portletDataContext.getBooleanParameter(PollsPortletDataHandler.NAMESPACE, "votes")) {

                ActionableDynamicQuery voteActionableDynamicQuery = _pollsVoteLocalService
                        .getExportActionableDynamicQuery(portletDataContext);

                voteActionableDynamicQuery.performActions();
            }
        }

        return getExportDataRootElementString(rootElement);
    }

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

        portletDataContext.importPortletPermissions(PollsResourcePermissionChecker.RESOURCE_NAME);

        Element questionsElement = portletDataContext.getImportDataGroupElement(PollsQuestion.class);

        if (portletDataContext.getBooleanParameter(PollsPortletDataHandler.NAMESPACE, "questions")) {

            List<Element> questionElements = questionsElement.elements();

            for (Element questionElement : questionElements) {
                StagedModelDataHandlerUtil.importStagedModel(portletDataContext, questionElement);
            }

            Element choicesElement = portletDataContext.getImportDataGroupElement(PollsChoice.class);

            List<Element> choiceElements = choicesElement.elements();

            for (Element choiceElement : choiceElements) {
                StagedModelDataHandlerUtil.importStagedModel(portletDataContext, choiceElement);
            }
        }

        if (portletDataContext.getBooleanParameter(NAMESPACE, "votes")) {
            Element votesElement = portletDataContext.getImportDataGroupElement(PollsVote.class);

            List<Element> voteElements = votesElement.elements();

            for (Element voteElement : voteElements) {
                StagedModelDataHandlerUtil.importStagedModel(portletDataContext, voteElement);
            }
        }

        return null;
    }

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

        ActionableDynamicQuery choiceActionableDynamicQuery = _pollsChoiceLocalService
                .getExportActionableDynamicQuery(portletDataContext);

        choiceActionableDynamicQuery.performCount();

        ActionableDynamicQuery questionActionableDynamicQuery = _pollsQuestionLocalService
                .getExportActionableDynamicQuery(portletDataContext);

        questionActionableDynamicQuery.performCount();

        ActionableDynamicQuery voteActionableDynamicQuery = _pollsVoteLocalService
                .getExportActionableDynamicQuery(portletDataContext);

        voteActionableDynamicQuery.performCount();
    }

    @Reference(target = ModuleServiceLifecycle.PORTAL_INITIALIZED, unbind = "-")
    protected void setModuleServiceLifecycle(ModuleServiceLifecycle moduleServiceLifecycle) {
    }

    @Reference(unbind = "-")
    protected void setPollsChoiceLocalService(PollsChoiceLocalService pollsChoiceLocalService) {

        _pollsChoiceLocalService = pollsChoiceLocalService;
    }

    @Reference(unbind = "-")
    protected void setPollsQuestionLocalService(PollsQuestionLocalService pollsQuestionLocalService) {

        _pollsQuestionLocalService = pollsQuestionLocalService;
    }

    @Reference(unbind = "-")
    protected void setPollsVoteLocalService(PollsVoteLocalService pollsVoteLocalService) {

        _pollsVoteLocalService = pollsVoteLocalService;
    }

    private PollsChoiceLocalService _pollsChoiceLocalService;
    private PollsQuestionLocalService _pollsQuestionLocalService;
    private PollsVoteLocalService _pollsVoteLocalService;

}