Pessoal,
Preciso concatenar uma string com dois campos binários que trago do banco.
Segue código para verificarem o meu desejo.
package br.jus.tjba;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.params.HttpMethodParams;
import br.com.itx.database.impl.ConnectionSql;
import br.com.itx.exception.UserException;
import br.com.itx.integration.AbstractConnector;
import br.com.itx.integration.DatabaseAliases;
import br.com.itx.integration.DatabaseHandler;
import br.com.itx.integration.InterfaceHeaders;
import br.com.itx.util.WIMap;
public class TransformarHtml2Pdf extends AbstractConnector {
byte[] bytes = null;
Connection con;
ConnectionSql conSql;
DatabaseHandler dh;
InputStream relfun, prtdis, conteudo;
PreparedStatement pstm;
ResultSet rset;
String query, url, cabecalho;
public void execute(WIMap map, DatabaseAliases dba, InterfaceHeaders ih)
throws UserException {
try {
// Obtém a conexão do WI
dh = dba.get("atosjud");
conSql = (ConnectionSql) dh.getDatabaseConnection();
con = conSql.getConnection();
//Monta o cabeçalho
cabecalho = map.get("tmp.cabecalho");
//Retorna o conteúdo HTML
query = "SELECT RELATORIO_FUNDAMENTACAO, PARTE_DISPOSITIVA FROM AJ_ATO WHERE ID_ATO = ?";
pstm = con.prepareStatement(query);
pstm.setInt(1, Integer.parseInt(map.get("tmp.id_ato"))); //Pega o id_documento como parâmetro
rset = pstm.executeQuery();
rset.next();
relfun = rset.getBinaryStream(1); // Código HTML armazenado na coluna RELATORIO_FUNDAMENTACAO.
prtdis = rset.getBinaryStream(2); // Código HTML armazenado na coluna PARTE_DISPOSITIVA.
//Cria o conteúdo único para o pdf
conteudo = new ByteArrayInputStream(cabecalho.getBytes());
AQUI QUERO JUNTO cabecalho, relfun, prtdis e mais algum conteúdo (texto) que eu quero inserir.
//Chama o serviço para transformar o conteúdo em pdf
url = map.get("pvt.url");
HttpClient httpClient = new HttpClient();
PostMethod postMethod = new PostMethod(url);
postMethod.getParams().setParameter(HttpMethodParams.RETRY_HANDLER, new DefaultHttpMethodRetryHandler(1, false));
postMethod.setRequestHeader("Content-Type", "text/html");
postMethod.setRequestHeader("Accept", "application/pdf");
postMethod.setRequestBody(html);
int statusCode = httpClient.executeMethod(postMethod);
//Grava o pdf no banco.
if(statusCode == 200){ //Código 200 é código que a conversão para PDF foi sucesso.
bytes = postMethod.getResponseBody();
query = "UPDATE DOCUMENTO SET BINARIO = ? WHERE ID_DOCUMENTO = ?";
pstm = con.prepareStatement(query);
pstm.setBytes(1, bytes);
pstm.setInt(2, Integer.parseInt(map.get("tmp.id_documento"))); //Pega o id_documento como parâmetro
pstm.executeUpdate();
} else {
map.put("tmp.resp", "Código = " + statusCode + " - Erro na conversão.");
}
// Fecha as conexões
postMethod.releaseConnection();
html.close();
rset.close();
pstm.close();
con.close();
conSql.close();
dh.close();
} catch (Exception e){
map.put("tmp.resp", "Erro na conversão.\r\n" + e.getStackTrace());
}
}
}