info.archinnov.achilles.helper.ThriftEntityMapper Maven / Gradle / Ivy
package info.archinnov.achilles.helper;
import static info.archinnov.achilles.serializer.ThriftSerializerUtils.STRING_SRZ;
import info.archinnov.achilles.entity.metadata.EntityMeta;
import info.archinnov.achilles.entity.metadata.PropertyMeta;
import info.archinnov.achilles.entity.metadata.PropertyType;
import info.archinnov.achilles.type.Pair;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import me.prettyprint.hector.api.beans.Composite;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* ThriftEntityMapper
*
* @author DuyHai DOAN
*
*/
public class ThriftEntityMapper extends AchillesEntityMapper
{
private static final Logger log = LoggerFactory.getLogger(ThriftEntityMapper.class);
public void setEagerPropertiesToEntity(Object key, List> columns,
EntityMeta entityMeta, Object entity)
{
log.trace("Set eager properties to entity {} ", entityMeta.getClassName());
Map> listProperties = new HashMap>();
Map> setProperties = new HashMap>();
Map> mapProperties = new HashMap>();
setIdToEntity(key, entityMeta.getIdMeta(), entity);
Map> propertyMetas = entityMeta.getPropertyMetas();
for (Pair pair : columns)
{
String propertyName = pair.left.get(1, STRING_SRZ);
if (StringUtils.equals(propertyName, PropertyType.SERIAL_VERSION_UID.name()))
{
if (Long.parseLong(pair.right) != entityMeta.getSerialVersionUID())
{
throw new IllegalStateException(
"Saved serialVersionUID does not match current serialVersionUID for entity '"
+ entityMeta.getClassName() + "'");
}
continue;
}
// PropertyMeta propertyMeta = entityMeta
// . getPropertyMetaByProperty(propertyName);
PropertyMeta, ?> propertyMeta = propertyMetas.get(propertyName);
if (propertyMeta.type() == PropertyType.SIMPLE)
{
setSimplePropertyToEntity(pair.right, propertyMeta, entity);
}
else if (propertyMeta.type() == PropertyType.LIST)
{
addToList(listProperties, propertyMeta, propertyMeta.getValueFromString(pair.right));
}
else if (propertyMeta.type() == PropertyType.SET)
{
addToSet(setProperties, propertyMeta, propertyMeta.getValueFromString(pair.right));
}
else if (propertyMeta.type() == PropertyType.MAP)
{
addToMap(mapProperties, propertyMeta,
propertyMeta.getKeyValueFromString(pair.right));
}
}
for (Entry> entry : listProperties.entrySet())
{
setListPropertyToEntity(entry.getValue(), propertyMetas.get(entry.getKey()), entity);
}
for (Entry> entry : setProperties.entrySet())
{
setSetPropertyToEntity(entry.getValue(), propertyMetas.get(entry.getKey()), entity);
}
for (Entry> entry : mapProperties.entrySet())
{
setMapPropertyToEntity(entry.getValue(), propertyMetas.get(entry.getKey()), entity);
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy