org.mongodb.morphia.converters.EnumSetConverter Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of morphia Show documentation
Show all versions of morphia Show documentation
Java Object Document Mapper for MongoDB
The newest version!
package org.mongodb.morphia.converters;
import org.mongodb.morphia.mapping.MappedField;
import java.util.ArrayList;
import java.util.EnumSet;
import java.util.List;
/**
* @author Uwe Schaefer, ([email protected])
* @author scotthernandez
*/
public class EnumSetConverter extends TypeConverter implements SimpleValueConverter {
private final EnumConverter ec = new EnumConverter();
/**
* Creates the Converter.
*/
public EnumSetConverter() {
super(EnumSet.class);
}
@Override
@SuppressWarnings("unchecked")
public Object decode(final Class targetClass, final Object fromDBObject, final MappedField optionalExtraInfo) {
if (fromDBObject == null) {
return null;
}
final Class enumType = optionalExtraInfo.getSubClass();
final List l = (List) fromDBObject;
if (l.isEmpty()) {
return EnumSet.noneOf(enumType);
}
final List enums = new ArrayList();
for (final Object object : l) {
enums.add(ec.decode(enumType, object));
}
return EnumSet.copyOf(enums);
}
@Override
@SuppressWarnings("unchecked")
public Object encode(final Object value, final MappedField optionalExtraInfo) {
if (value == null) {
return null;
}
final List values = new ArrayList();
final EnumSet s = (EnumSet) value;
final Object[] array = s.toArray();
for (final Object anArray : array) {
values.add(ec.encode(anArray));
}
return values;
}
}