home *** CD-ROM | disk | FTP | other *** search
/ PC Pro 2004 May / DPPCPRO0504.ISO / May / Seatools / SeaTools.iso / tools / en / webhelp / webhelp.cab / hhapplet / Language.class (.txt) < prev    next >
Encoding:
Java Class File  |  2002-04-17  |  3.7 KB  |  250 lines

  1. package hhapplet;
  2.  
  3. import java.util.Enumeration;
  4. import java.util.Hashtable;
  5. import java.util.Vector;
  6.  
  7. public class Language {
  8.    private static Language m_lan = null;
  9.    private int[] m_charorder;
  10.    private boolean m_bEnglish = true;
  11.    private String m_sBiggestChar = null;
  12.    private String[] m_aStopWords;
  13.    private String[] m_aStems;
  14.    private Hashtable m_hUToC = new Hashtable();
  15.  
  16.    private String getBiggestCh() {
  17.       if (this.m_sBiggestChar == null) {
  18.          if (this.m_charorder == null) {
  19.             this.m_sBiggestChar = String.valueOf('├┐');
  20.          } else {
  21.             int var1 = 0;
  22.             boolean var2 = false;
  23.             int var3 = 0;
  24.  
  25.             do {
  26.                if (this.m_charorder[var3] > var1) {
  27.                   var1 = this.m_charorder[var3];
  28.                }
  29.  
  30.                ++var3;
  31.             } while(var3 <= 255);
  32.  
  33.             this.m_sBiggestChar = String.valueOf((char)var1);
  34.          }
  35.       }
  36.  
  37.       return this.m_sBiggestChar;
  38.    }
  39.  
  40.    private boolean isStopW(String var1) {
  41.       if (this.m_aStopWords == null) {
  42.          Vector var2 = ResourceLib.getStopWords();
  43.          if (var2 != null) {
  44.             this.m_aStopWords = new String[var2.size()];
  45.             int var3 = 0;
  46.  
  47.             for(Enumeration var4 = var2.elements(); var4.hasMoreElements(); this.m_aStopWords[var3++] = (String)var4.nextElement()) {
  48.             }
  49.          }
  50.       }
  51.  
  52.       if (this.m_aStopWords == null) {
  53.          return false;
  54.       } else {
  55.          int var8 = this.m_aStopWords.length;
  56.          int var9 = 0;
  57.          int var10 = var8 - 1;
  58.          int var5 = 0;
  59.          boolean var6 = false;
  60.          String var7 = "";
  61.  
  62.          while(var9 <= var10) {
  63.             var5 = var9 + var10;
  64.             var5 >>= 1;
  65.             var7 = this.m_aStopWords[var5];
  66.             if (compare(var1, var7) > 0) {
  67.                var9 = var9 == var5 ? var5 + 1 : var5;
  68.             } else {
  69.                if (compare(var1, var7) >= 0) {
  70.                   var6 = true;
  71.                   break;
  72.                }
  73.  
  74.                var10 = var10 == var5 ? var5 - 1 : var5;
  75.             }
  76.          }
  77.  
  78.          return var6;
  79.       }
  80.    }
  81.  
  82.    private Language() {
  83.       String var1 = ResourceLib.GetRes("langorder");
  84.       String var2 = ResourceLib.GetRes("English");
  85.       var2 = var2.toLowerCase();
  86.       if (var2.compareTo("true") == 0) {
  87.          this.m_bEnglish = true;
  88.       } else {
  89.          this.m_bEnglish = false;
  90.       }
  91.  
  92.       if (var1 != null && var1.length() > 0) {
  93.          this.m_charorder = new int[256];
  94.          int var3 = 0;
  95.          int var4 = var1.indexOf(44, var3);
  96.  
  97.          for(int var5 = 0; var4 != -1; var4 = var1.indexOf(44, var3)) {
  98.             String var6 = var1.substring(var3, var4);
  99.             if (var6 != null) {
  100.                this.m_charorder[var5] = Integer.parseInt(var6);
  101.                ++var5;
  102.             }
  103.  
  104.             var3 = var4 + 1;
  105.          }
  106.       }
  107.  
  108.       this.m_hUToC.put(new Integer(8364), new Integer(128));
  109.       this.m_hUToC.put(new Integer(8218), new Integer(130));
  110.       this.m_hUToC.put(new Integer(402), new Integer(131));
  111.       this.m_hUToC.put(new Integer(8222), new Integer(132));
  112.       this.m_hUToC.put(new Integer(8230), new Integer(133));
  113.       this.m_hUToC.put(new Integer(8224), new Integer(134));
  114.       this.m_hUToC.put(new Integer(8225), new Integer(135));
  115.       this.m_hUToC.put(new Integer(710), new Integer(136));
  116.       this.m_hUToC.put(new Integer(8240), new Integer(137));
  117.       this.m_hUToC.put(new Integer(352), new Integer(138));
  118.       this.m_hUToC.put(new Integer(8249), new Integer(139));
  119.       this.m_hUToC.put(new Integer(338), new Integer(140));
  120.       this.m_hUToC.put(new Integer(381), new Integer(142));
  121.       this.m_hUToC.put(new Integer(8216), new Integer(145));
  122.       this.m_hUToC.put(new Integer(8217), new Integer(146));
  123.       this.m_hUToC.put(new Integer(8220), new Integer(147));
  124.       this.m_hUToC.put(new Integer(8221), new Integer(148));
  125.       this.m_hUToC.put(new Integer(8226), new Integer(149));
  126.       this.m_hUToC.put(new Integer(8211), new Integer(150));
  127.       this.m_hUToC.put(new Integer(8212), new Integer(151));
  128.       this.m_hUToC.put(new Integer(732), new Integer(152));
  129.       this.m_hUToC.put(new Integer(8482), new Integer(153));
  130.       this.m_hUToC.put(new Integer(353), new Integer(154));
  131.       this.m_hUToC.put(new Integer(8250), new Integer(155));
  132.       this.m_hUToC.put(new Integer(339), new Integer(156));
  133.       this.m_hUToC.put(new Integer(382), new Integer(158));
  134.       this.m_hUToC.put(new Integer(376), new Integer(159));
  135.    }
  136.  
  137.    public static String getStem(String var0) {
  138.       if (m_lan == null) {
  139.          m_lan = new Language();
  140.       }
  141.  
  142.       return m_lan.getStemString(var0);
  143.    }
  144.  
  145.    private int compareString(String var1, String var2) {
  146.       try {
  147.          if (this.m_charorder == null) {
  148.             String var6 = var1.toLowerCase();
  149.             String var4 = var2.toLowerCase();
  150.             return var6.compareTo(var4);
  151.          } else {
  152.             for(int var3 = 0; var3 < var1.length() && var3 < var2.length(); ++var3) {
  153.                if (this.m_charorder[this.getCharCode(var1, var3)] < this.m_charorder[this.getCharCode(var2, var3)]) {
  154.                   return -1;
  155.                }
  156.  
  157.                if (this.m_charorder[this.getCharCode(var1, var3)] > this.m_charorder[this.getCharCode(var2, var3)]) {
  158.                   return 1;
  159.                }
  160.             }
  161.  
  162.             if (var1.length() < var2.length()) {
  163.                return -1;
  164.             } else {
  165.                return var1.length() > var2.length() ? 1 : 0;
  166.             }
  167.          }
  168.       } catch (Exception var5) {
  169.          ((Throwable)var5).printStackTrace();
  170.          return 0;
  171.       }
  172.    }
  173.  
  174.    private String getStemString(String var1) {
  175.       if (this.m_aStems == null) {
  176.          Vector var2 = ResourceLib.getStems();
  177.          if (var2 != null) {
  178.             this.m_aStems = new String[var2.size()];
  179.             int var3 = 0;
  180.  
  181.             for(Enumeration var4 = var2.elements(); var4.hasMoreElements(); this.m_aStems[var3++] = (String)var4.nextElement()) {
  182.             }
  183.          }
  184.       }
  185.  
  186.       if (this.m_aStems == null) {
  187.          return var1;
  188.       } else {
  189.          int var8 = this.m_aStems.length;
  190.          int var9 = 0;
  191.          String var11 = "";
  192.          String var5 = "";
  193.          var1 = var1.toLowerCase();
  194.  
  195.          for(int var6 = 0; var6 < var8; ++var6) {
  196.             if (this.m_aStems[var6].length() < var1.length() - 1) {
  197.                var9 = var1.lastIndexOf(this.m_aStems[var6]);
  198.                if (var9 > 0) {
  199.                   var5 = var1.substring(var9);
  200.                   if (var5.compareTo(this.m_aStems[var6]) == 0) {
  201.                      if (var9 >= 2 && var1.charAt(var9 - 2) == var1.charAt(var9 - 1)) {
  202.                         var11 = var1.substring(0, var9 - 1);
  203.                      } else {
  204.                         var11 = var1.substring(0, var9);
  205.                      }
  206.  
  207.                      return var11;
  208.                   }
  209.                }
  210.             }
  211.          }
  212.  
  213.          return var1;
  214.       }
  215.    }
  216.  
  217.    public static String getBiggestChar() {
  218.       if (m_lan == null) {
  219.          m_lan = new Language();
  220.       }
  221.  
  222.       return m_lan.getBiggestCh();
  223.    }
  224.  
  225.    public static int compare(String var0, String var1) {
  226.       if (m_lan == null) {
  227.          m_lan = new Language();
  228.       }
  229.  
  230.       return m_lan.compareString(var0, var1);
  231.    }
  232.  
  233.    private int getCharCode(String var1, int var2) {
  234.       int var3 = var1.charAt(var2);
  235.       if (var3 >= 256) {
  236.          var3 = (Integer)this.m_hUToC.get(new Integer(var3));
  237.       }
  238.  
  239.       return var3;
  240.    }
  241.  
  242.    public static boolean isStopWord(String var0) {
  243.       if (m_lan == null) {
  244.          m_lan = new Language();
  245.       }
  246.  
  247.       return m_lan.isStopW(var0);
  248.    }
  249. }
  250.