
import java.util.*;
import Html;
import TextTool;
import QuoteText;

/**

 *
 *  This type is a piece of text which does not have any
 *  link information associated with it.
 *
 *  @author http://bumble.sf.net
 *  
 */
 
  
public class PlainText extends Object implements DocumentElement
{
  //--------------------------------------------
  private static String NEWLINE = System.getProperty("line.separator");
  //--------------------------------------------
  /** the contents */
  private String text;  
  //--------------------------------------------
  private boolean isGood;
  //--------------------------------------------
  

  //--------------------------------------------
  public PlainText()
  {
    this.text = "";
  }

  //--------------------------------------------
  /** construct with some text */
  public PlainText(String sText)
  {
    this();
    this.loadData(sText);
  } 


  //--------------------------------------------
  /** load data from text */
  public void loadData(String sText)
  {
    String sTextTrimmed;

    this.isGood = this.isPlainText(sText);
    if (!this.isGood)
    {
      return;
    }
    this.text = sText;

  } //-- method: loadData


  //--------------------------------------------
  public String getText()
  {
    return this.text;
  }

  //--------------------------------------------
  public void setText(String sText)
  {
    this.text = sText;
  }

  //--------------------------------------------
  public int getLength()
  {
    return this.text.length();
  }

  //--------------------------------------------
  /** since plain text has no structure which I can
   *  think of, no checks will be made at the moment */
  public static boolean isPlainText(String sText)
  {
    return true;
  } 


  //--------------------------------------------
  public String toString()
  {
    StringBuffer sbReturn = new StringBuffer("");
    sbReturn.append(this.text);
    return sbReturn.toString();
  }

  //--------------------------------------------
  public String printReport()
  {
    StringBuffer sbReturn = new StringBuffer("");
    sbReturn.append("Contents >");
    sbReturn.append(this.text);
    sbReturn.append(NEWLINE);
    sbReturn.append("Length   >");
    sbReturn.append(this.getLength());
    return sbReturn.toString();
  }

  //--------------------------------------------
  public String printHtml()
  {
    StringBuffer sbReturn = new StringBuffer("");
    sbReturn.append(Html.encode(this.text));
    return sbReturn.toString();
  }

  //--------------------------------------------
  public String print()
  {
    StringBuffer sbReturn = new StringBuffer("");
    return this.toString();
  }

  //--------------------------------------------
  /** a main method for testing */
  public static void main(String[] args) throws Exception
  {
    
    StringBuffer sbUsageMessage = new StringBuffer("");
    sbUsageMessage.append("test usage: java PlainText text");
    sbUsageMessage.append(NEWLINE);
    sbUsageMessage.append("eg: java PlainText \"text here\" ");
    sbUsageMessage.append(NEWLINE);

    StringBuffer sbMessage = new StringBuffer("");


    if (args.length == 0)
    {	    
      System.out.println(sbUsageMessage);
      System.exit(-1);
    }


    PlainText text = new PlainText(args[0]);

    System.out.println(".printHtml()");
    System.out.println(text.printHtml());
    System.out.println(".toString()");
    System.out.println(text.toString());
    System.out.println(".printReport()");
    System.out.println(text.printReport());

 
  } //-- main()
  
} //-- PlainText class
