Olá pessoal!!!
Estou com um problema de performance no pocket e gostaria de ver se alguem pode me ajudar.
Estou desenvolvendo um sistema de sincronização onde chamo um web service e ele me retorna
um arquivo compactado que eu descompacto no pocket e começo a ler varios arquivos .sql com
instrucoes a serem executadas no pocket. Mas em um determinado momento dah um erro de memoria.
Se alguem puder me ajudar eu agradeço mto.
Desde já mto obrigado.
Seque meu codigo:
/**
* Realiza a importacao.
*/
private void iniciarProcessoImportacao(){
try {
List creates = new ArrayList();
List inserts = new ArrayList();
List updates = new ArrayList();
List deletes = new ArrayList();
File dir = new File(ZIP_DIR);
File[] arquivos = dir.listFiles();
// separa os scripts
for ( int i = 0 ; i < arquivos.length; i++ ){
File arquivo = arquivos[i];
if ( arquivo.isFile() ){
if ( arquivo.getName().endsWith(".sql") ){
if ( arquivo.getName().indexOf("createTable") > 0 ){
ScriptBean script = new ScriptBean();
script.setPeso(arquivo.getName().substring(0,2));
script.setFile(arquivo);
//creates.add(script);
} if ( arquivo.getName().indexOf("inserts") > 0 ){
ScriptBean script = new ScriptBean();
script.setPeso(arquivo.getName().substring(0,2));
script.setFile(arquivo);
inserts.add(script);
} if ( arquivo.getName().indexOf("updates") > 0 ) {
ScriptBean script = new ScriptBean();
script.setPeso(arquivo.getName().substring(0,2));
script.setFile(arquivo);
//updates.add(script);
} if ( arquivo.getName().indexOf("deletes") > 0 ) {
ScriptBean script = new ScriptBean();
script.setPeso(arquivo.getName().substring(0,2));
script.setFile(arquivo);
//deletes.add(script);
}
}
}
}
Ordenacao.ordenarLista(creates, "peso");
Ordenacao.ordenarLista(inserts, "peso");
Ordenacao.ordenarLista(updates, "peso");
Ordenacao.ordenarLista(deletes, "peso");
jpbImportacao.setMaximum(4);
jpbImportacao.setValue(1);
BufferedReader in = null;
// criando tabelas
for ( int i = 0; i < creates.size(); i++ ){
ScriptBean script = (ScriptBean) creates.get(i);
File arquivo = script.getFile();
FileReader reader = new FileReader(arquivo);
in = new BufferedReader(reader);
String str;
form.addInfo("Criando/alterando tabela " + getNomeTabelaArquivo(arquivo.getName()));
jpbImpDados.setMaximum( Integer.parseInt(in.readLine()) );
jpbImpDados.setValue(0);
int cont = 0;
while (in.ready()) {
str = in.readLine();
executaScript(str);
jpbImpDados.setValue(++cont);
str = null;
}
in.close();
reader.close();
reader = null;
in = null;
arquivo = null;
try {
Conexao.getConexao().commit();
} catch (SQLException ex) {
form.addError(ex.getMessage());
}
}
jpbImportacao.setValue(2);
// deletando
for ( int i = 0; i < deletes.size(); i++ ){
ScriptBean script = (ScriptBean) deletes.get(i);
File arquivo = script.getFile();
FileReader reader = new FileReader(arquivo);
in = new BufferedReader(reader);
String str;
form.addInfo("Apagando registros da tabela " + getNomeTabelaArquivo(arquivo.getName()));
jpbImpDados.setMaximum( Integer.parseInt(in.readLine()) );
jpbImpDados.setValue(0);
int cont = 0;
while (in.ready()) {
jpbImpDados.setValue(++cont);
str = in.readLine();
executaScript(str);
str = null;
}
in.close();
reader.close();
reader = null;
in = null;
arquivo = null;
try {
Conexao.getConexao().commit();
} catch (SQLException ex) {
form.addError(ex.getMessage());
}
}
jpbImportacao.setValue(3);
// atualizando dados
for ( int i = 0; i < updates.size(); i++ ){
ScriptBean script = (ScriptBean) updates.get(i);
File arquivo = script.getFile();
FileReader reader = new FileReader(arquivo);
in = new BufferedReader(reader);
String str;
form.addInfo("Atualizando registros da tabela " + getNomeTabelaArquivo(arquivo.getName()));
jpbImpDados.setMaximum( Integer.parseInt(in.readLine()) );
jpbImpDados.setValue(0);
int cont = 0;
while (in.ready()) {
str = in.readLine();
executaScript(str);
jpbImpDados.setValue(++cont);
str = null;
}
in.close();
reader.close();
reader = null;
in = null;
arquivo = null;
try {
Conexao.getConexao().commit();
} catch (SQLException ex) {
form.addError(ex.getMessage());
}
}
jpbImportacao.setValue(4);
// inserindo
for ( int i = 0; i < inserts.size(); i++ ){
ScriptBean script = (ScriptBean) inserts.get(i);
File arquivo = script.getFile();
FileReader reader = new FileReader(arquivo);
in = new BufferedReader(reader);
String str;
form.addInfo("Inserindo registros da tabela " + getNomeTabelaArquivo(arquivo.getName()));
jpbImpDados.setMaximum( Integer.parseInt(in.readLine()) );
jpbImpDados.setValue(0);
int cont = 0;
while (in.ready()) {
str = in.readLine();
executaScript(str);
jpbImpDados.setValue(++cont);
str = null;
}
in.close();
reader.close();
reader = null;
in = null;
arquivo = null;
try {
Conexao.getConexao().commit();
} catch (SQLException ex) {
form.addError(ex.getMessage());
}
}
} catch (IOException ex) {
form.addError(ex.getMessage());
}
}

