/**
* Converte uma coleção qualquer em um formato que possa ser colocado em uma cláusula SQL
* "IN".
*
* Ex: dada uma coleção da seguinte forma:
*
* Collection textoColecao = new ArrayList();
* textoColecao.add("primeiro");
* textoColecao.add("segundo");
* textoColecao.add("terceiro");
*
*
* A chamada em uma clásula IN ficaria assim:
*
*
* StringBuffer sql = new StringBuffer();
* sql.append("select * from algo where algo.id in ( ");
* sql.append(JavaUtils.convertCollectionToSqlINClause(textoColecao);
* sql.append(" ) ");
*
*
* O resultado da sql montada será:
*
*
* select * from algo where algo.id in ( primeiro, segundo, terceiro )
*
* @param colecao
* @return String
*/
public static String convertCollectionToSqlINClause(Collection colecao) {
try {
StringBuffer buffer = new StringBuffer();
Iterator iterator = colecao.iterator();
Object primeiroItem = iterator.next();
buffer.append(primeiroItem.toString());
while (iterator.hasNext()) {
Object item = iterator.next();
buffer.append("," + item);
}
return buffer.toString();
} catch (Throwable e) {
throw new RuntimeException(
"JavaUtils.convertCollectionToSqlINClause() - Error on convert the collection \"" +
colecao +
"\" with size \"" +
((colecao == null) ? null : colecao.size()) +
"\" in a sql \"IN\" clause. Error details: " + e);
}
}
Nenhum comentário:
Postar um comentário