/modules/apps/forms-and-workflow/dynamic-data-lists/dynamic-data-lists-service/src/main/java/com/liferay/dynamic/data/lists/exporter/impl/DDLXMLExporter.java
http://github.com/liferay/liferay-portal · Java · 159 lines · 100 code · 42 blank · 17 comment · 3 complexity · 1b454d3f4d02f214b02a2691d32a2b79 MD5 · raw file
- /**
- * Copyright (c) 2000-present Liferay, Inc. All rights reserved.
- *
- * This library is free software; you can redistribute it and/or modify it under
- * the terms of the GNU Lesser General Public License as published by the Free
- * Software Foundation; either version 2.1 of the License, or (at your option)
- * any later version.
- *
- * This library is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
- * details.
- */
- package com.liferay.dynamic.data.lists.exporter.impl;
- import com.liferay.dynamic.data.lists.exporter.DDLExporter;
- import com.liferay.dynamic.data.lists.model.DDLRecord;
- import com.liferay.dynamic.data.lists.model.DDLRecordSet;
- import com.liferay.dynamic.data.lists.model.DDLRecordVersion;
- import com.liferay.dynamic.data.lists.service.DDLRecordLocalService;
- import com.liferay.dynamic.data.lists.service.DDLRecordSetService;
- import com.liferay.dynamic.data.mapping.model.DDMFormField;
- import com.liferay.dynamic.data.mapping.model.DDMStructure;
- import com.liferay.dynamic.data.mapping.model.LocalizedValue;
- import com.liferay.dynamic.data.mapping.storage.DDMFormValues;
- import com.liferay.dynamic.data.mapping.storage.Field;
- import com.liferay.dynamic.data.mapping.storage.Fields;
- import com.liferay.dynamic.data.mapping.storage.StorageEngine;
- import com.liferay.dynamic.data.mapping.util.DDMFormValuesToFieldsConverter;
- import com.liferay.portal.kernel.language.LanguageUtil;
- import com.liferay.portal.kernel.util.OrderByComparator;
- import com.liferay.portal.kernel.util.StringPool;
- import com.liferay.portal.kernel.xml.Document;
- import com.liferay.portal.kernel.xml.Element;
- import com.liferay.portal.kernel.xml.SAXReaderUtil;
- import java.io.Serializable;
- import java.util.List;
- import org.osgi.service.component.annotations.Component;
- import org.osgi.service.component.annotations.Reference;
- /**
- * @author Marcellus Tavares
- * @author Manuel de la PeĂąa
- */
- @Component(immediate = true, service = DDLExporter.class)
- public class DDLXMLExporter extends BaseDDLExporter {
- @Override
- public String getFormat() {
- return "xml";
- }
- protected void addFieldElement(
- Element fieldsElement, String label, Serializable value) {
- Element fieldElement = fieldsElement.addElement("field");
- Element labelElement = fieldElement.addElement("label");
- labelElement.addText(label);
- Element valueElement = fieldElement.addElement("value");
- valueElement.addText(String.valueOf(value));
- }
- @Override
- protected byte[] doExport(
- long recordSetId, int status, int start, int end,
- OrderByComparator<DDLRecord> orderByComparator)
- throws Exception {
- DDLRecordSet recordSet = _ddlRecordSetService.getRecordSet(recordSetId);
- DDMStructure ddmStructure = recordSet.getDDMStructure();
- List<DDMFormField> ddmFormFields = getDDMFormFields(ddmStructure);
- Document document = SAXReaderUtil.createDocument();
- Element rootElement = document.addElement("root");
- List<DDLRecord> records = _ddlRecordLocalService.getRecords(
- recordSetId, status, start, end, orderByComparator);
- for (DDLRecord record : records) {
- Element fieldsElement = rootElement.addElement("fields");
- DDLRecordVersion recordVersion = record.getRecordVersion();
- DDMFormValues ddmFormValues = _storageEngine.getDDMFormValues(
- recordVersion.getDDMStorageId());
- Fields fields = _ddmFormValuesToFieldsConverter.convert(
- ddmStructure, ddmFormValues);
- for (DDMFormField ddmFormField : ddmFormFields) {
- LocalizedValue label = ddmFormField.getLabel();
- String name = ddmFormField.getName();
- String value = StringPool.BLANK;
- if (fields.contains(name)) {
- Field field = fields.get(name);
- value = field.getRenderedValue(getLocale());
- }
- addFieldElement(
- fieldsElement, label.getString(getLocale()), value);
- }
- addFieldElement(
- fieldsElement, LanguageUtil.get(getLocale(), "status"),
- getStatusMessage(recordVersion.getStatus()));
- }
- String xml = document.asXML();
- return xml.getBytes();
- }
- @Reference(unbind = "-")
- protected void setDDLRecordLocalService(
- DDLRecordLocalService ddlRecordLocalService) {
- _ddlRecordLocalService = ddlRecordLocalService;
- }
- @Reference(unbind = "-")
- protected void setDDLRecordSetService(
- DDLRecordSetService ddlRecordSetService) {
- _ddlRecordSetService = ddlRecordSetService;
- }
- @Reference(unbind = "-")
- protected void setDDMFormValuesToFieldsConverter(
- DDMFormValuesToFieldsConverter ddmFormValuesToFieldsConverter) {
- _ddmFormValuesToFieldsConverter = ddmFormValuesToFieldsConverter;
- }
- @Reference(unbind = "-")
- protected void setStorageEngine(StorageEngine storageEngine) {
- _storageEngine = storageEngine;
- }
- private DDLRecordLocalService _ddlRecordLocalService;
- private DDLRecordSetService _ddlRecordSetService;
- private DDMFormValuesToFieldsConverter _ddmFormValuesToFieldsConverter;
- private StorageEngine _storageEngine;
- }