[RESOLVIDO]ler e alterar txt!

16 respostas
R

Galera achei um metodo p ler e escrever arquivo txt, porem estou com um erro q nao consigo entender quando o metodo ler o arquivo e vai setar o dado relativo a UF no banco da pau se alguem percebe me ajuda so falta isso p terminar esse modulo.

public void lerArquivo(ActionEvent event) throws FileNotFoundException, IOException {
        Vigencia v1 = vigenciaFacade.getVigencia();
        if (v1 != null) {
            FacesUtil.mensageWarn("", "Já exite uma vigência aberta");
        } else {
             teste.deletarArquivosFrequencias();
             teste.deletarArquivosMecs();

            if (inputFileController.getFileList().size() > 0 && validarFormulario()) {

                File f = inputFileController.getCurrentFile().getFile();
                List<String> lines = new ArrayList<String>();
                try {
                    LerEscreveArquivo lea = new LerEscreveArquivo(f);
                    int i = 0;
                    String ln;
                    while ((ln = lea.getLine(i++)) != null) {

                        lines.add(ln);
                    }
                } catch (IOException e) {
                    System.err.println(e);
                }
                List<ArquivoMec> arquivoMecs = new ArrayList<ArquivoMec>();
                for (int j = 0; j < lines.size(); j++) {

                    String string = lines.get(j).replace("\"", "");
                    String[] ss = string.split(";");

                    ArquivoMec a = new ArquivoMec();
                    for (int i = 0; i < ss.length; i++) {
                        if (ss.length > 0 && ss[0] != null && !ss[0].equals("")) {
                            String str = ss[0].replace("ÿþ", "");
                            a.setTipoRegistro(new TipoRegistro(Integer.parseInt(str.trim())));
                        }
                        if (ss.length > 1 && ss[1] != null) {
                            String ano = Pattern.compile("[^0-9]").matcher(ss[1]).replaceAll("");
                            a.setAno(new Integer(ano.trim()));
                        }
                        if (ss.length > 2 && ss[2] != null) {
                            String m1 = Pattern.compile("[^0-9]").matcher(ss[2]).replaceAll("");
                            a.setMes1(Integer.parseInt(m1.trim()));
                        }
                        if (ss.length > 3 && ss[3] != null) {
                            String m2 = Pattern.compile("[^0-9]").matcher(ss[3]).replaceAll("");
                            a.setMes2(Integer.parseInt(m2.trim()));
                        }
                        [b]if (ss.length > 4 && ss[4] != null) {
                            String uf = Pattern.compile("[^0-9]").matcher(ss[4]).replaceAll("");
                            a.setUf(uf);
                        }[/b]
                        if (ss.length > 5 && ss[5] != null) {
                            String idMunicipio = Pattern.compile("[^0-9]").matcher(ss[5]).replaceAll("");
                            a.setMunicipio(new Municipio(Integer.parseInt(idMunicipio)));
                        }
                        if (ss.length > 6 && ss[6] != null && !ss[6].equals("")) {
                            String inep = Pattern.compile("[^0-9]").matcher(ss[6]).replaceAll("");
                            a.setEscola(new Escola(Integer.parseInt(inep)));
                            a.setInep(Integer.parseInt(inep));
                        }
                        if (ss.length > 7 && ss[7] != null && !ss[7].equals("")) {
                            String nis = Pattern.compile("[^0-9]").matcher(ss[7]).replaceAll("");
                            a.setNis(nis);
                        }
                        if (ss.length > 8 && ss[8] != null) {
                            String nome = Pattern.compile("[^A-Z, a-z]").matcher(ss[8]).replaceAll("");
                            a.setNome(nome);
                        }
                        if (ss.length > 9 && ss[9] != null) {
                            String nomeResponsavel = Pattern.compile("[^A-Z, a-z]").matcher(ss[9]).replaceAll("");
                            a.setNomeResponsavel(nomeResponsavel);
                        }
                        if (ss.length > 10 && ss[10] != null) {
                            String[] st = ss[10].split("/");
                            String somenteNumeros1 = Pattern.compile("[^0-9]").matcher(st[0]).replaceAll("");
                            String somenteNumeros2 = Pattern.compile("[^0-9]").matcher(st[1]).replaceAll("");
                            String somenteNumeros3 = Pattern.compile("[^0-9]").matcher(st[2]).replaceAll("");
                            GregorianCalendar gc = new GregorianCalendar(Integer.parseInt(somenteNumeros3), (Integer.parseInt(somenteNumeros2) - 1),
                                    Integer.parseInt(somenteNumeros1));
                            a.setDataNascimento(gc.getTime());
                        }
                        if (ss.length > 11 && ss[11] != null) {
                            String ser = Pattern.compile("[^0-9]").matcher(ss[11]).replaceAll("");
                            a.setSerie(new Serie(Integer.parseInt(ser)));
                        }
                        if (ss.length > 12 && ss[12] != null) {
                            String idSituacao = Pattern.compile("[^0-9]").matcher(ss[12]).replaceAll("");
                            a.setSituacao(new Situacao(Integer.parseInt(idSituacao)));
                        }
                        if (ss.length > 13 && ss[13] != null) {
                            String idAcompanhamento = Pattern.compile("[^0-9]").matcher(ss[13]).replaceAll("");
                            a.setTipoAcompanhamento(new TipoAcompanhamento(Integer.parseInt(idAcompanhamento)));
                        }
                        if (ss.length > 14 && ss[14] != null) {
                            String solicitante = Pattern.compile("[^0-9]").matcher(ss[14]).replaceAll("");
                            a.setSolicitante(solicitante);
                        }
                        if (ss.length > 15 && ss[15] != null) {
                            String telefone = Pattern.compile("[^0-9]").matcher(ss[15]).replaceAll("");
                            a.setTelefone(telefone);
                        }
                        if (ss.length > 16 && ss[16] != null) {
                            String inepDestino = Pattern.compile("[^0-9]").matcher(ss[16]).replaceAll("");
                            a.setInepDestino(inepDestino);
                        }
                        if (ss.length > 17 && ss[17] != null) {
                            a.setSituacaoDestino(null);
                        }
                        if (ss.length > 18 && ss[18] != null && !ss[18].equals("")) {
                            a.setFrequenciaMes1(null);
                        }
                        if (ss.length > 19 && ss[19] != null && !ss[19].equals("")) {
                            a.setMotivoBfMes1(null);
                        }
                        if (ss.length > 20 && ss[20] != null && !ss[20].equals("")) {
                            a.setFrequenciaMes2(null);
                        }
                        if (ss.length > 21 && ss[21] != null && !ss[21].equals("")) {
                            a.setMotivoBfMes2(null);
                        }
                    }
                    System.out.println(string);
                    arquivoMecs.add(a);
                }
                try {
                   // codigos
        }
    }

16 Respostas

ribclauport

Se não colocar o erro que está gerando no console, ninguém ira poder te ajudar. Quando iniciamos achamos que o console é “grego”, mas não é, na maioria das vezes a resposta está na “pilha”, ou na “Exception gerada”, se não houver erro em nível de “Exception”, ae então é um erro de lógica, desta forma você precisa descrever o cenário, tipo entro com esse valor para o txt, e grava isso no banco…

Outra coisa muito importante, você debugou o código? procure por tutoriais relativos ao debug da sua IDE, ou se estiver usando java superior ao java 3, pode usar assertions, mas considere aprender técnicas de debug.

L

POO pra que né?

R
ribclauport:
quando o metodo ler o arquivo e vai setar o dado relativo a UF no banco da pau

Se não colocar o erro que está gerando no console, ninguém ira poder te ajudar. Quando iniciamos achamos que o console é "grego", mas não é, na maioria das vezes a resposta está na "pilha", ou na "Exception gerada", se não houver erro em nível de "Exception", ae então é um erro de lógica, desta forma você precisa descrever o cenário, tipo entro com esse valor para o txt, e grava isso no banco....

Outra coisa muito importante, você debugou o código? procure por tutoriais relativos ao debug da sua IDE, ou se estiver usando java superior ao java 3, pode usar assertions, mas considere aprender técnicas de debug.

Bom ribclauport as vezes na minha inexperiencia acabo colocando a questao de forma errada, mas vou tentar se especifico desta fez, colocar as saidas mas mesmo assim acho que vou acabar me enrolando mas vamos la .... A questão em relacao a UF consegui resolver:
if (ss.length &gt; 4 && ss[4] != null) {
                            String uf = Pattern.compile(&quot;[^A-Z, a-z]&quot;).matcher(ss[4]).replaceAll(&quot;&quot;);
                            a.setUf(uf);
                        }
pattern.compile("[^A-Z, a-z]").matcher estava escrito de forma errada, assim :
if (ss.length &gt; 4 && ss[4] != null) {
                            String uf = Pattern.compile(&quot;[^0-9]&quot;).matcher(ss[4]).replaceAll(&quot;&quot;);
                            a.setUf(uf);
                        }
Agora estou quebrando cabeca com outra coisa, o que quero fazer é o seguinte, tenho um arquivo que tem milhares de linhas, esta em formato txt organizado da maneira abaixo: 1;2012;2;3;"RR";"1400100";"14322382";"[telefone removido]";"FULANO";"xxxxxxxxxxxxxxxxxxxxxx";"23/02/2000";11;3;1;;;;;;;;; 1;2012;2;3;"RR";"1400100";"14322382";"[telefone removido]";"BELTRANO";"xxxxxxxxxxxxxxxxxxxxxx";"15/10/1997";12;3;1;;;;;;;;;

Preciso ler estas linhas, tirar (;) e as ("")e pegar cada coluna no caso e setar no banco, fiz o metodo que ja esta post so que acho que errei em algum trecho mas ñ consigo encontra, o que ele faz atualmente é setar apenas a primeira linha no banco, da segunda em diante nao vai.
Vou colocar de novo aki o metodo que uso p ler o arquivo e setar no banco e a saida que da no console da ide e arquivo que estou utilizando para o importe de dados contem duas linhas (para teste)

Metodo para ler arquivo :
public void lerArquivo(ActionEvent event) throws FileNotFoundException, IOException {
        Vigencia v1 = vigenciaFacade.getVigencia();
        StringBuilder sb = new StringBuilder();
        if (v1 != null) {
            FacesUtil.mensageWarn(&quot;&quot;, &quot; exite uma vigência aberta&quot;);
        } else {
            teste.deletarArquivosFrequencias();
            teste.deletarArquivosMecs();

            if (inputFileController.getFileList().size() &gt; 0 && validarFormulario()) {

                File f = inputFileController.getCurrentFile().getFile();
                List&lt;String&gt; lines = new ArrayList&lt;String&gt;();
                try {
                    LerEscreveArquivo lea = new LerEscreveArquivo(f);
                    int i = 0;
                    String ln;
                    while ((ln = lea.getLine(i++)) != null) {
                        //System.out.println("teste saida");
                        lines.add(ln);
                        System.out.println("teste saida = " + lines);
                    }
                } catch (IOException e) {
                    System.err.println(e);
                }
                List&lt;ArquivoMec&gt; arquivoMecs = new ArrayList&lt;ArquivoMec&gt;();
                for (int j = 0; j &lt; lines.size(); j++) {
                    ArquivoMec a = new ArquivoMec();
                    //Substituir &quot; para inserir no banco
                    String string = lines.get(j).replace(&quot;\&quot;&quot;, &quot;&quot;);

                    //separa os vetores por coluna
                    String[] ss = string.split(&quot;;&quot;);


                    for (int i = 0; i &lt; ss.length; i++) {
                        sb.append(i);
                        if (ss.length &gt; 0 && ss[0] != null && !ss[0].equals(&quot;&quot;)) {
                            String str = ss[0].replace(&quot;ÿþ&quot;, &quot;&quot;);
                            a.setTipoRegistro(new TipoRegistro(Integer.parseInt(str.trim())));
                        }
                        if (ss.length &gt; 1 && ss[1] != null) {
                            String ano = Pattern.compile(&quot;[^0-9]&quot;).matcher(ss[1]).replaceAll(&quot;&quot;);
                            a.setAno(new Integer(ano.trim()));
                        }
                        if (ss.length &gt; 2 && ss[2] != null) {
                            String m1 = Pattern.compile(&quot;[^0-9]&quot;).matcher(ss[2]).replaceAll(&quot;&quot;);
                            a.setMes1(Integer.parseInt(m1.trim()));
                        }
                        if (ss.length &gt; 3 && ss[3] != null) {
                            String m2 = Pattern.compile(&quot;[^0-9]&quot;).matcher(ss[3]).replaceAll(&quot;&quot;);
                            a.setMes2(Integer.parseInt(m2.trim()));
                        }
                        if (ss.length &gt; 4 && ss[4] != null) {
                            String uf = Pattern.compile(&quot;[^A-Z, a-z]&quot;).matcher(ss[4]).replaceAll(&quot;&quot;);
                            a.setUf(uf);
                        }
                        if (ss.length &gt; 5 && ss[5] != null) {
                            String idMunicipio = Pattern.compile(&quot;[^0-9]&quot;).matcher(ss[5]).replaceAll(&quot;&quot;);
                            a.setMunicipio(new Municipio(Integer.parseInt(idMunicipio)));
                        }
                        if (ss.length &gt; 6 && ss[6] != null && !ss[6].equals(&quot;&quot;)) {
                            String inep = Pattern.compile(&quot;[^0-9]&quot;).matcher(ss[6]).replaceAll(&quot;&quot;);
                            a.setEscola(new Escola(Integer.parseInt(inep)));
                            a.setInep(Integer.parseInt(inep));
                        }
                        if (ss.length &gt; 7 && ss[7] != null && !ss[7].equals(&quot;&quot;)) {
                            String nis = Pattern.compile(&quot;[^0-9]&quot;).matcher(ss[7]).replaceAll(&quot;&quot;);
                            a.setNis(nis);
                        }
                        if (ss.length &gt; 8 && ss[8] != null) {
                            String nome = Pattern.compile(&quot;[^A-Z, a-z]&quot;).matcher(ss[8]).replaceAll(&quot;&quot;);
                            a.setNome(nome);
                        }
                        if (ss.length &gt; 9 && ss[9] != null) {
                            String nomeResponsavel = Pattern.compile(&quot;[^A-Z, a-z]&quot;).matcher(ss[9]).replaceAll(&quot;&quot;);
                            a.setNomeResponsavel(nomeResponsavel);
                        }
                        if (ss.length &gt; 10 && ss[10] != null) {
                            String[] st = ss[10].split(&quot;/&quot;);
                            String somenteNumeros1 = Pattern.compile(&quot;[^0-9]&quot;).matcher(st[0]).replaceAll(&quot;&quot;);
                            String somenteNumeros2 = Pattern.compile(&quot;[^0-9]&quot;).matcher(st[1]).replaceAll(&quot;&quot;);
                            String somenteNumeros3 = Pattern.compile(&quot;[^0-9]&quot;).matcher(st[2]).replaceAll(&quot;&quot;);
                            GregorianCalendar gc = new GregorianCalendar(Integer.parseInt(somenteNumeros3), (Integer.parseInt(somenteNumeros2) - 1),
                                    Integer.parseInt(somenteNumeros1));
                            a.setDataNascimento(gc.getTime());
                        }
                        if (ss.length &gt; 11 && ss[11] != null) {
                            String ser = Pattern.compile(&quot;[^0-9]&quot;).matcher(ss[11]).replaceAll(&quot;&quot;);
                            a.setSerie(new Serie(Integer.parseInt(ser)));
                        }
                        if (ss.length &gt; 12 && ss[12] != null) {
                            String idSituacao = Pattern.compile(&quot;[^0-9]&quot;).matcher(ss[12]).replaceAll(&quot;&quot;);
                            a.setSituacao(new Situacao(Integer.parseInt(idSituacao)));
                        }
                        if (ss.length &gt; 13 && ss[13] != null) {
                            String idAcompanhamento = Pattern.compile(&quot;[^0-9]&quot;).matcher(ss[13]).replaceAll(&quot;&quot;);
                            a.setTipoAcompanhamento(new TipoAcompanhamento(Integer.parseInt(idAcompanhamento)));
                            // ultimo registro do mec
                        }
                        if (ss.length &gt; 14 && ss[14] != null) {
                            String solicitante = Pattern.compile(&quot;[^0-9]&quot;).matcher(ss[14]).replaceAll(&quot;&quot;);
                            //a.setSolicitante(solicitante);
                            a.setSolicitante(null);
                        }
                        if (ss.length &gt; 15 && ss[15] != null) {
                            String telefone = Pattern.compile(&quot;[^0-9]&quot;).matcher(ss[15]).replaceAll(&quot;&quot;);
                            //a.setTelefone(telefone);
                            a.setTelefone(null);
                        }
                        if (ss.length &gt; 16 && ss[16] != null) {
                            String inepDestino = Pattern.compile(&quot;[^0-9]&quot;).matcher(ss[16]).replaceAll(&quot;&quot;);
                            a.setInepDestino(null);
                            //a.setInepDestino(inepDestino);
                        }
                        if (ss.length &gt; 17 && ss[17] != null) {
                            a.setSituacaoDestino(null);
                        }
                        if (ss.length &gt; 18 && ss[18] != null && !ss[18].equals(&quot;&quot;)) {
                            a.setFrequenciaMes1(null);
                        }
                        if (ss.length &gt; 19 && ss[19] != null && !ss[19].equals(&quot;&quot;)) {
                            a.setMotivoBfMes1(null);
                        }
                        if (ss.length &gt; 20 && ss[20] != null && !ss[20].equals(&quot;&quot;)) {
                            a.setFrequenciaMes2(null);
                        }
                        if (ss.length &gt; 21 && ss[21] != null && !ss[21].equals(&quot;&quot;)) {
                            a.setMotivoBfMes2(null);

                        }
                    }

                    arquivoMecs.add(a);
                    System.out.println(&quot;registro add: &quot; + string);



                }
saida no console dos System.out.println(&quot;registro add: &quot; + string); e System.out.println(&quot;teste saida = &quot; + lines);
teste saida = [1;2012;2;3;&quot;RR&quot;;&quot;1400100&quot;;&quot;14322382&quot;;&quot;[telefone removido]&quot;;&quot;FERNAtesteABRICIO DA SILVA&quot;;&quot;FRANCISCA DA SIRLEIDA FABRICIO DA SILVA&quot;;&quot;23/02/2000&quot;;11;3;1;;;;;;;;;
]
teste saida = [1;2012;2;3;&quot;RR&quot;;&quot;1400100&quot;;&quot;14322382&quot;;&quot;[telefone removido]&quot;;&quot;FERNAtesteABRICIO DA SILVA&quot;;&quot;FRANCISCA DA SIRLEIDA FABRICIO DA SILVA&quot;;&quot;23/02/2000&quot;;11;3;1;;;;;;;;;
, 1;2012;2;3;&quot;RR&quot;;&quot;1400100&quot;;&quot;14322382&quot;;&quot;[telefone removido]&quot;;&quot;FERNAtesteABRICIO DA SILVA&quot;;&quot;FRANCISCA DA SIRLEIDA FABRICIO DA SILVA&quot;;&quot;23/02/2000&quot;;11;3;1;;;;;;;;;
1;2012;2;3;&quot;RR&quot;;&quot;1400100&quot;;&quot;14322382&quot;;&quot;[telefone removido]&quot;;&quot;MATHEUS FABRICIO DA SILVA&quot;;&quot;FRANCISCA DA SIRLEIDA FABRICIO DA SILVA&quot;;&quot;15/10/1997&quot;;12;3;1;;;;;;;;;
]

////

registro add: 1;2012;2;3;RR;1400100;14322382;[telefone removido];FERNAtesteABRICIO DA SILVA;FRANCISCA DA SIRLEIDA FABRICIO DA SILVA;23/02/2000;11;3;1;;;;;;;;;

registro add: 1;2012;2;3;RR;1400100;14322382;[telefone removido];FERNAtesteABRICIO DA SILVA;FRANCISCA DA SIRLEIDA FABRICIO DA SILVA;23/02/2000;11;3;1;;;;;;;;;
1;2012;2;3;RR;1400100;14322382;[telefone removido];MATHEUS FABRICIO DA SILVA;FRANCISCA DA SIRLEIDA FABRICIO DA SILVA;15/10/1997;12;3;1;;;;;;;;;

O METODO ABAIXO É O QUE USO P LER O ARQUIVO ELE ESTA SEPARADO EM OUTRA CLASSE
[code]
public LerEscreveArquivo(File arquivo) throws IOException {
BufferedReader br = new BufferedReader(new FileReader(arquivo));
StringBuilder bufSaida = new StringBuilder();
String ln;
while ((ln = br.readLine()) != null) {
String a = bufSaida.append(ln).append("\n").toString();
list.add(a);
}
br.close();
}[code]

Bom é isso, se cologuei de forma errada podem me corrigir, o que mais quero é aprender com o que a galera ja sabe .... :D

ribclauport

Essa carinha ae no trecho, abaixo ta atrapalhando eu entender.

Preciso ler estas linhas, tirar ( e as (""e pegar cada coluna no caso e setar no banco;

O que você precisa tirar?

ribclauport

Bom pela saída abaixo que você colocou, esta lendo as linhas do txt corretamente certo?

registro add: 1;2012;2;3;RR;1400100;14322382;[telefone removido];FERNAtesteABRICIO DA SILVA;FRANCISCA DA SIRLEIDA FABRICIO DA SILVA;23/02/2000;11;3;1;;;;;;;;;  
  
registro add: 1;2012;2;3;RR;1400100;14322382;[telefone removido];FERNAtesteABRICIO DA SILVA;FRANCISCA DA SIRLEIDA FABRICIO DA SILVA;23/02/2000;11;3;1;;;;;;;;;  
1;2012;2;3;RR;1400100;14322382;[telefone removido];MATHEUS FABRICIO DA SILVA;FRANCISCA DA SIRLEIDA FABRICIO DA SILVA;15/10/1997;12;3;1;;;;;;;;;

Vamos por partes, desta forma as linhas do txt estão vindo corretamente certo?

aguardo.

ribclauport

Qual banco está usando? poste o fonte do método que está usando para setar no banco!

Aguardo.

R

[quote=rafaelAlves20]

ribclauport:
quando o metodo ler o arquivo e vai setar o dado relativo a UF no banco da pau

Se não colocar o erro que está gerando no console, ninguém ira poder te ajudar. Quando iniciamos achamos que o console é "grego", mas não é, na maioria das vezes a resposta está na "pilha", ou na "Exception gerada", se não houver erro em nível de "Exception", ae então é um erro de lógica, desta forma você precisa descrever o cenário, tipo entro com esse valor para o txt, e grava isso no banco....

Outra coisa muito importante, você debugou o código? procure por tutoriais relativos ao debug da sua IDE, ou se estiver usando java superior ao java 3, pode usar assertions, mas considere aprender técnicas de debug.

Bom ribclauport as vezes na minha inexperiencia acabo colocando a questao de forma errada, mas vou tentar se especifico desta fez, colocar as saidas mas mesmo assim acho que vou acabar me enrolando mas vamos la .... A questão em relacao a UF consegui resolver:
if (ss.length &gt; 4 && ss[4] != null) {
                            String uf = Pattern.compile(&quot;[^A-Z, a-z]&quot;).matcher(ss[4]).replaceAll(&quot;&quot;);
                            a.setUf(uf);
                        }
pattern.compile("[^A-Z, a-z]" ).matcher estava escrito de forma errada, assim :
if (ss.length &gt; 4 && ss[4] != null) {
                            String uf = Pattern.compile(&quot;[^0-9]&quot;).matcher(ss[4]).replaceAll(&quot;&quot;);
                            a.setUf(uf);
                        }
Agora estou quebrando cabeca com outra coisa, o que quero fazer é o seguinte, tenho um arquivo que tem milhares de linhas, esta em formato txt organizado da maneira abaixo: 1;2012;2;3;"RR";"1400100";"14322382";"[telefone removido]";"FULANO";"xxxxxxxxxxxxxxxxxxxxxx";"23/02/2000";11;3;1;;;;;;;;; 1;2012;2;3;"RR";"1400100";"14322382";"[telefone removido]";"BELTRANO";"xxxxxxxxxxxxxxxxxxxxxx";"15/10/1997";12;3;1;;;;;;;;;

Preciso ler estas linhas, tirar ; e as "" e pegar cada coluna no caso e setar no banco, fiz o metodo que ja esta post so que acho que errei em algum trecho mas ñ consigo encontra, o que ele faz atualmente é setar apenas a primeira linha no banco, da segunda em diante nao vai.
Vou colocar de novo aki o metodo que uso p ler o arquivo e setar no banco e a saida que da no console da ide e arquivo que estou utilizando para o importe de dados contem duas linhas (para teste)

Metodo para ler arquivo :
public void lerArquivo(ActionEvent event) throws FileNotFoundException, IOException {
        Vigencia v1 = vigenciaFacade.getVigencia();
        StringBuilder sb = new StringBuilder();
        if (v1 != null) {
            FacesUtil.mensageWarn(&quot;&quot;, &quot; exite uma vigência aberta&quot;);
        } else {
            teste.deletarArquivosFrequencias();
            teste.deletarArquivosMecs();

            if (inputFileController.getFileList().size() &gt; 0 && validarFormulario()) {

                File f = inputFileController.getCurrentFile().getFile();
                List&lt;String&gt; lines = new ArrayList&lt;String&gt;();
                try {
                    LerEscreveArquivo lea = new LerEscreveArquivo(f);
                    int i = 0;
                    String ln;
                    while ((ln = lea.getLine(i++)) != null) {
                        //System.out.println("teste saida");
                        lines.add(ln);
                        System.out.println("teste saida = " + lines);
                    }
                } catch (IOException e) {
                    System.err.println(e);
                }
                List&lt;ArquivoMec&gt; arquivoMecs = new ArrayList&lt;ArquivoMec&gt;();
                for (int j = 0; j &lt; lines.size(); j++) {
                    ArquivoMec a = new ArquivoMec();
                    //Substituir &quot; para inserir no banco
                    String string = lines.get(j).replace(&quot;\&quot;&quot;, &quot;&quot;);

                    //separa os vetores por coluna
                    String[] ss = string.split(&quot;;&quot;);


                    for (int i = 0; i &lt; ss.length; i++) {
                        sb.append(i);
                        if (ss.length &gt; 0 && ss[0] != null && !ss[0].equals(&quot;&quot;)) {
                            String str = ss[0].replace(&quot;ÿþ&quot;, &quot;&quot;);
                            a.setTipoRegistro(new TipoRegistro(Integer.parseInt(str.trim())));
                        }
                        if (ss.length &gt; 1 && ss[1] != null) {
                            String ano = Pattern.compile(&quot;[^0-9]&quot;).matcher(ss[1]).replaceAll(&quot;&quot;);
                            a.setAno(new Integer(ano.trim()));
                        }
                        if (ss.length &gt; 2 && ss[2] != null) {
                            String m1 = Pattern.compile(&quot;[^0-9]&quot;).matcher(ss[2]).replaceAll(&quot;&quot;);
                            a.setMes1(Integer.parseInt(m1.trim()));
                        }
                        if (ss.length &gt; 3 && ss[3] != null) {
                            String m2 = Pattern.compile(&quot;[^0-9]&quot;).matcher(ss[3]).replaceAll(&quot;&quot;);
                            a.setMes2(Integer.parseInt(m2.trim()));
                        }
                        if (ss.length &gt; 4 && ss[4] != null) {
                            String uf = Pattern.compile(&quot;[^A-Z, a-z]&quot;).matcher(ss[4]).replaceAll(&quot;&quot;);
                            a.setUf(uf);
                        }
                        if (ss.length &gt; 5 && ss[5] != null) {
                            String idMunicipio = Pattern.compile(&quot;[^0-9]&quot;).matcher(ss[5]).replaceAll(&quot;&quot;);
                            a.setMunicipio(new Municipio(Integer.parseInt(idMunicipio)));
                        }
                        if (ss.length &gt; 6 && ss[6] != null && !ss[6].equals(&quot;&quot;)) {
                            String inep = Pattern.compile(&quot;[^0-9]&quot;).matcher(ss[6]).replaceAll(&quot;&quot;);
                            a.setEscola(new Escola(Integer.parseInt(inep)));
                            a.setInep(Integer.parseInt(inep));
                        }
                        if (ss.length &gt; 7 && ss[7] != null && !ss[7].equals(&quot;&quot;)) {
                            String nis = Pattern.compile(&quot;[^0-9]&quot;).matcher(ss[7]).replaceAll(&quot;&quot;);
                            a.setNis(nis);
                        }
                        if (ss.length &gt; 8 && ss[8] != null) {
                            String nome = Pattern.compile(&quot;[^A-Z, a-z]&quot;).matcher(ss[8]).replaceAll(&quot;&quot;);
                            a.setNome(nome);
                        }
                        if (ss.length &gt; 9 && ss[9] != null) {
                            String nomeResponsavel = Pattern.compile(&quot;[^A-Z, a-z]&quot;).matcher(ss[9]).replaceAll(&quot;&quot;);
                            a.setNomeResponsavel(nomeResponsavel);
                        }
                        if (ss.length &gt; 10 && ss[10] != null) {
                            String[] st = ss[10].split(&quot;/&quot;);
                            String somenteNumeros1 = Pattern.compile(&quot;[^0-9]&quot;).matcher(st[0]).replaceAll(&quot;&quot;);
                            String somenteNumeros2 = Pattern.compile(&quot;[^0-9]&quot;).matcher(st[1]).replaceAll(&quot;&quot;);
                            String somenteNumeros3 = Pattern.compile(&quot;[^0-9]&quot;).matcher(st[2]).replaceAll(&quot;&quot;);
                            GregorianCalendar gc = new GregorianCalendar(Integer.parseInt(somenteNumeros3), (Integer.parseInt(somenteNumeros2) - 1),
                                    Integer.parseInt(somenteNumeros1));
                            a.setDataNascimento(gc.getTime());
                        }
                        if (ss.length &gt; 11 && ss[11] != null) {
                            String ser = Pattern.compile(&quot;[^0-9]&quot;).matcher(ss[11]).replaceAll(&quot;&quot;);
                            a.setSerie(new Serie(Integer.parseInt(ser)));
                        }
                        if (ss.length &gt; 12 && ss[12] != null) {
                            String idSituacao = Pattern.compile(&quot;[^0-9]&quot;).matcher(ss[12]).replaceAll(&quot;&quot;);
                            a.setSituacao(new Situacao(Integer.parseInt(idSituacao)));
                        }
                        if (ss.length &gt; 13 && ss[13] != null) {
                            String idAcompanhamento = Pattern.compile(&quot;[^0-9]&quot;).matcher(ss[13]).replaceAll(&quot;&quot;);
                            a.setTipoAcompanhamento(new TipoAcompanhamento(Integer.parseInt(idAcompanhamento)));
                            // ultimo registro do mec
                        }
                        if (ss.length &gt; 14 && ss[14] != null) {
                            String solicitante = Pattern.compile(&quot;[^0-9]&quot;).matcher(ss[14]).replaceAll(&quot;&quot;);
                            //a.setSolicitante(solicitante);
                            a.setSolicitante(null);
                        }
                        if (ss.length &gt; 15 && ss[15] != null) {
                            String telefone = Pattern.compile(&quot;[^0-9]&quot;).matcher(ss[15]).replaceAll(&quot;&quot;);
                            //a.setTelefone(telefone);
                            a.setTelefone(null);
                        }
                        if (ss.length &gt; 16 && ss[16] != null) {
                            String inepDestino = Pattern.compile(&quot;[^0-9]&quot;).matcher(ss[16]).replaceAll(&quot;&quot;);
                            a.setInepDestino(null);
                            //a.setInepDestino(inepDestino);
                        }
                        if (ss.length &gt; 17 && ss[17] != null) {
                            a.setSituacaoDestino(null);
                        }
                        if (ss.length &gt; 18 && ss[18] != null && !ss[18].equals(&quot;&quot;)) {
                            a.setFrequenciaMes1(null);
                        }
                        if (ss.length &gt; 19 && ss[19] != null && !ss[19].equals(&quot;&quot;)) {
                            a.setMotivoBfMes1(null);
                        }
                        if (ss.length &gt; 20 && ss[20] != null && !ss[20].equals(&quot;&quot;)) {
                            a.setFrequenciaMes2(null);
                        }
                        if (ss.length &gt; 21 && ss[21] != null && !ss[21].equals(&quot;&quot;)) {
                            a.setMotivoBfMes2(null);

                        }
                    }

                    arquivoMecs.add(a);
                    System.out.println(&quot;registro add: &quot; + string);



                }
saida no console dos System.out.println(&quot;registro add: &quot; + string); e System.out.println(&quot;teste saida = &quot; + lines);
teste saida = [1;2012;2;3;&quot;RR&quot;;&quot;1400100&quot;;&quot;14322382&quot;;&quot;[telefone removido]&quot;;&quot;FERNAtesteABRICIO DA SILVA&quot;;&quot;FRANCISCA DA SIRLEIDA FABRICIO DA SILVA&quot;;&quot;23/02/2000&quot;;11;3;1;;;;;;;;;
]
teste saida = [1;2012;2;3;&quot;RR&quot;;&quot;1400100&quot;;&quot;14322382&quot;;&quot;[telefone removido]&quot;;&quot;FERNAtesteABRICIO DA SILVA&quot;;&quot;FRANCISCA DA SIRLEIDA FABRICIO DA SILVA&quot;;&quot;23/02/2000&quot;;11;3;1;;;;;;;;;
, 1;2012;2;3;&quot;RR&quot;;&quot;1400100&quot;;&quot;14322382&quot;;&quot;[telefone removido]&quot;;&quot;FERNAtesteABRICIO DA SILVA&quot;;&quot;FRANCISCA DA SIRLEIDA FABRICIO DA SILVA&quot;;&quot;23/02/2000&quot;;11;3;1;;;;;;;;;
1;2012;2;3;&quot;RR&quot;;&quot;1400100&quot;;&quot;14322382&quot;;&quot;[telefone removido]&quot;;&quot;MATHEUS FABRICIO DA SILVA&quot;;&quot;FRANCISCA DA SIRLEIDA FABRICIO DA SILVA&quot;;&quot;15/10/1997&quot;;12;3;1;;;;;;;;;
]

////

registro add: 1;2012;2;3;RR;1400100;14322382;[telefone removido];FERNAtesteABRICIO DA SILVA;FRANCISCA DA SIRLEIDA FABRICIO DA SILVA;23/02/2000;11;3;1;;;;;;;;;

registro add: 1;2012;2;3;RR;1400100;14322382;[telefone removido];FERNAtesteABRICIO DA SILVA;FRANCISCA DA SIRLEIDA FABRICIO DA SILVA;23/02/2000;11;3;1;;;;;;;;;
1;2012;2;3;RR;1400100;14322382;[telefone removido];MATHEUS FABRICIO DA SILVA;FRANCISCA DA SIRLEIDA FABRICIO DA SILVA;15/10/1997;12;3;1;;;;;;;;;
O METODO ABAIXO É O QUE USO P LER O ARQUIVO ELE ESTA SEPARADO EM OUTRA CLASSE
public LerEscreveArquivo(File arquivo) throws IOException {
        BufferedReader br = new BufferedReader(new FileReader(arquivo));
        StringBuilder bufSaida = new StringBuilder();
        String ln;
        while ((ln = br.readLine()) != null) {
            String a = bufSaida.append(ln).append( "\n" .toString();
            list.add(a);
        }
        br.close();
    }[code]

Bom é isso, se cologuei de forma errada podem me corrigir, o que mais quero é aprender com o que a galera ja sabe .... :D 


[/quote]

sem as carinhas !! Uso postgresql

Nao se estou falando besteira, estou setando usando o proprio metodo, mas para salvar uso o metodo seguinte
[code]@Override
    public T saveOrUpdate(T object) {        
        dao.setSession();
        dao.beginTransaction();
        objects.add((T) dao.saveOrUpdate(object));
        dao.commit();
        dao.close();
        return objects.get(0);
    }
R

Qual banco está usando? poste o fonte do método que está usando para setar no banco!

Aguardo.
Amigo desculpe a demora estoucom uns problemas de internet … Uso o postgresql, para setar no banco uso o proprio metodo nao sei se isso é o correto mas quando faco isso aki

if (ss.length &gt; 0 && ss[0] != null && !ss[0].equals(&quot;&quot;)) { String str = ss[0].replace(&quot;ÿþ&quot;, &quot;&quot;); a.setTipoRegistro(new TipoRegistro(Integer.parseInt(str.trim()))); } ele pega a informacao do desta "coluna do vetor" e seta no banco mas o metodo save e este ae:

@Override
    public T saveOrUpdate(T object) {        
        dao.setSession();
        dao.beginTransaction();
        objects.add((T) dao.saveOrUpdate(object));
        dao.commit();
        dao.close();
        return objects.get(0);
    }

ao que me parece o metodo ler ao arquivo mas o estranho é que parece que nao esta havendo uma quebra de linha entende

ribclauport

Analisando o código, é necessário chegar ao ponto em que você está persistinto seu objeto no banco certo?

Veja eu vi duas coisas relevantes, você está populando uma lista de ArquivoMec, pois abaixo as duas linhas que mostram isso:

linha 26
List<ArquivoMec> arquivoMecs = new ArrayList<ArquivoMec>();

linha 134
arquivoMecs.add(a);

analisando este contexto, não há referência no poste de como você está chamando este metodo:

public T saveOrUpdate(T object)

Ou seja em algum momento você está passando está lista, para este método, e existe algum erro, na hora de iterar esta lista passando os objetos para o metodo.
O primeiro passo levando em consideração o que tem no poste, é garantir que a lista está sendo populada de forma correta, garantir que o metodo saveOrUpdate está chamado para cada objeto da lista, e por fim fica somente o escopo da persistência, levando em consideração que é uma boa prática que sua classe “ArquivoMec”, esteja com equals e hashCode sobrescritos, já que entramos ae na questão de “identidade de objetos”, e se forem retiradas todas as hipóteses de erro citadas, pode ser ae problemas com escopo de session, objetos atachados, persistentes, transientes, e um monte de questões voltadas a ferramenta ORM que está usando, veja que não estou afirmanda que o problema é esse, mais são hipóteses, comece então fazendo

troque o

System.out.println("registro add: " + string);

por

System.out.println("registro add: " + a.get....); //ou seja, pegeu o valor do objeto a para garantir que está trazendo um a setado com os valores...

após fazer isso e garantir isso. Voce deve postar como está passando esta lista e “usando seu metodo saveOrUpdate”

Aguardo.

ribclauport

if (ss.length &gt; 0 && ss[0] != null && !ss[0].equals(&quot;&quot;)) { String str = ss[0].replace(&quot;ÿþ&quot;, &quot;&quot;); a.setTipoRegistro(new TipoRegistro(Integer.parseInt(str.trim()))); }

ele pega a informacao do desta "coluna do vetor" e seta no banco mas o metodo save e este ae:

este trecho de código está setando o valor da primeira posição do vetor e setando no objeto a!

e se você reparar no seu txt, a primeira posição vai sempre estar com o númeor 1!
Repare:

1;2012;2;3;"RR";"1400100";"14322382";"[telefone removido]";"FULANO";"xxxxxxxxxxxxxxxxxxxxxx";"23/02/2000";11;3;1;;;;;;;;;
1;2012;2;3;"RR";"1400100";"14322382";"[telefone removido]";"BELTRANO";"xxxxxxxxxxxxxxxxxxxxxx";"15/10/1997";12;3;1;;;;;;;;;

ora, a primeira posição tem o número 1!,
String str = ss[0].replace("ÿþ", "");

isso não vai dar replace em 1, pois "ÿþ", que eu não sei o que é, não "casa" com um certo?

realmente, não estou entendendo o que quis dizer com, parece que não está quebrando a linha…

ribclauport

Veja bem acredito que está aqui o problema,

Veja:

@Override  
    public T saveOrUpdate(T object) {          
        dao.setSession();  
        dao.beginTransaction();  
        objects.add((T) dao.saveOrUpdate(object));  
        dao.commit();  
        dao.close();  
        return objects.get(0);  
    }

se você estiver usando o retorno do metodo para depois fazer algo, veja que você está salvando no banco, ou atualizando o objeto T, e no retorno está sempre retornando o primeiro objeto que foi adicionado pois está pegando o primeiro objeto da lista "objects" sempre!

return objects.get(0); —> retorne o primeiro objeto da lista.

ul1sses

De acordo com a linha que você passou, percebe-se que os dados estão separados por “;”.
Então, a maneira mais simples de você fazer seria:

String vetor[] = linha.split(";");

Isso vai separar todos os dados da linha para cada posição do vetor gerado.

1;2012;2;3;“RR”;“1400100”;“14322382”;“[telefone removido]”;“FULANO”;“xxxxxxxxxxxxxxxxxxxxxx”;“23/02/2000”;11;3;1;;;;;;;;;

vetor = {1,2012,2,3,“RR”,“1400100”,“14322382”,“[telefone removido]”,“FULANO”,“xxxxxxxxxxxxxxxxxxxxxx”,“23/02/2000”,11,3,1,}

Para acessar um dado é só chamar a posição do vetor específica.

ribclauport


Post 28/03/2012 12:11:33 Subject: Re:ler e alterar txt!!!
De acordo com a linha que você passou, percebe-se que os dados estão separados por “;”.
Então, a maneira mais simples de você fazer seria:

String vetor[] = linha.split(";");

Isso vai separar todos os dados da linha para cada posição do vetor gerado.

1;2012;2;3;“RR”;“1400100”;“14322382”;“[telefone removido]”;“FULANO”;“xxxxxxxxxxxxxxxxxxxxxx”;“23/02/2000”;11;3;1;;;;;;;;;

vetor = {1,2012,2,3,“RR”,“1400100”,“14322382”,“[telefone removido]”,“FULANO”,“xxxxxxxxxxxxxxxxxxxxxx”,“23/02/2000”,11,3,1,}

Para acessar um dado é só chamar a posição do vetor específica.

ul1sses, olhe a linha 28

String[] ss = string.split(";");

Acredito que não leu direito o post

ul1sses

ribclauport:

Post 28/03/2012 12:11:33 Subject: Re:ler e alterar txt!!!
De acordo com a linha que você passou, percebe-se que os dados estão separados por “;”.
Então, a maneira mais simples de você fazer seria:

String vetor[] = linha.split(";");

Isso vai separar todos os dados da linha para cada posição do vetor gerado.

1;2012;2;3;“RR”;“1400100”;“14322382”;“[telefone removido]”;“FULANO”;“xxxxxxxxxxxxxxxxxxxxxx”;“23/02/2000”;11;3;1;;;;;;;;;

vetor = {1,2012,2,3,“RR”,“1400100”,“14322382”,“[telefone removido]”,“FULANO”,“xxxxxxxxxxxxxxxxxxxxxx”,“23/02/2000”,11,3,1,}

Para acessar um dado é só chamar a posição do vetor específica.

ul1sses, olhe a linha 28

String[] ss = string.split(";");

Acredito que não leu direito o post

Realmente, bizonhei agora :S

R

ul1sses:
De acordo com a linha que você passou, percebe-se que os dados estão separados por “;”.
Então, a maneira mais simples de você fazer seria:

String vetor[] = linha.split(";");

Isso vai separar todos os dados da linha para cada posição do vetor gerado.

1;2012;2;3;“RR”;“1400100”;“14322382”;“[telefone removido]”;“FULANO”;“xxxxxxxxxxxxxxxxxxxxxx”;“23/02/2000”;11;3;1;;;;;;;;;

vetor = {1,2012,2,3,“RR”,“1400100”,“14322382”,“[telefone removido]”,“FULANO”,“xxxxxxxxxxxxxxxxxxxxxx”,“23/02/2000”,11,3,1,}

Para acessar um dado é só chamar a posição do vetor específica.

vou fazer os testes brow, espero retorna com a resolucao do problema obrigado pela ajuda

R

BOM DIA!!!!! colegas do guj, consegui resolver meu problema substitui apenas uma linha do metodo LerEscreverArquivo e deu certo olha ae!!!

public LerEscreveArquivo(File arquivo) throws IOException {
        BufferedReader br = new BufferedReader(new FileReader(arquivo));
        StringBuilder bufSaida = new StringBuilder();
        String ln;
        while ((ln = br.readLine()) != null) {
            
            //antes estava assim
            //String a = bufSaida.append(ln).append("\n").toString();
            //

            String a = ln;
            list.add(a);
            
        }
        br.close();
    }
Criado 26 de março de 2012
Ultima resposta 29 de mar. de 2012
Respostas 16
Participantes 4