tecgraf.javautils.xml
Class ImprovedXMLListIterator

java.lang.Object
  extended by tecgraf.javautils.xml.ImprovedXMLListIterator
All Implemented Interfaces:
XMLListIteratorInterface

public class ImprovedXMLListIterator
extends Object
implements XMLListIteratorInterface

A classe NewXMLListIterator implementa uma nova versão do iterador sobre elementos XML coletados pelo parser.

Esta versão é baseada em um array (ao invés de uma lista, como na implementação original), o que simplifica muito a implementação não só das operações definidas na interface como operações extra como hasAny(String) e howManyLeft(String).


Field Summary
 
Fields inherited from interface tecgraf.javautils.xml.XMLListIteratorInterface
ANY
 
Constructor Summary
ImprovedXMLListIterator(List<XMLElementInterface> list)
          Construtor.
ImprovedXMLListIterator(List<XMLElementInterface> list, String tag)
          Construtor.
 
Method Summary
 String getTag()
          Retorna a tag de referência para o iterador (o valor que será usado na comparação com os elementos da lista).
 boolean hasAny(String tag)
          Indica se ainda há algum elemento com uma determinada tag.
 boolean hasAny(XMLElementInterface element)
          Determina se a lista ainda possui o elemento em questão.
 boolean hasEnded()
          Verifica se o percorrimento já terminou.
 boolean hasNext()
          Indica se existe mais algum elemento na lista cuja tag seja igual à solicitada.
 int howManyLeft(String tag)
          Retorna o número de instâncias de um determinado elemento na lista, a partir da posição corrente.
 int howManyLeft(XMLElementInterface element)
          Retorna o número de instâncias de um determinado elemento na lista, a partir da posição corrente.
 boolean isNext(String tag)
          Verifica se o próximo elemento é de um tipo específico, baseado em uma tag.
 XMLElementInterface next()
          Retorna o próximo elemento com tipo igual ao que vínhamos buscando ou null caso não haja mais elementos deste tipo.
 XMLElementInterface next(String tag)
          Obtém o próximo elemento da lista que possui a tag desejada, ou null caso não haja mais elementos com esta tag.
Se a tag solicitada é a mesma que vínhamos buscando, simplesmente continuamos a iteração.
 void reset()
          Reinicializa o iterador, usando a tag ANY como tag de busca.
 void reset(String tag)
          Reinicializa o iterador, redefinindo a tag de busca.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ImprovedXMLListIterator

public ImprovedXMLListIterator(List<XMLElementInterface> list)
Construtor. Usa como tag de percorrimento a tag default ANY.

Parameters:
list - - lista de elementos coletados pelo parser

ImprovedXMLListIterator

public ImprovedXMLListIterator(List<XMLElementInterface> list,
                               String tag)
Construtor. Usa uma tag específica para percorrimento.

Parameters:
list - - lista de elementos coletados pelo parser
tag - - tag para percorrimento
Method Detail

reset

public void reset(String tag)
Reinicializa o iterador, redefinindo a tag de busca.

Specified by:
reset in interface XMLListIteratorInterface
Parameters:
tag - nova tag de busca

reset

public void reset()
Reinicializa o iterador, usando a tag ANY como tag de busca.

Specified by:
reset in interface XMLListIteratorInterface

next

public XMLElementInterface next()
Retorna o próximo elemento com tipo igual ao que vínhamos buscando ou null caso não haja mais elementos deste tipo.

Specified by:
next in interface XMLListIteratorInterface
Returns:
o proximo elemento.

next

public XMLElementInterface next(String tag)
Obtém o próximo elemento da lista que possui a tag desejada, ou null caso não haja mais elementos com esta tag.
Se a tag solicitada é a mesma que vínhamos buscando, simplesmente continuamos a iteração. Neste caso, se não encontramos mais nenhum elemento retornamos null mas mantemos o iterador no próximo elemento diferente do solicitado, para que este possa ser reaproveitado em buscas subsequentes. Isto permite que o percorrimento seja retomado caso a busca por um determinado elemento já tenha sido esgotada.
Se porém a tag solicitada for diferente da que vínhamos buscando, o iterador buscará um elemento do tipo solicitado até encontrá-lo ou até ter percorrido toda a lista de elementos. Caso a lista tenha sido "esgotada", qualquer tentativa posterior de busca por um elemento resultará em null.

Specified by:
next in interface XMLListIteratorInterface
Parameters:
tag - nova tag de busca
Returns:
próximo elemento do tipo solicitado ou null caso este não exista. Mesmoq que o valor retornado seja null, ainda assim a lista pode ainda ter elementos a serem percorridos (ver observação acima)

hasNext

public boolean hasNext()
Indica se existe mais algum elemento na lista cuja tag seja igual à solicitada.

Specified by:
hasNext in interface XMLListIteratorInterface
Returns:
true se o elemento seguinte na lista possui tag igual à tag de busca, false caso contrário.

getTag

public String getTag()
Retorna a tag de referência para o iterador (o valor que será usado na comparação com os elementos da lista).

Specified by:
getTag in interface XMLListIteratorInterface
Returns:
tag de referência para o iterador

hasAny

public boolean hasAny(String tag)
Indica se ainda há algum elemento com uma determinada tag. Apenas os elementos restantes são consultados, e o cursor não é reposicionado, independente do resultado.

Todos os elementos restantes são consultados, até que se encontre algum do tipo especificado ou se chegue ao fim da lista.

Parameters:
tag - - tag
Returns:
true se ainda há um elemento com a tag

hasAny

public boolean hasAny(XMLElementInterface element)
Determina se a lista ainda possui o elemento em questão. Apenas os elementos restantes são consultados, e o cursor não é reposicionado, independente do resultado.

Todos os elementos restantes são consultados, até que se encontre algum do tipo especificado ou se chegue ao fim da lista.

Parameters:
element - - elemento
Returns:
true se ainda há alguma instância do elemento na lista
See Also:
hasAny(String)

howManyLeft

public int howManyLeft(XMLElementInterface element)
Retorna o número de instâncias de um determinado elemento na lista, a partir da posição corrente. O cursor não é reposicionado, indepentende do resultado.

Parameters:
element - - elemento
Returns:
número de ocorrências restantes do elemento

howManyLeft

public int howManyLeft(String tag)
Retorna o número de instâncias de um determinado elemento na lista, a partir da posição corrente. O cursor não é reposicionado, indepentende do resultado.

Parameters:
tag - - tag do elemento
Returns:
número de ocorrências restantes do elemento

isNext

public boolean isNext(String tag)
Verifica se o próximo elemento é de um tipo específico, baseado em uma tag. O cursor não é reposicionado.

Parameters:
tag - - tag
Returns:
true se o próximo elemento é do tipo especificado, false se não for ou se o percorrimento já tiver terminado

hasEnded

public boolean hasEnded()
Verifica se o percorrimento já terminou.

Returns:
true se jã percorremos toda a lista


Copyright © 2014 Tecgraf/PUC-Rio. All rights reserved.