home *** CD-ROM | disk | FTP | other *** search
/ PC Online 1997 December / PCO1297.ISO / FilesBBS / FREI / JAVA3.ARJ / JAVA3.ZIP / CLASS / SearchEngine.class (.txt) < prev    next >
Encoding:
Java Class File  |  1997-11-06  |  2.2 KB  |  100 lines

  1. import java.io.IOException;
  2. import java.io.InputStream;
  3. import java.util.Enumeration;
  4. import java.util.Hashtable;
  5. import java.util.Properties;
  6. import java.util.zip.InflaterInputStream;
  7.  
  8. class SearchEngine {
  9.    Properties tab = new Properties();
  10.    Hashtable result;
  11.  
  12.    void load(InputStream var1) throws IOException {
  13.       this.tab.load(var1);
  14.       var1.close();
  15.    }
  16.  
  17.    void loadZIP(InputStream var1) throws IOException {
  18.       this.load(new InflaterInputStream(var1));
  19.    }
  20.  
  21.    int size() {
  22.       return this.tab.size();
  23.    }
  24.  
  25.    void addEntry(String var1) {
  26.       if (var1 != null) {
  27.          for(int var2 = 0; var2 < var1.length(); var2 += 2) {
  28.             this.result.put(var1.substring(var2, var2 + 2), "");
  29.          }
  30.       }
  31.  
  32.    }
  33.  
  34.    static boolean match(String var0, String var1, int var2, int var3) {
  35.       while(true) {
  36.          if (var2 < var0.length() && var3 < var1.length()) {
  37.             if (var0.charAt(var2) == '?') {
  38.                ++var3;
  39.                ++var2;
  40.                continue;
  41.             }
  42.  
  43.             if (var0.charAt(var2) != '*') {
  44.                if (var1.charAt(var3++) == var0.charAt(var2++)) {
  45.                   continue;
  46.                }
  47.  
  48.                return false;
  49.             }
  50.  
  51.             while(var3 <= var1.length()) {
  52.                if (match(var0, var1, var2 + 1, var3++)) {
  53.                   return true;
  54.                }
  55.             }
  56.  
  57.             return false;
  58.          }
  59.  
  60.          while(var2 < var0.length() && var0.charAt(var2) == '*') {
  61.             ++var2;
  62.          }
  63.  
  64.          if (var2 == var0.length() && var3 == var1.length()) {
  65.             return true;
  66.          }
  67.  
  68.          return false;
  69.       }
  70.    }
  71.  
  72.    SearchEngineResult[] lookup(String var1) {
  73.       this.result = new Hashtable();
  74.       if (!var1.startsWith(".")) {
  75.          if (var1.indexOf(63) < 0 && var1.indexOf(42) < 0) {
  76.             this.addEntry(this.tab.getProperty(var1));
  77.          } else {
  78.             Enumeration var2 = this.tab.keys();
  79.  
  80.             while(var2.hasMoreElements()) {
  81.                String var3 = (String)var2.nextElement();
  82.                if (!var3.startsWith(".") && match(var1, var3, 0, 0)) {
  83.                   this.addEntry(this.tab.getProperty(var3));
  84.                }
  85.             }
  86.          }
  87.       }
  88.  
  89.       SearchEngineResult[] var6 = new SearchEngineResult[this.result.size()];
  90.       int var7 = 0;
  91.  
  92.       String var5;
  93.       for(Enumeration var4 = this.result.keys(); var4.hasMoreElements(); var6[var7++] = new SearchEngineResult(this.tab.getProperty("." + var5))) {
  94.          var5 = (String)var4.nextElement();
  95.       }
  96.  
  97.       return var6;
  98.    }
  99. }
  100.