org.geotools.io
Class LineFormat

java.lang.Object
  extended byorg.geotools.io.LineFormat

public class LineFormat
extends java.lang.Object

Parse a line of text data. This class is mostly used for parsing lines in a matrix or a table. Each column may contains numbers, dates, or other objects parseable by some Format implementations. The example below reads dates in the first column and numbers in all remaining columns.

 final LineParser parser=new LineFormat(new Format[] {
     DateFormat.getDateTimeInstance(),
     NumberFormat.getNumberInstance()
 });
 
may be used for reading a matrix with an unknow number of columns, while requiring that all lines have the same number of columns. The example below gets the number of columns while reading the first line, and ensure that all subsequent lines have the same number of columns. If one line violate this condition, then a ParseException will be thrown. The check if performed by the method when the array is non-nul.
  double[] data=null;
  final BufferedReader in = new BufferedReader(new FileReader("MATRIX.TXT"));
  for (String line; (line=in.readLine())!=null;) {
      parser.setLine(line);
      data = parser.getValues(data);
      // ... process 'data' here ...
  });
 
This code can work as well with dates instead of numbers. In this case, the values returned will be microseconds ellapsed since January 1st, 1970.

A ParseException may be thrown because a string can't be parsed, because an object can't be converted into a number or because a line don't have the expected number of columns. In all case, it is possible to gets the index of the first problem found using ParseException.getErrorOffset().

Since:
2.0
Version:
$Id: LineFormat.java 17672 2006-01-19 00:25:55Z desruisseaux $
Author:
Martin Desruisseaux
To Do:
This class is intented to be a subclass of Format.

Constructor Summary
LineFormat()
          Constructs a new line parser for the default locale.
LineFormat(java.text.Format format)
          Construit un objet qui lira des dates, des nombres ou tous autres objets ?crits selon le format sp?cifi?.
LineFormat(java.text.Format[] formats)
          Construit un objet qui lira des dates, des nombres ou tous autres objets ?crits selon les formats sp?cifi?s.
LineFormat(java.util.Locale locale)
          Construit un objet qui lira des nombres ?crits selon les convention du pays sp?cifi?.
 
Method Summary
 void clear()
          Oublie toute les donn?es m?moris?es.
 java.lang.Object getValue(int index)
          Retourne la valeur ? l'index sp?cifi?.
 int getValueCount()
          Retourne le nombre de donn?es trouv?es dans la derni?re ligne ? avoir ?t? sp?cifi?e ? setLine(String).
 byte[] getValues(byte[] array)
          Copie vers le tableau sp?cifi? les valeurs lues dans la ligne.
 double[] getValues(double[] array)
          Copie vers le tableau sp?cifi? les valeurs lues dans la ligne.
 float[] getValues(float[] array)
          Copie vers le tableau sp?cifi? les valeurs lues dans la ligne.
 int[] getValues(int[] array)
          Copie vers le tableau sp?cifi? les valeurs lues dans la ligne.
 long[] getValues(long[] array)
          Copie vers le tableau sp?cifi? les valeurs lues dans la ligne.
 short[] getValues(short[] array)
          Copie vers le tableau sp?cifi? les valeurs lues dans la ligne.
 int setLine(java.lang.String line)
          D?fini la prochaine ligne qui sera ? interpr?ter.
 int setLine(java.lang.String line, int lower, int upper)
          D?fini la prochaine ligne qui sera ? interpr?ter.
 void setValue(int index, java.lang.Object value)
          Modifie ou ajoute une valeur.
 java.lang.String toString()
          Retourne les donn?es sous forme de cha?ne de caract?res.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

LineFormat

public LineFormat()
Constructs a new line parser for the default locale.


LineFormat

public LineFormat(java.util.Locale locale)
Construit un objet qui lira des nombres ?crits selon les convention du pays sp?cifi?. Par exemple on peut sp?cifier Locale.US pour lire des nombres qui utilisent le point comme s?parateur d?cimal.


LineFormat

public LineFormat(java.text.Format format)
           throws java.lang.NullPointerException
Construit un objet qui lira des dates, des nombres ou tous autres objets ?crits selon le format sp?cifi?.

Parameters:
format - Format ? utiliser.
Throws:
java.lang.NullPointerException - si est nul.

LineFormat

public LineFormat(java.text.Format[] formats)
           throws java.lang.NullPointerException
Construit un objet qui lira des dates, des nombres ou tous autres objets ?crits selon les formats sp?cifi?s. Le tableau de format sp?cifi? en argument donne les formats attendus des premi?res colonnes. Par exemple donne le format de la premi?re colonne, donne le format de la deuxi?me colonne, etc. S'il y a plus de colonnes que de formats sp?cifi?s, le dernier format sera r?utilis? pour toutes les colonnes restantes.

Parameters:
formats - Tableau de formats ? utiliser.
Throws:
java.lang.NullPointerException - si est nul ou si si un des formats est nul.
Method Detail

clear

public void clear()
Oublie toute les donn?es m?moris?es. Le prochain appel de la m?thode getValueCount() retournera 0.


setLine

public int setLine(java.lang.String line)
            throws java.text.ParseException
D?fini la prochaine ligne qui sera ? interpr?ter.

Parameters:
line - Ligne ? interpr?ter.
Returns:
Nombre d'?l?ments trouv?s dans la ligne. Cette information peut aussi ?tre obtenue par un appel ? getValueCount().
Throws:
java.text.ParseException - si des ?l?ments n'ont pas pu ?tre interpr?t?s.

setLine

public int setLine(java.lang.String line,
                   int lower,
                   int upper)
            throws java.text.ParseException
D?fini la prochaine ligne qui sera ? interpr?ter.

Parameters:
line - Ligne ? interpr?ter.
lower - Index du premier caract?re de ? prendre en compte.
upper - Index suivant celui du dernier caract?re de ? prendre en compte.
Returns:
Nombre d'?l?ments trouv?s dans la ligne. Cette information peut aussi ?tre obtenue par un appel ? getValueCount().
Throws:
java.text.ParseException - si des ?l?ments n'ont pas pu ?tre interpr?t?s.

getValueCount

public int getValueCount()
Retourne le nombre de donn?es trouv?es dans la derni?re ligne ? avoir ?t? sp?cifi?e ? setLine(String).


setValue

public void setValue(int index,
                     java.lang.Object value)
              throws java.lang.ArrayIndexOutOfBoundsException
Modifie ou ajoute une valeur. L'index de la valeur doit ?tre compris de 0 ? getValueCount() inclusivement. Si l'index est ?gal au nombre de donn?es retourn? par getValueCount(), alors sera ajout? ? la fin des donn?es existante et une colonne sera ajout?e.

Parameters:
index - Index de la donn?e ? modifier ou ajouter.
value - Nouvelle valeur ? retenir.
Throws:
java.lang.ArrayIndexOutOfBoundsException - si l'index est en dehors de la plage permise.

getValue

public java.lang.Object getValue(int index)
                          throws java.lang.ArrayIndexOutOfBoundsException
Retourne la valeur ? l'index sp?cifi?. Cet index doit ?tre compris de 0 inclusivement jusqu'? getValueCount() exclusivement.

Parameters:
index - Index de la donn?e demand?e.
Returns:
Valeur ? l'index demand?.
Throws:
java.lang.ArrayIndexOutOfBoundsException - si l'index est en dehors de la plage permise.

getValues

public double[] getValues(double[] array)
                   throws java.text.ParseException
Copie vers le tableau sp?cifi? les valeurs lues dans la ligne. Cette m?thode peut ?tre appel?e apr?s setLine(String) pour copier vers les valeurs qui ont ?t? lues. Si est nul, cette m?thode cr?era et retournera un tableau qui aura la longueur tout juste suffisante pour contenir toutes les donn?es. Mais si est non-nul, alors cette m?thode exigera que la longueur du tableau soit ?gale au nombre de donn?es.

Parameters:
array - Tableau dans lequel copier les valeurs.
Returns:
s'il ?tait non-nul, ou un tableau nouvellement cr?? avec la bonne longueur si ?tait nul.
Throws:
java.text.ParseException - si ?tait non-nul et que sa longueur ne correspond pas au nombre de donn?es lues, ou si une des donn?es lues n'est pas convertible en nombre.

getValues

public float[] getValues(float[] array)
                  throws java.text.ParseException
Copie vers le tableau sp?cifi? les valeurs lues dans la ligne. Cette m?thode peut ?tre appel?e apr?s setLine(String) pour copier vers les valeurs qui ont ?t? lues. Si est nul, cette m?thode cr?era et retournera un tableau qui aura la longueur tout juste suffisante pour contenir toutes les donn?es. Mais si est non-nul, alors cette m?thode exigera que la longueur du tableau soit ?gale au nombre de donn?es.

Parameters:
array - Tableau dans lequel copier les valeurs.
Returns:
s'il ?tait non-nul, ou un tableau nouvellement cr?? avec la bonne longueur si ?tait nul.
Throws:
java.text.ParseException - si ?tait non-nul et que sa longueur ne correspond pas au nombre de donn?es lues, ou si une des donn?es lues n'est pas convertible en nombre.

getValues

public long[] getValues(long[] array)
                 throws java.text.ParseException
Copie vers le tableau sp?cifi? les valeurs lues dans la ligne. Cette m?thode peut ?tre appel?e apr?s setLine(String) pour copier vers les valeurs qui ont ?t? lues. Si est nul, cette m?thode cr?era et retournera un tableau qui aura la longueur tout juste suffisante pour contenir toutes les donn?es. Mais si est non-nul, alors cette m?thode exigera que la longueur du tableau soit ?gale au nombre de donn?es.

Parameters:
array - Tableau dans lequel copier les valeurs.
Returns:
s'il ?tait non-nul, ou un tableau nouvellement cr?? avec la bonne longueur si ?tait nul.
Throws:
java.text.ParseException - si ?tait non-nul et que sa longueur ne correspond pas au nombre de donn?es lues, ou si une des donn?es lues n'est pas convertible en nombre entier de type .

getValues

public int[] getValues(int[] array)
                throws java.text.ParseException
Copie vers le tableau sp?cifi? les valeurs lues dans la ligne. Cette m?thode peut ?tre appel?e apr?s setLine(String) pour copier vers les valeurs qui ont ?t? lues. Si est nul, cette m?thode cr?era et retournera un tableau qui aura la longueur tout juste suffisante pour contenir toutes les donn?es. Mais si est non-nul, alors cette m?thode exigera que la longueur du tableau soit ?gale au nombre de donn?es.

Parameters:
array - Tableau dans lequel copier les valeurs.
Returns:
s'il ?tait non-nul, ou un tableau nouvellement cr?? avec la bonne longueur si ?tait nul.
Throws:
java.text.ParseException - si ?tait non-nul et que sa longueur ne correspond pas au nombre de donn?es lues, ou si une des donn?es lues n'est pas convertible en nombre entier de type .

getValues

public short[] getValues(short[] array)
                  throws java.text.ParseException
Copie vers le tableau sp?cifi? les valeurs lues dans la ligne. Cette m?thode peut ?tre appel?e apr?s setLine(String) pour copier vers les valeurs qui ont ?t? lues. Si est nul, cette m?thode cr?era et retournera un tableau qui aura la longueur tout juste suffisante pour contenir toutes les donn?es. Mais si est non-nul, alors cette m?thode exigera que la longueur du tableau soit ?gale au nombre de donn?es.

Parameters:
array - Tableau dans lequel copier les valeurs.
Returns:
s'il ?tait non-nul, ou un tableau nouvellement cr?? avec la bonne longueur si ?tait nul.
Throws:
java.text.ParseException - si ?tait non-nul et que sa longueur ne correspond pas au nombre de donn?es lues, ou si une des donn?es lues n'est pas convertible en nombre entier de type .

getValues

public byte[] getValues(byte[] array)
                 throws java.text.ParseException
Copie vers le tableau sp?cifi? les valeurs lues dans la ligne. Cette m?thode peut ?tre appel?e apr?s setLine(String) pour copier vers les valeurs qui ont ?t? lues. Si est nul, cette m?thode cr?era et retournera un tableau qui aura la longueur tout juste suffisante pour contenir toutes les donn?es. Mais si est non-nul, alors cette m?thode exigera que la longueur du tableau soit ?gale au nombre de donn?es.

Parameters:
array - Tableau dans lequel copier les valeurs.
Returns:
s'il ?tait non-nul, ou un tableau nouvellement cr?? avec la bonne longueur si ?tait nul.
Throws:
java.text.ParseException - si ?tait non-nul et que sa longueur ne correspond pas au nombre de donn?es lues, ou si une des donn?es lues n'est pas convertible en nombre entier de type .

toString

public java.lang.String toString()
Retourne les donn?es sous forme de cha?ne de caract?res. Toutes les donn?es seront format?es en utilisant les formats d?clar?s au constructeur. Les colonnes seront s?par?es par des tabulations. Il n'y aura pas de retour chariot ? la fin de la ligne.



Copyright © GeoTools. All Rights Reserved.