EnumTranslator.java :  » Google-tech » twig-persist » com » vercer » engine » persist » translator » Java Open Source

Java Open Source » Google tech » twig persist 
twig persist » com » vercer » engine » persist » translator » EnumTranslator.java
package com.vercer.engine.persist.translator;

import java.lang.reflect.Type;
import java.util.Collections;
import java.util.Set;

import com.vercer.engine.persist.Path;
import com.vercer.engine.persist.Property;
import com.vercer.engine.persist.PropertyTranslator;
import com.vercer.engine.persist.util.SimpleProperty;
import com.vercer.engine.persist.util.generic.GenericTypeReflector;

public class EnumTranslator implements PropertyTranslator
{

  @SuppressWarnings("unchecked")
  public Object propertiesToTypesafe(Set<Property> properties, Path path, Type type)
  {
    Class<?> clazz = GenericTypeReflector.erase(type);
    if (clazz.isEnum())
    {
      Property property = properties.iterator().next();
      String name = (String) property.getValue();
      Class<? extends Enum> ce = (Class<? extends Enum>) clazz;
      return Enum.valueOf(ce, name);
    }
    else
    {
      return null;
    }
  }

  public Set<Property> typesafeToProperties(Object object, Path path, boolean indexed)
  {
    if (object instanceof Enum<?>)
    {
      String name = ((Enum<?>) object).name();
      Property property = new SimpleProperty(path, name, indexed);
      return Collections.singleton(property);
    }
    else
    {
      return null;
    }
  }

}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.