home *** CD-ROM | disk | FTP | other *** search
- package hhapplet;
-
- import java.applet.Applet;
- import java.awt.Label;
- import java.io.IOException;
- import java.io.InputStream;
- import java.net.URL;
- import java.util.Vector;
- import java.util.zip.ZipEntry;
- import java.util.zip.ZipInputStream;
- import sitemap.MyBufferedInputStream;
-
- public class FTSParser extends Thread {
- protected Applet m_applet;
- protected FTSPane m_spSearch;
- protected FTSSearcher m_ftsSearcher;
- protected Thread m_Thread;
- protected MyBufferedInputStream m_is;
- protected int m_nTotalBytesRead;
- protected int m_nOffset = 0;
- protected String m_strFileName;
- protected URL m_urlDocBase;
- private InputStream m_ZipIs = null;
- protected boolean m_bZipSupport = false;
- private boolean m_bZipFileLoaded = false;
- protected String m_strTopicTitle = null;
- protected String m_strTopicURL = null;
-
- public FTSSearcher getSearcher() {
- return this.m_ftsSearcher;
- }
-
- public void parse() {
- this.run();
- }
-
- public Thread parseInSeparateThread(String var1, URL var2) {
- this.m_strFileName = var1;
- this.m_urlDocBase = var2;
- ((Thread)this).setPriority(4);
- ((Thread)this).start();
- return this;
- }
-
- protected boolean advancePastQuoteInStream() {
- try {
- byte var1;
- do {
- var1 = (byte)this.m_is.read();
- ++this.m_nTotalBytesRead;
- } while(var1 != 10 && var1 != 34);
-
- if (var1 == 34) {
- return true;
- } else {
- return false;
- }
- } catch (IOException var3) {
- ((Throwable)var3).printStackTrace();
- return false;
- }
- }
-
- protected boolean advancePastCommaInStream() {
- try {
- byte var1;
- do {
- var1 = (byte)this.m_is.read();
- ++this.m_nTotalBytesRead;
- } while(var1 != 10 && var1 != 44);
-
- if (var1 == 44) {
- return true;
- } else {
- return false;
- }
- } catch (IOException var3) {
- ((Throwable)var3).printStackTrace();
- return false;
- }
- }
-
- public FTSParser(Applet var1) {
- this.m_applet = var1;
- this.m_ftsSearcher = new FTSSearcher(this.m_applet);
- this.m_spSearch = new FTSPane(this.m_applet, this.m_ftsSearcher);
-
- try {
- Class.forName("java.util.zip.ZipFile");
- this.m_bZipSupport = true;
- } catch (ClassNotFoundException var3) {
- ((Throwable)var3).printStackTrace();
- this.m_bZipSupport = false;
- }
- }
-
- protected boolean advancePastEOLInStream() {
- try {
- byte var1;
- do {
- var1 = (byte)this.m_is.read();
- ++this.m_nTotalBytesRead;
- } while(var1 != 10);
-
- return true;
- } catch (IOException var3) {
- ((Throwable)var3).printStackTrace();
- return false;
- }
- }
-
- protected String getStringFromStream() {
- String var1 = new String();
-
- try {
- byte var2 = (byte)this.m_is.read();
- ++this.m_nTotalBytesRead;
- if (var2 == 34) {
- var2 = (byte)this.m_is.read();
- ++this.m_nTotalBytesRead;
- }
-
- while(var2 != 34) {
- if (var2 < 0) {
- var1 = var1 + (char)(var2 + 256);
- } else {
- var1 = var1 + (char)var2;
- }
-
- var2 = (byte)this.m_is.read();
- ++this.m_nTotalBytesRead;
- }
-
- return var1;
- } catch (IOException var4) {
- ((Throwable)var4).printStackTrace();
- return null;
- }
- }
-
- protected String getStopWordFromStream() {
- new String();
- String var1 = this.getStringFromStream();
- this.advancePastEOLInStream();
- return var1;
- }
-
- protected String getKeywordNameFromStream() {
- String var1 = this.getStringFromStream();
- this.advancePastCommaInStream();
- return var1;
- }
-
- protected void getTopicTitleandURL() {
- String var1 = new String();
-
- try {
- while(true) {
- byte var2 = (byte)this.m_is.read();
- if (var2 < 0) {
- var1 = var1 + (char)(var2 + 256);
- } else {
- var1 = var1 + (char)var2;
- }
-
- ++this.m_nTotalBytesRead;
- if (var2 == 10) {
- int var3 = var1.lastIndexOf("\",\"");
- if (var3 != -1) {
- this.m_strTopicTitle = var1.substring(1, var3);
- this.m_strTopicURL = var1.substring(var3 + 3);
- int var4 = this.m_strTopicURL.lastIndexOf("\"");
- if (var4 != -1) {
- this.m_strTopicURL = this.m_strTopicURL.substring(0, var4);
- return;
- }
- }
- break;
- }
- }
- } catch (IOException var5) {
- ((Throwable)var5).printStackTrace();
- }
-
- }
-
- public void UpdateStreamStatus() {
- this.m_applet.showStatus(ResourceLib.GetRes("LoadingFTS") + " [" + this.m_nTotalBytesRead + "]");
- }
-
- public void run() {
- try {
- this.m_spSearch.getEditBox().enable(false);
- if (this.m_bZipSupport && this.m_strFileName.toLowerCase().endsWith(".zip")) {
- try {
- InputStream var1 = URLFileHandler.makeURL(this.m_urlDocBase, this.m_strFileName, (String)null).openStream();
- ZipInputStream var2 = new ZipInputStream(var1);
-
- ZipEntry var3;
- do {
- var3 = var2.getNextEntry();
- } while(!var3.getName().toLowerCase().endsWith(".hhs"));
-
- this.m_is = new MyBufferedInputStream(var2);
- this.m_ZipIs = var2;
- this.m_bZipFileLoaded = true;
- } catch (Exception var13) {
- }
- }
-
- if (!this.m_bZipFileLoaded) {
- try {
- this.m_is = new MyBufferedInputStream(URLFileHandler.makeURL(this.m_urlDocBase, this.m_strFileName, (String)null).openStream());
- } catch (Exception var12) {
- this.m_applet.add("Center", new Label(ResourceLib.GetRes("CantOpenURLorFile") + " " + ((Throwable)var12).getMessage()));
- ((Throwable)var12).printStackTrace();
- return;
- }
- }
-
- this.m_nTotalBytesRead = 0;
- int var4 = this.getCountFromStream("TOPICS=");
- this.UpdateStreamStatus();
- this.m_ftsSearcher.setTopicCount(var4);
-
- for(int var15 = 0; var15 < var4; ++var15) {
- this.getTopicTitleandURL();
- String var18 = this.m_strTopicTitle;
- String var19 = this.m_strTopicURL;
- this.m_ftsSearcher.setTopicData(var15, var18, var19);
- if (var15 % 200 == 0) {
- this.UpdateStreamStatus();
- }
- }
-
- int var7 = this.getCountFromStream("KEYWORDS=");
- this.UpdateStreamStatus();
- this.m_ftsSearcher.setKeywordCount(var7);
-
- for(int var16 = 0; var16 < var7; ++var16) {
- String var6 = this.getKeywordNameFromStream();
- if (var6 == null) {
- Object var8 = null;
- } else {
- String var20 = var6.toLowerCase();
- }
-
- int[] var5 = this.getKeywordLinksFromStream();
- this.m_ftsSearcher.setKeywordData(var16, var6, var5);
- if (var16 % 200 == 0) {
- this.UpdateStreamStatus();
- }
- }
-
- int var9 = this.getCountFromStream("STOPWORDS=");
- this.UpdateStreamStatus();
- this.m_ftsSearcher.setStopWordCount(var9);
-
- for(int var17 = 0; var17 < var9; ++var17) {
- String var21 = this.getStopWordFromStream();
- this.m_ftsSearcher.setStopWord(var17, var21);
- if (var17 % 200 == 0) {
- this.UpdateStreamStatus();
- }
- }
-
- if (this.m_spSearch != null && this.m_spSearch.getList() != null) {
- this.m_spSearch.getList().clear();
- }
-
- if (this.m_spSearch != null && this.m_spSearch.getforappleList() != null) {
- this.m_spSearch.getforappleList().clear();
- this.m_spSearch.paintComponents(this.m_spSearch.getGraphics());
- }
-
- this.m_spSearch.ShowList();
- this.m_applet.showStatus(ResourceLib.GetRes("Done"));
- if (this.m_is != null) {
- try {
- this.m_is.close();
- this.m_is = null;
- } catch (Exception var11) {
- }
- }
-
- if (this.m_ZipIs != null) {
- try {
- this.m_ZipIs.close();
- this.m_ZipIs = null;
- } catch (Exception var10) {
- }
- }
-
- this.m_spSearch.getEditBox().enable(true);
- this.m_spSearch.getEditBox().requestFocus();
- } catch (Exception var14) {
- ((Throwable)var14).printStackTrace();
- }
- }
-
- public FTSPane getFTS() {
- return this.m_spSearch;
- }
-
- protected Integer getIntegerFromStream() {
- String var1 = new String();
-
- try {
- byte var2 = (byte)this.m_is.read();
- ++this.m_nTotalBytesRead;
-
- while(var2 == 32) {
- var2 = (byte)this.m_is.read();
- ++this.m_nTotalBytesRead;
- }
-
- while(var2 >= 48 && var2 <= 57) {
- if (var2 < 0) {
- var1 = var1 + (char)(var2 + 256);
- } else {
- var1 = var1 + (char)var2;
- }
-
- var2 = (byte)this.m_is.read();
- ++this.m_nTotalBytesRead;
- }
-
- if (var2 == 10) {
- return null;
- } else {
- Object var3 = null;
-
- try {
- var7 = new Integer(var1);
- } catch (NumberFormatException var5) {
- var7 = null;
- System.out.println("Error at Byte #" + this.m_nTotalBytesRead + " in stream.");
- ((Throwable)var5).printStackTrace();
- }
-
- return var7;
- }
- } catch (IOException var6) {
- ((Throwable)var6).printStackTrace();
- return null;
- }
- }
-
- protected int getCountFromStream(String var1) {
- String var2 = new String();
- boolean var4 = false;
- int var5 = 0;
-
- try {
- byte var3 = (byte)this.m_is.read();
- ++this.m_nTotalBytesRead;
-
- while(!var4) {
- while(var3 != 91) {
- var3 = (byte)this.m_is.read();
- ++this.m_nTotalBytesRead;
- }
-
- var3 = (byte)this.m_is.read();
- ++this.m_nTotalBytesRead;
-
- while(var5 < var1.length() && var3 == var1.charAt(var5) && var3 != 93) {
- var3 = (byte)this.m_is.read();
- ++this.m_nTotalBytesRead;
- ++var5;
- }
-
- if (var5 == var1.length()) {
- var4 = true;
- } else {
- var5 = 0;
- }
- }
-
- while(var3 >= 48 && var3 <= 57) {
- if (var3 < 0) {
- var2 = var2 + (char)(var3 + 256);
- } else {
- var2 = var2 + (char)var3;
- }
-
- var3 = (byte)this.m_is.read();
- ++this.m_nTotalBytesRead;
- }
-
- if (var3 == 10) {
- return 0;
- } else {
- this.advancePastEOLInStream();
- return Integer.parseInt(var2);
- }
- } catch (IOException var7) {
- ((Throwable)var7).printStackTrace();
- return 0;
- }
- }
-
- protected int[] getKeywordLinksFromStream() {
- Vector var1 = new Vector();
- Object var2 = null;
-
- do {
- var5 = this.getIntegerFromStream();
- if (var5 != null) {
- var1.addElement(var5);
- }
- } while(var5 != null);
-
- int[] var3 = new int[var1.size()];
-
- for(int var4 = 0; var4 < var3.length; ++var4) {
- var3[var4] = (Integer)var1.elementAt(var4);
- }
-
- return var3;
- }
- }
-