Android Open Source - jpdroid Jpdroid Entity Validation






From Project

Back to project page jpdroid.

License

The source code is released under:

GNU General Public License

If you think the Android project jpdroid 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 br.com.rafael.jpdroid.core;
// ww w .  j a  v a2 s. c  o  m
import java.lang.annotation.Annotation;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;

import br.com.rafael.jpdroid.annotations.Entity;
import br.com.rafael.jpdroid.annotations.ForeignKey;
import br.com.rafael.jpdroid.annotations.PrimaryKey;
import br.com.rafael.jpdroid.annotations.RelationClass;
import br.com.rafael.jpdroid.enums.RelationType;
import br.com.rafael.jpdroid.exceptions.JpdroidException;

/**
 * Classe respons?vel por validar as entidades.
 * 
 * @author Rafael Centenaro
 *
 */
public class JpdroidEntityValidation {

  private List<Class<?>> entidades = new ArrayList<Class<?>>();

  public List<Class<?>> getEntidades() {
    return entidades;
  }

  public JpdroidEntityValidation() {

  }
  public JpdroidEntityValidation addClasses(Class<?>... classes) throws Exception {
    for (Class<?> clazz : classes) {
      addClass(clazz);
    }
    return this;
  }
  public JpdroidEntityValidation addClass(Class<?> entityClass) throws JpdroidException {
    int pkCount = 0;
    String columnName;
    Entity entity = entityClass.getAnnotation(Entity.class);
    if (entity == null) {
      throw new JpdroidException("A classe " + entityClass
          + " n?o ? uma entidade v?lida, pois n?o possui a anota??o @Entity");
    }
    Field[] fields = entityClass.getDeclaredFields();
    for (Field field : fields) {
      Annotation[] annotations = field.getAnnotations();
      for (Annotation annotation : annotations) {
        if (annotation.annotationType() == PrimaryKey.class) {
          if(!field.getType().getSimpleName().equalsIgnoreCase("long")){
            throw new JpdroidException("O tipo para chave prim?ria deve ser long.");
          }
          if(!field.getType().isPrimitive() || !field.getType().getSimpleName().equalsIgnoreCase("long")){
            throw new JpdroidException("A Chave prim?ria deve ser do tipo primitivo long.");
          }
          columnName = field.getName();
          if((columnName.equals("") && !field.getName().equals("_id")) || (!columnName.equals("") && !columnName.equals("_id"))){
            throw new JpdroidException("As tabelas no SQLite devem possuir um atributo '_id'  como chave prim?ria.");
          }
          pkCount++;
        }
        if (annotation.annotationType() == RelationClass.class) {
          if( !((RelationClass)annotation).relationType().equals(RelationType.ManyToMany) && ((RelationClass)annotation).joinColumn().equalsIgnoreCase("")){
            throw new JpdroidException("O par?metro joinColumn da anota??o @RelationClass n?o pode ser vazio.");
          }
          if(((RelationClass)annotation).relationType().equals(RelationType.ManyToMany) && ((RelationClass)annotation).joinTable().equalsIgnoreCase("")){
            throw new JpdroidException("O par?metro joinTable da anota??o @RelationClass n?o pode ser vazio.");
          }
        }
        if (annotation.annotationType() == ForeignKey.class) {
          if(((ForeignKey)annotation).joinEntity() == null){
            throw new JpdroidException("O par?metro joinEntity da anota??o @ForeignKey n?o pode ser nula.");
          }
          if(((ForeignKey)annotation).joinEntity().getAnnotation(Entity.class) == null){
            throw new JpdroidException("O par?metro joinEntity possui relacionamento inv?lido, pois a classe "+((ForeignKey)annotation).joinEntity().getSimpleName()+" n?o possui anota??o @Entity.");
          }
          if(!field.getType().isPrimitive() || !field.getType().getSimpleName().equalsIgnoreCase("long")){
            throw new JpdroidException("A Chave estrangeira '"+field.getName()+"' deve ser do tipo primitivo long.");
          }
          if(((ForeignKey)annotation).joinPrimaryKey().equalsIgnoreCase("")){
            throw new JpdroidException("O par?metro joinPrimaryKey da anota??o @ForeignKey n?o pode ser vazio.");
          }
        }
      }
    }
    if (pkCount == 0) {
      throw new JpdroidException("A classe " + entityClass
          + " n?o ? uma entidade v?lida, pois n?o possui atributo vinculado com a anota??o @PrimaryKey.");
    }
    if (pkCount > 1) {
      throw new JpdroidException("A classe " + entityClass
          + " n?o ? uma entidade v?lida, pois possui mais de um atributo vinculado com a anota??o @PrimaryKey.");
    }

    this.entidades.add(entityClass);
    return this;
  }


}




Java Source Code List

br.com.rafael.jpdroid.annotations.Column.java
br.com.rafael.jpdroid.annotations.DefaultOrder.java
br.com.rafael.jpdroid.annotations.DtoField.java
br.com.rafael.jpdroid.annotations.Dto.java
br.com.rafael.jpdroid.annotations.Entity.java
br.com.rafael.jpdroid.annotations.ForeignKey.java
br.com.rafael.jpdroid.annotations.Ignorable.java
br.com.rafael.jpdroid.annotations.PrimaryKey.java
br.com.rafael.jpdroid.annotations.RelationClass.java
br.com.rafael.jpdroid.annotations.ViewColumn.java
br.com.rafael.jpdroid.converters.JpdroidCsvConverter.java
br.com.rafael.jpdroid.converters.JpdroidDateUtil.java
br.com.rafael.jpdroid.converters.JpdroidDtoConverter.java
br.com.rafael.jpdroid.converters.JpdroidJsonConverter.java
br.com.rafael.jpdroid.converters.JpdroidMatrixCursorConverter.java
br.com.rafael.jpdroid.converters.JpdroidXmlConverter.java
br.com.rafael.jpdroid.core.JpdroidAbout.java
br.com.rafael.jpdroid.core.JpdroidDbHelper.java
br.com.rafael.jpdroid.core.JpdroidEntityValidation.java
br.com.rafael.jpdroid.core.JpdroidObjectMap.java
br.com.rafael.jpdroid.core.JpdroidTransaction.java
br.com.rafael.jpdroid.core.JpdroidWriteFile.java
br.com.rafael.jpdroid.core.Jpdroid.java
br.com.rafael.jpdroid.enums.Order.java
br.com.rafael.jpdroid.enums.RelationType.java
br.com.rafael.jpdroid.enums.ScriptPath.java
br.com.rafael.jpdroid.exceptions.JpdroidException.java
br.com.rafael.jpdroid.interfaces.ITransaction.java
br.com.rafael.jpdroid.util.JpdroidConverter.java
br.com.rafael.jpdroid.util.JpdroidCsvFile.java
br.com.rafael.jpdroid.util.JpdroidJsonFile.java
br.com.rafael.jpdroid.util.JpdroidXmlFile.java
br.com.rafael.pedidojpdroid.ContatoActivity.java
br.com.rafael.pedidojpdroid.EnderecoActivity.java
br.com.rafael.pedidojpdroid.ExportacoesActivity.java
br.com.rafael.pedidojpdroid.ImportacoesActivity.java
br.com.rafael.pedidojpdroid.ItensPedidoActivity.java
br.com.rafael.pedidojpdroid.ListaCidadesActivity.java
br.com.rafael.pedidojpdroid.ListaContatoActivity.java
br.com.rafael.pedidojpdroid.ListaEnderecoActivity.java
br.com.rafael.pedidojpdroid.ListaItensPedidoActivity.java
br.com.rafael.pedidojpdroid.ListaPedidoActivity.java
br.com.rafael.pedidojpdroid.ListaPessoaActivity.java
br.com.rafael.pedidojpdroid.ListaProdutoActivity.java
br.com.rafael.pedidojpdroid.ListagemPedidoActivity.java
br.com.rafael.pedidojpdroid.ListagemPessoaActivity.java
br.com.rafael.pedidojpdroid.ListagemProdutoActivity.java
br.com.rafael.pedidojpdroid.PedidoActivity.java
br.com.rafael.pedidojpdroid.PesquisaDialogActivity.java
br.com.rafael.pedidojpdroid.PessoaActivity.java
br.com.rafael.pedidojpdroid.PrincipalActivity.java
br.com.rafael.pedidojpdroid.ProdutoActivity.java
br.com.rafael.pedidojpdroid.SobreActivity.java
br.com.rafael.pedidojpdroid.dto.ContatoDTO.java
br.com.rafael.pedidojpdroid.dto.PessoaDTO.java
br.com.rafael.pedidojpdroid.entity.Cidade.java
br.com.rafael.pedidojpdroid.entity.Contato.java
br.com.rafael.pedidojpdroid.entity.Endereco.java
br.com.rafael.pedidojpdroid.entity.Estado.java
br.com.rafael.pedidojpdroid.entity.ItensPedido.java
br.com.rafael.pedidojpdroid.entity.Pedido.java
br.com.rafael.pedidojpdroid.entity.Pessoa.java
br.com.rafael.pedidojpdroid.entity.Produto.java
com.rafael.androidcomjpdroid.ContatoActivity.java
com.rafael.androidcomjpdroid.MainActivity.java
com.rafael.androidcomjpdroid.PessoaActivity.java
com.rafael.androidcomjpdroid.entity.Contato.java
com.rafael.androidcomjpdroid.entity.Pessoa.java
com.rafael.androidcomjpdroid.entity.TipoContato.java