home *** CD-ROM | disk | FTP | other *** search
/ Internet CD 2005 August / MICD_2005_08.iso / Multimedia / Twist / TwistEval.exe / Main / webhelp0.cab / hhapplet / FTSParser.class (.txt) < prev    next >
Encoding:
Java Class File  |  2001-06-19  |  5.8 KB  |  375 lines

  1. package hhapplet;
  2.  
  3. import java.applet.Applet;
  4. import java.awt.Label;
  5. import java.io.IOException;
  6. import java.net.URL;
  7. import java.util.Vector;
  8. import sitemap.MyBufferedInputStream;
  9.  
  10. public class FTSParser extends Thread {
  11.    protected Applet m_applet;
  12.    protected FTSPane m_spSearch;
  13.    protected FTSSearcher m_ftsSearcher;
  14.    protected Thread m_Thread;
  15.    protected MyBufferedInputStream m_is;
  16.    protected int m_nTotalBytesRead;
  17.    protected int m_nOffset = 0;
  18.    protected String m_strFileName;
  19.    protected URL m_urlDocBase;
  20.    protected String m_strTopicTitle = null;
  21.    protected String m_strTopicURL = null;
  22.  
  23.    public FTSSearcher getSearcher() {
  24.       return this.m_ftsSearcher;
  25.    }
  26.  
  27.    public void parse() {
  28.       this.run();
  29.    }
  30.  
  31.    public Thread parseInSeparateThread(String var1, URL var2) {
  32.       this.m_strFileName = var1;
  33.       this.m_urlDocBase = var2;
  34.       ((Thread)this).setPriority(4);
  35.       ((Thread)this).start();
  36.       return this;
  37.    }
  38.  
  39.    protected boolean advancePastQuoteInStream() {
  40.       try {
  41.          byte var1;
  42.          do {
  43.             var1 = (byte)this.m_is.read();
  44.             ++this.m_nTotalBytesRead;
  45.          } while(var1 != 10 && var1 != 34);
  46.  
  47.          if (var1 == 34) {
  48.             return true;
  49.          } else {
  50.             return false;
  51.          }
  52.       } catch (IOException var3) {
  53.          ((Throwable)var3).printStackTrace();
  54.          return false;
  55.       }
  56.    }
  57.  
  58.    protected boolean advancePastCommaInStream() {
  59.       try {
  60.          byte var1;
  61.          do {
  62.             var1 = (byte)this.m_is.read();
  63.             ++this.m_nTotalBytesRead;
  64.          } while(var1 != 10 && var1 != 44);
  65.  
  66.          if (var1 == 44) {
  67.             return true;
  68.          } else {
  69.             return false;
  70.          }
  71.       } catch (IOException var3) {
  72.          ((Throwable)var3).printStackTrace();
  73.          return false;
  74.       }
  75.    }
  76.  
  77.    public FTSParser(Applet var1) {
  78.       this.m_applet = var1;
  79.       this.m_ftsSearcher = new FTSSearcher(this.m_applet);
  80.       this.m_spSearch = new FTSPane(this.m_applet, this.m_ftsSearcher);
  81.    }
  82.  
  83.    protected boolean advancePastEOLInStream() {
  84.       try {
  85.          byte var1;
  86.          do {
  87.             var1 = (byte)this.m_is.read();
  88.             ++this.m_nTotalBytesRead;
  89.          } while(var1 != 10);
  90.  
  91.          return true;
  92.       } catch (IOException var3) {
  93.          ((Throwable)var3).printStackTrace();
  94.          return false;
  95.       }
  96.    }
  97.  
  98.    protected String getStringFromStream() {
  99.       String var1 = new String();
  100.  
  101.       try {
  102.          byte var2 = (byte)this.m_is.read();
  103.          ++this.m_nTotalBytesRead;
  104.          if (var2 == 34) {
  105.             var2 = (byte)this.m_is.read();
  106.             ++this.m_nTotalBytesRead;
  107.          }
  108.  
  109.          while(var2 != 34) {
  110.             if (var2 < 0) {
  111.                var1 = var1 + (char)(var2 + 256);
  112.             } else {
  113.                var1 = var1 + (char)var2;
  114.             }
  115.  
  116.             var2 = (byte)this.m_is.read();
  117.             ++this.m_nTotalBytesRead;
  118.          }
  119.  
  120.          return var1;
  121.       } catch (IOException var4) {
  122.          ((Throwable)var4).printStackTrace();
  123.          return null;
  124.       }
  125.    }
  126.  
  127.    protected String getStopWordFromStream() {
  128.       new String();
  129.       String var1 = this.getStringFromStream();
  130.       this.advancePastEOLInStream();
  131.       return var1;
  132.    }
  133.  
  134.    protected String getKeywordNameFromStream() {
  135.       String var1 = this.getStringFromStream();
  136.       this.advancePastCommaInStream();
  137.       return var1;
  138.    }
  139.  
  140.    protected void getTopicTitleandURL() {
  141.       String var1 = new String();
  142.  
  143.       try {
  144.          while(true) {
  145.             byte var2 = (byte)this.m_is.read();
  146.             if (var2 < 0) {
  147.                var1 = var1 + (char)(var2 + 256);
  148.             } else {
  149.                var1 = var1 + (char)var2;
  150.             }
  151.  
  152.             ++this.m_nTotalBytesRead;
  153.             if (var2 == 10) {
  154.                int var3 = var1.lastIndexOf("\",\"");
  155.                if (var3 != -1) {
  156.                   this.m_strTopicTitle = var1.substring(1, var3);
  157.                   this.m_strTopicURL = var1.substring(var3 + 3);
  158.                   int var4 = this.m_strTopicURL.lastIndexOf("\"");
  159.                   if (var4 != -1) {
  160.                      this.m_strTopicURL = this.m_strTopicURL.substring(0, var4);
  161.                      return;
  162.                   }
  163.                }
  164.                break;
  165.             }
  166.          }
  167.       } catch (IOException var5) {
  168.          ((Throwable)var5).printStackTrace();
  169.       }
  170.  
  171.    }
  172.  
  173.    public void UpdateStreamStatus() {
  174.       this.m_applet.showStatus(ResourceLib.GetRes("LoadingFTS") + " [" + this.m_nTotalBytesRead + "]");
  175.    }
  176.  
  177.    public void run() {
  178.       try {
  179.          this.m_spSearch.getEditBox().enable(false);
  180.  
  181.          try {
  182.             this.m_is = new MyBufferedInputStream(URLFileHandler.makeURL(this.m_urlDocBase, this.m_strFileName, (String)null).openStream());
  183.          } catch (Exception var10) {
  184.             this.m_applet.add("Center", new Label(ResourceLib.GetRes("CantOpenURLorFile") + " " + ((Throwable)var10).getMessage()));
  185.             ((Throwable)var10).printStackTrace();
  186.             return;
  187.          }
  188.  
  189.          this.m_nTotalBytesRead = 0;
  190.          int var4 = this.getCountFromStream("TOPICS=");
  191.          this.UpdateStreamStatus();
  192.          this.m_ftsSearcher.setTopicCount(var4);
  193.  
  194.          for(int var1 = 0; var1 < var4; ++var1) {
  195.             this.getTopicTitleandURL();
  196.             String var2 = this.m_strTopicTitle;
  197.             String var3 = this.m_strTopicURL;
  198.             this.m_ftsSearcher.setTopicData(var1, var2, var3);
  199.             if (var1 % 200 == 0) {
  200.                this.UpdateStreamStatus();
  201.             }
  202.          }
  203.  
  204.          int var7 = this.getCountFromStream("KEYWORDS=");
  205.          this.UpdateStreamStatus();
  206.          this.m_ftsSearcher.setKeywordCount(var7);
  207.  
  208.          for(int var12 = 0; var12 < var7; ++var12) {
  209.             String var6 = this.getKeywordNameFromStream();
  210.             if (var6 == null) {
  211.                Object var8 = null;
  212.             } else {
  213.                String var14 = var6.toLowerCase();
  214.             }
  215.  
  216.             int[] var5 = this.getKeywordLinksFromStream();
  217.             this.m_ftsSearcher.setKeywordData(var12, var6, var5);
  218.             if (var12 % 200 == 0) {
  219.                this.UpdateStreamStatus();
  220.             }
  221.          }
  222.  
  223.          int var9 = this.getCountFromStream("STOPWORDS=");
  224.          this.UpdateStreamStatus();
  225.          this.m_ftsSearcher.setStopWordCount(var9);
  226.  
  227.          for(int var13 = 0; var13 < var9; ++var13) {
  228.             String var15 = this.getStopWordFromStream();
  229.             this.m_ftsSearcher.setStopWord(var13, var15);
  230.             if (var13 % 200 == 0) {
  231.                this.UpdateStreamStatus();
  232.             }
  233.          }
  234.  
  235.          if (this.m_spSearch != null && this.m_spSearch.getList() != null) {
  236.             this.m_spSearch.getList().clear();
  237.          }
  238.  
  239.          if (this.m_spSearch != null && this.m_spSearch.getforappleList() != null) {
  240.             this.m_spSearch.getforappleList().clear();
  241.             this.m_spSearch.paintComponents(this.m_spSearch.getGraphics());
  242.          }
  243.  
  244.          this.m_spSearch.ShowList();
  245.          this.m_applet.showStatus(ResourceLib.GetRes("Done"));
  246.          this.m_spSearch.getEditBox().enable(true);
  247.          this.m_spSearch.getEditBox().requestFocus();
  248.       } catch (Exception var11) {
  249.          ((Throwable)var11).printStackTrace();
  250.       }
  251.    }
  252.  
  253.    public FTSPane getFTS() {
  254.       return this.m_spSearch;
  255.    }
  256.  
  257.    protected Integer getIntegerFromStream() {
  258.       String var1 = new String();
  259.  
  260.       try {
  261.          byte var2 = (byte)this.m_is.read();
  262.          ++this.m_nTotalBytesRead;
  263.  
  264.          while(var2 == 32) {
  265.             var2 = (byte)this.m_is.read();
  266.             ++this.m_nTotalBytesRead;
  267.          }
  268.  
  269.          while(var2 >= 48 && var2 <= 57) {
  270.             if (var2 < 0) {
  271.                var1 = var1 + (char)(var2 + 256);
  272.             } else {
  273.                var1 = var1 + (char)var2;
  274.             }
  275.  
  276.             var2 = (byte)this.m_is.read();
  277.             ++this.m_nTotalBytesRead;
  278.          }
  279.  
  280.          if (var2 == 10) {
  281.             return null;
  282.          } else {
  283.             Object var3 = null;
  284.  
  285.             try {
  286.                var7 = new Integer(var1);
  287.             } catch (NumberFormatException var5) {
  288.                var7 = null;
  289.                System.out.println("Error at Byte #" + this.m_nTotalBytesRead + " in stream.");
  290.                ((Throwable)var5).printStackTrace();
  291.             }
  292.  
  293.             return var7;
  294.          }
  295.       } catch (IOException var6) {
  296.          ((Throwable)var6).printStackTrace();
  297.          return null;
  298.       }
  299.    }
  300.  
  301.    protected int getCountFromStream(String var1) {
  302.       String var2 = new String();
  303.       boolean var4 = false;
  304.       int var5 = 0;
  305.  
  306.       try {
  307.          byte var3 = (byte)this.m_is.read();
  308.          ++this.m_nTotalBytesRead;
  309.  
  310.          while(!var4) {
  311.             while(var3 != 91) {
  312.                var3 = (byte)this.m_is.read();
  313.                ++this.m_nTotalBytesRead;
  314.             }
  315.  
  316.             var3 = (byte)this.m_is.read();
  317.             ++this.m_nTotalBytesRead;
  318.  
  319.             while(var5 < var1.length() && var3 == var1.charAt(var5) && var3 != 93) {
  320.                var3 = (byte)this.m_is.read();
  321.                ++this.m_nTotalBytesRead;
  322.                ++var5;
  323.             }
  324.  
  325.             if (var5 == var1.length()) {
  326.                var4 = true;
  327.             } else {
  328.                var5 = 0;
  329.             }
  330.          }
  331.  
  332.          while(var3 >= 48 && var3 <= 57) {
  333.             if (var3 < 0) {
  334.                var2 = var2 + (char)(var3 + 256);
  335.             } else {
  336.                var2 = var2 + (char)var3;
  337.             }
  338.  
  339.             var3 = (byte)this.m_is.read();
  340.             ++this.m_nTotalBytesRead;
  341.          }
  342.  
  343.          if (var3 == 10) {
  344.             return 0;
  345.          } else {
  346.             this.advancePastEOLInStream();
  347.             return Integer.parseInt(var2);
  348.          }
  349.       } catch (IOException var7) {
  350.          ((Throwable)var7).printStackTrace();
  351.          return 0;
  352.       }
  353.    }
  354.  
  355.    protected int[] getKeywordLinksFromStream() {
  356.       Vector var1 = new Vector();
  357.       Object var2 = null;
  358.  
  359.       do {
  360.          var5 = this.getIntegerFromStream();
  361.          if (var5 != null) {
  362.             var1.addElement(var5);
  363.          }
  364.       } while(var5 != null);
  365.  
  366.       int[] var3 = new int[var1.size()];
  367.  
  368.       for(int var4 = 0; var4 < var3.length; ++var4) {
  369.          var3[var4] = (Integer)var1.elementAt(var4);
  370.       }
  371.  
  372.       return var3;
  373.    }
  374. }
  375.