Package javango.contrib.hibernate

Source Code of javango.contrib.hibernate.HibernateFormHelper

package javango.contrib.hibernate;

import java.lang.annotation.Annotation;
import java.util.Iterator;

import javax.persistence.Column;

import javango.forms.Form;
import javango.forms.fields.CharField;
import javango.forms.fields.Field;

import org.hibernate.validator.ClassValidator;
import org.hibernate.validator.InvalidValue;
import org.hibernate.validator.Length;

public class HibernateFormHelper {

  public static boolean isValid(Form form, Class<?> objectClass) {
    // TODO re-work this logic,  it can leed to NPE at the start of the for loop below
    if (form.getErrors() == null && !form.isValid()) return false;
   
    ClassValidator v = new ClassValidator(objectClass);
   
    for (String key : form.getCleanedData().keySet()) {
      Object value = form.getCleanedData().get(key);
      InvalidValue[] invalids = v.getPotentialInvalidValues(key, value);
      for (int i=0; i<invalids.length; i++) {
        form.getErrors().put(invalids[i].getPropertyName(), invalids[i].getMessage());
      }
    }
    return form.getErrors().isEmpty();
  }
 
  public static boolean isValid(Form form) {
    if (form.getErrors() == null && !form.isValid()) return false;
   
    ClassValidator validator = new ClassValidator(form.getClass());
    Iterator<Field<?>> i = form.getFields().values().iterator();
    while (i.hasNext()) {
      Field f  = i.next();
      InvalidValue[] invalids = validator.getPotentialInvalidValues(f.getName(), form.getCleanedData().get(f.getName()));
      for (int x=0; x<invalids.length; x++) {
        form.getErrors().put(invalids[x].getPropertyName(), invalids[x].getMessage());
      }
    }
   
    return form.getErrors().isEmpty();
  }
 
  /**
   * Processes all known hibernate annotations for known field types..
   */
  public static void processHibernateAnnotation(Annotation annotation, Field field) {
    if (field instanceof CharField) {
      if (annotation instanceof Column) {
        if (((CharField)field).getMaxLength() == null) {
          ((CharField)field).setMaxLength(((Column)annotation).length());
        }
      } else if (annotation instanceof Length) {
        if (((CharField)field).getMaxLength() == null) {
          ((CharField)field).setMaxLength(((Length)annotation).max());
        }
      }
     
      // TODO Add additional...
    }
  }
}
TOP

Related Classes of javango.contrib.hibernate.HibernateFormHelper

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.