Android Open Source - GeoTagger Data Binder






From Project

Back to project page GeoTagger.

License

The source code is released under:

GNU General Public License

If you think the Android project GeoTagger listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package horizon.geotagger.server;
// w w w .j av a  2 s .c o  m
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Map;

public class DataBinder
{
  public void bind(Object o, Map<String, String[]> params)
  {
    Class<?> clazz = o.getClass();
    for(Field field : clazz.getDeclaredFields())
    {
      String name = field.getName();
      if(!params.containsKey(name))
        throw new RuntimeException("Required parameter '" 
            + name + "' was not provided");
      Object value = cast(field, params.get(name));
      try
      {
        set(clazz, field, o, value);
      }
      catch(Exception e)
      {
        throw new RuntimeException("Unable to bind parameter '" 
            + name + "'", e);
      }
    }
  }
  
  private Object cast(Field field, String value[])
  {
    if(value == null || value.length == 0)
      return null;
    Class<?> clazz = field.getType();
    if(clazz.isPrimitive() && !clazz.isArray())
    {
      if(value[0] == null || value[0].length() == 0)
        return null;
      if(clazz == Boolean.TYPE)
        return Boolean.parseBoolean(value[0]);
      if(clazz == Byte.TYPE)
        return Byte.parseByte(value[0]);
      if(clazz == Character.TYPE)
        return value[0].charAt(0);
      if(clazz == Double.TYPE)
        return Double.parseDouble(value[0]);
      if(clazz == Float.TYPE)
        return Float.parseFloat(value[0]);
      if(clazz == Integer.TYPE)
        return Integer.parseInt(value[0]);
      if(clazz == Long.TYPE)
        return Long.parseLong(value[0]);
      if(clazz == Short.TYPE)
        return Short.parseShort(value[0]);
    }
    
    throw new RuntimeException("Could not convert parameter '"
        + field.getName() + "' to type '" + clazz.getName() + "'");
  }
  
  private void set(Class<?> clazz, Field field, Object o, Object value) 
  throws  SecurityException,
      NoSuchMethodException,
      IllegalArgumentException,
      IllegalAccessException,
      InvocationTargetException
  {
    String setterName = "set" + Character.toUpperCase(field.getName().charAt(0));
    if(field.getName().length() > 1)
      setterName += field.getName().substring(1);
    
    Method method = clazz.getMethod(setterName, field.getType());
    method.invoke(o, new Object[]{value});
  }
}




Java Source Code List

horizon.android.logging.Logger.java
horizon.geotagger.AlertService.java
horizon.geotagger.Base64.java
horizon.geotagger.GeoTagger.java
horizon.geotagger.GeoTagger.java
horizon.geotagger.GeoUtils.java
horizon.geotagger.GeoUtils.java
horizon.geotagger.JavaLoggingAppender.java
horizon.geotagger.JspUtils.java
horizon.geotagger.PMF.java
horizon.geotagger.PersconServiceConnection.java
horizon.geotagger.model.Attachment.java
horizon.geotagger.model.Attachment.java
horizon.geotagger.model.Place.java
horizon.geotagger.model.Place.java
horizon.geotagger.model.Tag.java
horizon.geotagger.model.Tag.java
horizon.geotagger.server.AddTagServlet.java
horizon.geotagger.server.CallbackServlet.java
horizon.geotagger.server.DataBinder.java
horizon.geotagger.server.ModelAndView.java
horizon.geotagger.server.ServletWithView.java
horizon.geotagger.server.TagsAtPointData.java
horizon.geotagger.server.TagsAtPointServlet.java
horizon.geotagger.server.TagsInBoxData.java
horizon.geotagger.server.TagsInBoxServlet.java
horizon.geotagger.view.CameraSurfaceView.java
horizon.geotagger.view.DoImageTagView.java
horizon.geotagger.view.DoTagView.java
horizon.geotagger.view.DoTextTagView.java
horizon.geotagger.view.MapView.java
horizon.geotagger.view.TagOverlay.java
horizon.geotagger.view.TagView.java