home *** CD-ROM | disk | FTP | other *** search
- import java.io.IOException;
- import java.io.InputStream;
- import java.util.Enumeration;
- import java.util.Hashtable;
- import java.util.Properties;
- import java.util.zip.InflaterInputStream;
-
- class SearchEngine {
- Properties tab = new Properties();
- Hashtable result;
-
- void load(InputStream var1) throws IOException {
- this.tab.load(var1);
- var1.close();
- }
-
- void loadZIP(InputStream var1) throws IOException {
- this.load(new InflaterInputStream(var1));
- }
-
- int size() {
- return this.tab.size();
- }
-
- void addEntry(String var1) {
- if (var1 != null) {
- for(int var2 = 0; var2 < var1.length(); var2 += 2) {
- this.result.put(var1.substring(var2, var2 + 2), "");
- }
- }
-
- }
-
- static boolean match(String var0, String var1, int var2, int var3) {
- while(true) {
- if (var2 < var0.length() && var3 < var1.length()) {
- if (var0.charAt(var2) == '?') {
- ++var3;
- ++var2;
- continue;
- }
-
- if (var0.charAt(var2) != '*') {
- if (var1.charAt(var3++) == var0.charAt(var2++)) {
- continue;
- }
-
- return false;
- }
-
- while(var3 <= var1.length()) {
- if (match(var0, var1, var2 + 1, var3++)) {
- return true;
- }
- }
-
- return false;
- }
-
- while(var2 < var0.length() && var0.charAt(var2) == '*') {
- ++var2;
- }
-
- if (var2 == var0.length() && var3 == var1.length()) {
- return true;
- }
-
- return false;
- }
- }
-
- SearchEngineResult[] lookup(String var1) {
- this.result = new Hashtable();
- if (!var1.startsWith(".")) {
- if (var1.indexOf(63) < 0 && var1.indexOf(42) < 0) {
- this.addEntry(this.tab.getProperty(var1));
- } else {
- Enumeration var2 = this.tab.keys();
-
- while(var2.hasMoreElements()) {
- String var3 = (String)var2.nextElement();
- if (!var3.startsWith(".") && match(var1, var3, 0, 0)) {
- this.addEntry(this.tab.getProperty(var3));
- }
- }
- }
- }
-
- SearchEngineResult[] var6 = new SearchEngineResult[this.result.size()];
- int var7 = 0;
-
- String var5;
- for(Enumeration var4 = this.result.keys(); var4.hasMoreElements(); var6[var7++] = new SearchEngineResult(this.tab.getProperty("." + var5))) {
- var5 = (String)var4.nextElement();
- }
-
- return var6;
- }
- }
-