All Downloads are FREE. Search and download functionalities are using the official Maven repository.

me.prettyprint.hom.cache.ColumnParser Maven / Gradle / Ivy

There is a newer version: 3.0-04
Show newest version
package me.prettyprint.hom.cache;

import java.beans.PropertyDescriptor;
import java.lang.annotation.Annotation;
import java.lang.reflect.Field;

import javax.persistence.Column;

import me.prettyprint.hom.CFMappingDef;
import me.prettyprint.hom.PropertyMappingDefinition;
import me.prettyprint.hom.converters.DefaultConverter;

/**
 * Parse, validate, and set defaults if needed for Inheritance functionality.
 * 
 * @author bburruss
 */
public class ColumnParser implements ColumnParserValidator {

  @Override
  public  void parse(Field f, Annotation anno, PropertyDescriptor pd, CFMappingDef cfMapDef) {
    try {
      if (anno instanceof Column) {
        processColumnAnnotation(f, (Column) anno, pd, cfMapDef);
      } else if (anno instanceof me.prettyprint.hom.annotations.Column) {
        processColumnCustomAnnotation(f, (me.prettyprint.hom.annotations.Column) anno, pd, cfMapDef);
      } else {
        throw new HectorObjectMapperException("This class cannot parse annotation, "
            + anno.getClass().getSimpleName());
      }
    } catch (InstantiationException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    } catch (IllegalAccessException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
  }

  private  void processColumnAnnotation(Field f, Column anno, PropertyDescriptor pd,
      CFMappingDef cfMapDef) throws InstantiationException, IllegalAccessException {
    PropertyMappingDefinition md = new PropertyMappingDefinition(pd, anno.name(),
        DefaultConverter.class);
    cfMapDef.addPropertyDefinition(md);
  }

  private void processColumnCustomAnnotation(Field f, me.prettyprint.hom.annotations.Column anno,
      PropertyDescriptor pd, CFMappingDef cfMapDef) throws InstantiationException,
      IllegalAccessException {
    PropertyMappingDefinition md = new PropertyMappingDefinition(pd, anno.name(), anno.converter());
    cfMapDef.addPropertyDefinition(md);
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy