terça-feira, 21 de maio de 2013

Método para query dinâmica

A construção de métodos que montam queries dinâmicas requerem certos artifícios para conseguir construir um bom resultado. Um desses artifícios é o método abaixo que construí uma vez, ele recebe a query como parâmetro e avalia se nela já consta a palavra "WHERE". Se não constar, o método retorna a palavra "WHERE" mas, se constar, significa que a query já possui a cláusula WHERE, logo ele retorna "AND" visando complementar a instrução SQL.

Abaixo, descrevo o método e um exemplo de uso.

Método

public String addConditionalConnector(String query){
        if(query.indexOf("WHERE") == -1){
            return " WHERE ";
        } else {
            return " AND ";
        }
    }

Exemplo de uso:

public List listar(Objeto objeto){
StringBuilder query = new StringBuilder();
query.append("SELECT * FROM TABELA");
/*faço mais coisas*/
query.append(addConditionalConnector(query.toString()));
/*faço mais coisas*/
query.append(addConditionalConnector(query.toString()));
/*faço mais coisas e executo a query*/
}

Com esse método auxiliar, eu não preciso mais me preocupar com a sintaxe da query em relação a minha cláusula WHERE com AND, porque o método já avalia o que é necessário.

Para quem não entende SQL, seguem links:

http://www.w3schools.com/sql/default.asp
http://www.w3schools.com/sql/sql_select.asp
http://www.w3schools.com/sql/sql_where.asp
http://www.w3schools.com/sql/sql_and_or.asp
Leia Mais ››

terça-feira, 14 de maio de 2013

Regex para datas - Máscara para datas

Para validar datas é possível criar diversas soluções, como:
  • Validação server-side;
  • Utilização de plugins prontos;
  • Quebrar a string fazendo um split na barra e validando caracter por caracter via Javascript.
Existe uma outra forma, embora não tão simples mas, muito refinada e com poucas linhas de código. Essa forma é utilizar uma Regex. Em Javascript é possível criar regexs e utilizá-las para validação. Quando criamos uma regex em Javascript, um objeto do tipo RegExp é gerado e com eles métodos são disponibilizados. Abaixo, apresento-lhes uma regex que criei para realizar essa validação.

/([0-2][0-9]|3[0-1])\/(0[0-9]|1[0-2])\/[0-9]{4}/

Essa regex valida datas do formato dd/mm/yyyy. Com dias indo de 01 até 31, meses indo de 01 até 12 e anos variados.
Leia Mais ››