/**
 * @(#)Grammar.java	17.03.2004
 * 
 * @author kst
 */
package commons.chartparser;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
/**
 * Liest Text aus einem Textfile. Separiert Saetze einfach anhand der Punkte (.). Macht cleanup im
 * Satz und entfernt ggf. Zeichensetzung.
 */
@SuppressWarnings("unchecked")
public class Text
{

private List saetze = null;

public Text()
{
   saetze = new ArrayList();
}

public Text(String text)
{
   this();
   String[] s = text.split("\\.");
   for (int i = 0; i < s.length; i++)
   {
      String t = s[i].trim();
      if (t.length() > 0)
      {
         saetze.add(t);
      }
   }
}

/**
 * Iteriert ueber alle eingelesenen Saetze.
 */
public Iterator satzIterator ()
{
   return saetze.iterator();
}

/**
 * Iteriert ueber alle Woerter eines Satzes.
 */
public static ArrayList wortVector (String satz, boolean delInterpunktion)
{
   satz = satz.replaceAll("\\s", " "); // whitespace
   if (delInterpunktion)
   {
      satz = satz.replaceAll("\\p{Punct}", " ");
   }
   satz = satz.replaceAll("  ", " "); // doppelte leerzeichen
   String w[] = satz.split(" ");
   ArrayList list = new ArrayList();
   for (int i = 0; i < w.length; i++)
   {
      String v = w[i].trim();
      if (v.length() > 0) // keine leeren strings
      {
         list.add(Main.IGNCASE ? v.toLowerCase() : v);
      }
   }
   return list;
}

public void readFromFile (String filename)
{
   if (new File(filename).exists())
   {
      BufferedReader reader = null;
      try
      {
         reader = new BufferedReader(new FileReader(filename));
         String nextLine = null;
         while (null != (nextLine = reader.readLine()))
         {
            String[] s = nextLine.split("\\.");
            for (int i = 0; i < s.length; i++)
            {
               String t = s[i].trim();
               if (t.length() > 0)
               {
                  saetze.add(t);
               }
            }
         }
      }
      catch (IOException e)
      {
         Main.debug(e.toString());
      }
      finally
      {
         try
         {
            reader.close();
         }
         catch (Exception e)
         {}
      }
   }
   else
   {
      Main.debug("Nicht gefunden: '" + filename + "'");
   }
}
}