Muito obrigado Vinigodoy e digaoneves…
Usei a seguinte implementação do Vinigodoy:
public void exportarButton() {
new Thread(new Runnable() {
public void run() {
Configurator.configureExportarPanelEdit(ContextExportarDadosPanelEdit.EXPORTAR, exportarDadosPanelEdit,
exportarDadosPanelEdit.getArquivosIntercambioPanel());
exportarXmlSemWhere("ICATB_RESERVATORIO");
exportarParaXmlComWhere("ICATB_ESTACAO", "EST_ID", listaEstId());
exportarParaXmlComWhere("HDRTB_EST_LOCAL_POLIT_HIDRG", "EPH_EST_ID", listaEstId());
exportarParaXmlComWhereSubBacia("HDRTB_SUBBACIA_RIO", listaEphDnsCd, listaEphRioCd);
exportarParaXmlComWhere("ICATB_AREA_DRENAGEM", "ARD_EST_ID", listaEstId());
exportarParaXmlComWhere("ICATB_HIST_COORD_ESTACAO", "HCE_EST_ID", listaEstId());
exportarParaXmlComWhere("ICATB_HISTORICO_ESTACAO", "HSE_EST_ID", listaEstId());
exportarParaXmlComWhere("ICATB_IMAGEM", "IMG_EST_ID", listaEstId());
exportarParaXmlComWhere("ICATB_SECAO_TRANSVERSAL", "SCT_EST_ID", listaEstId());
exportarParaXmlComWhere("ICATB_SECAO_REGUA", "SCR_SCT_ID", listaSctId);
exportarParaXmlComWhere("ICATB_LINHA_BASE", "LNB_SCT_ID", listaSctId);
exportarParaXmlComWhere("ICATB_LANCE_REGUA", "LCR_SCR_ID", listaScrId);
exportarParaXmlComWhere("ICATB_MARGEM", "MAR_SCT_ID", listaSctId);
exportarParaXmlComWhere("ICATB_NATUREZA_MARGEM", "NTM_MAR_ID", listaMarId);
exportarParaXmlComWhere("ICATB_NATUREZA_LEITO", "NTL_SCT_ID", listaSctId);
exportarParaXmlComWhere("ICATB_CARACTERIZACAO_VHM", "CVH_EST_ID", listaEstId());
exportarParaXmlComWhere("ICATB_HIST_COORDENADA_CVHM", "HCC_CVH_ID", listaCvhId);
exportarParaXmlComWhere("ICATB_HIST_OBSERVADOR_CVHM", "HSO_CVH_ID", listaCvhId);
exportarParaXmlComWhere("ICATB_OBSERVADOR", "OBS_ID", listaHsoObsId);
exportarParaXmlComWhere("ICATB_ENDERECO", "END_OBS_ID", listaHsoObsId);
exportarParaXmlComWhere("ICATB_HISTORICO_OPERACAO", "HOC_CVH_ID", listaCvhId);
exportarXmlSemWhere("ICATB_LABORATORIO");
exportarParaXmlComWhere("ICATB_RESPONSAVEL_LABORATORIO", "RPL_LAB_ID", listaLabId);
exportarParaXmlComWhere("ICATB_ENDERECO_LABORAT", "ENL_LAB_ID", listaLabId);
exportarParaXmlComWhere("ICATB_ENDERECO_RESP_LABORAT", "ENR_RPL_ID", listaRplId);
ADFExceptionHandler.displayMessage("Operação realizada com sucesso.");
Configurator.configureExportarPanelEdit(ContextExportarDadosPanelEdit.ABRIR, exportarDadosPanelEdit,
exportarDadosPanelEdit.getArquivosIntercambioPanel());
}
}).start();
}
/**
* Exporta os registros de estação com where
*/
private void exportarParaXmlComWhere(String nomeTabela, String chave, List<String> listaDeIds) {
Connection con = null;
try {
con = getConnection();
Statement stmt = con.createStatement();
String strIdsSelecionados = "";
List<String> idSelecionados = listaDeIds;
if (idSelecionados.size() > 0) {
for (String i : idSelecionados) {
strIdsSelecionados += i;
strIdsSelecionados += ", ";
}
strIdsSelecionados += ";";
//remove o último espaço e última vírgula
String resIdSelecionados = strIdsSelecionados.replaceAll(", ;", "");
String sql = "SELECT EXPORTA_XML('" + nomeTabela + "' ,'WHERE " + chave + " IN(" + resIdSelecionados + ")') as XML FROM DUAL";
// System.out.println(sql);
ResultSet rs = stmt.executeQuery(sql);
String nomeDoArquivoComExtensao = exportarDadosPanelEdit.getNomeArquivoIntercambioTextField().getText() + "\\" + nomeTabela + ".xml";
exportarDadosPanelEdit.getNomeArquivoIntercambioTextField().setText(getPathOndeSeraSalvoOArquivo());
while (rs.next()) {
exportarDadosPanelEdit.getNomeArquivoExportandoTextField().setText(nomeTabela);
exportarDadosPanelEdit.getJLabel1().setText(nomeTabela);
System.out.println("Exportando: " + nomeDoArquivoComExtensao);
String xml = rs.getString("XML");
if(xml != null){
makeFile(nomeDoArquivoComExtensao , xml);
}
}
} catch (SQLException e) {
System.out.println("Não foi possível gerar o arquivo para a tabela " + nomeTabela);
e.printStackTrace();
}
Funcionou perfeitamente, enquanto o método exportarParaXmlComWhere(…) é executado está sendo atualizado os valores dos campos textFields, labels, etc. Postei apenas parte do código, para vcs terem uma idéia do que eu es :Dtava precisando fazer.
o código:
Configurator.configureExportarPanelEdit(ContextExportarDadosPanelEdit.EXPORTAR, exportarDadosPanelEdit,
exportarDadosPanelEdit.getArquivosIntercambioPanel());
chama o contexto (habilita, desabilita, setText, etc) para determinados componentes.
Da mesma forma o código:
Configurator.configureExportarPanelEdit(ContextExportarDadosPanelEdit.ABRIR, exportarDadosPanelEdit,
exportarDadosPanelEdit.getArquivosIntercambioPanel());
chama o contexto (habilita, desabilita, setText, etc) para determinados componentes.
Obrigado.