001 package com.khubla.pragmatach.plugin.mongodb.serializer;
002
003 import java.lang.reflect.Field;
004
005 import org.apache.commons.beanutils.BeanUtils;
006 import org.apache.commons.beanutils.PropertyUtils;
007
008 import com.khubla.pragmatach.framework.api.PragmatachException;
009 import com.mongodb.BasicDBObject;
010 import com.mongodb.DBObject;
011
012 /**
013 * @author tom
014 */
015 public class EnumFieldSerializer implements FieldSerializer {
016 /**
017 * ctor
018 */
019 public EnumFieldSerializer(Class<?> typeClazz) {
020 }
021
022 @SuppressWarnings({ "rawtypes", "unchecked" })
023 @Override
024 public void deserializeField(Object object, Field field, DBObject dbObject) throws PragmatachException {
025 try {
026 final String v = (String) dbObject.get(field.getName());
027 final Enum e = Enum.valueOf((Class<Enum>) field.getType(), v);
028 PropertyUtils.setProperty(object, field.getName(), e);
029 } catch (final Exception e) {
030 throw new PragmatachException("Exception in deserializeField", e);
031 }
032 }
033
034 @Override
035 public void serializeField(BasicDBObject parentDBObject, Object object, Field field) throws PragmatachException {
036 try {
037 final String v = BeanUtils.getProperty(object, field.getName());
038 parentDBObject.append(field.getName(), v);
039 } catch (final Exception e) {
040 throw new PragmatachException("Exception in serializeField", e);
041 }
042 }
043 }