Class DaoHelper

java.lang.Object
br.com.intersys.systextil.connection.DaoHelper

public class DaoHelper extends Object
  • Constructor Details

    • DaoHelper

      public DaoHelper()
  • Method Details

    • get

      public static <DTO> DTO get(IDAO<DTO> dao, AppConnection conn, Object... params)
      Busca um registro na tabela pela PK.
      Type Parameters:
      DTO - o tipo do objeto retornado
      Parameters:
      dao - instancia do DAO que implementa IDAO
      conn - instância do AppConnection.
      params - Sequencia exata das chaves primárias.
      Returns:
      um objeto DTO ou null, caso não encontre registros
    • getBy

      public static <DTO> DTO getBy(IDAO<DTO> dao, AppConnection conn, String where, Object... params)
      Busca um registro na tabela pelo where informado.
      Type Parameters:
      DTO - o tipo do objeto retornado
      Parameters:
      dao - instancia do DAO que implementa IDAO
      conn - instância do AppConnection.
      where - a clausula where
      params - parametros do where
      Returns:
      um objeto DTO ou null, caso não encontre registros
    • getBy

      public static <DTO> DTO getBy(String query, IDAO<DTO> dao, AppConnection conn, Object... params)
      Busca um registro na tabela por uma query complexa.
      Type Parameters:
      DTO - o tipo do objeto retornado
      Parameters:
      query - a query complexa
      dao - instancia do DAO que implementa IDAO
      conn - instância do AppConnection.
      params - parametros do where
      Returns:
      um objeto DTO ou null, caso não encontre registros
    • delete

      public static <DTO> boolean delete(IDAO<DTO> dao, AppConnection conn, Object... params)
      Deleta o registro pela pk, e retorna o resultado da operacao
      Type Parameters:
      DTO - o tipo do objeto a usar
      Parameters:
      dao - instancia do DAO que implementa IDAO
      conn - instância do AppConnection.
      params - Sequencia exata das chaves primárias.
      Returns:
      resuldado do delete
    • list

      public static <DTO> DataReader<DTO> list(IDAO<DTO> dao, Maker<DTO> maker, AppConnection conn)
      Lista todos registros da tabela Nos projetos que compilam para java 8 o maker pode ser um lambda Exemplo
         (connection) -> DAO.this.parse(connection) 
       
      Nos projetos que não suportam java 8 deve ser feita a implementação de um maker Exemplo
        public static final Maker<Tipo> MAKER = new Maker<Tipo>() {
           public Tipo make(AppConnection conn) { return Tipo.make(conn); }                   
       };
       
      Type Parameters:
      DTO - o tipo do objeto a usar
      Parameters:
      dao - instancia do DAO que implementa IDAO
      maker - o maker do DTO
      conn - instância do AppConnection.
      Returns:
      um instância de DataReader
    • list

      public static <DTO> DataReader<DTO> list(IDAO<DTO> dao, Maker<DTO> maker, AppConnection conn, String where, Object... params)
      Lista registros da tabela aplicando a clausula where específicada. Nos projetos que compilam para java 8 o maker pode ser um lambda Exemplo
         (connection) -> DAO.this.parse(connection) 
       
      Nos projetos que não suportam java 8 deve ser feita a implementação de um maker Exemplo
        public static final Maker<Tipo> MAKER = new Maker<Tipo>() {
           public Tipo make(AppConnection conn) { return Tipo.make(conn); }                   
       };
       
      Type Parameters:
      DTO - o tipo do objeto a usar
      Parameters:
      dao - instancia do DAO que implementa IDAO
      maker - o maker do DTO
      conn - instância do AppConnection.
      where - String com clausula where para query de leitura
      params - Os parametros devem ser passados na sequencia que sao esperados no parametro where
      Returns:
      um instância de DataReader
    • list

      public static <DTO> DataReader<DTO> list(String query, Maker<DTO> maker, AppConnection conn, Object... params)
      Lista registros da tabela aplicando a query, essa funçao é para querys mais complexas
      Type Parameters:
      DTO - o tipo de DTO a usar
      Parameters:
      conn - instância do AppConnection.
      query - a query a executar
      maker - o maker do DTO pretendido
      params - Os parametros devem ser passados na sequencia que sao esperados no parametro where
      Returns:
      um instância de DataReader
    • exist

      public static <DTO> boolean exist(IDAO<DTO> dao, AppConnection conn, Object... params)
      Verifica se o registro existe na tabela com base na primary key.
      Type Parameters:
      DTO - o tipo do objeto a usar
      Parameters:
      dao - instancia do DAO que implementa IDAO
      conn - instância do AppConnection.
      params - Os parametros devem ser passados na sequencia que sao esperados no parametro where
      Returns:
      true caso o registro exista, false caso contrário
    • existBy

      public static <DTO> boolean existBy(IDAO<DTO> dao, AppConnection conn, String where, Object... params)
      Verifica se o registro existe na tabela conforme where informado.
      Type Parameters:
      DTO - o tipo do objeto a usar
      Parameters:
      dao - instancia do DAO que implementa IDAO
      conn - instância do AppConnection.
      where - String com clausula where
      params - Os parametros devem ser passados na sequencia que sao esperados no parametro where
      Returns:
      true caso o registro exista, false caso contrário
    • dynamicInsert

      public static <DTO> boolean dynamicInsert(IDAO<DTO> dao, AppConnection conn, DTO dto, String... ignoreParams)
      Responsável por inserir o registro na tabela a qual o DAO representa. A query de insert é gerada dinamicamente com base no objeto DTO passado por parâmetro.
      Type Parameters:
      DTO - o tipo do objeto a usar
      Parameters:
      dao - instancia do DAO que implementa IDAO
      conn - instância do AppConnection.
      dto - Estrutura de dados
      ignoreParams - campos que serão ignorados no insert
      Returns:
      Se registro foi inserido true, caso contrário false.
    • dynamicInsert

      @Deprecated public static <DTO> boolean dynamicInsert(IDAO<DTO> dao, AppConnection conn, DTO dto)
      Deprecated.
      Tratativa para projetos que foram compilados com a assinatura antiga, sem varargs. Quando esses projetos forem recompilados essa tratativa pode ser removida, porque quando o metodo não recebe nenhum parametro para o varArgs esse parametro sera um array vazio
      Type Parameters:
      DTO - o tipo do objeto a usar
      Parameters:
      dao - instancia do DAO que implementa IDAO
      conn - instância do AppConnection.
      dto - estrutura de dados
      Returns:
      se o registro foi inserido
    • dynamicInsert

      public static <DTO> boolean dynamicInsert(AppConnection conn, String tableName, DTO dto, String... ignoreParams)
      Responsável por inserir o registro na tabela passada por parametro. A query de insert é gerada dinamicamente com base no objeto DTO passado por parâmetro.
      Type Parameters:
      DTO - o tipo do objeto a usar
      Parameters:
      conn - instância do AppConnection.
      tableName - nome da tabela que será persistida.
      dto - Estrutura de dados
      ignoreParams - campos que serão ignorados no insert
      Returns:
      Se registro foi inserido true, caso contrário false.
    • dynamicInsertIgnoreUnique

      public static <DTO> boolean dynamicInsertIgnoreUnique(IDAO<DTO> dao, AppConnection conn, DTO dto, String... ignoreParams)
      Responsável por inserir o registro na tabela a qual o DAO representa, ignorando erros de unique constraint. A query de insert é gerada dinamicamente com base no objeto DTO passado por parâmetro.
      Type Parameters:
      DTO - o tipo do objeto a usar
      Parameters:
      dao - instancia do DAO que implementa IDAO
      conn - instância do AppConnection.
      dto - Estrutura de dados
      ignoreParams - campos que serão ignorados no insert
      Returns:
      Se registro foi inserido true, caso contrário false.
    • dynamicInsertIgnoreUnique

      @Deprecated public static <DTO> boolean dynamicInsertIgnoreUnique(IDAO<DTO> dao, AppConnection conn, DTO dto)
      Deprecated.
      Tratativa para projetos que foram compilados com a assinatura antiga, sem varargs. Quando esses projetos forem recompilados essa tratativa pode ser removida, porque quando o metodo não recebe nenhum parametro para o varArgs esse parametro sera um array vazio
      Type Parameters:
      DTO - o tipo do objeto a usar
      Parameters:
      dao - instancia do DAO que implementa IDAO
      conn - instância do AppConnection.
      dto - estrutura de dados
      Returns:
      se o registro foi inserido
    • dynamicInsertIgnoreUnique

      public static <DTO> boolean dynamicInsertIgnoreUnique(AppConnection conn, String tableName, DTO dto, String... ignoreParams)
      Responsável por inserir o registro na tabela passada por parametro, ignorando erros de unique constraint. A query de insert é gerada dinamicamente com base no objeto DTO passado por parâmetro.
      Type Parameters:
      DTO - o tipo do objeto a usar
      Parameters:
      conn - instância do AppConnection.
      tableName - nome da tabela que será persistida.
      dto - Estrutura de dados.
      ignoreParams - campos que serão ignorados no insert.
      Returns:
      Se registro foi inserido true, caso contrário false.
    • dynamicUpdate

      public static <DTO> boolean dynamicUpdate(IDAO<DTO> dao, AppConnection conn, DTO dto, String... ignoreParams)
      Responsável por atualizar registro do dao passado por parametro. Com IDAO, esse metodo usa os campos de pk para criar o where. A query de update é gerada dinamicamente com base no objeto DTO passado por parâmetro.

      Obs: Primeiramente bom dia, segundamente essa estrategia de update a principio não seria usado com reflection, porque normalmente o update é feito em poucos campos da tabela. Então porque fazer? Bom no vision tem muitos processos que utilizam a abordagem do famoso status -4, então pra facilitar a conversão de vision pra java, esse metodo foi criado.

      Type Parameters:
      DTO - o tipo de DTO a usar
      Parameters:
      conn - instância do AppConnection.
      dao - instancia do DAO que implementa IDAO
      dto - Estrutura de dados.
      ignoreParams - campos que serão ignorados no insert.
      Returns:
      Se registro foi inserido true, caso contrário false.
    • dynamicUpdate

      public static <DTO> boolean dynamicUpdate(AppConnection conn, String tableName, DTO dto, String whereClause, Object[] whereParams, String... ignoreParams)
      Responsável por atualizar registro do dao passado por parametro. A query de update é gerada dinamicamente com base no objeto DTO passado por parâmetro.

      Obs: Primeiramente bom dia, segundamente essa estrategia de update a principio não seria usado com reflection, porque normalmente o update é feito em poucos campos da tabela. Então porque fazer? Bom no vision tem muitos processos que utilizam a abordagem do famoso status -4, então pra facilitar a conversão de vision pra java, esse metodo foi criado.

      Type Parameters:
      DTO - o tipo do objeto a usar
      Parameters:
      conn - instância do AppConnection.
      tableName - nome da tabela que será persistida.
      dto - Estrutura de dados.
      whereClause - clausula where utilizada no update
      whereParams - lista de valores para os parametros utilizados na clausula where
      ignoreParams - campos que serão ignorados no insert.
      Returns:
      Se registro foi inserido true, caso contrário false.
    • buildInsert

      public static <DTO> InsertBuilder buildInsert(String tableName, DTO dto, String... ignoreParams)
      Transforma uma instancia de um DTO em um InsertBuilder
      Type Parameters:
      DTO - o tipo do objeto a usar
      Parameters:
      tableName - nome da tabela que sera persistida
      dto - instância de um DTO que será persistido
      ignoreParams - campos que serão ignorados no insert
      Returns:
      Mapa com todos campos e valores do DTO
    • buildUpdate

      public static <DTO> UpdateBuilder buildUpdate(String tableName, DTO dto, String whereClause, Object[] whereParams, String... ignoreParams)
      Transforma uma instancia de um DTO em um UpdateBuilder
      Type Parameters:
      DTO - o tipo do objeto a usar
      Parameters:
      tableName - nome da tabela que sera persistida
      dto - instância de um DTO que será persistido
      whereClause - clausula where utilizada no update
      whereParams - lista de valores para os parametros utilizados na clausula where
      ignoreParams - campos que serão ignorados no insert
      Returns:
      Mapa com todos campos e valores do DTO
    • dto2Map

      public static <DTO> Map<String,Object> dto2Map(DTO dto)
      Transforma nome e valor dos campos de uma instância de DTO em um mapa que pode ser usado para setar os parametros de um InsertBuilder com o metodo setAll
      Type Parameters:
      DTO - o tipo do objeto a usar
      Parameters:
      dto - Instância de um DTO que será persistido
      Returns:
      Mapa com todos campos e valores do DTO