home *** CD-ROM | disk | FTP | other *** search
/ Sky at Night 2007 June / SAN CD 6-2007 CD-ROM 25.iso / pc / Software / AstroGrav_Win / Java / jre1.6.0 / lib / rt.jar / javax / management / MatchQueryExp.class (.txt) < prev    next >
Encoding:
Java Class File  |  2006-11-29  |  2.1 KB  |  116 lines

  1. package javax.management;
  2.  
  3. class MatchQueryExp extends QueryEval implements QueryExp {
  4.    private static final long serialVersionUID = -7156603696948215014L;
  5.    private AttributeValueExp exp;
  6.    private String pattern;
  7.  
  8.    public MatchQueryExp() {
  9.    }
  10.  
  11.    public MatchQueryExp(AttributeValueExp var1, StringValueExp var2) {
  12.       this.exp = var1;
  13.       this.pattern = var2.getValue();
  14.    }
  15.  
  16.    public AttributeValueExp getAttribute() {
  17.       return this.exp;
  18.    }
  19.  
  20.    public String getPattern() {
  21.       return this.pattern;
  22.    }
  23.  
  24.    public boolean apply(ObjectName var1) throws BadStringOperationException, BadBinaryOpValueExpException, BadAttributeValueExpException, InvalidApplicationException {
  25.       ValueExp var2 = this.exp.apply(var1);
  26.       return !(var2 instanceof StringValueExp) ? false : wildmatch(((StringValueExp)var2).getValue(), this.pattern);
  27.    }
  28.  
  29.    public String toString() {
  30.       return this.exp + " like " + new StringValueExp(likeTranslate(this.pattern));
  31.    }
  32.  
  33.    private static String likeTranslate(String var0) {
  34.       return var0.replace('?', '_').replace('*', '%');
  35.    }
  36.  
  37.    private static boolean wildmatch(String var0, String var1) {
  38.       int var3 = 0;
  39.       int var4 = 0;
  40.       int var5 = var0.length();
  41.       int var6 = var1.length();
  42.  
  43.       while(var4 < var6) {
  44.          char var2 = var1.charAt(var4++);
  45.          if (var2 != '?') {
  46.             if (var2 != '[') {
  47.                if (var2 == '*') {
  48.                   if (var4 >= var6) {
  49.                      return true;
  50.                   }
  51.  
  52.                   while(!wildmatch(var0.substring(var3), var1.substring(var4))) {
  53.                      ++var3;
  54.                      if (var3 >= var5) {
  55.                         return false;
  56.                      }
  57.                   }
  58.  
  59.                   return true;
  60.                }
  61.  
  62.                if (var2 == '\\') {
  63.                   if (var4 >= var6 || var3 >= var5 || var1.charAt(var4++) != var0.charAt(var3++)) {
  64.                      return false;
  65.                   }
  66.                } else if (var3 >= var5 || var2 != var0.charAt(var3++)) {
  67.                   return false;
  68.                }
  69.             } else {
  70.                if (var3 >= var5) {
  71.                   return false;
  72.                }
  73.  
  74.                boolean var7 = true;
  75.                boolean var8 = false;
  76.                if (var1.charAt(var4) == '!') {
  77.                   var7 = false;
  78.                   ++var4;
  79.                }
  80.  
  81.                while((var2 = var1.charAt(var4)) != ']') {
  82.                   ++var4;
  83.                   if (var4 >= var6) {
  84.                      break;
  85.                   }
  86.  
  87.                   if (var1.charAt(var4) == '-' && var4 + 1 < var6 && var1.charAt(var4 + 1) != ']') {
  88.                      if (var0.charAt(var3) >= var1.charAt(var4 - 1) && var0.charAt(var3) <= var1.charAt(var4 + 1)) {
  89.                         var8 = true;
  90.                      }
  91.  
  92.                      ++var4;
  93.                   } else if (var2 == var0.charAt(var3)) {
  94.                      var8 = true;
  95.                   }
  96.                }
  97.  
  98.                if (var4 >= var6 || var7 != var8) {
  99.                   return false;
  100.                }
  101.  
  102.                ++var4;
  103.                ++var3;
  104.             }
  105.          } else {
  106.             ++var3;
  107.             if (var3 > var5) {
  108.                return false;
  109.             }
  110.          }
  111.       }
  112.  
  113.       return var3 == var5;
  114.    }
  115. }
  116.