Como pegar as atualizações dos processos que aparecem nos sites dos tribunais e utilizá-los?

Ae galera, tudo de boua?

Preciso pegar o andamento processual que fica nos sites dos tribunais, transformá-los em objetos e utilizá-los no sistema para disparar alertas, prazos, etc.

Mas não tenho a mínima idéia nem de onde começar, alguém ai me dá algumas dicas?

Thx,
PH
www.palerique.com.br

Cria um programa que acesse o site… e faça download do HTML… (HttpUtils pode ajudar)

Depois faça o parsing do HTML e extraia o conteúdo que te interessa (Expressoes regulares podem ajudar)

Foi assim que eu fiz a muitos anos atrás…

Nao sei se eles já tem web services para isso… se tiver, melhor… se nao … é do jeito que falei mesmo…

Bom, o site pode disponibilizar essa informações pra vc em algum formato, por exemplo XML ou até mesmo JSON…
Um exemplo legal é o site do delicious.com, aqui (http://delicious.com/help/feeds) vc encontra como ele disponibiliza algumas informações…

por exemplo, se vc quiser ver todos os meus bookmarks, é só entrar em:
http://feeds.delicious.com/v2/json/kaiak23 - ele trará em formato JSON
http://feeds.delicious.com/v2/xml/kaiak23 - ele trará os dados em XML

dae pronto… le o xml ou o json fazendo um parser para objetos…

Também tem uma api chamada HttpClient - http://hc.apache.org/httpclient-3.x/tutorial.html
acho q vc já pode começar a dando uma olhada nela… basicamente vc se conecta em uma página web dentro de um programa java… Faz request e recebe responses!

[quote]Cria um programa que acesse o site… e faça download do HTML… (HttpUtils pode ajudar)

Depois faça o parsing do HTML e extraia o conteúdo que te interessa (Expressoes regulares podem ajudar)

Foi assim que eu fiz a muitos anos atrás…

Nao sei se eles já tem web services para isso… se tiver, melhor… se nao … é do jeito que falei mesmo…[/quote]

Essa classe está deprecated! Como sei qual a Classe mais moderna que faz a mesma coisa que ela?

[quote]Bom, o site pode disponibilizar essa informações pra vc em algum formato, por exemplo XML ou até mesmo JSON…
Um exemplo legal é o site do delicious.com, aqui (http://delicious.com/help/feeds) vc encontra como ele disponibiliza algumas informações…

por exemplo, se vc quiser ver todos os meus bookmarks, é só entrar em:
http://feeds.delicious.com/v2/json/kaiak23 - ele trará em formato JSON
http://feeds.delicious.com/v2/xml/kaiak23 - ele trará os dados em XML

dae pronto… le o xml ou o json fazendo um parser para objetos…

Também tem uma api chamada HttpClient - http://hc.apache.org/httpclient-3.x/tutorial.html
acho q vc já pode começar a dando uma olhada nela… basicamente vc se conecta em uma página web dentro de um programa java… Faz request e recebe responses! [/quote]

Essa idéia é legal, mas se o tribunal não disponibiliza o XML ou o JSON eu realmente terei que fazer por expressões regulares!

Estou gostando do desafio!

Falei errado… era http client (do apache commons) que queria dizer… e nao httputils… foi mal

http://hc.apache.org/httpclient-3.x/

E ai meus caros, tranquilo?

Testei o lance do HttpClient do Apache e achei bacana, porém o que eu estou realmente gostando é da API Jericho HTML Parser (http://jericho.htmlparser.net/docs/index.html) que recebe a URL e já me retorna uma String que contêm, em uma linha, todo o texto relevante do site (Sem os códigos HTML e outros códigos).

Simples assim!

A partir dai o trabalho vai ser identificar o padrão desses retornos e encontrar as expressões regulares e, por meio dessas expressões, separar o texto relevante para guardar no banco, a partir dai o resto é coisa corriqueira!

Algumas sugestão de como trabalhar com essas expressões regulares?

Abrasss,
PH

Muito bom…

Expressoes regulares… tem que estudar…

http://java.sun.com/docs/books/tutorial/essential/regex/

Expressões regulares é muito massa!!!

Eu já comecei a vislumbrar toda a solução do meu problema!

Mas agora surgiram umas dúvidas!

Vejam como está o meu código:

[code]package regex;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class ColocandoEmPratica {

public static void main(String[] args) {

	String padrao = "(0[1-9]|[12][0-9]|3[01]&[- /.]&0[1-9]|1[012]&[- /.]&19|20\\d\\d)";
	String texto = "Consulta Processual Seção Judiciária do Distrito Federal(DF) Consulta Processual     Processo: 2008.34.00.022846-4 Nova Numeração: 22750-35.2008.4.01.3400 Classe: 7 - PROCEDIMENTO ORDINÁRIO Vara: 3ª VARA FEDERAL  Juiz: PABLO ZUNIGA DOURADO Data de Autuação: 22/07/2008 Distribuição: 2 - DISTRIBUICAO AUTOMATICA (25/07/2008) Nº de volumes: 2 Objeto da Petição: 1130900 - CURSOS - CONCURSO PÚBLICO/EDITAL - ADMINISTRATIVO Observação: EDITAL 1/2007 - ANAC CARGO DE ESPECIALISTA EM REGULACAO DE AVIACAO CIVIL: CURSO DE FORMACAO Localização: J8D - JUNTADA DIVERSOS Movimentação Data Cod Descrição Complemento   10/12/2009 10:49 210 PETICAO / OFICIO / DOCUMENTO: RECEBIDA(O) EM SECRETARIA PETIÇÃO AUTOR JUNTADA 26/11/2009 17:30 218 RECEBIDOS EM SECRETARIA COM PETIÇÃO 18/11/2009 12:48 126 CARGA: RETIRADOS ADVOGADO AUTOR ADVG:DF00015143 VALTER BRUNO GONZAGA 11/11/2009 12:10 179 INTIMACAO / NOTIFICACAO PELA IMPRENSA: PUBLICADO ATO ORDINATORIO   04/11/2009 14:04 178 INTIMACAO / NOTIFICACAO PELA IMPRENSA: PUBLICACAO REMETIDA IMPRENSA ATO ORDINATORIO   20/10/2009 18:50 185 INTIMACAO / NOTIFICACAO / VISTA ORDENADA AUTOR (OUTROS)   20/10/2009 18:50 218 RECEBIDOS PELO DIRETOR SECRETARIA PARA ATO ORDINATORIO   20/10/2009 18:49 210 PETICAO / OFICIO / DOCUMENTO: RECEBIDA(O) EM SECRETARIA   25/09/2009 14:25 218 RECEBIDOS EM SECRETARIA COM PETIÇÃO 15/09/2009 12:45 126 CARGA: RETIRADOS AGU P/ PRF 1ª REGIÃO - INTERESSADO:JUAREZ DE SOUZA 11/09/2009 14:25 185 INTIMACAO / NOTIFICACAO / VISTA ORDENADA REU ( OUTROS)   11/09/2009 13:54 154 DEVOLVIDOS C/ DESPACHO   02/09/2009 14:36 137 CONCLUSOS PARA DESPACHO   10/06/2009 14:20 210 PETICAO / OFICIO / DOCUMENTO: RECEBIDA(O) EM SECRETARIA PETIÇÃO DA UNIÃO FEDERAL JUNTADA 08/06/2009 14:48 218 RECEBIDOS EM SECRETARIA COM PETIÇÃO 02/06/2009 12:22 126 CARGA: RETIRADOS AGU REMETIDO PRF 1ª REGIÃO - INTERESSADO:PRF 1ª REGIÃO 19/05/2009 16:41 185 INTIMACAO / NOTIFICACAO / VISTA ORDENADA REU ( OUTROS)   27/04/2009 14:33 210 PETICAO / OFICIO / DOCUMENTO: RECEBIDA(O) EM SECRETARIA PETIÇAO DO AUTOR JUNTADA 06/04/2009 16:41 179 INTIMACAO / NOTIFICACAO PELA IMPRENSA: PUBLICADO ATO ORDINATORIO   30/03/2009 11:46 178 INTIMACAO / NOTIFICACAO PELA IMPRENSA: PUBLICACAO REMETIDA IMPRENSA OUTROS (ESPECIFICAR) 30/3/2009 27/03/2009 17:32 176 INTIMACAO / NOTIFICACAO PELA IMPRENSA: ORDENADA PUBLICACAO ATO ORDINATORIO   27/03/2009 17:32 218 RECEBIDOS PELO DIRETOR SECRETARIA PARA ATO ORDINATORIO   26/03/2009 15:05 159 DILIGENCIA ORDENADA / DEFERIDA P/ CÓPIA ADV. DR PRISCILA VERISSIMO DE SOUZA OAB DF 27215 TEL; 84434527 04/03/2009 16:49 225 REPLICA APRESENTADA   03/03/2009 16:22 218 RECEBIDOS EM SECRETARIA COM PETIÇÃO 20/02/2009 10:42 126 CARGA: RETIRADOS ADVOGADO AUTOR ADVG:DF00021550 LUCIANE COELHO CARVALHO 19/02/2009 15:11 179 INTIMACAO / NOTIFICACAO PELA IMPRENSA: PUBLICADO ATO ORDINATORIO   11/02/2009 18:18 178 INTIMACAO / NOTIFICACAO PELA IMPRENSA: PUBLICACAO REMETIDA IMPRENSA ATO ORDINATORIO   04/02/2009 19:12 176 INTIMACAO / NOTIFICACAO PELA IMPRENSA: ORDENADA PUBLICACAO ATO ORDINATORIO   04/02/2009 19:12 218 RECEBIDOS PELO DIRETOR SECRETARIA PARA ATO ORDINATORIO   04/02/2009 14:40 228 RESPOSTA CONTESTACAO / IMPUGNACAO APRESENTADA CONTESTAÇÃO JUNTADA 22/01/2009 17:12 159 DILIGENCIA ORDENADA / DEFERIDA P/ CÓPIA ADV. DO REU ANAC DRº LUIS FELIPE OAB DF 7.059 TEL: 33669405/9412 19/12/2008 15:43 176 INTIMACAO / NOTIFICACAO PELA IMPRENSA: ORDENADA PUBLICACAO DESPACHO   19/12/2008 13:32 153 DEVOLVIDOS C/ DECISAO TUTELA ANTECIPADA INDEFERIDA DECISÃO Nº 271/2008, LIVRO 21-A, FLS. 100/101 18/12/2008 14:53 137 CONCLUSOS PARA DECISAO   18/12/2008 14:15 210 PETICAO / OFICIO / DOCUMENTO: RECEBIDA(O) EM SECRETARIA PETIÇAO DO AUTOR JUNTADA 05/12/2008 14:34 135 CITACAO POR OFICIAL MANDADO DEVOLVIDO / CUMPRIDO ANAC 10/11/2008 15:48 135 CITACAO POR OFICIAL MANDADO REMETIDO CENTRAL   10/11/2008 15:48 135 CITACAO POR OFICIAL MANDADO EXPEDIDO   29/10/2008 11:03 135 CITACAO POR OFICIAL AGUARDANDO EXPEDICAO MANDADO   28/10/2008 10:49 154 DEVOLVIDOS C/ DESPACHO   20/10/2008 12:39 137 CONCLUSOS PARA DESPACHO   03/09/2008 12:03 210 PETICAO / OFICIO / DOCUMENTO: RECEBIDA(O) EM SECRETARIA PETIÇAO DO AUTOR JUNTADA 25/08/2008 15:33 218 RECEBIDOS EM SECRETARIA COM PETIÇÃO 14/08/2008 14:44 126 CARGA: RETIRADOS ADVOGADO AUTOR ADVG:DF00021550 LUCIANE COELHO CARVALHO 12/08/2008 12:42 179 INTIMACAO / NOTIFICACAO PELA IMPRENSA: PUBLICADO DECISAO   04/08/2008 16:57 178 INTIMACAO / NOTIFICACAO PELA IMPRENSA: PUBLICACAO REMETIDA IMPRENSA DECISAO   30/07/2008 11:55 176 INTIMACAO / NOTIFICACAO PELA IMPRENSA: ORDENADA PUBLICACAO DECISAO   29/07/2008 18:22 153 DEVOLVIDOS C/ DECISAO TUTELA ANTECIPADA INDEFERIDA DECISÃO Nº 144/2008, LIVRO 19-A, FLS. 83/85 28/07/2008 18:21 137 CONCLUSOS PARA DECISAO   28/07/2008 13:40 223 REMETIDOS VARA PELA DISTRIBUICAO   28/07/2008 09:30 96 CLASSE PROCESSUAL ALTERADA DISTRIBUIDO COM CLASSE EQUIVOCADA/ RETIFICAÇAO 25/07/2008 19:28 2 DISTRIBUICAO AUTOMATICA EM CUMPRIMENTO A DECISAO DA MM. JUIZA FEDERAL DISTRIBUIDORA EM EXERCICIO 25/07/2008 19:19 12 ENCAMINHAMENTO PARA ANALISE DA PREVENCAO: DEVOLVIDOS COM DECISAO DO JUIZ DISTRIBUIDOR   24/07/2008 15:07 12 ENCAMINHAMENTO PARA ANALISE DA PREVENCAO: REMETIDOS AO JUIZ DISTRIBUIDOR VARA PREVENTA: JUIZ DISTRIBUIDOR   24/07/2008 11:56 12 ENCAMINHAMENTO PARA ANALISE DA PREVENCAO: DEVOLVIDOS A DISTRIBUICAO   24/07/2008 11:56 12 ENCAMINHAMENTO PARA ANALISE DA PREVENCAO: DOCUMENTOS JUNTADOS PELA SECRETARIA   22/07/2008 14:15 12 ENCAMINHAMENTO PARA ANALISE DA PREVENCAO: REMETIDOS A VARA VARA PREVENTA: 9ª VARA FEDERAL   Partes Tipo Nome AUTOR PAULO HENRIQUE LERBACH RODRIGUES REU AGENCIA NACIONAL DE AVIACAO CIVIL - ANAC Adv LUCIANE COELHO CARVALHO (DF00021550) Documentos Digitais Anexos Não há documentos digitais para este processo. Este serviço tem caráter meramente informativo, portanto, SEM cunho oficial.    Emitido pelo site 172.16.3.105 em 20/05/2010 às 14:57:39 Consulta respondida em 0.319 segundos";

	Pattern pat = Pattern.compile(padrao);
	Matcher mat = pat.matcher(texto);

	if (mat.find()) {  
		System.out.println (mat.group());

		int i = mat.groupCount();

		System.out.println("\nFoi encontrado o seguinte numero de grupos: " + i + "\n");

		while (i >= 0){

			System.out.println(mat.group(i)+"\n");
			i--;

		}
	} 
}

}[/code]

Então, eu já transformei todo o site em uma só String e identifiquei o padrão que permite que eu separe o que me interessa do que não me interessa na string.
Eu preciso "capturar" o que está entre uma data&hora e outra.

A String está organizada assim:

[quote]…
10/12/2009 10:49 210 PETICAO / OFICIO / DOCUMENTO: RECEBIDA(O) EM SECRETARIA PETIÇÃO AUTOR JUNTADA
26/11/2009 17:30 218 RECEBIDOS EM SECRETARIA COM PETIÇÃO
18/11/2009 12:48 126 CARGA: RETIRADOS ADVOGADO AUTOR ADVG:DF00015143 VALTER BRUNO GONZAGA
…[/quote]

Pegando o primeiro andamento como exemplo eu preciso que o meu programa "capture" o seguinte padrão:

[quote]10/12/2009 10:49 210
PETICAO / OFICIO / DOCUMENTO: RECEBIDA(O) EM SECRETARIA PETIÇÃO AUTOR JUNTADA
26/11/2009 17:30 218[/quote]

Para facilitar na hora de criar o objeto andamento eu vou criar grupos para a data, a hora, o código e o andamento.
(data)(hora)(código)(andamento) (A data do padrão da frente só serve para limitar o padrão)

Eu já descobri que a expressão regex que identifica a minha data é:

Por enquanto estou utilizando ela para testar, sei que tenho que incluir a hora e esse código que antecede o andamento processual.

Agora começam as dúvida: :smiley:

1 - Como eu faço, em código de expressões regulares, para identificar o que está entre as datas? Não estou sabendo como crio um grupo que armazene tudo o que está entre as datas.

2 - A String contem um bocado de andamentos, como é que eu faço para armazenar todos eles em um grupo? Eu tenho que criar um laço e ir excluindo aquilo que eu já identifiquei ou o regex consegue salvar tudo o que ele identificar em um novo grupo?

Thx,
PH

Que isso cara?
Eu estou estudando Java!

A lei diz que é crime o plágio, que é eu pegar a obra de outra pessoa e dizer que é minha.

O que eu estou fazendo é muuuuuito diferente disso!

A informação do andamento processual está disponível é para nós, a sociedade, como forma de transparência dos atos públicos, um principio do nosso direito.

Eu posso utilizar a informação do site de qualquer um, desde que não seja para fins lucrativos e eu site a fonte, colocando um link para o endereço original.

Porém, esse fórum não é de direito, é de Java!

E o que eu quero é isso, aprender expressões regulares!

Sem ofensas,

Você consegue identificar na string… onde estão as partes com datas?

Se sim, é só dividir a string nessas datas…

Voce terá entao… cada processo separado… aí fica mais fácil extrair o texto…

E como que eu faço isso?

E minhas dúvidas?

1 - Como eu faço, em código de expressões regulares, para identificar o que está entre as datas? Não estou sabendo como crio um grupo que armazene tudo o que está entre as datas.
Quero saber como eu faço aqui óh -> (0[1-9]|1[012])- /.- /.XXXXXXXCriar um código pattern pra cá, o espaço entre as datasXXXXXXX(0[1-9]|1[012])- /.- /.

2 - A String contem um bocado de andamentos, como é que eu faço para armazenar todos eles em um grupo? Eu tenho que criar um laço e ir excluindo aquilo que eu já identifiquei ou o regex consegue salvar tudo o que ele identificar em um novo grupo?
E aqui, eu terei que iterar sobre tudo ou conseguirei tudo sem loop?

Thx!

Faz o seguinte… passe a expressao regular… no texto… e pegue o primeiro grupo da data…

blablabla
10/12/2009 10:49 210 PETICAO / OFICIO / DOCUMENTO: RECEBIDA(O) EM SECRETARIA PETIÇÃO AUTOR JUNTADA
26/11/2009 17:30 218 RECEBIDOS EM SECRETARIA COM PETIÇÃO
18/11/2009 12:48 126 CARGA: RETIRADOS ADVOGADO AUTOR ADVGF00015143 VALTER BRUNO GONZAGA

entao vc terá a string… por exemplo: 10/12/2009 10:49 210


Aí… vc pode ver o indexOf disso… e cortar a string que tiver antes desse texto…

[color=red]blablabla[/color]
10/12/2009 10:49 210 PETICAO / OFICIO / DOCUMENTO: RECEBIDA(O) EM SECRETARIA PETIÇÃO AUTOR JUNTADA
26/11/2009 17:30 218 RECEBIDOS EM SECRETARIA COM PETIÇÃO
18/11/2009 12:48 126 CARGA: RETIRADOS ADVOGADO AUTOR ADVGF00015143 VALTER BRUNO GONZAGA


Vc pega o proximo grupo… e vai ter por exemplo: 26/11/2009 17:30 218

10/12/2009 10:49 210 PETICAO / OFICIO / DOCUMENTO: RECEBIDA(O) EM SECRETARIA PETIÇÃO AUTOR JUNTADA
[color=darkblue]26/11/2009 17:30 218[/color] RECEBIDOS EM SECRETARIA COM PETIÇÃO
18/11/2009 12:48 126 CARGA: RETIRADOS ADVOGADO AUTOR ADVGF00015143 VALTER BRUNO GONZAGA


Vc corta tudo que vem antes… tudo que vem antes será: 10/12/2009 10:49 210 PETICAO / OFICIO / DOCUMENTO: RECEBIDA(O) EM SECRETARIA PETIÇÃO AUTOR JUNTADA

[color=green]10/12/2009 10:49 210 PETICAO / OFICIO / DOCUMENTO: RECEBIDA(O) EM SECRETARIA PETIÇÃO AUTOR JUNTADA [/color]
[color=darkblue]26/11/2009 17:30 218[/color]


Removendo a primeira string encontrada (10/12/2009 10:49 210) vc terá como resultado PETICAO / OFICIO / DOCUMENTO: RECEBIDA(O) EM SECRETARIA PETIÇÃO AUTOR JUNTADA

Sacou?

Acho que esse é o jeito mais simples… pra nao começar a fazer regex muito cabulosos…

Muito bom! Consegui resolver boa parte do desafio!

[code]package regex;

import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import net.htmlparser.jericho.Source; //Aqui esta a API que resolveu a questão do acesso à url - link da API: http://jericho.htmlparser.net/docs/index.html
import net.htmlparser.jericho.TextExtractor;

public class TestandoManualmente {
@SuppressWarnings(“unchecked”)
public static void main(String[] args) throws ParseException,
MalformedURLException, IOException {

	String urlDaFonte = "http://processual-df.trf1.gov.br/Processos/ProcessosSecaoOra/ConsProcSecaopro.php?SECAO=DF&f=1&proc=200834000228464&data=031046";

	Source source = new Source(new URL(urlDaFonte));

	source.fullSequentialParse();

	TextExtractor te = source.getTextExtractor();

	te.setConvertNonBreakingSpaces(true);
	te.setIncludeAttributes(true);

	String padrao = "(0[1-9]|[12][0-9]|3[01])/(0[1-9]|1[012])/(19|20\\d\\d)\\s(\\d\\d:\\d\\d)\\s(\\d{1,3})\\s";
	String texto = te.toString();

	Pattern pat = Pattern.compile(padrao);
	Matcher mat = pat.matcher(texto);

            //O objeto AndamentoProcessual só tem 2 atributos. 1 Date (Data e hora) e uma String (A movimentação) 

	ArrayList<AndamentoProcessual> listaDeAndamentos = new ArrayList(); //Como eu não sei quantos andamentos o processo terá eu preferi fazer um arrayList

	String[] splitado = texto.split(padrao); //Eu queria ter feito a REGEX com os grupos contendo o conteúdo entre as datas 
                                                                    //mas a expressão não funcionou como eu esperava, dai a solução que encontrei foi
                                                                    //dividir a String original onde existem datas e percorrer esse array para obter a movimentação
	int i = 1;

	AndamentoProcessual andamento = new AndamentoProcessual();

	while (mat.find()) {
		System.out.println("\nA string foi encontrada " + mat.group()
				+ " iniciando em: " + mat.start() + " e terminando em: "
				+ mat.end() + " o padrão utilizado é: " + pat.pattern() + "\n");

		andamento.setarData(texto.substring(mat.start(), mat.start() + 16));

		andamento.setMovimentacao(splitado[i]);

		System.out.println("\nA data desse objeto movimentação é: "
				+ andamento.obterDataString());
		System.out.println("\nA movimentação é: "
				+ andamento.getMovimentacao());

		listaDeAndamentos.add(andamento);

		i++;

	}

}

}
[/code]

E ai gente, como é que eu melhoro esse código? :smiley:

Oi palerique, já conseguiu avançar mais? Estou precisando de fazer algo bem parecido…

Palerique,

Já faz bastante tempo que você postou, mas você conseguiu uma solução.
Estou precisando fazer a mesma coisa, caso você possa ajudar…

[quote=palerique]Muito bom! Consegui resolver boa parte do desafio!

[code]package regex;

import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import net.htmlparser.jericho.Source; //Aqui esta a API que resolveu a questão do acesso à url - link da API: http://jericho.htmlparser.net/docs/index.html
import net.htmlparser.jericho.TextExtractor;

public class TestandoManualmente {
@SuppressWarnings(“unchecked”)
public static void main(String[] args) throws ParseException,
MalformedURLException, IOException {

	String urlDaFonte = "http://processual-df.trf1.gov.br/Processos/ProcessosSecaoOra/ConsProcSecaopro.php?SECAO=DF&f=1&proc=200834000228464&data=031046";

	Source source = new Source(new URL(urlDaFonte));

	source.fullSequentialParse();

	TextExtractor te = source.getTextExtractor();

	te.setConvertNonBreakingSpaces(true);
	te.setIncludeAttributes(true);

	String padrao = "(0[1-9]|[12][0-9]|3[01])/(0[1-9]|1[012])/(19|20\\d\\d)\\s(\\d\\d:\\d\\d)\\s(\\d{1,3})\\s";
	String texto = te.toString();

	Pattern pat = Pattern.compile(padrao);
	Matcher mat = pat.matcher(texto);

            //O objeto AndamentoProcessual só tem 2 atributos. 1 Date (Data e hora) e uma String (A movimentação) 

	ArrayList<AndamentoProcessual> listaDeAndamentos = new ArrayList(); //Como eu não sei quantos andamentos o processo terá eu preferi fazer um arrayList

	String[] splitado = texto.split(padrao); //Eu queria ter feito a REGEX com os grupos contendo o conteúdo entre as datas 
                                                                    //mas a expressão não funcionou como eu esperava, dai a solução que encontrei foi
                                                                    //dividir a String original onde existem datas e percorrer esse array para obter a movimentação
	int i = 1;

	AndamentoProcessual andamento = new AndamentoProcessual();

	while (mat.find()) {
		System.out.println("\nA string foi encontrada " + mat.group()
				+ " iniciando em: " + mat.start() + " e terminando em: "
				+ mat.end() + " o padrão utilizado é: " + pat.pattern() + "\n");

		andamento.setarData(texto.substring(mat.start(), mat.start() + 16));

		andamento.setMovimentacao(splitado[i]);

		System.out.println("\nA data desse objeto movimentação é: "
				+ andamento.obterDataString());
		System.out.println("\nA movimentação é: "
				+ andamento.getMovimentacao());

		listaDeAndamentos.add(andamento);

		i++;

	}

}

}
[/code]

E ai gente, como é que eu melhoro esse código? :smiley:
[/quote]

felipearagao,

eu consegui fazer o do TJPE mas, acabei desistindo de continuar o projeto. A maioria dos tribunais não dispunha de webservices e para cada um é uma gambiarra diferente a ser feita para conseguir “garimpar” as atualizações. No meu caso não valeu a pena.

Na época parece que apenas alguns poucos tribunais tinha webservices… se a situação mudou eu não sei…

Se quiser falar mais sobre o assunto estou a disposição.

Camillo Targas