package com.eeviewpoint;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import javax.swing.text.html.HTMLEditorKit.ParserCallback;
import javax.swing.text.MutableAttributeSet;
import javax.swing.text.html.parser.ParserDelegator;
import javax.swing.text.html.HTML;

public class OilpriceCallback extends ParserCallback 
      implements Scraper{
   private boolean crudeOilCrumb=false;
   private boolean foundCurrPrice=false;
   private String urlSource= 
   "http://tonto.eia.doe.gov/dnav/pet/pet_pri_fut_s1_d.htm";
   private String result = "";

   public String getUrlSource() {
      return urlSource;
   }

   public void setUrlSource(String urlSource) {
      this.urlSource = urlSource;
   }

   public String getResult() {
      return result;
   }

   public void setResult(String result) {
      this.result = result;
   }

   public void handleText(char[] chars, int i) {
      String str = new String(chars);
      if(str.indexOf("Crude Oil") != -1){
         crudeOilCrumb=true;
      }
      if(this.crudeOilCrumb && this.foundCurrPrice &&
            getResult().length() == 0){
         setResult(str.trim());
      }
   }

   public void handleStartTag(HTML.Tag tag,
      MutableAttributeSet mutableAttributeSet, int i) {
      if((crudeOilCrumb) && tag ==  javax.swing.
         text.html.HTML.Tag.TD){
         String val = (String) mutableAttributeSet.
         getAttribute(HTML.Attribute.CLASS);
         if(val != null && val.equalsIgnoreCase("Current")){
            foundCurrPrice=true;
         }
      }
   }

   public String toString() {
      return getResult();
   }
}
