Example usage for com.liferay.portal.kernel.xml SAXReaderUtil createDocument

List of usage examples for com.liferay.portal.kernel.xml SAXReaderUtil createDocument

Introduction

In this page you can find the example usage for com.liferay.portal.kernel.xml SAXReaderUtil createDocument.

Prototype

public static Document createDocument() 

Source Link

Usage

From source file:com.liferay.dynamic.data.mapping.internal.upgrade.v1_0_0.UpgradeDynamicDataMappingTest.java

License:Open Source License

@Test
public void testToJSONWithLocalizedAndNestedData() throws Exception {
    DDMForm ddmForm = new DDMForm();

    ddmForm.setAvailableLocales(createAvailableLocales(LocaleUtil.US));
    ddmForm.setDefaultLocale(LocaleUtil.US);

    DDMFormField textDDMFormField = new DDMFormField("Text", "text");

    textDDMFormField.setDataType("string");
    textDDMFormField.setLocalizable(true);
    textDDMFormField.setRepeatable(true);

    DDMFormField textAreaDDMFormField = new DDMFormField("TextArea", "textarea");

    textAreaDDMFormField.setDataType("string");
    textAreaDDMFormField.setLocalizable(true);
    textAreaDDMFormField.setRepeatable(true);

    textDDMFormField.addNestedDDMFormField(textAreaDDMFormField);

    ddmForm.addDDMFormField(textDDMFormField);

    // DDM form values

    DDMFormValues ddmFormValues = new DDMFormValues(ddmForm);

    ddmFormValues.setAvailableLocales(createAvailableLocales(LocaleUtil.BRAZIL, LocaleUtil.US));
    ddmFormValues.setDefaultLocale(LocaleUtil.US);

    DDMFormFieldValue text1DDMFormFieldValue = createDDMFormFieldValue("srfa", "Text",
            createLocalizedValue("En Text Value 1", "Pt Text Value 1", LocaleUtil.US));

    text1DDMFormFieldValue.addNestedDDMFormFieldValue(createDDMFormFieldValue("elcy", "TextArea",
            createLocalizedValue("En Text Area Value 1", "Pt Text Area Value 1", LocaleUtil.US)));
    text1DDMFormFieldValue.addNestedDDMFormFieldValue(createDDMFormFieldValue("uxyj", "TextArea",
            createLocalizedValue("En Text Area Value 2", "Pt Text Area Value 2", LocaleUtil.US)));

    ddmFormValues.addDDMFormFieldValue(text1DDMFormFieldValue);

    DDMFormFieldValue text2DDMFormFieldValue = createDDMFormFieldValue("ealq", "Text",
            createLocalizedValue("En Text Value 2", "Pt Text Value 2", LocaleUtil.US));

    text2DDMFormFieldValue.addNestedDDMFormFieldValue(createDDMFormFieldValue("eepy", "TextArea",
            createLocalizedValue("En Text Area Value 3", "Pt Text Area Value 3", LocaleUtil.US)));

    ddmFormValues.addDDMFormFieldValue(text2DDMFormFieldValue);

    // XML//from w  w  w . j  av a 2  s.c om

    Document document = SAXReaderUtil.createDocument();

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

    rootElement.addAttribute("default-locale", "en_US");
    rootElement.addAttribute("available-locales", "en_US,pt_BR");

    addDynamicElementElement(rootElement, "Text", new String[] { "En Text Value 1", "En Text Value 2" },
            new String[] { "Pt Text Value 1", "Pt Text Value 2" });
    addDynamicElementElement(rootElement, "TextArea",
            new String[] { "En Text Area Value 1", "En Text Area Value 2", "En Text Area Value 3" },
            new String[] { "Pt Text Area Value 1", "Pt Text Area Value 2", "Pt Text Area Value 3" });
    addDynamicElementElement(rootElement, "_fieldsDisplay",
            new String[] { "Text_INSTANCE_srfa,TextArea_INSTANCE_elcy,"
                    + "TextArea_INSTANCE_uxyj,Text_INSTANCE_ealq," + "TextArea_INSTANCE_eepy" });

    String expectedJSON = _ddmFormValuesJSONSerializer.serialize(ddmFormValues);

    DDMFormValues actualDDMFormValues = _upgradeDynamicDataMapping.getDDMFormValues(1L, ddmForm,
            document.asXML());

    String actualJSON = _upgradeDynamicDataMapping.toJSON(actualDDMFormValues);

    JSONAssert.assertEquals(expectedJSON, actualJSON, false);
}

From source file:com.liferay.dynamic.data.mapping.internal.upgrade.v1_0_0.UpgradeDynamicDataMappingTest.java

License:Open Source License

@Test
public void testToJSONWithLocalizedData() throws Exception {
    DDMForm ddmForm = new DDMForm();

    ddmForm.setAvailableLocales(createAvailableLocales(LocaleUtil.US));
    ddmForm.setDefaultLocale(LocaleUtil.US);

    DDMFormField textDDMFormField = new DDMFormField("Text", "text");

    textDDMFormField.setDataType("string");
    textDDMFormField.setLocalizable(true);
    textDDMFormField.setRepeatable(true);

    ddmForm.addDDMFormField(textDDMFormField);

    DDMFormField textAreaDDMFormField = new DDMFormField("TextArea", "textarea");

    textAreaDDMFormField.setDataType("string");
    textAreaDDMFormField.setLocalizable(true);
    textAreaDDMFormField.setRepeatable(true);

    ddmForm.addDDMFormField(textAreaDDMFormField);

    DDMFormField integerDDMFormField = new DDMFormField("Integer", "ddm-integer");

    integerDDMFormField.setDataType("integer");
    integerDDMFormField.setLocalizable(false);
    integerDDMFormField.setRepeatable(false);

    ddmForm.addDDMFormField(integerDDMFormField);

    // DDM form values

    DDMFormValues ddmFormValues = new DDMFormValues(ddmForm);

    ddmFormValues.setAvailableLocales(createAvailableLocales(LocaleUtil.BRAZIL, LocaleUtil.US));
    ddmFormValues.setDefaultLocale(LocaleUtil.US);

    ddmFormValues.addDDMFormFieldValue(createDDMFormFieldValue("srfa", "Text",
            createLocalizedValue("En Text Value 1", "Pt Text Value 1", LocaleUtil.US)));
    ddmFormValues.addDDMFormFieldValue(createDDMFormFieldValue("ealq", "Text",
            createLocalizedValue("En Text Value 2", "Pt Text Value 2", LocaleUtil.US)));
    ddmFormValues.addDDMFormFieldValue(createDDMFormFieldValue("elcy", "TextArea",
            createLocalizedValue("En Text Area Value 1", "Pt Text Area Value 1", LocaleUtil.US)));
    ddmFormValues.addDDMFormFieldValue(createDDMFormFieldValue("uxyj", "TextArea",
            createLocalizedValue("En Text Area Value 2", "Pt Text Area Value 2", LocaleUtil.US)));
    ddmFormValues.addDDMFormFieldValue(createDDMFormFieldValue("eepy", "TextArea",
            createLocalizedValue("En Text Area Value 3", "Pt Text Area Value 3", LocaleUtil.US)));
    ddmFormValues.addDDMFormFieldValue(createDDMFormFieldValue("ckkp", "Integer", new UnlocalizedValue("1")));

    // XML/*from  w  w  w.  j a v  a  2 s  . c  o  m*/

    Document document = SAXReaderUtil.createDocument();

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

    rootElement.addAttribute("default-locale", "en_US");
    rootElement.addAttribute("available-locales", "en_US,pt_BR");

    addDynamicElementElement(rootElement, "Text", new String[] { "En Text Value 1", "En Text Value 2" },
            new String[] { "Pt Text Value 1", "Pt Text Value 2" });
    addDynamicElementElement(rootElement, "TextArea",
            new String[] { "En Text Area Value 1", "En Text Area Value 2", "En Text Area Value 3" },
            new String[] { "Pt Text Area Value 1", "Pt Text Area Value 2", "Pt Text Area Value 3" });
    addDynamicElementElement(rootElement, "Integer", new String[] { "1" });
    addDynamicElementElement(rootElement, "_fieldsDisplay",
            new String[] {
                    "Text_INSTANCE_srfa,Text_INSTANCE_ealq," + "TextArea_INSTANCE_elcy,TextArea_INSTANCE_uxyj,"
                            + "TextArea_INSTANCE_eepy,Integer_INSTANCE_ckkp" });

    String expectedJSON = _ddmFormValuesJSONSerializer.serialize(ddmFormValues);

    DDMFormValues actualDDMFormValues = _upgradeDynamicDataMapping.getDDMFormValues(1L, ddmForm,
            document.asXML());

    String actualJSON = _upgradeDynamicDataMapping.toJSON(actualDDMFormValues);

    JSONAssert.assertEquals(expectedJSON, actualJSON, false);
}

From source file:com.liferay.dynamic.data.mapping.internal.upgrade.v1_0_0.UpgradeDynamicDataMappingTest.java

License:Open Source License

@Test
public void testToJSONWithoutLocalizedData() throws Exception {
    DDMForm ddmForm = new DDMForm();

    ddmForm.setAvailableLocales(createAvailableLocales(LocaleUtil.US));
    ddmForm.setDefaultLocale(LocaleUtil.US);

    DDMFormField textDDMFormField = new DDMFormField("Text", "text");

    textDDMFormField.setDataType("string");
    textDDMFormField.setLocalizable(false);
    textDDMFormField.setRepeatable(false);

    ddmForm.addDDMFormField(textDDMFormField);

    DDMFormField textAreaDDMFormField = new DDMFormField("TextArea", "textarea");

    textAreaDDMFormField.setDataType("string");
    textAreaDDMFormField.setLocalizable(false);
    textAreaDDMFormField.setRepeatable(true);

    ddmForm.addDDMFormField(textAreaDDMFormField);

    // DDM form values

    DDMFormValues ddmFormValues = new DDMFormValues(ddmForm);

    ddmFormValues.setAvailableLocales(createAvailableLocales(LocaleUtil.US));
    ddmFormValues.setDefaultLocale(LocaleUtil.US);

    ddmFormValues/*from   w w  w .  j  av a 2 s. c o m*/
            .addDDMFormFieldValue(createDDMFormFieldValue("hcxo", "Text", new UnlocalizedValue("Text Value")));
    ddmFormValues.addDDMFormFieldValue(
            createDDMFormFieldValue("vfqd", "TextArea", new UnlocalizedValue("Text Area Value 1")));
    ddmFormValues.addDDMFormFieldValue(
            createDDMFormFieldValue("ycey", "TextArea", new UnlocalizedValue("Text Area Value 2")));
    ddmFormValues.addDDMFormFieldValue(
            createDDMFormFieldValue("habt", "TextArea", new UnlocalizedValue("Text Area Value 3")));

    // XML

    Document document = SAXReaderUtil.createDocument();

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

    rootElement.addAttribute("default-locale", "en_US");
    rootElement.addAttribute("available-locales", "en_US");

    addDynamicElementElement(rootElement, "Text", new String[] { "Text Value" });
    addDynamicElementElement(rootElement, "TextArea",
            new String[] { "Text Area Value 1", "Text Area Value 2", "Text Area Value 3" });
    addDynamicElementElement(rootElement, "_fieldsDisplay", new String[] {
            "Text_INSTANCE_hcxo,TextArea_INSTANCE_vfqd," + "TextArea_INSTANCE_ycey,TextArea_INSTANCE_habt" });

    String expectedJSON = _ddmFormValuesJSONSerializer.serialize(ddmFormValues);

    DDMFormValues actualDDMFormValues = _upgradeDynamicDataMapping.getDDMFormValues(1L, ddmForm,
            document.asXML());

    String actualJSON = _upgradeDynamicDataMapping.toJSON(actualDDMFormValues);

    JSONAssert.assertEquals(expectedJSON, actualJSON, false);
}

From source file:com.liferay.dynamic.data.mapping.io.internal.exporter.DDMFormXMLExporter.java

License:Open Source License

@Override
protected byte[] doExport(long formInstanceId, int status, int start, int end,
        OrderByComparator<DDMFormInstanceRecord> orderByComparator) throws Exception {

    Map<String, DDMFormField> ddmFormFields = getDistinctFields(formInstanceId);

    Document document = SAXReaderUtil.createDocument();

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

    List<DDMFormInstanceRecord> formInstanceRecords = _ddmFormInstanceRecordLocalService
            .getFormInstanceRecords(formInstanceId, status, start, end, orderByComparator);

    DateTimeFormatter dateTimeFormatter = getDateTimeFormatter();

    for (DDMFormInstanceRecord formInstanceRecord : formInstanceRecords) {
        Element fieldsElement = rootElement.addElement("fields");

        DDMFormInstanceRecordVersion recordVersion = formInstanceRecord.getFormInstanceRecordVersion();

        DDMFormValues ddmFormValues = _storageEngine.getDDMFormValues(recordVersion.getStorageId());

        Map<String, DDMFormFieldRenderedValue> values = getRenderedValues(ddmFormFields.values(),
                ddmFormValues);/*from w ww  .j a  va 2s.  co m*/

        for (Map.Entry<String, DDMFormField> entry : ddmFormFields.entrySet()) {

            DDMFormFieldRenderedValue ddmFormFieldRenderedValue = values.get(entry.getKey());

            addFieldElement(ddmFormFieldRenderedValue, fieldsElement, entry);
        }

        Locale locale = getLocale();

        addFieldElement(fieldsElement, LanguageUtil.get(locale, "status"),
                getStatusMessage(recordVersion.getStatus()));

        addFieldElement(fieldsElement, LanguageUtil.get(locale, "modified-date"),
                formatDate(recordVersion.getStatusDate(), dateTimeFormatter));

        addFieldElement(fieldsElement, LanguageUtil.get(locale, "author"), recordVersion.getUserName());
    }

    String xml = document.asXML();

    return xml.getBytes();
}

From source file:com.liferay.dynamic.data.mapping.test.util.DDMStructureTestUtil.java

License:Open Source License

protected static Document createDocumentContent(String availableLocales, String defaultLocale) {

    Document document = SAXReaderUtil.createDocument();

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

    rootElement.addAttribute("available-locales", availableLocales);
    rootElement.addAttribute("default-locale", defaultLocale);
    rootElement.addElement("request");

    return document;
}

From source file:com.liferay.dynamic.data.mapping.test.util.DDMStructureTestUtil.java

License:Open Source License

protected static Document createDocumentStructure(Locale[] availableLocales, Locale defaultLocale) {

    Document document = SAXReaderUtil.createDocument();

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

    rootElement.addAttribute("available-locales", StringUtil.merge(LocaleUtil.toLanguageIds(availableLocales)));
    rootElement.addAttribute("default-locale", LocaleUtil.toLanguageId(defaultLocale));

    return document;
}

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  ww  w .j a  va2s  .  com

    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 a v  a  2  s  . 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.PortletExportController.java

License:Open Source License

protected File doExport(PortletDataContext portletDataContext) throws Exception {

    boolean exportPermissions = MapUtil.getBoolean(portletDataContext.getParameterMap(),
            PortletDataHandlerKeys.PERMISSIONS);

    if (_log.isDebugEnabled()) {
        _log.debug("Export permissions " + exportPermissions);
    }/* w w  w .  j  a v  a  2  s  .com*/

    StopWatch stopWatch = new StopWatch();

    stopWatch.start();

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

    if (!layout.isTypeControlPanel() && !layout.isTypePanel() && !layout.isTypePortlet()) {

        StringBundler sb = new StringBundler(4);

        sb.append("Unable to export layout ");
        sb.append(layout.getPlid());
        sb.append(" because it has an invalid type: ");
        sb.append(layout.getType());

        throw new LayoutImportException(sb.toString());
    }

    ServiceContext serviceContext = ServiceContextThreadLocal.getServiceContext();

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

        serviceContext.setCompanyId(layout.getCompanyId());
        serviceContext.setSignedIn(false);

        long defaultUserId = _userLocalService.getDefaultUserId(layout.getCompanyId());

        serviceContext.setUserId(defaultUserId);

        ServiceContextThreadLocal.pushServiceContext(serviceContext);
    }

    long layoutSetBranchId = MapUtil.getLong(portletDataContext.getParameterMap(), "layoutSetBranchId");

    serviceContext.setAttribute("layoutSetBranchId", layoutSetBranchId);

    long scopeGroupId = portletDataContext.getGroupId();

    javax.portlet.PortletPreferences jxPortletPreferences = PortletPreferencesFactoryUtil
            .getLayoutPortletSetup(layout, portletDataContext.getPortletId());

    String scopeType = GetterUtil.getString(jxPortletPreferences.getValue("lfrScopeType", null));
    String scopeLayoutUuid = GetterUtil.getString(jxPortletPreferences.getValue("lfrScopeLayoutUuid", null));

    if (Validator.isNotNull(scopeType)) {
        Group scopeGroup = null;

        if (scopeType.equals("company")) {
            scopeGroup = _groupLocalService.getCompanyGroup(layout.getCompanyId());
        } else if (Validator.isNotNull(scopeLayoutUuid)) {
            scopeGroup = layout.getScopeGroup();
        }

        if (scopeGroup != null) {
            scopeGroupId = scopeGroup.getGroupId();
        }
    }

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

    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(_portal.getSiteGroupId(portletDataContext.getScopeGroupId()))));
    headerElement.addAttribute("build-number", String.valueOf(ReleaseInfo.getBuildNumber()));
    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("type", portletDataContext.getType());
    headerElement.addAttribute("company-id", String.valueOf(portletDataContext.getCompanyId()));
    headerElement.addAttribute("company-group-id", String.valueOf(portletDataContext.getCompanyGroupId()));
    headerElement.addAttribute("group-id", String.valueOf(scopeGroupId));
    headerElement.addAttribute("user-personal-site-group-id",
            String.valueOf(portletDataContext.getUserPersonalSiteGroupId()));
    headerElement.addAttribute("private-layout", String.valueOf(layout.isPrivateLayout()));
    headerElement.addAttribute("root-portlet-id", portletDataContext.getRootPortletId());
    headerElement.addAttribute("schema-version", ExportImportConstants.EXPORT_IMPORT_SCHEMA_VERSION);

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

    portletDataContext.setMissingReferencesElement(missingReferencesElement);

    Map<String, Boolean> exportPortletControlsMap = _exportImportHelper.getExportPortletControlsMap(
            layout.getCompanyId(), portletDataContext.getPortletId(), portletDataContext.getParameterMap());

    exportPortlet(portletDataContext, layout.getPlid(), rootElement, exportPermissions,
            exportPortletControlsMap.get(PortletDataHandlerKeys.PORTLET_ARCHIVED_SETUPS),
            exportPortletControlsMap.get(PortletDataHandlerKeys.PORTLET_DATA),
            exportPortletControlsMap.get(PortletDataHandlerKeys.PORTLET_SETUP),
            exportPortletControlsMap.get(PortletDataHandlerKeys.PORTLET_USER_PREFERENCES));
    exportService(portletDataContext, rootElement,
            exportPortletControlsMap.get(PortletDataHandlerKeys.PORTLET_SETUP));

    exportAssetLinks(portletDataContext);
    exportExpandoTables(portletDataContext);
    exportLocks(portletDataContext);

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

    _deletionSystemEventExporter.exportDeletionSystemEvents(portletDataContext);

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

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

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

    try {
        portletDataContext.addZipEntry("/manifest.xml", document.formattedString());
    } catch (IOException ioe) {
        throw new SystemException("Unable to create the export LAR manifest file for portlet "
                + portletDataContext.getPortletId(), ioe);
    }

    ZipWriter zipWriter = portletDataContext.getZipWriter();

    return zipWriter.getFile();
}

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

License:Open Source License

protected void exportAssetLinks(PortletDataContext portletDataContext) throws Exception {

    Document document = SAXReaderUtil.createDocument();

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

    Element exportDataRootElement = portletDataContext.getExportDataRootElement();

    try {/*from  w  w w.ja va 2s  .  c  o  m*/
        portletDataContext.setExportDataRootElement(rootElement);

        ActionableDynamicQuery linkActionableDynamicQuery = _assetLinkLocalService
                .getExportActionbleDynamicQuery(portletDataContext);

        linkActionableDynamicQuery.performActions();

        for (long linkId : portletDataContext.getAssetLinkIds()) {
            AssetLink assetLink = _assetLinkLocalService.getAssetLink(linkId);

            StagedAssetLink stagedAssetLink = ModelAdapterUtil.adapt(assetLink, AssetLink.class,
                    StagedAssetLink.class);

            portletDataContext.addClassedModel(portletDataContext.getExportDataElement(stagedAssetLink),
                    ExportImportPathUtil.getModelPath(stagedAssetLink), stagedAssetLink);
        }
    } finally {
        portletDataContext.setExportDataRootElement(exportDataRootElement);
    }

    portletDataContext.addZipEntry(ExportImportPathUtil.getRootPath(portletDataContext) + "/links.xml",
            document.formattedString());
}