com.liferay.wsrp.admin.lar.AdminPortletDataHandlerImpl.java Source code

Java tutorial

Introduction

Here is the source code for com.liferay.wsrp.admin.lar.AdminPortletDataHandlerImpl.java

Source

/**
 * Copyright (c) 2000-2012 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.wsrp.admin.lar;

import com.liferay.portal.kernel.dao.orm.QueryUtil;
import com.liferay.portal.kernel.lar.BasePortletDataHandler;
import com.liferay.portal.kernel.lar.PortletDataContext;
import com.liferay.portal.kernel.lar.PortletDataHandlerBoolean;
import com.liferay.portal.kernel.lar.PortletDataHandlerControl;
import com.liferay.portal.kernel.util.StringBundler;
import com.liferay.portal.kernel.xml.Document;
import com.liferay.portal.kernel.xml.Element;
import com.liferay.portal.kernel.xml.SAXReaderUtil;
import com.liferay.portal.service.ServiceContext;
import com.liferay.wsrp.NoSuchConsumerException;
import com.liferay.wsrp.NoSuchConsumerPortletException;
import com.liferay.wsrp.NoSuchProducerException;
import com.liferay.wsrp.model.WSRPConsumer;
import com.liferay.wsrp.model.WSRPConsumerPortlet;
import com.liferay.wsrp.model.WSRPProducer;
import com.liferay.wsrp.service.WSRPConsumerLocalServiceUtil;
import com.liferay.wsrp.service.WSRPConsumerPortletLocalServiceUtil;
import com.liferay.wsrp.service.WSRPProducerLocalServiceUtil;

import java.util.List;

import javax.portlet.PortletPreferences;

/**
 * @author Michael C. Han
 */
public class AdminPortletDataHandlerImpl extends BasePortletDataHandler {

    @Override
    public PortletDataHandlerControl[] getExportControls() {
        return new PortletDataHandlerControl[] { _wsrpProducers, _wsrpConsumers };
    }

    @Override
    public PortletDataHandlerControl[] getImportControls() {
        return new PortletDataHandlerControl[] { _wsrpProducers, _wsrpConsumers };
    }

    @Override
    public boolean isAlwaysExportable() {
        return _ALWAYS_EXPORTABLE;
    }

    @Override
    public boolean isPublishToLiveByDefault() {
        return _PUBLISH_TO_LIVE_BY_DEFAULT;
    }

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

        long companyId = portletDataContext.getCompanyId();

        if (portletDataContext.getBooleanParameter(_NAMESPACE, "wsrp-producers")) {

            List<WSRPProducer> wsrpProducers = WSRPProducerLocalServiceUtil.getWSRPProducers(companyId,
                    QueryUtil.ALL_POS, QueryUtil.ALL_POS);

            for (WSRPProducer wsrpProducer : wsrpProducers) {
                WSRPProducerLocalServiceUtil.deleteWSRPProducer(wsrpProducer);
            }
        }

        if (portletDataContext.getBooleanParameter(_NAMESPACE, "wsrp-consumers")) {

            List<WSRPConsumer> wsrpConsumers = WSRPConsumerLocalServiceUtil.getWSRPConsumers(companyId,
                    QueryUtil.ALL_POS, QueryUtil.ALL_POS);

            for (WSRPConsumer wsrpConsumer : wsrpConsumers) {
                WSRPConsumerLocalServiceUtil.deleteWSRPConsumer(wsrpConsumer);
            }
        }

        return null;
    }

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

        Document document = SAXReaderUtil.createDocument();

        Element rootElement = document.addElement("wsrp-data");

        if (portletDataContext.getBooleanParameter(_NAMESPACE, "wsrp-producers")) {

            Element wsrpProducersElement = rootElement.addElement("wsrp-producers");

            List<WSRPProducer> wsrpProducers = WSRPProducerLocalServiceUtil
                    .getWSRPProducers(portletDataContext.getCompanyId(), QueryUtil.ALL_POS, QueryUtil.ALL_POS);

            for (WSRPProducer wsrpProducer : wsrpProducers) {
                exportWSRPProducer(portletDataContext, wsrpProducersElement, wsrpProducer);
            }
        }

        if (portletDataContext.getBooleanParameter(_NAMESPACE, "wsrp-consumers")) {

            Element wsrpConsumersElement = rootElement.addElement("wsrp-consumers");

            List<WSRPConsumer> wsrpConsumers = WSRPConsumerLocalServiceUtil
                    .getWSRPConsumers(portletDataContext.getCompanyId(), QueryUtil.ALL_POS, QueryUtil.ALL_POS);

            for (WSRPConsumer wsrpConsumer : wsrpConsumers) {
                exportWSRPConsumer(portletDataContext, wsrpConsumersElement, wsrpConsumer);
            }
        }

        return document.formattedString();
    }

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

        Document document = SAXReaderUtil.read(data);

        Element rootElement = document.getRootElement();

        if (portletDataContext.getBooleanParameter(_NAMESPACE, "wsrp-producers")) {

            Element wsrpProducersElement = rootElement.element("wsrp-producers");

            importWSRPProducers(portletDataContext, wsrpProducersElement);
        }

        if (portletDataContext.getBooleanParameter(_NAMESPACE, "wsrp-consumers")) {

            Element wsrpConsumersElement = rootElement.element("wsrp-consumers");

            importWSRPConsumers(portletDataContext, wsrpConsumersElement);
        }

        return null;
    }

    protected void exportWSRPConsumer(PortletDataContext portletDataContext, Element wsrpConsumersElement,
            WSRPConsumer wsrpConsumer) throws Exception {

        String path = getWSRPConsumerPath(portletDataContext, wsrpConsumer);

        if (!portletDataContext.isPathNotProcessed(path)) {
            return;
        }

        Element wsrpConsumerElement = wsrpConsumersElement.addElement("wsrp-consumer");

        portletDataContext.addClassedModel(wsrpConsumerElement, path, wsrpConsumer, _NAMESPACE);

        if (portletDataContext.getBooleanParameter(_NAMESPACE, "wsrp-consumer-portlets")) {

            List<WSRPConsumerPortlet> wsrpConsumerPortlets = WSRPConsumerPortletLocalServiceUtil
                    .getWSRPConsumerPortlets(wsrpConsumer.getWsrpConsumerId(), QueryUtil.ALL_POS,
                            QueryUtil.ALL_POS);

            Element wsrpConsumerPortletsElement = wsrpConsumerElement.addElement("wsrp-consumer-portlets");

            for (WSRPConsumerPortlet wsrpConsumerPortlet : wsrpConsumerPortlets) {

                exportWSRPConsumerPortlet(portletDataContext, wsrpConsumerPortletsElement, wsrpConsumerPortlet);
            }
        }
    }

    protected void exportWSRPConsumerPortlet(PortletDataContext portletDataContext,
            Element wsrpConsumerPortletsElement, WSRPConsumerPortlet wsrpConsumerPortlet) throws Exception {

        String path = getWSRPConsumerPortletsPath(portletDataContext, wsrpConsumerPortlet);

        if (!portletDataContext.isPathNotProcessed(path)) {
            return;
        }

        Element wsrpConsumerPortletElement = wsrpConsumerPortletsElement.addElement("wsrp-consumer-portlet");

        portletDataContext.addClassedModel(wsrpConsumerPortletElement, path, wsrpConsumerPortlet, _NAMESPACE);
    }

    protected void exportWSRPProducer(PortletDataContext portletDataContext, Element wsrpProducersElement,
            WSRPProducer wsrpProducer) throws Exception {

        String path = getWSRPProducerPath(portletDataContext, wsrpProducer);

        if (!portletDataContext.isPathNotProcessed(path)) {
            return;
        }

        Element wsrpProducerElement = wsrpProducersElement.addElement("wsrp-producer");

        portletDataContext.addClassedModel(wsrpProducerElement, path, wsrpProducer, _NAMESPACE);
    }

    protected String getWSRPConsumerPath(PortletDataContext portletDataContext, WSRPConsumer wsrpConsumer) {

        StringBundler sb = new StringBundler(4);

        sb.append(portletDataContext.getPortletPath(_PORTLET_KEY));
        sb.append("/wsrp-consumers/");
        sb.append(wsrpConsumer.getUuid());
        sb.append(".xml");

        return sb.toString();
    }

    protected String getWSRPConsumerPortletsPath(PortletDataContext portletDataContext,
            WSRPConsumerPortlet wsrpConsumerPortlet) {

        StringBundler sb = new StringBundler(4);

        sb.append(portletDataContext.getPortletPath(_PORTLET_KEY));
        sb.append("/wsrp-consumer-portlets/");
        sb.append(wsrpConsumerPortlet.getWsrpConsumerPortletId());
        sb.append(".xml");

        return sb.toString();
    }

    protected String getWSRPProducerPath(PortletDataContext portletDataContext, WSRPProducer wsrpProducer) {

        StringBundler sb = new StringBundler(4);

        sb.append(portletDataContext.getPortletPath(_PORTLET_KEY));
        sb.append("/wsrp-producers/");
        sb.append(wsrpProducer.getWsrpProducerId());
        sb.append(".xml");

        return sb.toString();
    }

    protected WSRPConsumer importWSRPConsumer(PortletDataContext portletDataContext, Element wsrpConsumerElement,
            WSRPConsumer wsrpConsumer) throws Exception {

        WSRPConsumer importedWSRPConsumer = null;

        try {
            importedWSRPConsumer = WSRPConsumerLocalServiceUtil.getWSRPConsumer(wsrpConsumer.getUuid());

            importedWSRPConsumer.setName(wsrpConsumer.getName());
            importedWSRPConsumer.setUrl(wsrpConsumer.getUrl());
            importedWSRPConsumer.setWsdl(wsrpConsumer.getWsdl());
            importedWSRPConsumer.setForwardCookies(wsrpConsumer.getForwardCookies());

            WSRPConsumerLocalServiceUtil.updateWSRPConsumer(importedWSRPConsumer, false);
        } catch (NoSuchConsumerException nsce) {
            ServiceContext serviceContext = portletDataContext.createServiceContext(wsrpConsumerElement,
                    wsrpConsumer, _NAMESPACE);

            serviceContext.setUuid(wsrpConsumer.getUuid());

            importedWSRPConsumer = WSRPConsumerLocalServiceUtil.addWSRPConsumer(portletDataContext.getCompanyId(),
                    null, wsrpConsumer.getName(), wsrpConsumer.getUrl(), wsrpConsumer.getForwardCookies(), null,
                    serviceContext);
        }

        return importedWSRPConsumer;
    }

    protected void importWSRPConsumerPortlet(PortletDataContext portletDataContext, WSRPConsumer wsrpConsumer,
            Element wsrpConsumerPortletElement, WSRPConsumerPortlet wsrpConsumerPortlet) throws Exception {

        try {
            WSRPConsumerPortlet importedWSRPConsumerPortlet = WSRPConsumerPortletLocalServiceUtil
                    .getWSRPConsumerPortlet(wsrpConsumerPortlet.getUuid());

            importedWSRPConsumerPortlet.setWsrpConsumerId(wsrpConsumer.getWsrpConsumerId());
            importedWSRPConsumerPortlet.setName(wsrpConsumerPortlet.getName());
            importedWSRPConsumerPortlet.setPortletHandle(wsrpConsumerPortlet.getPortletHandle());

            WSRPConsumerPortletLocalServiceUtil.updateWSRPConsumerPortlet(importedWSRPConsumerPortlet, false);
        } catch (NoSuchConsumerPortletException nscpe) {
            ServiceContext serviceContext = portletDataContext.createServiceContext(wsrpConsumerPortletElement,
                    wsrpConsumerPortlet, _NAMESPACE);

            serviceContext.setUuid(wsrpConsumerPortlet.getUuid());

            WSRPConsumerPortletLocalServiceUtil.addWSRPConsumerPortlet(wsrpConsumer.getUuid(),
                    wsrpConsumerPortlet.getName(), wsrpConsumerPortlet.getPortletHandle(), null, serviceContext);
        }
    }

    protected void importWSRPConsumerPortlets(PortletDataContext portletDataContext, WSRPConsumer wsrpConsumer,
            Element wsrpConsumerPortletsElement) throws Exception {

        if (wsrpConsumerPortletsElement == null) {
            return;
        }

        for (Element wsrpConsumerPortletElement : wsrpConsumerPortletsElement.elements("wsrp-consumer-portlet")) {

            String path = wsrpConsumerPortletElement.attributeValue("path");

            if (!portletDataContext.isPathNotProcessed(path)) {
                continue;
            }

            WSRPConsumerPortlet wsrpConsumerPortlet = (WSRPConsumerPortlet) portletDataContext
                    .getZipEntryAsObject(path);

            importWSRPConsumerPortlet(portletDataContext, wsrpConsumer, wsrpConsumerPortletElement,
                    wsrpConsumerPortlet);
        }
    }

    protected void importWSRPConsumers(PortletDataContext portletDataContext, Element wsrpConsumersElement)
            throws Exception {

        if (wsrpConsumersElement == null) {
            return;
        }

        for (Element wsrpConsumerElement : wsrpConsumersElement.elements("wsrp-consumer")) {

            String path = wsrpConsumerElement.attributeValue("path");

            if (!portletDataContext.isPathNotProcessed(path)) {
                continue;
            }

            WSRPConsumer wsrpConsumer = (WSRPConsumer) portletDataContext.getZipEntryAsObject(path);

            WSRPConsumer importedWSRPConsumer = importWSRPConsumer(portletDataContext, wsrpConsumerElement,
                    wsrpConsumer);

            if (portletDataContext.getBooleanParameter(_NAMESPACE, "wsrp-consumer-portlets")) {

                Element wsrpConsumerPortletsElement = wsrpConsumerElement.element("wsrp-consumer-portlets");

                importWSRPConsumerPortlets(portletDataContext, importedWSRPConsumer, wsrpConsumerPortletsElement);
            }
        }
    }

    protected void importWSRPProducer(PortletDataContext portletDataContext, Element wsrpProducerElement,
            WSRPProducer wsrpProducer) throws Exception {

        try {
            WSRPProducer importedWSRPProducer = WSRPProducerLocalServiceUtil
                    .getWSRPProducer(wsrpProducer.getUuid());

            importedWSRPProducer.setName(wsrpProducer.getName());
            importedWSRPProducer.setVersion(wsrpProducer.getVersion());
            importedWSRPProducer.setPortletIds(wsrpProducer.getPortletIds());

            WSRPProducerLocalServiceUtil.updateWSRPProducer(importedWSRPProducer, false);
        } catch (NoSuchProducerException e) {
            ServiceContext serviceContext = portletDataContext.createServiceContext(wsrpProducerElement,
                    wsrpProducer, _NAMESPACE);

            serviceContext.setUuid(wsrpProducer.getUuid());

            WSRPProducerLocalServiceUtil.addWSRPProducer(portletDataContext.getUserId(null), wsrpProducer.getName(),
                    wsrpProducer.getVersion(), wsrpProducer.getPortletIds(), serviceContext);
        }
    }

    protected void importWSRPProducers(PortletDataContext portletDataContext, Element wsrpProducersElement)
            throws Exception {

        if (wsrpProducersElement == null) {
            return;
        }

        for (Element wsrpProducerElement : wsrpProducersElement.elements("wsrp-producer")) {

            String path = wsrpProducerElement.attributeValue("path");

            if (!portletDataContext.isPathNotProcessed(path)) {
                continue;
            }

            WSRPProducer wsrpProducer = (WSRPProducer) portletDataContext.getZipEntryAsObject(path);

            importWSRPProducer(portletDataContext, wsrpProducerElement, wsrpProducer);
        }
    }

    private static final boolean _ALWAYS_EXPORTABLE = true;

    private static final String _NAMESPACE = "wsrp";

    private static final String _PORTLET_KEY = "1_WAR_wsrpportlet";

    private static final boolean _PUBLISH_TO_LIVE_BY_DEFAULT = true;

    private static PortletDataHandlerBoolean _wsrpConsumerPortlets = new PortletDataHandlerBoolean(_NAMESPACE,
            "wsrp-consumer-portlets");

    private static PortletDataHandlerBoolean _wsrpConsumers = new PortletDataHandlerBoolean(_NAMESPACE,
            "wsrp-consumers", true, new PortletDataHandlerControl[] { _wsrpConsumerPortlets });

    private static PortletDataHandlerBoolean _wsrpProducers = new PortletDataHandlerBoolean(_NAMESPACE,
            "wsrp-producers", false);

}