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.LiferayFolder;
020 import com.liferay.portal.repository.proxy.FolderProxyBean;
021 import com.liferay.portlet.documentlibrary.model.DLFolder;
022 import com.liferay.portlet.documentlibrary.model.impl.DLFolderImpl;
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 FolderConverter extends BaseXStreamConverter {
034
035 @Override
036 public boolean canConvert(Class clazz) {
037 return clazz.equals(FolderProxyBean.class);
038 }
039
040 @Override
041 public Object unmarshal(
042 HierarchicalStreamReader hierarchicalStreamReader,
043 UnmarshallingContext unmarshallingContext) {
044
045 DLFolder dlFolder = new DLFolderImpl();
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 dlFolder, 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 dlFolder, nodeName, convertedValue);
066 }
067 }
068
069 hierarchicalStreamReader.moveUp();
070 }
071
072 return new LiferayFolder(dlFolder, 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.COMPANY_ID);
084 fields.add(FieldConstants.CREATE_DATE);
085 fields.add(FieldConstants.DESCRIPTION);
086 fields.add(FieldConstants.ESCAPED_MODEL);
087 fields.add(FieldConstants.FOLDER_ID);
088 fields.add(FieldConstants.GROUP_ID);
089 fields.add(FieldConstants.LAST_POST_DATE);
090 fields.add(FieldConstants.MODIFIED_DATE);
091 fields.add(FieldConstants.MOUNT_POINT);
092 fields.add(FieldConstants.NAME);
093 fields.add(FieldConstants.PARENT_FOLDER_ID);
094 fields.add(FieldConstants.REPOSITORY_ID);
095 fields.add(FieldConstants.USER_ID);
096 fields.add(FieldConstants.USER_NAME);
097 fields.add(FieldConstants.USER_UUID);
098 fields.add(FieldConstants.UUID);
099 }
100
101 }