Example usage for com.liferay.portal.kernel.model Portlet getPortletDataHandlerInstance

List of usage examples for com.liferay.portal.kernel.model Portlet getPortletDataHandlerInstance

Introduction

In this page you can find the example usage for com.liferay.portal.kernel.model Portlet getPortletDataHandlerInstance.

Prototype

public com.liferay.exportimport.kernel.lar.PortletDataHandler getPortletDataHandlerInstance();

Source Link

Document

Returns the portlet data handler instance of the portlet.

Usage

From source file:com.liferay.exportimport.controller.PortletExportController.java

License:Open Source License

public void exportPortlet(PortletDataContext portletDataContext, long plid, Element parentElement,
        boolean exportPermissions, boolean exportPortletArchivedSetups, boolean exportPortletData,
        boolean exportPortletSetup, boolean exportPortletUserPreferences) throws Exception {

    long layoutId = LayoutConstants.DEFAULT_PARENT_LAYOUT_ID;

    Layout layout = _layoutLocalService.fetchLayout(plid);

    if (layout != null) {
        layoutId = layout.getLayoutId();
    }//w w  w  .jav a 2s  .c  om

    Portlet portlet = _portletLocalService.getPortletById(portletDataContext.getCompanyId(),
            portletDataContext.getPortletId());

    if ((portlet == null) || portlet.isUndeployedPortlet()) {
        if (_log.isDebugEnabled()) {
            _log.debug("Do not export portlet " + portletDataContext.getPortletId()
                    + " because the portlet is not deployed");
        }

        return;
    }

    if (!portlet.isInstanceable() && !portlet.isPreferencesUniquePerLayout()
            && portletDataContext.hasNotUniquePerLayout(portletDataContext.getPortletId())) {

        return;
    }

    if (BackgroundTaskThreadLocal.hasBackgroundTask()) {
        PortletDataContext clonedPortletDataContext = _portletDataContextFactory
                .clonePortletDataContext(portletDataContext);

        ManifestSummary manifestSummary = clonedPortletDataContext.getManifestSummary();

        manifestSummary.resetCounters();

        PortletDataHandler portletDataHandler = portlet.getPortletDataHandlerInstance();

        portletDataHandler.prepareManifestSummary(clonedPortletDataContext);

        _portletDataHandlerStatusMessageSender.sendStatusMessage("portlet", portletDataContext.getPortletId(),
                manifestSummary);
    }

    Document document = SAXReaderUtil.createDocument();

    Element portletElement = document.addElement("portlet");

    portletElement.addAttribute("portlet-id", portletDataContext.getPortletId());
    portletElement.addAttribute("root-portlet-id", portletDataContext.getRootPortletId());
    portletElement.addAttribute("old-plid", String.valueOf(plid));
    portletElement.addAttribute("scope-group-id", String.valueOf(portletDataContext.getScopeGroupId()));
    portletElement.addAttribute("scope-layout-type", portletDataContext.getScopeType());
    portletElement.addAttribute("scope-layout-uuid", portletDataContext.getScopeLayoutUuid());
    portletElement.addAttribute("private-layout", String.valueOf(portletDataContext.isPrivateLayout()));

    // Data

    if (exportPortletData) {
        javax.portlet.PortletPreferences jxPortletPreferences = null;

        if (ExportImportThreadLocal.isInitialLayoutStagingInProcess()) {
            if (layout != null) {
                Group liveGroup = layout.getGroup();

                Group stagingGroup = liveGroup.getStagingGroup();

                layout.setGroupId(stagingGroup.getGroupId());

                jxPortletPreferences = PortletPreferencesFactoryUtil.getStrictPortletSetup(layout,
                        portletDataContext.getPortletId());

                layout.setGroupId(liveGroup.getGroupId());
            } else {
                Group liveGroup = _groupLocalService.getGroup(portletDataContext.getGroupId());

                Group stagingGroup = liveGroup.getStagingGroup();

                jxPortletPreferences = PortletPreferencesFactoryUtil.getStrictPortletSetup(
                        portletDataContext.getCompanyId(), stagingGroup.getGroupId(),
                        portletDataContext.getPortletId());
            }
        } else {
            if (layout != null) {
                jxPortletPreferences = PortletPreferencesFactoryUtil.getStrictPortletSetup(layout,
                        portletDataContext.getPortletId());
            } else {
                jxPortletPreferences = PortletPreferencesFactoryUtil.getStrictPortletSetup(
                        portletDataContext.getCompanyId(), portletDataContext.getGroupId(),
                        portletDataContext.getPortletId());
            }
        }

        if (!portlet.isPreferencesUniquePerLayout()) {
            StringBundler sb = new StringBundler(5);

            sb.append(portletDataContext.getPortletId());
            sb.append(StringPool.AT);
            sb.append(portletDataContext.getScopeType());
            sb.append(StringPool.AT);
            sb.append(portletDataContext.getScopeLayoutUuid());

            String dataKey = sb.toString();

            if (!portletDataContext.hasNotUniquePerLayout(dataKey)) {
                portletDataContext.putNotUniquePerLayout(dataKey);

                exportPortletData(portletDataContext, portlet, layout, jxPortletPreferences, portletElement);
            }
        } else {
            exportPortletData(portletDataContext, portlet, layout, jxPortletPreferences, portletElement);
        }
    }

    // Portlet preferences

    if (exportPortletSetup) {

        // Company

        exportPortletPreferences(portletDataContext, portletDataContext.getCompanyId(),
                PortletKeys.PREFS_OWNER_TYPE_COMPANY, false, layout, plid, portlet.getRootPortletId(),
                portletElement);

        // Group

        exportPortletPreferences(portletDataContext, portletDataContext.getScopeGroupId(),
                PortletKeys.PREFS_OWNER_TYPE_GROUP, false, layout, PortletKeys.PREFS_PLID_SHARED,
                portlet.getRootPortletId(), portletElement);

        // Group embedded portlets

        exportPortletPreferences(portletDataContext, portletDataContext.getScopeGroupId(),
                PortletKeys.PREFS_OWNER_TYPE_LAYOUT, false, layout, PortletKeys.PREFS_PLID_SHARED,
                portlet.getPortletId(), portletElement);

        // Layout

        exportPortletPreferences(portletDataContext, PortletKeys.PREFS_OWNER_ID_DEFAULT,
                PortletKeys.PREFS_OWNER_TYPE_LAYOUT, false, layout, plid, portletDataContext.getPortletId(),
                portletElement);
    }

    // Portlet user preferences

    if (exportPortletUserPreferences) {
        List<PortletPreferences> portletPreferencesList = _portletPreferencesLocalService.getPortletPreferences(
                PortletKeys.PREFS_OWNER_TYPE_USER, plid, portletDataContext.getPortletId());

        for (PortletPreferences portletPreferences : portletPreferencesList) {

            boolean defaultUser = false;

            if (portletPreferences.getOwnerId() == PortletKeys.PREFS_OWNER_ID_DEFAULT) {

                defaultUser = true;
            }

            exportPortletPreferences(portletDataContext, portletPreferences.getOwnerId(),
                    PortletKeys.PREFS_OWNER_TYPE_USER, defaultUser, layout, plid,
                    portletDataContext.getPortletId(), portletElement);
        }

        try {
            PortletPreferences groupPortletPreferences = _portletPreferencesLocalService.getPortletPreferences(
                    portletDataContext.getScopeGroupId(), PortletKeys.PREFS_OWNER_TYPE_GROUP,
                    PortletKeys.PREFS_PLID_SHARED, portlet.getRootPortletId());

            exportPortletPreference(portletDataContext, portletDataContext.getScopeGroupId(),
                    PortletKeys.PREFS_OWNER_TYPE_GROUP, false, groupPortletPreferences,
                    portlet.getRootPortletId(), PortletKeys.PREFS_PLID_SHARED, portletElement);
        } catch (NoSuchPortletPreferencesException nsppe) {

            // LPS-52675

            if (_log.isDebugEnabled()) {
                _log.debug(nsppe, nsppe);
            }
        }
    }

    // Archived setups

    if (exportPortletArchivedSetups) {
        List<PortletItem> portletItems = _portletItemLocalService.getPortletItems(
                portletDataContext.getGroupId(), portletDataContext.getRootPortletId(),
                PortletPreferences.class.getName());

        for (PortletItem portletItem : portletItems) {
            exportPortletPreferences(portletDataContext, portletItem.getPortletItemId(),
                    PortletKeys.PREFS_OWNER_TYPE_ARCHIVED, false, null, plid, portletItem.getPortletId(),
                    portletElement);
        }
    }

    // Permissions

    if (exportPermissions) {
        _permissionExporter.exportPortletPermissions(portletDataContext, portletDataContext.getPortletId(),
                layout, portletElement);
    }

    // Zip

    StringBundler pathSB = new StringBundler(4);

    pathSB.append(ExportImportPathUtil.getPortletPath(portletDataContext));
    pathSB.append(StringPool.SLASH);
    pathSB.append(plid);
    pathSB.append("/portlet.xml");

    String path = pathSB.toString();

    Element element = parentElement.addElement("portlet");

    element.addAttribute("portlet-id", portletDataContext.getPortletId());
    element.addAttribute("layout-id", String.valueOf(layoutId));
    element.addAttribute("path", path);
    element.addAttribute("portlet-data", String.valueOf(exportPortletData));

    PortletDataHandler portletDataHandler = portlet.getPortletDataHandlerInstance();

    element.addAttribute("schema-version", portletDataHandler.getSchemaVersion());

    StringBundler configurationOptionsSB = new StringBundler(6);

    if (exportPortletSetup) {
        configurationOptionsSB.append("setup");
        configurationOptionsSB.append(StringPool.COMMA);
    }

    if (exportPortletArchivedSetups) {
        configurationOptionsSB.append("archived-setups");
        configurationOptionsSB.append(StringPool.COMMA);
    }

    if (exportPortletUserPreferences) {
        configurationOptionsSB.append("user-preferences");
        configurationOptionsSB.append(StringPool.COMMA);
    }

    if (configurationOptionsSB.index() > 0) {
        configurationOptionsSB.setIndex(configurationOptionsSB.index() - 1);
    }

    element.addAttribute("portlet-configuration", configurationOptionsSB.toString());

    try {
        portletDataContext.addZipEntry(path, document.formattedString());
    } catch (IOException ioe) {
        if (_log.isWarnEnabled()) {
            _log.warn(ioe.getMessage());
        }
    }
}

From source file:com.liferay.exportimport.controller.PortletExportController.java

License:Open Source License

public void exportPortletData(PortletDataContext portletDataContext, Portlet portlet, Layout layout,
        javax.portlet.PortletPreferences jxPortletPreferences, Element parentElement) throws Exception {

    if (portlet == null) {
        return;/*from w  w w  . j a va2  s  .com*/
    }

    PortletDataHandler portletDataHandler = portlet.getPortletDataHandlerInstance();

    if ((portletDataHandler == null) || portletDataHandler.isDataPortletInstanceLevel()) {

        return;
    }

    Group group = _groupLocalService.getGroup(portletDataContext.getGroupId());

    long plid = LayoutConstants.DEFAULT_PLID;

    if (layout != null) {
        group = layout.getGroup();
        plid = layout.getPlid();
    }

    if (group.isStagingGroup()) {
        group = group.getLiveGroup();
    }

    String portletId = portlet.getPortletId();

    if (ExportImportThreadLocal.isStagingInProcess() && !group.isStagedPortlet(portletId)) {

        if (_log.isDebugEnabled()) {
            _log.debug("Not exporting data for " + portletId + " because it is configured not to be staged");
        }

        return;
    }

    if (_log.isDebugEnabled()) {
        _log.debug("Exporting data for " + portletId);
    }

    String path = ExportImportPathUtil.getPortletDataPath(portletDataContext);

    if (portletDataContext.hasPrimaryKey(String.class, path)) {
        return;
    }

    Date originalStartDate = portletDataContext.getStartDate();

    Date portletLastPublishDate = ExportImportDateUtil.getLastPublishDate(portletDataContext,
            jxPortletPreferences);

    portletDataContext.setStartDate(portletLastPublishDate);

    long groupId = portletDataContext.getGroupId();

    portletDataContext.setGroupId(portletDataContext.getScopeGroupId());

    portletDataContext.clearScopedPrimaryKeys();

    String data = null;

    try {
        data = portletDataHandler.exportData(portletDataContext, portletId, jxPortletPreferences);
    } finally {
        portletDataContext.setGroupId(groupId);
        portletDataContext.setStartDate(originalStartDate);
    }

    if (Validator.isNull(data)) {
        if (_log.isDebugEnabled()) {
            _log.debug("Not exporting data for " + portletId + " because null data was returned");
        }

        return;
    }

    Element portletDataElement = parentElement.addElement("portlet-data");

    portletDataElement.addAttribute("path", path);

    portletDataContext.addZipEntry(path, data);

    boolean updateLastPublishDate = MapUtil.getBoolean(portletDataContext.getParameterMap(),
            PortletDataHandlerKeys.UPDATE_LAST_PUBLISH_DATE);

    if (ExportImportThreadLocal.isStagingInProcess() && updateLastPublishDate) {

        DateRange adjustedDateRange = new DateRange(portletLastPublishDate, portletDataContext.getEndDate());

        _exportImportProcessCallbackRegistry.registerCallback(portletDataContext.getExportImportProcessId(),
                new UpdatePortletLastPublishDateCallable(adjustedDateRange, portletDataContext.getEndDate(),
                        portletDataContext.getGroupId(), plid, portletId));
    }
}

From source file:com.liferay.exportimport.controller.PortletExportController.java

License:Open Source License

protected void exportPortletPreference(PortletDataContext portletDataContext, long ownerId, int ownerType,
        boolean defaultUser, PortletPreferences portletPreferences, String portletId, long plid,
        Element parentElement) throws Exception {

    String preferencesXML = portletPreferences.getPreferences();

    if (Validator.isNull(preferencesXML)) {
        preferencesXML = PortletConstants.DEFAULT_PREFERENCES;
    }/*from www.j  av a 2 s . c  o m*/

    javax.portlet.PortletPreferences jxPortletPreferences = PortletPreferencesFactoryUtil
            .fromDefaultXML(preferencesXML);

    Portlet portlet = _portletLocalService.getPortletById(portletDataContext.getCompanyId(), portletId);

    Element portletPreferencesElement = parentElement.addElement("portlet-preferences");

    if ((portlet != null) && (portlet.getPortletDataHandlerInstance() != null)) {

        Element exportDataRootElement = portletDataContext.getExportDataRootElement();

        try {
            portletDataContext.clearScopedPrimaryKeys();

            Element preferenceDataElement = portletPreferencesElement.addElement("preference-data");

            portletDataContext.setExportDataRootElement(preferenceDataElement);

            ExportImportPortletPreferencesProcessor exportImportPortletPreferencesProcessor = ExportImportPortletPreferencesProcessorRegistryUtil
                    .getExportImportPortletPreferencesProcessor(portlet.getRootPortletId());

            if (exportImportPortletPreferencesProcessor != null) {
                List<Capability> exportCapabilities = exportImportPortletPreferencesProcessor
                        .getExportCapabilities();

                if (ListUtil.isNotEmpty(exportCapabilities)) {
                    for (Capability exportCapability : exportCapabilities) {
                        exportCapability.process(portletDataContext, jxPortletPreferences);
                    }
                }

                exportImportPortletPreferencesProcessor.processExportPortletPreferences(portletDataContext,
                        jxPortletPreferences);
            } else {
                PortletDataHandler portletDataHandler = portlet.getPortletDataHandlerInstance();

                jxPortletPreferences = portletDataHandler.processExportPortletPreferences(portletDataContext,
                        portletId, jxPortletPreferences);
            }
        } finally {
            portletDataContext.setExportDataRootElement(exportDataRootElement);
        }
    }

    Document document = SAXReaderUtil.read(PortletPreferencesFactoryUtil.toXML(jxPortletPreferences));

    Element rootElement = document.getRootElement();

    rootElement.addAttribute("owner-id", String.valueOf(ownerId));
    rootElement.addAttribute("owner-type", String.valueOf(ownerType));
    rootElement.addAttribute("default-user", String.valueOf(defaultUser));
    rootElement.addAttribute("plid", String.valueOf(plid));
    rootElement.addAttribute("portlet-id", portletId);

    if (ownerType == PortletKeys.PREFS_OWNER_TYPE_ARCHIVED) {
        PortletItem portletItem = _portletItemLocalService.getPortletItem(ownerId);

        rootElement.addAttribute("archive-user-uuid", portletItem.getUserUuid());
        rootElement.addAttribute("archive-name", portletItem.getName());
    } else if (ownerType == PortletKeys.PREFS_OWNER_TYPE_USER) {
        User user = _userLocalService.fetchUserById(ownerId);

        if (user == null) {
            return;
        }

        rootElement.addAttribute("user-uuid", user.getUserUuid());
    }

    List<Node> nodes = document
            .selectNodes("/portlet-preferences/preference[name/text() = " + "'last-publish-date']");

    for (Node node : nodes) {
        node.detach();
    }

    String path = ExportImportPathUtil.getPortletPreferencesPath(portletDataContext, portletId, ownerId,
            ownerType, plid);

    portletPreferencesElement.addAttribute("path", path);

    portletDataContext.addZipEntry(path, document.formattedString(StringPool.TAB, false, false));
}

From source file:com.liferay.exportimport.internal.portlet.data.handler.provider.PortletDataHandlerProviderImpl.java

License:Open Source License

protected PortletDataHandler doProvide(Portlet portlet) {
    if ((portlet == null) || !portlet.isActive() || portlet.isUndeployedPortlet()) {

        return null;
    }//from   w w w  .jav  a  2 s.  c  o  m

    try {
        return portlet.getPortletDataHandlerInstance();
    } catch (Exception e) {
        return null;
    }
}

From source file:com.liferay.exportimport.lar.ExportImportHelperImpl.java

License:Open Source License

@Override
public List<Portlet> getDataSiteLevelPortlets(long companyId, boolean excludeDataAlwaysStaged)
        throws Exception {

    List<Portlet> dataSiteLevelPortlets = new ArrayList<>();

    Map<Integer, List<Portlet>> rankedPortletsMap = new TreeMap<>();

    List<Portlet> portlets = _portletLocalService.getPortlets(companyId);

    for (Portlet portlet : portlets) {
        if (!portlet.isActive()) {
            continue;
        }//from ww w .  j ava 2s  . c  o m

        PortletDataHandler portletDataHandler = portlet.getPortletDataHandlerInstance();

        if ((portletDataHandler == null) || !portletDataHandler.isDataSiteLevel()
                || (excludeDataAlwaysStaged && portletDataHandler.isDataAlwaysStaged())) {

            continue;
        }

        List<Portlet> rankedPortlets = rankedPortletsMap.get(portletDataHandler.getRank());

        if (rankedPortlets == null) {
            rankedPortlets = new ArrayList<>();
        }

        rankedPortlets.add(portlet);

        rankedPortletsMap.put(portletDataHandler.getRank(), rankedPortlets);
    }

    for (List<Portlet> rankedPortlets : rankedPortletsMap.values()) {
        dataSiteLevelPortlets.addAll(rankedPortlets);
    }

    return dataSiteLevelPortlets;
}

From source file:com.liferay.exportimport.lar.ExportImportHelperImpl.java

License:Open Source License

@Override
public boolean isAlwaysIncludeReference(PortletDataContext portletDataContext,
        StagedModel referenceStagedModel) {

    String rootPortletId = portletDataContext.getRootPortletId();

    if (Validator.isBlank(rootPortletId)) {
        return true;
    }/*  w  w w. j  av  a 2  s. c  om*/

    Portlet portlet = _portletLocalService.getPortletById(rootPortletId);

    PortletDataHandler portletDataHandler = portlet.getPortletDataHandlerInstance();

    Map<String, String[]> parameterMap = portletDataContext.getParameterMap();

    String[] referencedContentBehaviorArray = parameterMap.get(PortletDataHandlerControl
            .getNamespacedControlName(portletDataHandler.getNamespace(), "referenced-content-behavior"));

    String referencedContentBehavior = "include-always";

    if (!ArrayUtil.isEmpty(referencedContentBehaviorArray)) {
        referencedContentBehavior = referencedContentBehaviorArray[0];
    }

    if (referencedContentBehavior.equals("include-always")
            || (referencedContentBehavior.equals("include-if-modified")
                    && portletDataContext.isWithinDateRange(referenceStagedModel.getModifiedDate()))) {

        return true;
    }

    return false;
}

From source file:com.liferay.exportimport.test.ExportImportHelperUtilTest.java

License:Open Source License

@Test
public void testDataSiteLevelPortletsRank() throws Exception {
    List<Portlet> portlets = ExportImportHelperUtil.getDataSiteLevelPortlets(TestPropsValues.getCompanyId());

    Integer previousRank = null;//  w w  w . ja  va 2s. c  om

    for (Portlet portlet : portlets) {
        PortletDataHandler portletDataHandler = portlet.getPortletDataHandlerInstance();

        int actualRank = portletDataHandler.getRank();

        if (previousRank != null) {
            Assert.assertTrue("Portlets should be in ascending order by rank", previousRank <= actualRank);
        }

        previousRank = actualRank;
    }
}

From source file:com.liferay.exportimport.test.util.lar.BasePortletExportImportTestCase.java

License:Open Source License

protected void testExportImportAvailableLocales(Collection<Locale> sourceAvailableLocales,
        Collection<Locale> targetAvailableLocales, boolean expectFailure) throws Exception {

    Portlet portlet = PortletLocalServiceUtil.getPortletById(group.getCompanyId(), getPortletId());

    if (portlet == null) {
        return;//from   w  w  w.  j a  va 2 s.  c om
    }

    PortletDataHandler portletDataHandler = portlet.getPortletDataHandlerInstance();

    if (!portletDataHandler.isDataLocalized()) {
        Assert.assertTrue("This test does not apply", true);

        return;
    }

    GroupTestUtil.updateDisplaySettings(group.getGroupId(), sourceAvailableLocales, null);
    GroupTestUtil.updateDisplaySettings(importedGroup.getGroupId(), targetAvailableLocales, null);

    try {
        exportImportPortlet(getPortletId());

        Assert.assertFalse(expectFailure);
    } catch (LocaleException le) {
        Assert.assertTrue(expectFailure);
    }
}

From source file:com.liferay.site.internal.exportimport.data.handler.StagedGroupStagedModelDataHandler.java

License:Open Source License

protected Set<String> checkDataSiteLevelPortlets(PortletDataContext portletDataContext, Group group)
        throws Exception {

    List<Portlet> dataSiteLevelPortlets = _exportImportHelper
            .getDataSiteLevelPortlets(portletDataContext.getCompanyId());

    Group liveGroup = group;/*from  ww  w .  jav  a 2s.c  o  m*/

    if (liveGroup.isStagingGroup()) {
        liveGroup = liveGroup.getLiveGroup();
    }

    Set<String> portletIds = new LinkedHashSet<>();

    for (Portlet portlet : dataSiteLevelPortlets) {
        String portletId = portlet.getRootPortletId();

        if (ExportImportThreadLocal.isStagingInProcess() && !liveGroup.isStagedPortlet(portletId)) {

            continue;
        }

        // Calculate the amount of exported data

        if (BackgroundTaskThreadLocal.hasBackgroundTask()) {
            Map<String, Boolean> exportPortletControlsMap = _exportImportHelper.getExportPortletControlsMap(
                    portletDataContext.getCompanyId(), portletId, portletDataContext.getParameterMap(),
                    portletDataContext.getType());

            if (exportPortletControlsMap.get(PortletDataHandlerKeys.PORTLET_DATA)) {

                PortletDataHandler portletDataHandler = portlet.getPortletDataHandlerInstance();

                portletDataHandler.prepareManifestSummary(portletDataContext);
            }
        }

        // Add portlet ID to exportable portlets list

        portletIds.add(portletId);
    }

    return portletIds;
}