001
014
015 package com.liferay.portlet.dynamicdatalists.util;
016
017 import com.liferay.portal.kernel.language.LanguageUtil;
018 import com.liferay.portal.kernel.util.CSVUtil;
019 import com.liferay.portal.kernel.util.CharPool;
020 import com.liferay.portal.kernel.util.LocaleUtil;
021 import com.liferay.portal.kernel.util.OrderByComparator;
022 import com.liferay.portal.kernel.util.StringBundler;
023 import com.liferay.portal.kernel.util.StringPool;
024 import com.liferay.portlet.dynamicdatalists.model.DDLRecord;
025 import com.liferay.portlet.dynamicdatalists.model.DDLRecordSet;
026 import com.liferay.portlet.dynamicdatalists.model.DDLRecordVersion;
027 import com.liferay.portlet.dynamicdatalists.service.DDLRecordLocalServiceUtil;
028 import com.liferay.portlet.dynamicdatalists.service.DDLRecordSetServiceUtil;
029 import com.liferay.portlet.dynamicdatamapping.model.DDMStructure;
030 import com.liferay.portlet.dynamicdatamapping.storage.Field;
031 import com.liferay.portlet.dynamicdatamapping.storage.FieldConstants;
032 import com.liferay.portlet.dynamicdatamapping.storage.Fields;
033 import com.liferay.portlet.dynamicdatamapping.storage.StorageEngineUtil;
034
035 import java.util.List;
036 import java.util.Map;
037
038
042 public class DDLCSVExporter extends BaseDDLExporter {
043
044 @Override
045 protected byte[] doExport(
046 long recordSetId, int status, int start, int end,
047 OrderByComparator orderByComparator)
048 throws Exception {
049
050 DDLRecordSet recordSet = DDLRecordSetServiceUtil.getRecordSet(
051 recordSetId);
052
053 DDMStructure ddmStructure = recordSet.getDDMStructure();
054
055 Map<String, Map<String, String>> fieldsMap = ddmStructure.getFieldsMap(
056 LocaleUtil.toLanguageId(getLocale()));
057
058 StringBundler sb = new StringBundler();
059
060 for (Map<String, String> fieldMap : fieldsMap.values()) {
061 String name = fieldMap.get(FieldConstants.NAME);
062
063 if (ddmStructure.isFieldPrivate(name)) {
064 continue;
065 }
066
067 String label = fieldMap.get(FieldConstants.LABEL);
068
069 sb.append(label);
070 sb.append(CharPool.COMMA);
071 }
072
073 sb.append(LanguageUtil.get(getLocale(), "status"));
074 sb.append(StringPool.NEW_LINE);
075
076 List<DDLRecord> records = DDLRecordLocalServiceUtil.getRecords(
077 recordSetId, status, start, end, orderByComparator);
078
079 for (DDLRecord record : records) {
080 DDLRecordVersion recordVersion = record.getRecordVersion();
081
082 Fields fields = StorageEngineUtil.getFields(
083 recordVersion.getDDMStorageId());
084
085 for (Map<String, String> fieldMap : fieldsMap.values()) {
086 String name = fieldMap.get(FieldConstants.NAME);
087 String value = StringPool.BLANK;
088
089 if (fields.contains(name)) {
090 Field field = fields.get(name);
091
092 if (field.isPrivate()) {
093 continue;
094 }
095
096 value = field.getRenderedValue(getLocale());
097 }
098
099 sb.append(CSVUtil.encode(value));
100 sb.append(CharPool.COMMA);
101 }
102
103 sb.append(getStatusMessage(recordVersion.getStatus()));
104 sb.append(StringPool.NEW_LINE);
105 }
106
107 String csv = sb.toString();
108
109 return csv.getBytes();
110 }
111
112 }