001
014
015 package com.liferay.portlet.documentlibrary.lar.xstream;
016
017 import com.liferay.portal.kernel.bean.BeanPropertiesUtil;
018 import com.liferay.portal.kernel.lar.xstream.BaseXStreamConverter;
019 import com.liferay.portal.repository.liferayrepository.model.LiferayFileEntry;
020 import com.liferay.portal.repository.liferayrepository.model.LiferayFileVersion;
021 import com.liferay.portal.repository.proxy.FileEntryProxyBean;
022 import com.liferay.portal.repository.proxy.FileVersionProxyBean;
023 import com.liferay.portlet.documentlibrary.model.DLFileEntry;
024 import com.liferay.portlet.documentlibrary.model.impl.DLFileEntryImpl;
025
026 import com.thoughtworks.xstream.converters.UnmarshallingContext;
027 import com.thoughtworks.xstream.io.HierarchicalStreamReader;
028
029 import java.util.LinkedList;
030 import java.util.List;
031
032
035 public class FileEntryConverter extends BaseXStreamConverter {
036
037 @Override
038 public boolean canConvert(Class clazz) {
039 return clazz.equals(FileEntryProxyBean.class);
040 }
041
042 @Override
043 public Object unmarshal(
044 HierarchicalStreamReader hierarchicalStreamReader,
045 UnmarshallingContext unmarshallingContext) {
046
047 DLFileEntry dlFileEntry = new DLFileEntryImpl();
048 boolean escapedModel = false;
049
050 LiferayFileVersion liferayFileVersion = null;
051
052 while (hierarchicalStreamReader.hasMoreChildren()) {
053 hierarchicalStreamReader.moveDown();
054
055 String nodeName = hierarchicalStreamReader.getNodeName();
056
057 Class<?> clazz = BeanPropertiesUtil.getObjectType(
058 dlFileEntry, nodeName);
059
060 if (nodeName.equals(FieldConstants.FILE_VERSION)) {
061 clazz = FileVersionProxyBean.class;
062 }
063
064 Object convertedValue = unmarshallingContext.convertAnother(
065 hierarchicalStreamReader.getValue(), clazz);
066
067 if (fields.contains(nodeName)) {
068 if (nodeName.equals(FieldConstants.ESCAPED_MODEL)) {
069 escapedModel = (Boolean)convertedValue;
070 }
071 else if (nodeName.equals(FieldConstants.FILE_VERSION)) {
072 liferayFileVersion = (LiferayFileVersion)convertedValue;
073 }
074 else {
075 BeanPropertiesUtil.setProperty(
076 dlFileEntry, nodeName, convertedValue);
077 }
078 }
079
080 hierarchicalStreamReader.moveUp();
081 }
082
083 LiferayFileEntry liferayFileEntry = new LiferayFileEntry(
084 dlFileEntry, escapedModel);
085
086 liferayFileEntry.setCachedFileVersion(liferayFileVersion);
087
088 return liferayFileEntry;
089 }
090
091 @Override
092 protected List<String> getFields() {
093 return fields;
094 }
095
096 protected static List<String> fields = new LinkedList<String>();
097
098 static {
099 fields.add(FieldConstants.COMPANY_ID);
100 fields.add(FieldConstants.CREATE_DATE);
101 fields.add(FieldConstants.DESCRIPTION);
102 fields.add(FieldConstants.ESCAPED_MODEL);
103 fields.add(FieldConstants.EXTENSION);
104 fields.add(FieldConstants.FILE_ENTRY_ID);
105 fields.add(FieldConstants.FILE_VERSION);
106 fields.add(FieldConstants.FOLDER_ID);
107 fields.add(FieldConstants.GROUP_ID);
108 fields.add(FieldConstants.MANUAL_CHECK_IN_REQUIRED);
109 fields.add(FieldConstants.MIME_TYPE);
110 fields.add(FieldConstants.MODIFIED_DATE);
111 fields.add(FieldConstants.READ_COUNT);
112 fields.add(FieldConstants.REPOSITORY_ID);
113 fields.add(FieldConstants.SIZE);
114 fields.add(FieldConstants.TITLE);
115 fields.add(FieldConstants.USER_ID);
116 fields.add(FieldConstants.USER_NAME);
117 fields.add(FieldConstants.USER_UUID);
118 fields.add(FieldConstants.UUID);
119 fields.add(FieldConstants.VERSION);
120 }
121
122 }