domingo, 30 de janeiro de 2011

java metadata

Olá, encontrei um código interessante e resolvi postar aqui.. ele verifica se algum atributo de um determinado objeto possui a annotation Id..

Quando eu tiver mais tempo vou dar uma pesquisada maior sobre isso... essa questão de metadata é bem interessante, procurando no google existe bastante material sobre isso.

http://pastie.org/1505699

/**
* Verifica se a entidade em questão possui um Id. Método utilizado para escolher
* se a o esquema de persistência deve salvar ou atualizar o modelo
* @param entity A entidade a ser verificada
* @return true se a entidade possui Id
* @throws Exception Caso algo de errado, uma exceção será lançada
*/
public boolean hasId(Object entity) throws Exception{
Class clazz = entity.getClass();
for(Field f : clazz.getDeclaredFields()){
if(!f.isAccessible())
f.setAccessible(true);
if(f.isAnnotationPresent(Id.class)){
if(f.get(entity) != null){
log.info("ID found: "+f.get(entity));
return true;
}
}
}
return false;
}

Alguns links interessantes:
http://www.guj.com.br/articles/136
http://java.sun.com/products/jmi/
http://download.oracle.com/javase/1.4.2/docs/api/java/sql/DatabaseMetaData.html
http://download.oracle.com/javase/1.5.0/docs/api/java/lang/reflect/AnnotatedElement.html
http://download.oracle.com/javase/6/docs/api/java/lang/reflect/AccessibleObject.html

Vaaleu!
Adriano Schmidt

terça-feira, 25 de janeiro de 2011

SQL - ignorar horas

Oi,

Fiz a segunte query:

select m from MinhaTabela m where :date between m.initialDate AND m.endDate

e tive o seguinte problema: o meu parâmetro :date era uma data com as horas 00:00, porém o initialDate era sempre com horário (12:30 por exemplo), então minha query nunca retornava nada.

Para igorar as horas utilizei a função date()

select m from MinhaTabela m where :date between date(m.initialDate) AND date(m.endDate)

Pronto! Dessa forma o horário foi ignorado e a comparação foi feita utilizando somente as datas e tudo funcionou : )

Mais funções de data e hora podem ser encontradas em: http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html

Vaaleu!
Adriano Schmidt

segunda-feira, 24 de janeiro de 2011

richfaces popupPanel ie8

Olá,

Estou num projeto utilizando JSF 2.0 e RichFaces 4.

Meu popupPanel (antigo modalPanel) estava desrespeitando os atributos width e height no ie8 ficando bem grande no browser.. no firefox tudo funcionava perfeitamente.

O problema era que eu estava usando o componente inputCalendar do tomahawk.. ao usar a propriedade renderAsPopup como true, o meu popupPanel se perdia e ficava com um tamanho diferente do que setei.

Solução: Troquei o inputCalendar do tomahawk pelo calendar do RichFaces.

Show! Funcionou!
Adriano Schmidt