home *** CD-ROM | disk | FTP | other *** search
/ PC Online 1997 December / PCO1297.ISO / FilesBBS / FREI / CLS.ARJ / CLS.ZIP / SearchEngineGenerator.class (.txt) < prev    next >
Encoding:
Java Class File  |  1997-11-03  |  3.7 KB  |  126 lines

  1. import java.io.FileInputStream;
  2. import java.io.InputStream;
  3. import java.io.OutputStream;
  4. import java.util.Hashtable;
  5. import java.util.Properties;
  6. import java.util.zip.Deflater;
  7. import java.util.zip.DeflaterOutputStream;
  8. import java.util.zip.InflaterInputStream;
  9.  
  10. class SearchEngineGenerator {
  11.    Properties tab = new Properties();
  12.    Hashtable docs = new Hashtable();
  13.    Properties exclude = new Properties();
  14.    int nextDoc = 0;
  15.    static final String encoding = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
  16.    static final int enclen = 62;
  17.  
  18.    SearchEngineGenerator() {
  19.       try {
  20.          FileInputStream var1 = new FileInputStream("exclude.dat");
  21.          this.exclude.load(var1);
  22.          ((InputStream)var1).close();
  23.       } catch (Exception var2) {
  24.          System.err.println("Exception: " + ((Throwable)var2).getMessage());
  25.       }
  26.    }
  27.  
  28.    void clear() {
  29.       this.tab.clear();
  30.       this.docs.clear();
  31.       this.nextDoc = 0;
  32.    }
  33.  
  34.    void save(OutputStream var1, boolean var2) throws Exception {
  35.       if (var2) {
  36.          var1 = new DeflaterOutputStream((OutputStream)var1, new Deflater(9));
  37.       }
  38.  
  39.       this.tab.save((OutputStream)var1, "SearchEngine");
  40.       ((OutputStream)var1).close();
  41.    }
  42.  
  43.    void load(InputStream var1, boolean var2) throws Exception {
  44.       this.clear();
  45.       if (var2) {
  46.          var1 = new InflaterInputStream((InputStream)var1);
  47.       }
  48.  
  49.       this.tab.load((InputStream)var1);
  50.       ((InputStream)var1).close();
  51.  
  52.       while(true) {
  53.          String var3 = this.tab.getProperty("." + IntToString(this.nextDoc));
  54.          if (var3 == null) {
  55.             return;
  56.          }
  57.  
  58.          SearchEngineResult var4 = new SearchEngineResult(var3);
  59.          this.addDocument(var4.document, var4.caption);
  60.       }
  61.    }
  62.  
  63.    public int getSize() {
  64.       return this.tab.size();
  65.    }
  66.  
  67.    public int getDocs() {
  68.       return this.docs.size();
  69.    }
  70.  
  71.    public String getStatus() {
  72.       return this.getDocs() + " docs/" + this.getSize() + " words";
  73.    }
  74.  
  75.    public int addDocument(String var1, String var2) {
  76.       Integer var3 = (Integer)this.docs.get(var1);
  77.       if (var3 == null) {
  78.          var3 = new Integer(this.nextDoc++);
  79.       }
  80.  
  81.       this.docs.put(var1, var3);
  82.       this.tab.put("." + IntToString(var3), var1 + "," + HTMLcvt.toHTML(var2));
  83.       return var3;
  84.    }
  85.  
  86.    public static char IntToChar(int var0) {
  87.       return "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".charAt(var0);
  88.    }
  89.  
  90.    public static int CharToInt(char var0) {
  91.       return "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".indexOf(var0);
  92.    }
  93.  
  94.    public static int StringToInt(String var0, int var1) {
  95.       return CharToInt(var0.charAt(var1)) * 62 + CharToInt(var0.charAt(var1 + 1));
  96.    }
  97.  
  98.    public static String IntToString(int var0) {
  99.       return "" + IntToChar(var0 / 62) + IntToChar(var0 % 62);
  100.    }
  101.  
  102.    public void addWord(int var1, String var2) {
  103.       if (this.exclude == null || this.exclude.getProperty(var2) == null) {
  104.          if (var2.length() >= 2) {
  105.             String var3 = this.tab.getProperty(var2);
  106.             if (var3 == null) {
  107.                this.tab.put(var2, IntToString(var1));
  108.             } else {
  109.                boolean var4 = false;
  110.  
  111.                for(int var5 = 0; var5 < var3.length(); var5 += 2) {
  112.                   if (var1 == StringToInt(var3, var5)) {
  113.                      var4 = true;
  114.                   }
  115.                }
  116.  
  117.                if (!var4) {
  118.                   this.tab.put(var2, var3 + IntToString(var1));
  119.                }
  120.  
  121.             }
  122.          }
  123.       }
  124.    }
  125. }
  126.