quarta-feira, 28 de julho de 2010

[javautils] convertCollectionToSqlINClause

   /**
    * 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: