Example usage for com.liferay.portal.kernel.model Group getLiveGroup

List of usage examples for com.liferay.portal.kernel.model Group getLiveGroup

Introduction

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

Prototype

public Group getLiveGroup();

Source Link

Usage

From source file:com.liferay.exportimport.content.processor.base.BaseTextExportImportContentProcessor.java

License:Open Source License

protected String replaceExportDLReferences(PortletDataContext portletDataContext, StagedModel stagedModel,
        String content, boolean exportReferencedContent) throws Exception {

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

    if (group.isStagingGroup()) {
        group = group.getLiveGroup();
    }// ww  w  .  j  ava  2 s  . co m

    if (group.isStaged() && !group.isStagedRemotely() && !group.isStagedPortlet(PortletKeys.DOCUMENT_LIBRARY)) {

        return content;
    }

    StringBuilder sb = new StringBuilder(content);

    String contextPath = PortalUtil.getPathContext();

    String[] patterns = { contextPath.concat("/c/document_library/get_file?"),
            contextPath.concat("/documents/"), contextPath.concat("/image/image_gallery?") };

    int beginPos = -1;
    int endPos = content.length();

    while (true) {
        beginPos = StringUtil.lastIndexOfAny(content, patterns, endPos);

        if (beginPos == -1) {
            break;
        }

        Map<String, String[]> dlReferenceParameters = getDLReferenceParameters(
                portletDataContext.getScopeGroupId(), content, beginPos + contextPath.length(), endPos);

        FileEntry fileEntry = getFileEntry(dlReferenceParameters);

        if (fileEntry == null) {
            endPos = beginPos - 1;

            continue;
        }

        endPos = MapUtil.getInteger(dlReferenceParameters, "endPos");

        try {
            if (exportReferencedContent && !fileEntry.isInTrash()) {
                StagedModelDataHandlerUtil.exportReferenceStagedModel(portletDataContext, stagedModel,
                        fileEntry, PortletDataContext.REFERENCE_TYPE_DEPENDENCY);
            } else {
                Element entityElement = portletDataContext.getExportDataElement(stagedModel);

                String referenceType = PortletDataContext.REFERENCE_TYPE_DEPENDENCY;

                if (fileEntry.isInTrash()) {
                    referenceType = PortletDataContext.REFERENCE_TYPE_DEPENDENCY_DISPOSABLE;
                }

                portletDataContext.addReferenceElement(stagedModel, entityElement, fileEntry, referenceType,
                        true);
            }

            String path = ExportImportPathUtil.getModelPath(fileEntry);

            StringBundler exportedReferenceSB = new StringBundler(6);

            exportedReferenceSB.append("[$dl-reference=");
            exportedReferenceSB.append(path);
            exportedReferenceSB.append("$]");

            if (fileEntry.isInTrash()) {
                String originalReference = sb.substring(beginPos, endPos);

                exportedReferenceSB.append("[#dl-reference=");
                exportedReferenceSB.append(originalReference);
                exportedReferenceSB.append("#]");
            }

            sb.replace(beginPos, endPos, exportedReferenceSB.toString());

            int deleteTimestampParametersOffset = beginPos;

            if (fileEntry.isInTrash()) {
                deleteTimestampParametersOffset = sb.indexOf("[#dl-reference=", beginPos);
            }

            deleteTimestampParameters(sb, deleteTimestampParametersOffset);
        } catch (Exception e) {
            if (_log.isDebugEnabled()) {
                _log.debug(e, e);
            } else if (_log.isWarnEnabled()) {
                StringBundler exceptionSB = new StringBundler(6);

                exceptionSB.append("Unable to process file entry ");
                exceptionSB.append(fileEntry.getFileEntryId());
                exceptionSB.append(" for staged model ");
                exceptionSB.append(stagedModel.getModelClassName());
                exceptionSB.append(" with primary key ");
                exceptionSB.append(stagedModel.getPrimaryKeyObj());

                _log.warn(exceptionSB.toString());
            }
        }

        endPos = beginPos - 1;
    }

    return sb.toString();
}

From source file:com.liferay.exportimport.content.processor.base.BaseTextExportImportContentProcessor.java

License:Open Source License

protected String replaceExportLayoutReferences(PortletDataContext portletDataContext, StagedModel stagedModel,
        String content) throws Exception {

    Group group = GroupLocalServiceUtil.getGroup(portletDataContext.getScopeGroupId());

    StringBuilder sb = new StringBuilder(content);

    String[] patterns = { "href=", "[[" };

    int beginPos = -1;
    int endPos = content.length();
    int offset = 0;

    while (true) {
        if (beginPos > -1) {
            endPos = beginPos - 1;/*from w  ww .j a va2 s.  co  m*/
        }

        beginPos = StringUtil.lastIndexOfAny(content, patterns, endPos);

        if (beginPos == -1) {
            break;
        }

        if (content.startsWith("href=", beginPos)) {
            offset = 5;

            char c = content.charAt(beginPos + offset);

            if ((c == CharPool.APOSTROPHE) || (c == CharPool.QUOTE)) {
                offset++;
            }
        } else if (content.charAt(beginPos) == CharPool.OPEN_BRACKET) {
            offset = 2;
        }

        endPos = StringUtil.indexOfAny(content, LAYOUT_REFERENCE_STOP_CHARS, beginPos + offset, endPos);

        if (endPos == -1) {
            continue;
        }

        String url = content.substring(beginPos + offset, endPos);

        if (url.endsWith(StringPool.SLASH)) {
            url = url.substring(0, url.length() - 1);
        }

        StringBundler urlSB = new StringBundler(6);

        try {
            url = replaceExportHostname(portletDataContext.getScopeGroupId(), url, urlSB);

            if (!url.startsWith(StringPool.SLASH)) {
                continue;
            }

            String pathContext = PortalUtil.getPathContext();

            if (pathContext.length() > 1) {
                if (!url.startsWith(pathContext)) {
                    continue;
                }

                urlSB.append(DATA_HANDLER_PATH_CONTEXT);

                url = url.substring(pathContext.length());
            }

            if (!url.startsWith(StringPool.SLASH)) {
                continue;
            }

            int pos = url.indexOf(StringPool.SLASH, 1);

            String localePath = StringPool.BLANK;

            Locale locale = null;

            if (pos != -1) {
                localePath = url.substring(0, pos);

                locale = LocaleUtil.fromLanguageId(localePath.substring(1), true, false);
            }

            if (locale != null) {
                String urlWithoutLocale = url.substring(localePath.length());

                if (urlWithoutLocale.startsWith(PRIVATE_GROUP_SERVLET_MAPPING)
                        || urlWithoutLocale.startsWith(PRIVATE_USER_SERVLET_MAPPING)
                        || urlWithoutLocale.startsWith(PUBLIC_GROUP_SERVLET_MAPPING)) {

                    urlSB.append(localePath);

                    url = urlWithoutLocale;
                }
            }

            boolean privateLayout = false;

            if (url.startsWith(PRIVATE_GROUP_SERVLET_MAPPING)) {
                urlSB.append(DATA_HANDLER_PRIVATE_GROUP_SERVLET_MAPPING);

                url = url.substring(PRIVATE_GROUP_SERVLET_MAPPING.length() - 1);

                privateLayout = true;
            } else if (url.startsWith(PRIVATE_USER_SERVLET_MAPPING)) {
                urlSB.append(DATA_HANDLER_PRIVATE_USER_SERVLET_MAPPING);

                url = url.substring(PRIVATE_USER_SERVLET_MAPPING.length() - 1);

                privateLayout = true;
            } else if (url.startsWith(PUBLIC_GROUP_SERVLET_MAPPING)) {
                urlSB.append(DATA_HANDLER_PUBLIC_SERVLET_MAPPING);

                url = url.substring(PUBLIC_GROUP_SERVLET_MAPPING.length() - 1);
            } else {
                String urlSBString = urlSB.toString();

                LayoutSet layoutSet = null;

                if (urlSBString.contains(DATA_HANDLER_PUBLIC_LAYOUT_SET_SECURE_URL)
                        || urlSBString.contains(DATA_HANDLER_PUBLIC_LAYOUT_SET_URL)) {

                    layoutSet = group.getPublicLayoutSet();
                } else if (urlSBString.contains(DATA_HANDLER_PRIVATE_LAYOUT_SET_SECURE_URL)
                        || urlSBString.contains(DATA_HANDLER_PRIVATE_LAYOUT_SET_URL)) {

                    layoutSet = group.getPrivateLayoutSet();
                }

                if (layoutSet == null) {
                    continue;
                }

                privateLayout = layoutSet.isPrivateLayout();

                LayoutFriendlyURL layoutFriendlyUrl = LayoutFriendlyURLLocalServiceUtil
                        .fetchFirstLayoutFriendlyURL(group.getGroupId(), privateLayout, url);

                if (layoutFriendlyUrl == null) {
                    continue;
                }

                if (privateLayout) {
                    if (group.isUser()) {
                        urlSB.append(DATA_HANDLER_PRIVATE_USER_SERVLET_MAPPING);
                    } else {
                        urlSB.append(DATA_HANDLER_PRIVATE_GROUP_SERVLET_MAPPING);
                    }
                } else {
                    urlSB.append(DATA_HANDLER_PUBLIC_SERVLET_MAPPING);
                }

                urlSB.append(DATA_HANDLER_GROUP_FRIENDLY_URL);

                continue;
            }

            long groupId = group.getGroupId();

            Layout layout = LayoutLocalServiceUtil.fetchLayoutByFriendlyURL(groupId, privateLayout, url);

            if (layout != null) {
                Element entityElement = portletDataContext.getExportDataElement(stagedModel);

                portletDataContext.addReferenceElement(stagedModel, entityElement, layout,
                        PortletDataContext.REFERENCE_TYPE_DEPENDENCY, true);

                continue;
            }

            pos = url.indexOf(StringPool.SLASH, 1);

            String groupFriendlyURL = url;

            if (pos != -1) {
                groupFriendlyURL = url.substring(0, pos);
            }

            Group urlGroup = GroupLocalServiceUtil.fetchFriendlyURLGroup(group.getCompanyId(),
                    groupFriendlyURL);

            if (urlGroup == null) {
                throw new NoSuchLayoutException();
            }

            urlSB.append(DATA_HANDLER_GROUP_FRIENDLY_URL);

            // Append the UUID. This information will be used during the
            // import process when looking up the proper group for the link.

            urlSB.append(StringPool.AT);

            if (urlGroup.isStagedRemotely()) {
                String remoteGroupUuid = urlGroup.getTypeSettingsProperty("remoteGroupUUID");

                if (Validator.isNotNull(remoteGroupUuid)) {
                    urlSB.append(remoteGroupUuid);
                }
            } else if (urlGroup.isStaged()) {
                Group liveGroup = urlGroup.getLiveGroup();

                urlSB.append(liveGroup.getUuid());
            } else if (group.getGroupId() == urlGroup.getGroupId()) {
                urlSB.append(urlGroup.getFriendlyURL());
            } else {
                urlSB.append(urlGroup.getUuid());
            }

            urlSB.append(StringPool.AT);

            String siteAdminURL = GroupConstants.CONTROL_PANEL_FRIENDLY_URL
                    + PropsValues.CONTROL_PANEL_LAYOUT_FRIENDLY_URL;

            if (url.endsWith(siteAdminURL)) {
                urlSB.append(DATA_HANDLER_SITE_ADMIN_URL);

                url = StringPool.BLANK;

                continue;
            }

            if (pos == -1) {
                url = StringPool.BLANK;

                continue;
            }

            url = url.substring(pos);

            layout = LayoutLocalServiceUtil.getFriendlyURLLayout(urlGroup.getGroupId(), privateLayout, url);

            Element entityElement = portletDataContext.getExportDataElement(stagedModel);

            portletDataContext.addReferenceElement(stagedModel, entityElement, layout,
                    PortletDataContext.REFERENCE_TYPE_DEPENDENCY, true);
        } catch (Exception e) {
            if (e instanceof NoSuchLayoutException && !isValidateLayoutReferences()) {

                continue;
            }

            if (_log.isDebugEnabled()) {
                _log.debug(e, e);
            } else if (_log.isWarnEnabled()) {
                StringBundler exceptionSB = new StringBundler(6);

                exceptionSB.append("Unable to process layout URL ");
                exceptionSB.append(url);
                exceptionSB.append(" for staged model ");
                exceptionSB.append(stagedModel.getModelClassName());
                exceptionSB.append(" with primary key ");
                exceptionSB.append(stagedModel.getPrimaryKeyObj());

                _log.warn(exceptionSB.toString());
            }
        } finally {
            if (urlSB.length() > 0) {
                urlSB.append(url);

                url = urlSB.toString();
            }

            sb.replace(beginPos + offset, endPos, url);
        }
    }

    return sb.toString();
}

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;//w  w w  . ja v a2  s.c  o m
    }

    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.internal.content.processor.DLReferencesExportImportContentProcessor.java

License:Open Source License

protected String replaceExportDLReferences(PortletDataContext portletDataContext, StagedModel stagedModel,
        String content, boolean exportReferencedContent) throws Exception {

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

    if (group.isStagingGroup()) {
        group = group.getLiveGroup();
    }/*w ww  .  ja v  a  2  s.c  om*/

    if (group.isStaged() && !group.isStagedRemotely() && !group.isStagedPortlet(PortletKeys.DOCUMENT_LIBRARY)) {

        return content;
    }

    StringBuilder sb = new StringBuilder(content);

    String contextPath = _portal.getPathContext();

    String[] patterns = { contextPath.concat("/c/document_library/get_file?"),
            contextPath.concat("/documents/"), contextPath.concat("/image/image_gallery?") };

    int beginPos = -1;
    int endPos = content.length();

    while (true) {
        beginPos = StringUtil.lastIndexOfAny(content, patterns, endPos);

        if (beginPos == -1) {
            break;
        }

        Map<String, String[]> dlReferenceParameters = getDLReferenceParameters(
                portletDataContext.getScopeGroupId(), content, beginPos + contextPath.length(), endPos);

        FileEntry fileEntry = getFileEntry(dlReferenceParameters);

        if (fileEntry == null) {
            endPos = beginPos - 1;

            continue;
        }

        endPos = MapUtil.getInteger(dlReferenceParameters, "endPos");

        try {
            if (exportReferencedContent && !fileEntry.isInTrash()) {
                StagedModelDataHandlerUtil.exportReferenceStagedModel(portletDataContext, stagedModel,
                        fileEntry, PortletDataContext.REFERENCE_TYPE_DEPENDENCY);
            } else {
                Element entityElement = portletDataContext.getExportDataElement(stagedModel);

                String referenceType = PortletDataContext.REFERENCE_TYPE_DEPENDENCY;

                if (fileEntry.isInTrash()) {
                    referenceType = PortletDataContext.REFERENCE_TYPE_DEPENDENCY_DISPOSABLE;
                }

                portletDataContext.addReferenceElement(stagedModel, entityElement, fileEntry, referenceType,
                        true);
            }

            String path = ExportImportPathUtil.getModelPath(fileEntry);

            StringBundler exportedReferenceSB = new StringBundler(6);

            exportedReferenceSB.append("[$dl-reference=");
            exportedReferenceSB.append(path);
            exportedReferenceSB.append("$]");

            if (fileEntry.isInTrash()) {
                String originalReference = sb.substring(beginPos, endPos);

                exportedReferenceSB.append("[#dl-reference=");
                exportedReferenceSB.append(originalReference);
                exportedReferenceSB.append("#]");
            }

            sb.replace(beginPos, endPos, exportedReferenceSB.toString());

            int deleteTimestampParametersOffset = beginPos;

            if (fileEntry.isInTrash()) {
                deleteTimestampParametersOffset = sb.indexOf("[#dl-reference=", beginPos);
            }

            deleteTimestampParameters(sb, deleteTimestampParametersOffset);
        } catch (Exception e) {
            if (_log.isDebugEnabled()) {
                _log.debug(e, e);
            } else if (_log.isWarnEnabled()) {
                StringBundler exceptionSB = new StringBundler(6);

                exceptionSB.append("Unable to process file entry ");
                exceptionSB.append(fileEntry.getFileEntryId());
                exceptionSB.append(" for staged model ");
                exceptionSB.append(stagedModel.getModelClassName());
                exceptionSB.append(" with primary key ");
                exceptionSB.append(stagedModel.getPrimaryKeyObj());

                _log.warn(exceptionSB.toString());
            }
        }

        endPos = beginPos - 1;
    }

    return sb.toString();
}

From source file:com.liferay.exportimport.internal.content.processor.LayoutReferencesExportImportContentProcessor.java

License:Open Source License

protected String replaceExportLayoutReferences(PortletDataContext portletDataContext, StagedModel stagedModel,
        String content) throws Exception {

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

    StringBuilder sb = new StringBuilder(content);

    String[] patterns = { "href=", "[[" };

    int beginPos = -1;
    int endPos = content.length();
    int offset = 0;

    while (true) {
        if (beginPos > -1) {
            endPos = beginPos - 1;/* w  w  w .java  2  s.c  om*/
        }

        beginPos = StringUtil.lastIndexOfAny(content, patterns, endPos);

        if (beginPos == -1) {
            break;
        }

        if (content.startsWith("href=", beginPos)) {
            offset = 5;

            char c = content.charAt(beginPos + offset);

            if ((c == CharPool.APOSTROPHE) || (c == CharPool.QUOTE)) {
                offset++;
            }
        } else if (content.charAt(beginPos) == CharPool.OPEN_BRACKET) {
            offset = 2;
        }

        endPos = StringUtil.indexOfAny(content, _LAYOUT_REFERENCE_STOP_CHARS, beginPos + offset, endPos);

        if (endPos == -1) {
            continue;
        }

        String url = content.substring(beginPos + offset, endPos);

        if (url.endsWith(StringPool.SLASH)) {
            url = url.substring(0, url.length() - 1);
        }

        StringBundler urlSB = new StringBundler(6);

        try {
            url = replaceExportHostname(portletDataContext.getScopeGroupId(), url, urlSB);

            if (!url.startsWith(StringPool.SLASH)) {
                continue;
            }

            String pathContext = _portal.getPathContext();

            if (pathContext.length() > 1) {
                if (!url.startsWith(pathContext)) {
                    continue;
                }

                urlSB.append(_DATA_HANDLER_PATH_CONTEXT);

                url = url.substring(pathContext.length());
            }

            if (!url.startsWith(StringPool.SLASH)) {
                continue;
            }

            int pos = url.indexOf(StringPool.SLASH, 1);

            String localePath = StringPool.BLANK;

            Locale locale = null;

            if (pos != -1) {
                localePath = url.substring(0, pos);

                locale = LocaleUtil.fromLanguageId(localePath.substring(1), true, false);
            }

            if (locale != null) {
                String urlWithoutLocale = url.substring(localePath.length());

                if (urlWithoutLocale.startsWith(_PRIVATE_GROUP_SERVLET_MAPPING)
                        || urlWithoutLocale.startsWith(_PRIVATE_USER_SERVLET_MAPPING)
                        || urlWithoutLocale.startsWith(_PUBLIC_GROUP_SERVLET_MAPPING)) {

                    urlSB.append(localePath);

                    url = urlWithoutLocale;
                }
            }

            boolean privateLayout = false;

            if (url.startsWith(_PRIVATE_GROUP_SERVLET_MAPPING)) {
                urlSB.append(_DATA_HANDLER_PRIVATE_GROUP_SERVLET_MAPPING);

                url = url.substring(_PRIVATE_GROUP_SERVLET_MAPPING.length() - 1);

                privateLayout = true;
            } else if (url.startsWith(_PRIVATE_USER_SERVLET_MAPPING)) {
                urlSB.append(_DATA_HANDLER_PRIVATE_USER_SERVLET_MAPPING);

                url = url.substring(_PRIVATE_USER_SERVLET_MAPPING.length() - 1);

                privateLayout = true;
            } else if (url.startsWith(_PUBLIC_GROUP_SERVLET_MAPPING)) {
                urlSB.append(_DATA_HANDLER_PUBLIC_SERVLET_MAPPING);

                url = url.substring(_PUBLIC_GROUP_SERVLET_MAPPING.length() - 1);
            } else {
                String urlSBString = urlSB.toString();

                LayoutSet layoutSet = null;

                if (urlSBString.contains(_DATA_HANDLER_PUBLIC_LAYOUT_SET_SECURE_URL)
                        || urlSBString.contains(_DATA_HANDLER_PUBLIC_LAYOUT_SET_URL)) {

                    layoutSet = group.getPublicLayoutSet();
                } else if (urlSBString.contains(_DATA_HANDLER_PRIVATE_LAYOUT_SET_SECURE_URL)
                        || urlSBString.contains(_DATA_HANDLER_PRIVATE_LAYOUT_SET_URL)) {

                    layoutSet = group.getPrivateLayoutSet();
                }

                if (layoutSet == null) {
                    continue;
                }

                privateLayout = layoutSet.isPrivateLayout();

                LayoutFriendlyURL layoutFriendlyUrl = _layoutFriendlyURLLocalService
                        .fetchFirstLayoutFriendlyURL(group.getGroupId(), privateLayout, url);

                if (layoutFriendlyUrl == null) {
                    continue;
                }

                if (privateLayout) {
                    if (group.isUser()) {
                        urlSB.append(_DATA_HANDLER_PRIVATE_USER_SERVLET_MAPPING);
                    } else {
                        urlSB.append(_DATA_HANDLER_PRIVATE_GROUP_SERVLET_MAPPING);
                    }
                } else {
                    urlSB.append(_DATA_HANDLER_PUBLIC_SERVLET_MAPPING);
                }

                urlSB.append(_DATA_HANDLER_GROUP_FRIENDLY_URL);

                continue;
            }

            long groupId = group.getGroupId();

            Layout layout = _layoutLocalService.fetchLayoutByFriendlyURL(groupId, privateLayout, url);

            if (layout != null) {
                Element entityElement = portletDataContext.getExportDataElement(stagedModel);

                portletDataContext.addReferenceElement(stagedModel, entityElement, layout,
                        PortletDataContext.REFERENCE_TYPE_DEPENDENCY, true);

                continue;
            }

            pos = url.indexOf(StringPool.SLASH, 1);

            String groupFriendlyURL = url;

            if (pos != -1) {
                groupFriendlyURL = url.substring(0, pos);
            }

            Group urlGroup = _groupLocalService.fetchFriendlyURLGroup(group.getCompanyId(), groupFriendlyURL);

            if (urlGroup == null) {
                throw new NoSuchLayoutException();
            }

            urlSB.append(_DATA_HANDLER_GROUP_FRIENDLY_URL);

            // Append the UUID. This information will be used during the
            // import process when looking up the proper group for the link.

            urlSB.append(StringPool.AT);

            if (urlGroup.isStagedRemotely()) {
                String remoteGroupUuid = urlGroup.getTypeSettingsProperty("remoteGroupUUID");

                if (Validator.isNotNull(remoteGroupUuid)) {
                    urlSB.append(remoteGroupUuid);
                }
            } else if (urlGroup.isStaged()) {
                Group liveGroup = urlGroup.getLiveGroup();

                urlSB.append(liveGroup.getUuid());
            } else if (group.getGroupId() == urlGroup.getGroupId()) {
                urlSB.append(urlGroup.getFriendlyURL());
            } else {
                urlSB.append(urlGroup.getUuid());
            }

            urlSB.append(StringPool.AT);

            String siteAdminURL = GroupConstants.CONTROL_PANEL_FRIENDLY_URL
                    + PropsValues.CONTROL_PANEL_LAYOUT_FRIENDLY_URL;

            if (url.endsWith(siteAdminURL)) {
                urlSB.append(_DATA_HANDLER_SITE_ADMIN_URL);

                url = StringPool.BLANK;

                continue;
            }

            if (pos == -1) {
                url = StringPool.BLANK;

                continue;
            }

            url = url.substring(pos);

            layout = _layoutLocalService.getFriendlyURLLayout(urlGroup.getGroupId(), privateLayout, url);

            Element entityElement = portletDataContext.getExportDataElement(stagedModel);

            portletDataContext.addReferenceElement(stagedModel, entityElement, layout,
                    PortletDataContext.REFERENCE_TYPE_DEPENDENCY, true);
        } catch (Exception e) {
            if (e instanceof NoSuchLayoutException
                    && !_exportImportServiceConfiguration.validateLayoutReferences()) {

                continue;
            }

            if (_log.isDebugEnabled()) {
                _log.debug(e, e);
            } else if (_log.isWarnEnabled()) {
                StringBundler exceptionSB = new StringBundler(6);

                exceptionSB.append("Unable to process layout URL ");
                exceptionSB.append(url);
                exceptionSB.append(" for staged model ");
                exceptionSB.append(stagedModel.getModelClassName());
                exceptionSB.append(" with primary key ");
                exceptionSB.append(stagedModel.getPrimaryKeyObj());

                _log.warn(exceptionSB.toString());
            }
        } finally {
            if (urlSB.length() > 0) {
                urlSB.append(url);

                url = urlSB.toString();
            }

            sb.replace(beginPos + offset, endPos, url);
        }
    }

    return sb.toString();
}

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

License:Open Source License

@Override
public void setPortletScope(PortletDataContext portletDataContext, Element portletElement) {

    // Portlet data scope

    String scopeLayoutUuid = GetterUtil.getString(portletElement.attributeValue("scope-layout-uuid"));
    String scopeLayoutType = GetterUtil.getString(portletElement.attributeValue("scope-layout-type"));

    portletDataContext.setScopeLayoutUuid(scopeLayoutUuid);
    portletDataContext.setScopeType(scopeLayoutType);

    // Layout scope

    try {// ww w.  jav a 2s  . c  o  m
        Group scopeGroup = null;

        if (scopeLayoutType.equals("company")) {
            scopeGroup = _groupLocalService.getCompanyGroup(portletDataContext.getCompanyId());
        } else if (Validator.isNotNull(scopeLayoutUuid)) {
            Layout scopeLayout = _layoutLocalService.getLayoutByUuidAndGroupId(scopeLayoutUuid,
                    portletDataContext.getGroupId(), portletDataContext.isPrivateLayout());

            scopeGroup = _groupLocalService.checkScopeGroup(scopeLayout, portletDataContext.getUserId(null));

            Group group = scopeLayout.getGroup();

            if (group.isStaged() && !group.isStagedRemotely()) {
                try {
                    boolean privateLayout = GetterUtil
                            .getBoolean(portletElement.attributeValue("private-layout"));

                    Layout oldLayout = _layoutLocalService.getLayoutByUuidAndGroupId(scopeLayoutUuid,
                            portletDataContext.getSourceGroupId(), privateLayout);

                    Group oldScopeGroup = oldLayout.getScopeGroup();

                    if (group.isStagingGroup()) {
                        scopeGroup.setLiveGroupId(oldScopeGroup.getGroupId());

                        _groupLocalService.updateGroup(scopeGroup);
                    } else {
                        oldScopeGroup.setLiveGroupId(scopeGroup.getGroupId());

                        _groupLocalService.updateGroup(oldScopeGroup);
                    }
                } catch (NoSuchLayoutException nsle) {
                    if (_log.isWarnEnabled()) {
                        _log.warn(nsle);
                    }
                }
            }

            if (!ExportImportThreadLocal.isStagingInProcess() && group.isStagingGroup()
                    && !group.isStagedPortlet(portletDataContext.getPortletId())) {

                scopeGroup = group.getLiveGroup();

                Layout scopeLiveLayout = _layoutLocalService.fetchLayoutByUuidAndGroupId(scopeLayoutUuid,
                        group.getLiveGroupId(), portletDataContext.isPrivateLayout());

                if (scopeLiveLayout != null) {
                    scopeGroup = _groupLocalService.checkScopeGroup(scopeLiveLayout,
                            portletDataContext.getUserId(null));
                }
            }
        } else {
            Group group = _groupLocalService.getGroup(portletDataContext.getGroupId());

            if (!ExportImportThreadLocal.isStagingInProcess() && group.isStagingGroup()
                    && !group.isStagedPortlet(portletDataContext.getPortletId())) {

                scopeGroup = group.getLiveGroup();
            }
        }

        if (scopeGroup != null) {
            portletDataContext.setScopeGroupId(scopeGroup.getGroupId());

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

            long oldScopeGroupId = GetterUtil.getLong(portletElement.attributeValue("scope-group-id"));

            groupIds.put(oldScopeGroupId, scopeGroup.getGroupId());
        }
    } catch (PortalException pe) {

        // LPS-52675

        if (_log.isDebugEnabled()) {
            _log.debug(pe, pe);
        }
    } catch (Exception e) {
        _log.error(e, e);
    }
}

From source file:com.liferay.exportimport.staging.LayoutStagingImpl.java

License:Open Source License

@Override
public boolean isBranchingLayoutSet(Group group, boolean privateLayout) {
    boolean isStagingGroup = false;

    if (group.isStagingGroup() && !group.isStagedRemotely()) {
        isStagingGroup = true;/*ww w . j a v a2  s  . co m*/

        group = group.getLiveGroup();
    }

    UnicodeProperties typeSettingsProperties = group.getTypeSettingsProperties();

    if (typeSettingsProperties.isEmpty()) {
        return false;
    }

    boolean branchingEnabled = false;

    if (privateLayout) {
        branchingEnabled = GetterUtil.getBoolean(typeSettingsProperties.getProperty("branchingPrivate"));
    } else {
        branchingEnabled = GetterUtil.getBoolean(typeSettingsProperties.getProperty("branchingPublic"));
    }

    if (!branchingEnabled || !group.isStaged() || (!group.isStagedRemotely() && !isStagingGroup)) {

        return false;
    }

    Group stagingGroup = group;

    if (isStagingGroup) {
        stagingGroup = group.getStagingGroup();
    }

    try {
        _layoutSetBranchLocalService.getMasterLayoutSetBranch(stagingGroup.getGroupId(), privateLayout);

        return true;
    } catch (PortalException pe) {

        // LPS-52675

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

        return false;
    }
}

From source file:com.liferay.exportimport.staging.StagingImpl.java

License:Open Source License

@Override
public Group getLiveGroup(Group group) {
    if (group == null) {
        return null;
    }//from   ww w . j  a v a2 s.c  o m

    if (group.isStagingGroup() && !group.isStagedRemotely()) {
        return group.getLiveGroup();
    }

    return group;
}

From source file:com.liferay.exportimport.staging.StagingImpl.java

License:Open Source License

@Override
public Group getLiveGroup(long groupId) {
    if (groupId <= 0) {
        return null;
    }/* w w w .ja va2  s.  c  o  m*/

    Group group = _groupLocalService.fetchGroup(groupId);

    if (group == null) {
        return null;
    }

    if (group.isStagingGroup() && !group.isStagedRemotely()) {
        return group.getLiveGroup();
    }

    return group;
}

From source file:com.liferay.exportimport.staging.StagingImpl.java

License:Open Source License

@Override
public long[] getStagingAndLiveGroupIds(long groupId) throws PortalException {

    Group group = _groupLocalService.fetchGroup(groupId);

    if (group == null) {
        return new long[] { groupId, 0L };
    }// ww  w.ja v a  2s .  co  m

    Group stagingGroup = group.getStagingGroup();

    if (stagingGroup != null) {
        return new long[] { stagingGroup.getGroupId(), groupId };
    }

    Group liveGroup = group.getLiveGroup();

    if (liveGroup != null) {
        return new long[] { groupId, liveGroup.getGroupId() };
    }

    return new long[] { groupId, 0L };
}