001
014
015 package com.liferay.portlet.dynamicdatalists.util;
016
017 import com.liferay.portal.kernel.util.OrderByComparator;
018 import com.liferay.portal.kernel.xml.Document;
019 import com.liferay.portal.kernel.xml.Element;
020 import com.liferay.portal.kernel.xml.SAXReaderUtil;
021 import com.liferay.portlet.dynamicdatalists.model.DDLRecord;
022 import com.liferay.portlet.dynamicdatalists.model.DDLRecordSet;
023 import com.liferay.portlet.dynamicdatalists.service.DDLRecordLocalServiceUtil;
024 import com.liferay.portlet.dynamicdatalists.service.DDLRecordSetServiceUtil;
025 import com.liferay.portlet.dynamicdatamapping.model.DDMStructure;
026 import com.liferay.portlet.dynamicdatamapping.storage.Field;
027 import com.liferay.portlet.dynamicdatamapping.storage.FieldConstants;
028 import com.liferay.portlet.dynamicdatamapping.storage.Fields;
029
030 import java.io.Serializable;
031
032 import java.util.List;
033 import java.util.Map;
034
035
038 public class DDLXMLExporter extends BaseDDLExporter {
039
040 protected void addFieldElement(
041 Element fieldsElement, String label, Serializable value) {
042
043 Element fieldElement = fieldsElement.addElement("field");
044
045 Element labelElement = fieldElement.addElement("label");
046
047 labelElement.addText(label);
048
049 Element valueElement = fieldElement.addElement("value");
050
051 valueElement.addText(String.valueOf(value));
052 }
053
054 @Override
055 protected byte[] doExport(
056 long recordSetId, int status, int start, int end,
057 OrderByComparator orderByComparator)
058 throws Exception {
059
060 DDLRecordSet recordSet = DDLRecordSetServiceUtil.getRecordSet(
061 recordSetId);
062
063 DDMStructure ddmStructure = recordSet.getDDMStructure();
064
065 Map<String, Map<String, String>> fieldsMap =
066 ddmStructure.getFieldsMap();
067
068 Document document = SAXReaderUtil.createDocument();
069
070 Element rootElement = document.addElement("root");
071
072 List<DDLRecord> records = DDLRecordLocalServiceUtil.getRecords(
073 recordSetId, status, start, end, orderByComparator);
074
075 for (DDLRecord record : records) {
076 Element fieldsElement = rootElement.addElement("fields");
077
078 Fields fields = record.getFields();
079
080 for (Map<String, String> fieldMap : fieldsMap.values()) {
081 String label = fieldMap.get(FieldConstants.LABEL);
082 String name = fieldMap.get(FieldConstants.NAME);
083
084 Field field = fields.get(name);
085
086 Serializable value = field.getValue();
087
088 addFieldElement(fieldsElement, label, value);
089 }
090 }
091
092 String xml = document.asXML();
093
094 return xml.getBytes();
095 }
096
097 }