List of usage examples for com.liferay.portal.kernel.backgroundtask BackgroundTaskThreadLocal hasBackgroundTask
public static boolean hasBackgroundTask()
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)); } }