Example usage for com.liferay.portal.kernel.backgroundtask BackgroundTaskThreadLocal hasBackgroundTask

List of usage examples for com.liferay.portal.kernel.backgroundtask BackgroundTaskThreadLocal hasBackgroundTask

Introduction

In this page you can find the example usage for com.liferay.portal.kernel.backgroundtask BackgroundTaskThreadLocal hasBackgroundTask.

Prototype

public static boolean hasBackgroundTask() 

Source Link

Usage

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

License:Open Source License

protected File doExport(PortletDataContext portletDataContext) throws Exception {

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

    boolean ignoreLastPublishDate = MapUtil.getBoolean(parameterMap,
            PortletDataHandlerKeys.IGNORE_LAST_PUBLISH_DATE);
    boolean permissions = MapUtil.getBoolean(parameterMap, PortletDataHandlerKeys.PERMISSIONS);

    if (_log.isDebugEnabled()) {
        _log.debug("Export permissions " + permissions);
    }/*from www . j a v  a  2  s .c o  m*/

    long companyId = portletDataContext.getCompanyId();

    long defaultUserId = _userLocalService.getDefaultUserId(companyId);

    ServiceContext serviceContext = ServiceContextThreadLocal.popServiceContext();

    if (serviceContext == null) {
        serviceContext = new ServiceContext();
    }

    serviceContext.setCompanyId(companyId);
    serviceContext.setSignedIn(true);

    if (BackgroundTaskThreadLocal.hasBackgroundTask()) {
        BackgroundTask backgroundTask = _backgroundTaskLocalService
                .getBackgroundTask(BackgroundTaskThreadLocal.getBackgroundTaskId());

        serviceContext.setUserId(backgroundTask.getUserId());
    } else {
        serviceContext.setUserId(defaultUserId);
    }

    serviceContext.setAttribute("exporting", Boolean.TRUE);

    long layoutSetBranchId = MapUtil.getLong(parameterMap, "layoutSetBranchId");

    serviceContext.setAttribute("layoutSetBranchId", layoutSetBranchId);

    ServiceContextThreadLocal.pushServiceContext(serviceContext);

    if (ignoreLastPublishDate) {
        portletDataContext.setEndDate(null);
        portletDataContext.setStartDate(null);
    }

    StopWatch stopWatch = new StopWatch();

    stopWatch.start();

    Document document = SAXReaderUtil.createDocument();

    Element rootElement = document.addElement("root");

    portletDataContext.setExportDataRootElement(rootElement);

    Element headerElement = rootElement.addElement("header");

    headerElement.addAttribute("available-locales",
            StringUtil.merge(LanguageUtil.getAvailableLocales(portletDataContext.getScopeGroupId())));

    headerElement.addAttribute("build-number", String.valueOf(ReleaseInfo.getBuildNumber()));

    headerElement.addAttribute("schema-version", ExportImportConstants.EXPORT_IMPORT_SCHEMA_VERSION);

    headerElement.addAttribute("export-date", Time.getRFC822());

    if (portletDataContext.hasDateRange()) {
        headerElement.addAttribute("start-date", String.valueOf(portletDataContext.getStartDate()));
        headerElement.addAttribute("end-date", String.valueOf(portletDataContext.getEndDate()));
    }

    headerElement.addAttribute("company-id", String.valueOf(portletDataContext.getCompanyId()));
    headerElement.addAttribute("company-group-id", String.valueOf(portletDataContext.getCompanyGroupId()));
    headerElement.addAttribute("group-id", String.valueOf(portletDataContext.getGroupId()));
    headerElement.addAttribute("user-personal-site-group-id",
            String.valueOf(portletDataContext.getUserPersonalSiteGroupId()));
    headerElement.addAttribute("private-layout", String.valueOf(portletDataContext.isPrivateLayout()));

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

    String type = "layout-set";

    if (group.isLayoutPrototype()) {
        type = "layout-prototype";

        LayoutPrototype layoutPrototype = _layoutPrototypeLocalService.getLayoutPrototype(group.getClassPK());

        headerElement.addAttribute("type-uuid", layoutPrototype.getUuid());
    } else if (group.isLayoutSetPrototype()) {
        type = "layout-set-prototype";

        LayoutSetPrototype layoutSetPrototype = _layoutSetPrototypeLocalService
                .getLayoutSetPrototype(group.getClassPK());

        headerElement.addAttribute("type-uuid", layoutSetPrototype.getUuid());
    }

    headerElement.addAttribute("type", type);
    portletDataContext.setType(type);

    Element missingReferencesElement = rootElement.addElement("missing-references");

    portletDataContext.setMissingReferencesElement(missingReferencesElement);

    rootElement.addElement("site-portlets");
    rootElement.addElement("site-services");

    // Export the group

    LayoutSet layoutSet = _layoutSetLocalService.getLayoutSet(portletDataContext.getGroupId(),
            portletDataContext.isPrivateLayout());

    String layoutSetPrototypeUuid = layoutSet.getLayoutSetPrototypeUuid();

    boolean layoutSetPrototypeSettings = MapUtil.getBoolean(portletDataContext.getParameterMap(),
            PortletDataHandlerKeys.LAYOUT_SET_PROTOTYPE_SETTINGS);

    if (!group.isStaged() && Validator.isNotNull(layoutSetPrototypeUuid) && layoutSetPrototypeSettings) {

        LayoutSetPrototype layoutSetPrototype = _layoutSetPrototypeLocalService
                .getLayoutSetPrototypeByUuidAndCompanyId(layoutSetPrototypeUuid, companyId);

        headerElement.addAttribute("layout-set-prototype-uuid", layoutSetPrototypeUuid);

        headerElement.addAttribute("layout-set-prototype-name",
                layoutSetPrototype.getName(LocaleUtil.getDefault()));
    }

    StagedGroup stagedGroup = ModelAdapterUtil.adapt(group, Group.class, StagedGroup.class);

    StagedModelDataHandlerUtil.exportStagedModel(portletDataContext, stagedGroup);

    // Export other models

    _portletExportController.exportAssetLinks(portletDataContext);
    _portletExportController.exportExpandoTables(portletDataContext);
    _portletExportController.exportLocks(portletDataContext);

    portletDataContext.addDeletionSystemEventStagedModelTypes(new StagedModelType(StagedAssetLink.class));

    _deletionSystemEventExporter.exportDeletionSystemEvents(portletDataContext);

    if (permissions) {
        _permissionExporter.exportPortletDataPermissions(portletDataContext);
    }

    _exportImportHelper.writeManifestSummary(document, portletDataContext.getManifestSummary());

    if (_log.isInfoEnabled()) {
        _log.info("Exporting layouts takes " + stopWatch.getTime() + " ms");
    }

    portletDataContext.addZipEntry("/manifest.xml", document.formattedString());

    ZipWriter zipWriter = portletDataContext.getZipWriter();

    return zipWriter.getFile();
}

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();
    }//from   w  ww .  j  av  a2s  . c  o m

    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.PortletImportController.java

License:Open Source License

protected void doImportPortletInfo(PortletDataContext portletDataContext, long userId) throws Exception {

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

    boolean importPermissions = MapUtil.getBoolean(parameterMap, PortletDataHandlerKeys.PERMISSIONS);

    StopWatch stopWatch = new StopWatch();

    stopWatch.start();/* w w  w  . j a va2  s. c  o m*/

    ServiceContext serviceContext = ServiceContextThreadLocal.getServiceContext();

    if (serviceContext == null) {
        serviceContext = new ServiceContext();

        serviceContext.setCompanyId(portletDataContext.getCompanyId());
        serviceContext.setSignedIn(false);
        serviceContext.setUserId(userId);

        ServiceContextThreadLocal.pushServiceContext(serviceContext);
    }

    // LAR validation

    validateFile(portletDataContext.getCompanyId(), portletDataContext.getGroupId(),
            portletDataContext.getPortletId(), portletDataContext.getZipReader());

    // Source and target group id

    Map<Long, Long> groupIds = (Map<Long, Long>) portletDataContext.getNewPrimaryKeysMap(Group.class);

    groupIds.put(portletDataContext.getSourceGroupId(), portletDataContext.getGroupId());

    // Manifest

    ManifestSummary manifestSummary = _exportImportHelper.getManifestSummary(portletDataContext);

    if (BackgroundTaskThreadLocal.hasBackgroundTask()) {
        _portletDataHandlerStatusMessageSender.sendStatusMessage("portlet", portletDataContext.getPortletId(),
                manifestSummary);
    }

    portletDataContext.setManifestSummary(manifestSummary);

    // Read expando tables, locks and permissions to make them
    // available to the data handlers through the portlet data context

    Element rootElement = portletDataContext.getImportDataRootElement();

    Element portletElement = null;

    try {
        portletElement = rootElement.element("portlet");

        Document portletDocument = SAXReaderUtil
                .read(portletDataContext.getZipEntryAsString(portletElement.attributeValue("path")));

        portletElement = portletDocument.getRootElement();
    } catch (DocumentException de) {
        throw new SystemException("Unable to parse XML document for portlet "
                + portletDataContext.getPortletId() + " during import", de);
    }

    LayoutCache layoutCache = new LayoutCache();

    if (importPermissions) {
        _permissionImporter.checkRoles(layoutCache, portletDataContext.getCompanyId(),
                portletDataContext.getGroupId(), userId, portletElement);

        _permissionImporter.readPortletDataPermissions(portletDataContext);
    }

    String layoutsImportMode = MapUtil.getString(parameterMap, PortletDataHandlerKeys.LAYOUTS_IMPORT_MODE);

    if (!layoutsImportMode.equals(PortletDataHandlerKeys.LAYOUTS_IMPORT_MODE_CREATED_FROM_PROTOTYPE)) {

        readExpandoTables(portletDataContext);
    }

    readLocks(portletDataContext);

    Element portletDataElement = portletElement.element("portlet-data");

    Map<String, Boolean> importPortletControlsMap = _exportImportHelper.getImportPortletControlsMap(
            portletDataContext.getCompanyId(), portletDataContext.getPortletId(), parameterMap,
            portletDataElement, manifestSummary);

    Layout layout = _layoutLocalService.getLayout(portletDataContext.getPlid());

    try {

        // Portlet preferences

        importPortletPreferences(portletDataContext, layout.getCompanyId(), portletDataContext.getGroupId(),
                layout, portletElement, true,
                importPortletControlsMap.get(PortletDataHandlerKeys.PORTLET_ARCHIVED_SETUPS),
                importPortletControlsMap.get(PortletDataHandlerKeys.PORTLET_DATA),
                importPortletControlsMap.get(PortletDataHandlerKeys.PORTLET_SETUP),
                importPortletControlsMap.get(PortletDataHandlerKeys.PORTLET_USER_PREFERENCES));

        // Portlet data

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

            if (_log.isDebugEnabled()) {
                _log.debug("Importing portlet data");
            }

            importPortletData(portletDataContext, portletDataElement);
        }
    } finally {
        resetPortletScope(portletDataContext, portletDataContext.getGroupId());
    }

    // Portlet permissions

    if (importPermissions) {
        if (_log.isDebugEnabled()) {
            _log.debug("Importing portlet permissions");
        }

        _permissionImporter.importPortletPermissions(layoutCache, portletDataContext.getCompanyId(),
                portletDataContext.getGroupId(), userId, layout, portletElement,
                portletDataContext.getPortletId());

        if (userId > 0) {
            Indexer<User> indexer = IndexerRegistryUtil.nullSafeGetIndexer(User.class);

            User user = _userLocalService.fetchUser(userId);

            indexer.reindex(user);
        }
    }

    // Asset links

    if (_log.isDebugEnabled()) {
        _log.debug("Importing asset links");
    }

    importAssetLinks(portletDataContext);

    // Deletion system events

    _deletionSystemEventImporter.importDeletionSystemEvents(portletDataContext);

    if (_log.isInfoEnabled()) {
        _log.info("Importing portlet takes " + stopWatch.getTime() + " ms");
    }

    // Service portlet preferences

    boolean importPortletSetup = importPortletControlsMap.get(PortletDataHandlerKeys.PORTLET_SETUP);

    if (importPortletSetup) {
        try {
            List<Element> serviceElements = rootElement.elements("service");

            for (Element serviceElement : serviceElements) {
                Document serviceDocument = SAXReaderUtil
                        .read(portletDataContext.getZipEntryAsString(serviceElement.attributeValue("path")));

                importServicePortletPreferences(portletDataContext, serviceDocument.getRootElement());
            }
        } catch (DocumentException de) {
            throw new SystemException("Unable to parse XML service information for portlet "
                    + portletDataContext.getPortletId() + " during import", de);
        } catch (PortalException pe) {
            throw new PortletDataException(
                    "Unable to import service preferences for portlet " + portletDataContext.getPortletId(),
                    pe);
        }
    }

    ZipReader zipReader = portletDataContext.getZipReader();

    zipReader.close();
}

From source file:com.liferay.layout.admin.web.internal.exportimport.data.handler.LayoutStagedModelDataHandler.java

License:Open Source License

protected void importLayoutPortlets(PortletDataContext portletDataContext, Layout layout, Element layoutElement)
        throws Exception {

    boolean layoutSetPrototypeLinkEnabled = MapUtil.getBoolean(portletDataContext.getParameterMap(),
            PortletDataHandlerKeys.LAYOUT_SET_PROTOTYPE_LINK_ENABLED);

    if (layoutSetPrototypeLinkEnabled && Validator.isNotNull(portletDataContext.getLayoutSetPrototypeUuid())
            && SitesUtil.isLayoutModifiedSinceLastMerge(layout)) {

        return;/*from  w w  w. ja  v a  2 s  .  com*/
    }

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

    boolean permissions = MapUtil.getBoolean(parameterMap, PortletDataHandlerKeys.PERMISSIONS);

    ServiceContext serviceContext = ServiceContextThreadLocal.getServiceContext();

    LayoutCache layoutCache = new LayoutCache();

    Element portletsElement = layoutElement.element("portlets");

    if (portletsElement == null) {

        // See LPS-75448

        return;
    }

    for (Element portletElement : portletsElement.elements()) {
        String portletPath = portletElement.attributeValue("path");
        String portletId = portletElement.attributeValue("portlet-id");
        long oldPlid = GetterUtil.getLong(portletElement.attributeValue("old-plid"));

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

        if (!portlet.isActive() || portlet.isUndeployedPortlet()) {
            continue;
        }

        portletDataContext.setPlid(layout.getPlid());
        portletDataContext.setOldPlid(oldPlid);
        portletDataContext.setPortletId(portletId);

        if (BackgroundTaskThreadLocal.hasBackgroundTask()) {
            _portletDataHandlerStatusMessageSender.sendStatusMessage("portlet", portletId,
                    portletDataContext.getManifestSummary());
        }

        Document portletDocument = SAXReaderUtil.read(portletDataContext.getZipEntryAsString(portletPath));

        portletElement = portletDocument.getRootElement();

        // The order of the import is important. You must always import the
        // portlet preferences first, then the portlet data, then the
        // portlet permissions. The import of the portlet data assumes that
        // portlet preferences already exist.

        _exportImportHelper.setPortletScope(portletDataContext, portletElement);

        long portletPreferencesGroupId = portletDataContext.getGroupId();

        Element portletDataElement = portletElement.element("portlet-data");

        Map<String, Boolean> importPortletControlsMap = _exportImportHelper.getImportPortletControlsMap(
                portletDataContext.getCompanyId(), portletId, parameterMap, portletDataElement,
                portletDataContext.getManifestSummary());

        if (layout != null) {
            portletPreferencesGroupId = layout.getGroupId();
        }

        try {
            _exportImportLifecycleManager.fireExportImportLifecycleEvent(EVENT_PORTLET_IMPORT_STARTED,
                    getProcessFlag(), portletDataContext.getExportImportProcessId(),
                    _portletDataContextFactory.clonePortletDataContext(portletDataContext));

            // Portlet preferences

            _portletImportController.importPortletPreferences(portletDataContext,
                    portletDataContext.getCompanyId(), portletPreferencesGroupId, layout, portletElement, false,
                    importPortletControlsMap.get(PortletDataHandlerKeys.PORTLET_ARCHIVED_SETUPS),
                    importPortletControlsMap.get(PortletDataHandlerKeys.PORTLET_DATA),
                    importPortletControlsMap.get(PortletDataHandlerKeys.PORTLET_SETUP),
                    importPortletControlsMap.get(PortletDataHandlerKeys.PORTLET_USER_PREFERENCES));

            // Portlet data

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

                _portletImportController.importPortletData(portletDataContext, portletDataElement);
            }

            _exportImportLifecycleManager.fireExportImportLifecycleEvent(EVENT_PORTLET_IMPORT_SUCCEEDED,
                    getProcessFlag(), portletDataContext.getExportImportProcessId(),
                    _portletDataContextFactory.clonePortletDataContext(portletDataContext));
        } catch (Throwable t) {
            _exportImportLifecycleManager.fireExportImportLifecycleEvent(EVENT_PORTLET_IMPORT_FAILED,
                    getProcessFlag(), portletDataContext.getExportImportProcessId(),
                    _portletDataContextFactory.clonePortletDataContext(portletDataContext), t);

            throw t;
        } finally {
            _portletImportController.resetPortletScope(portletDataContext, portletPreferencesGroupId);
        }

        // Portlet permissions

        if (permissions) {
            _permissionImporter.importPortletPermissions(layoutCache, portletDataContext.getCompanyId(),
                    portletDataContext.getGroupId(), serviceContext.getUserId(), layout, portletElement,
                    portletId);
        }

        // Archived setups

        try {
            _portletImportController.importPortletPreferences(portletDataContext,
                    portletDataContext.getCompanyId(), portletDataContext.getGroupId(), null, portletElement,
                    false, importPortletControlsMap.get(PortletDataHandlerKeys.PORTLET_ARCHIVED_SETUPS),
                    importPortletControlsMap.get(PortletDataHandlerKeys.PORTLET_DATA),
                    importPortletControlsMap.get(PortletDataHandlerKeys.PORTLET_SETUP),
                    importPortletControlsMap.get(PortletDataHandlerKeys.PORTLET_USER_PREFERENCES));
        } catch (Throwable t) {
            throw t;
        } finally {
            _portletImportController.resetPortletScope(portletDataContext, portletPreferencesGroupId);
        }
    }
}

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 .  j a  v  a2  s  .  c om*/

    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;
}

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

License:Open Source License

@Override
protected void doExportStagedModel(PortletDataContext portletDataContext, StagedGroup stagedGroup)
        throws Exception {

    // Collect site portlets and initialize the progress bar

    Set<String> dataSiteLevelPortletIds = checkDataSiteLevelPortlets(portletDataContext, stagedGroup);

    if (BackgroundTaskThreadLocal.hasBackgroundTask()) {
        ManifestSummary manifestSummary = portletDataContext.getManifestSummary();

        _portletDataHandlerStatusMessageSender.sendStatusMessage("layout",
                ArrayUtil.toStringArray(dataSiteLevelPortletIds), manifestSummary);

        manifestSummary.resetCounters();
    }// w  w  w  . j  av a  2s  .  com

    long[] layoutIds = portletDataContext.getLayoutIds();

    if (stagedGroup.isLayoutPrototype()) {
        layoutIds = _exportImportHelper.getAllLayoutIds(stagedGroup.getGroupId(),
                portletDataContext.isPrivateLayout());
    }

    // Export site data portlets

    long previousScopeGroupId = portletDataContext.getScopeGroupId();

    try {
        exportSitePortlets(portletDataContext, stagedGroup, dataSiteLevelPortletIds, layoutIds);
    } finally {
        portletDataContext.setScopeGroupId(previousScopeGroupId);
    }

    // Layout set with layouts

    List<? extends StagedModel> childStagedModels = _stagedGroupStagedModelRepository
            .fetchChildrenStagedModels(portletDataContext, stagedGroup);

    for (StagedModel stagedModel : childStagedModels) {
        StagedModelDataHandlerUtil.exportReferenceStagedModel(portletDataContext, stagedGroup, stagedModel,
                PortletDataContext.REFERENCE_TYPE_CHILD);
    }

    // Serialize the group

    Element groupElement = portletDataContext.getExportDataElement(stagedGroup);

    portletDataContext.addClassedModel(groupElement, ExportImportPathUtil.getModelPath(stagedGroup),
            stagedGroup);
}

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

License:Open Source License

@Override
protected void doImportStagedModel(PortletDataContext portletDataContext, StagedGroup stagedGroup)
        throws Exception {

    Element rootElement = portletDataContext.getImportDataRootElement();

    Element sitePortletsElement = rootElement.element("site-portlets");

    List<Element> sitePortletElements = sitePortletsElement.elements();

    // Initialize progress bar

    if (BackgroundTaskThreadLocal.hasBackgroundTask()) {
        List<String> portletIds = new ArrayList<>();

        for (Element portletElement : sitePortletElements) {
            String portletId = portletElement.attributeValue("portlet-id");

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

            if (!portlet.isActive() || portlet.isUndeployedPortlet()) {
                continue;
            }// w  w  w .  j  a  va 2 s.c  o  m

            portletIds.add(portletId);
        }

        _portletDataHandlerStatusMessageSender.sendStatusMessage("layout", ArrayUtil.toStringArray(portletIds),
                portletDataContext.getManifestSummary());
    }

    // Import services

    Element siteServicesElement = rootElement.element("site-services");

    List<Element> siteServiceElements = siteServicesElement.elements("service");

    if (_log.isDebugEnabled() && !siteServiceElements.isEmpty()) {
        _log.debug("Importing services");
    }

    importSiteServices(portletDataContext, siteServiceElements);

    // Import layout set

    Element layoutSetElement = portletDataContext.getImportDataGroupElement(StagedLayoutSet.class);

    for (Element groupElement : layoutSetElement.elements()) {
        StagedModelDataHandlerUtil.importStagedModel(portletDataContext, groupElement);
    }

    // Import site data portlets

    if (_log.isDebugEnabled() && !sitePortletElements.isEmpty()) {
        _log.debug("Importing portlets");
    }

    importSitePortlets(portletDataContext, sitePortletElements);
}

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

License:Open Source License

protected void importSitePortlets(PortletDataContext portletDataContext, List<Element> sitePortletElements)
        throws Exception {

    Map<Long, Layout> layouts = (Map<Long, Layout>) portletDataContext
            .getNewPrimaryKeysMap(Layout.class + ".layout");

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

    boolean permissions = MapUtil.getBoolean(parameterMap, PortletDataHandlerKeys.PERMISSIONS);

    ServiceContext serviceContext = ServiceContextThreadLocal.getServiceContext();

    LayoutCache layoutCache = new LayoutCache();

    for (Element portletElement : sitePortletElements) {
        String portletPath = portletElement.attributeValue("path");
        String portletId = portletElement.attributeValue("portlet-id");
        long layoutId = GetterUtil.getLong(portletElement.attributeValue("layout-id"));
        long oldPlid = GetterUtil.getLong(portletElement.attributeValue("old-plid"));

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

        if (!portlet.isActive() || portlet.isUndeployedPortlet()) {
            continue;
        }//from w  ww .j  a  v  a  2s .c om

        Layout layout = layouts.get(layoutId);

        long plid = LayoutConstants.DEFAULT_PLID;

        if (layout != null) {
            if (SitesUtil.isLayoutModifiedSinceLastMerge(layout)) {
                continue;
            }

            plid = layout.getPlid();
        }

        portletDataContext.setPlid(plid);
        portletDataContext.setOldPlid(oldPlid);
        portletDataContext.setPortletId(portletId);

        if (BackgroundTaskThreadLocal.hasBackgroundTask()) {
            _portletDataHandlerStatusMessageSender.sendStatusMessage("portlet", portletId,
                    portletDataContext.getManifestSummary());
        }

        Document portletDocument = SAXReaderUtil.read(portletDataContext.getZipEntryAsString(portletPath));

        portletElement = portletDocument.getRootElement();

        // The order of the import is important. You must always import the
        // portlet preferences first, then the portlet data, then the
        // portlet permissions. The import of the portlet data assumes that
        // portlet preferences already exist.

        _exportImportHelper.setPortletScope(portletDataContext, portletElement);

        long portletPreferencesGroupId = portletDataContext.getGroupId();

        Element portletDataElement = portletElement.element("portlet-data");

        Map<String, Boolean> importPortletControlsMap = _exportImportHelper.getImportPortletControlsMap(
                portletDataContext.getCompanyId(), portletId, portletDataContext.getParameterMap(),
                portletDataElement, portletDataContext.getManifestSummary());

        if (layout != null) {
            portletPreferencesGroupId = layout.getGroupId();
        }

        try {
            _exportImportLifecycleManager.fireExportImportLifecycleEvent(EVENT_PORTLET_IMPORT_STARTED,
                    getProcessFlag(), portletDataContext.getExportImportProcessId(),
                    _portletDataContextFactory.clonePortletDataContext(portletDataContext));

            // Portlet preferences

            _portletImportController.importPortletPreferences(portletDataContext,
                    portletDataContext.getCompanyId(), portletPreferencesGroupId, layout, portletElement, false,
                    importPortletControlsMap.get(PortletDataHandlerKeys.PORTLET_ARCHIVED_SETUPS),
                    importPortletControlsMap.get(PortletDataHandlerKeys.PORTLET_DATA),
                    importPortletControlsMap.get(PortletDataHandlerKeys.PORTLET_SETUP),
                    importPortletControlsMap.get(PortletDataHandlerKeys.PORTLET_USER_PREFERENCES));

            // Portlet data

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

                _portletImportController.importPortletData(portletDataContext, portletDataElement);
            }

            _exportImportLifecycleManager.fireExportImportLifecycleEvent(EVENT_PORTLET_IMPORT_SUCCEEDED,
                    getProcessFlag(), portletDataContext.getExportImportProcessId(),
                    _portletDataContextFactory.clonePortletDataContext(portletDataContext));
        } catch (Throwable t) {
            _exportImportLifecycleManager.fireExportImportLifecycleEvent(EVENT_PORTLET_IMPORT_FAILED,
                    getProcessFlag(), portletDataContext.getExportImportProcessId(),
                    _portletDataContextFactory.clonePortletDataContext(portletDataContext), t);

            throw t;
        } finally {
            _portletImportController.resetPortletScope(portletDataContext, portletPreferencesGroupId);
        }

        // Portlet permissions

        if (permissions) {
            _permissionImporter.importPortletPermissions(layoutCache, portletDataContext.getCompanyId(),
                    portletDataContext.getGroupId(), serviceContext.getUserId(), layout, portletElement,
                    portletId);
        }

        // Archived setups

        _portletImportController.importPortletPreferences(portletDataContext, portletDataContext.getCompanyId(),
                portletDataContext.getGroupId(), null, portletElement, false,
                importPortletControlsMap.get(PortletDataHandlerKeys.PORTLET_ARCHIVED_SETUPS),
                importPortletControlsMap.get(PortletDataHandlerKeys.PORTLET_DATA),
                importPortletControlsMap.get(PortletDataHandlerKeys.PORTLET_SETUP),
                importPortletControlsMap.get(PortletDataHandlerKeys.PORTLET_USER_PREFERENCES));
    }
}