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.LiferayFileVersion;
020 import com.liferay.portal.repository.proxy.FileVersionProxyBean;
021 import com.liferay.portlet.documentlibrary.model.DLFileVersion;
022 import com.liferay.portlet.documentlibrary.model.impl.DLFileVersionImpl;
023
024 import com.thoughtworks.xstream.converters.UnmarshallingContext;
025 import com.thoughtworks.xstream.io.HierarchicalStreamReader;
026
027 import java.util.LinkedList;
028 import java.util.List;
029
030
033 public class FileVersionConverter extends BaseXStreamConverter {
034
035 @Override
036 public boolean canConvert(Class clazz) {
037 return clazz.equals(FileVersionProxyBean.class);
038 }
039
040 @Override
041 public Object unmarshal(
042 HierarchicalStreamReader hierarchicalStreamReader,
043 UnmarshallingContext unmarshallingContext) {
044
045 DLFileVersion dlFileVersion = new DLFileVersionImpl();
046 boolean escapedModel = false;
047
048 while (hierarchicalStreamReader.hasMoreChildren()) {
049 hierarchicalStreamReader.moveDown();
050
051 String nodeName = hierarchicalStreamReader.getNodeName();
052
053 Class<?> clazz = BeanPropertiesUtil.getObjectType(
054 dlFileVersion, nodeName);
055
056 Object convertedValue = unmarshallingContext.convertAnother(
057 hierarchicalStreamReader.getValue(), clazz);
058
059 if (fields.contains(nodeName)) {
060 if (nodeName.equals(FieldConstants.ESCAPED_MODEL)) {
061 escapedModel = (Boolean)convertedValue;
062 }
063 else {
064 BeanPropertiesUtil.setProperty(
065 dlFileVersion, nodeName, convertedValue);
066 }
067 }
068
069 hierarchicalStreamReader.moveUp();
070 }
071
072 return new LiferayFileVersion(dlFileVersion, escapedModel);
073 }
074
075 @Override
076 protected List<String> getFields() {
077 return fields;
078 }
079
080 protected static List<String> fields = new LinkedList<String>();
081
082 static {
083 fields.add(FieldConstants.CHANGE_LOG);
084 fields.add(FieldConstants.COMPANY_ID);
085 fields.add(FieldConstants.CREATE_DATE);
086 fields.add(FieldConstants.DESCRIPTION);
087 fields.add(FieldConstants.ESCAPED_MODEL);
088 fields.add(FieldConstants.EXTENSION);
089 fields.add(FieldConstants.EXTRA_SETTINGS);
090 fields.add(FieldConstants.FILE_ENTRY_ID);
091 fields.add(FieldConstants.FILE_VERSION_ID);
092 fields.add(FieldConstants.GROUP_ID);
093 fields.add(FieldConstants.MIME_TYPE);
094 fields.add(FieldConstants.MODIFIED_DATE);
095 fields.add(FieldConstants.REPOSITORY_ID);
096 fields.add(FieldConstants.SIZE);
097 fields.add(FieldConstants.STATUS);
098 fields.add(FieldConstants.STATUS_BY_USER_ID);
099 fields.add(FieldConstants.STATUS_BY_USER_NAME);
100 fields.add(FieldConstants.STATUS_DATE);
101 fields.add(FieldConstants.TITLE);
102 fields.add(FieldConstants.USER_ID);
103 fields.add(FieldConstants.USER_NAME);
104 fields.add(FieldConstants.UUID);
105 fields.add(FieldConstants.VERSION);
106 }
107
108 }