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 @Override
041 protected byte[] doExport(
042 long recordSetId, int status, int start, int end,
043 OrderByComparator orderByComparator)
044 throws Exception {
045
046 DDLRecordSet recordSet = DDLRecordSetServiceUtil.getRecordSet(
047 recordSetId);
048
049 DDMStructure ddmStructure = recordSet.getDDMStructure();
050
051 Map<String, Map<String, String>> fieldsMap =
052 ddmStructure.getFieldsMap();
053
054 Document document = SAXReaderUtil.createDocument();
055
056 Element rootElement = document.addElement("root");
057
058 List<DDLRecord> records = DDLRecordLocalServiceUtil.getRecords(
059 recordSetId, status, start, end, orderByComparator);
060
061 for (DDLRecord record : records) {
062 Element fieldsElement = rootElement.addElement("fields");
063
064 Fields fields = record.getFields();
065
066 for (Map<String, String> fieldMap : fieldsMap.values()) {
067 String label = fieldMap.get(FieldConstants.LABEL);
068 String name = fieldMap.get(FieldConstants.NAME);
069
070 Field field = fields.get(name);
071
072 Serializable value = field.getValue();
073
074 addFieldElement(fieldsElement, label, value);
075 }
076 }
077
078 String xml = document.asXML();
079
080 return xml.getBytes();
081 }
082
083 protected void addFieldElement(
084 Element fieldsElement, String label, Serializable value) {
085
086 Element fieldElement = fieldsElement.addElement("field");
087
088 Element labelElement = fieldElement.addElement("label");
089
090 labelElement.addText(label);
091
092 Element valueElement = fieldElement.addElement("value");
093
094 valueElement.addText(String.valueOf(value));
095 }
096
097 }