home *** CD-ROM | disk | FTP | other *** search
- package hhapplet;
-
- import java.util.Enumeration;
- import java.util.Hashtable;
- import java.util.Vector;
-
- public class Language {
- private static Language m_lan = null;
- private int[] m_charorder;
- private boolean m_bEnglish = true;
- private String m_sBiggestChar = null;
- private String[] m_aStopWords;
- private String[] m_aStems;
- private Hashtable m_hUToC = new Hashtable();
-
- private String getBiggestCh() {
- if (this.m_sBiggestChar == null) {
- if (this.m_charorder == null) {
- this.m_sBiggestChar = String.valueOf('├┐');
- } else {
- int var1 = 0;
- boolean var2 = false;
- int var3 = 0;
-
- do {
- if (this.m_charorder[var3] > var1) {
- var1 = this.m_charorder[var3];
- }
-
- ++var3;
- } while(var3 <= 255);
-
- this.m_sBiggestChar = String.valueOf((char)var1);
- }
- }
-
- return this.m_sBiggestChar;
- }
-
- private boolean isStopW(String var1) {
- if (this.m_aStopWords == null) {
- Vector var2 = ResourceLib.getStopWords();
- if (var2 != null) {
- this.m_aStopWords = new String[var2.size()];
- int var3 = 0;
-
- for(Enumeration var4 = var2.elements(); var4.hasMoreElements(); this.m_aStopWords[var3++] = (String)var4.nextElement()) {
- }
- }
- }
-
- if (this.m_aStopWords == null) {
- return false;
- } else {
- int var8 = this.m_aStopWords.length;
- int var9 = 0;
- int var10 = var8 - 1;
- int var5 = 0;
- boolean var6 = false;
- String var7 = "";
-
- while(var9 <= var10) {
- var5 = var9 + var10;
- var5 >>= 1;
- var7 = this.m_aStopWords[var5];
- if (compare(var1, var7) > 0) {
- var9 = var9 == var5 ? var5 + 1 : var5;
- } else {
- if (compare(var1, var7) >= 0) {
- var6 = true;
- break;
- }
-
- var10 = var10 == var5 ? var5 - 1 : var5;
- }
- }
-
- return var6;
- }
- }
-
- private Language() {
- String var1 = ResourceLib.GetRes("langorder");
- String var2 = ResourceLib.GetRes("English");
- var2 = var2.toLowerCase();
- if (var2.compareTo("true") == 0) {
- this.m_bEnglish = true;
- } else {
- this.m_bEnglish = false;
- }
-
- if (var1 != null && var1.length() > 0) {
- this.m_charorder = new int[256];
- int var3 = 0;
- int var4 = var1.indexOf(44, var3);
-
- for(int var5 = 0; var4 != -1; var4 = var1.indexOf(44, var3)) {
- String var6 = var1.substring(var3, var4);
- if (var6 != null) {
- this.m_charorder[var5] = Integer.parseInt(var6);
- ++var5;
- }
-
- var3 = var4 + 1;
- }
- }
-
- this.m_hUToC.put(new Integer(8364), new Integer(128));
- this.m_hUToC.put(new Integer(8218), new Integer(130));
- this.m_hUToC.put(new Integer(402), new Integer(131));
- this.m_hUToC.put(new Integer(8222), new Integer(132));
- this.m_hUToC.put(new Integer(8230), new Integer(133));
- this.m_hUToC.put(new Integer(8224), new Integer(134));
- this.m_hUToC.put(new Integer(8225), new Integer(135));
- this.m_hUToC.put(new Integer(710), new Integer(136));
- this.m_hUToC.put(new Integer(8240), new Integer(137));
- this.m_hUToC.put(new Integer(352), new Integer(138));
- this.m_hUToC.put(new Integer(8249), new Integer(139));
- this.m_hUToC.put(new Integer(338), new Integer(140));
- this.m_hUToC.put(new Integer(381), new Integer(142));
- this.m_hUToC.put(new Integer(8216), new Integer(145));
- this.m_hUToC.put(new Integer(8217), new Integer(146));
- this.m_hUToC.put(new Integer(8220), new Integer(147));
- this.m_hUToC.put(new Integer(8221), new Integer(148));
- this.m_hUToC.put(new Integer(8226), new Integer(149));
- this.m_hUToC.put(new Integer(8211), new Integer(150));
- this.m_hUToC.put(new Integer(8212), new Integer(151));
- this.m_hUToC.put(new Integer(732), new Integer(152));
- this.m_hUToC.put(new Integer(8482), new Integer(153));
- this.m_hUToC.put(new Integer(353), new Integer(154));
- this.m_hUToC.put(new Integer(8250), new Integer(155));
- this.m_hUToC.put(new Integer(339), new Integer(156));
- this.m_hUToC.put(new Integer(382), new Integer(158));
- this.m_hUToC.put(new Integer(376), new Integer(159));
- }
-
- public static String getStem(String var0) {
- if (m_lan == null) {
- m_lan = new Language();
- }
-
- return m_lan.getStemString(var0);
- }
-
- private int compareString(String var1, String var2) {
- try {
- if (this.m_charorder == null) {
- String var6 = var1.toLowerCase();
- String var4 = var2.toLowerCase();
- return var6.compareTo(var4);
- } else {
- for(int var3 = 0; var3 < var1.length() && var3 < var2.length(); ++var3) {
- if (this.m_charorder[this.getCharCode(var1, var3)] < this.m_charorder[this.getCharCode(var2, var3)]) {
- return -1;
- }
-
- if (this.m_charorder[this.getCharCode(var1, var3)] > this.m_charorder[this.getCharCode(var2, var3)]) {
- return 1;
- }
- }
-
- if (var1.length() < var2.length()) {
- return -1;
- } else {
- return var1.length() > var2.length() ? 1 : 0;
- }
- }
- } catch (Exception var5) {
- ((Throwable)var5).printStackTrace();
- return 0;
- }
- }
-
- private String getStemString(String var1) {
- if (this.m_aStems == null) {
- Vector var2 = ResourceLib.getStems();
- if (var2 != null) {
- this.m_aStems = new String[var2.size()];
- int var3 = 0;
-
- for(Enumeration var4 = var2.elements(); var4.hasMoreElements(); this.m_aStems[var3++] = (String)var4.nextElement()) {
- }
- }
- }
-
- if (this.m_aStems == null) {
- return var1;
- } else {
- int var8 = this.m_aStems.length;
- int var9 = 0;
- String var11 = "";
- String var5 = "";
- var1 = var1.toLowerCase();
-
- for(int var6 = 0; var6 < var8; ++var6) {
- if (this.m_aStems[var6].length() < var1.length() - 1) {
- var9 = var1.lastIndexOf(this.m_aStems[var6]);
- if (var9 > 0) {
- var5 = var1.substring(var9);
- if (var5.compareTo(this.m_aStems[var6]) == 0) {
- if (var9 >= 2 && var1.charAt(var9 - 2) == var1.charAt(var9 - 1)) {
- var11 = var1.substring(0, var9 - 1);
- } else {
- var11 = var1.substring(0, var9);
- }
-
- return var11;
- }
- }
- }
- }
-
- return var1;
- }
- }
-
- public static String getBiggestChar() {
- if (m_lan == null) {
- m_lan = new Language();
- }
-
- return m_lan.getBiggestCh();
- }
-
- public static int compare(String var0, String var1) {
- if (m_lan == null) {
- m_lan = new Language();
- }
-
- return m_lan.compareString(var0, var1);
- }
-
- private int getCharCode(String var1, int var2) {
- int var3 = var1.charAt(var2);
- if (var3 >= 256) {
- var3 = (Integer)this.m_hUToC.get(new Integer(var3));
- }
-
- return var3;
- }
-
- public static boolean isStopWord(String var0) {
- if (m_lan == null) {
- m_lan = new Language();
- }
-
- return m_lan.isStopW(var0);
- }
- }
-