home *** CD-ROM | disk | FTP | other *** search
/ PC Online 1999 November / PCONLINE_11_99.ISO / filesbbs / OS2 / APCHSSL2.ZIP / OS2HTTPD / jserv / com / kav / xsl / BooleanPrimaryExpr.class (.txt) < prev    next >
Encoding:
Java Class File  |  1999-05-16  |  3.0 KB  |  217 lines

  1. package com.kav.xsl;
  2.  
  3. import java.util.Hashtable;
  4. import org.w3c.dom.Element;
  5. import org.w3c.dom.Node;
  6.  
  7. public class BooleanPrimaryExpr {
  8.    public static final String NOT_FN = "not";
  9.    public static final String FIRST_OF_TYPE_FN = "first-of-type";
  10.    public static final String FIRST_OF_ANY_FN = "first-of-any";
  11.    public static final String LAST_OF_TYPE_FN = "last-of-type";
  12.    public static final String LAST_OF_ANY_FN = "last-of-any";
  13.    public static final int NOT = 0;
  14.    public static final int FIRST_OF_TYPE = 1;
  15.    public static final int FIRST_OF_ANY = 2;
  16.    public static final int LAST_OF_TYPE = 3;
  17.    public static final int LAST_OF_ANY = 4;
  18.    public static final int TEST = 5;
  19.    public static final int EQUALITY = 6;
  20.    public static final int BOOLEAN_GROUP = 7;
  21.    private SelectExpr selectExpr;
  22.    private BooleanExpr expr;
  23.    private String literal;
  24.    private int type;
  25.  
  26.    protected BooleanPrimaryExpr(int var1) {
  27.       this(var1, (BooleanExpr)null);
  28.    }
  29.  
  30.    protected BooleanPrimaryExpr(int var1, BooleanExpr var2) {
  31.       this.type = -1;
  32.       this.type = var1;
  33.       this.expr = var2;
  34.    }
  35.  
  36.    public int getType() {
  37.       return this.type;
  38.    }
  39.  
  40.    public boolean evaluate(Node var1) {
  41.       Object var2 = null;
  42.       switch (this.type) {
  43.          case 0:
  44.             if (this.expr != null) {
  45.                if (this.expr.evaluate(var1)) {
  46.                   return false;
  47.                }
  48.  
  49.                return true;
  50.             }
  51.             break;
  52.          case 2:
  53.             if (var1.getNodeType() == 1) {
  54.                return firstOfAny((Element)var1);
  55.             }
  56.          case 1:
  57.             if (var1.getNodeType() == 1) {
  58.                return firstOfType((Element)var1);
  59.             }
  60.          case 4:
  61.             if (var1.getNodeType() == 1) {
  62.                return lastOfAny((Element)var1);
  63.             }
  64.          case 3:
  65.             if (var1.getNodeType() == 1) {
  66.                return lastOfType((Element)var1);
  67.             }
  68.          case 5:
  69.             if (this.selectExpr != null) {
  70.                NodeSet var6 = this.selectExpr.selectNodes(var1, (Hashtable)null);
  71.                if (var6.size() <= 0) {
  72.                   return false;
  73.                }
  74.  
  75.                return true;
  76.             }
  77.             break;
  78.          case 6:
  79.             if (this.selectExpr == null) {
  80.                return false;
  81.             }
  82.  
  83.             if (this.literal == null) {
  84.                return false;
  85.             }
  86.  
  87.             NodeSet var3 = this.selectExpr.selectNodes(var1, (Hashtable)null);
  88.  
  89.             for(int var4 = 0; var4 < var3.size(); ++var4) {
  90.                String var5 = XSLObject.getNodeValue(var3.get(var4));
  91.                if (var5.equals(this.literal)) {
  92.                   return true;
  93.                }
  94.             }
  95.             break;
  96.          case 7:
  97.             if (this.expr != null) {
  98.                return this.expr.evaluate(var1);
  99.             }
  100.       }
  101.  
  102.       return false;
  103.    }
  104.  
  105.    public static boolean firstOfAny(Element var0) {
  106.       Object var1 = var0;
  107.  
  108.       while((var1 = ((Node)var1).getPreviousSibling()) != null) {
  109.          if (((Node)var1).getNodeType() == 1) {
  110.             return false;
  111.          }
  112.       }
  113.  
  114.       return true;
  115.    }
  116.  
  117.    public static boolean firstOfType(Element var0) {
  118.       String var1 = var0.getNodeName();
  119.       Object var2 = var0;
  120.  
  121.       while((var2 = ((Node)var2).getPreviousSibling()) != null) {
  122.          if (((Node)var2).getNodeType() == 1 && var1.equals(((Node)var2).getNodeName())) {
  123.             return false;
  124.          }
  125.       }
  126.  
  127.       return true;
  128.    }
  129.  
  130.    public static boolean lastOfAny(Element var0) {
  131.       Object var1 = var0;
  132.  
  133.       while((var1 = ((Node)var1).getNextSibling()) != null) {
  134.          if (((Node)var1).getNodeType() == 1) {
  135.             return false;
  136.          }
  137.       }
  138.  
  139.       return true;
  140.    }
  141.  
  142.    public static boolean lastOfType(Element var0) {
  143.       String var1 = var0.getNodeName();
  144.       Object var2 = var0;
  145.  
  146.       while((var2 = ((Node)var2).getNextSibling()) != null) {
  147.          if (((Node)var2).getNodeType() == 1 && var1.equals(((Node)var2).getNodeName())) {
  148.             return false;
  149.          }
  150.       }
  151.  
  152.       return true;
  153.    }
  154.  
  155.    public String toString() {
  156.       StringBuffer var1 = new StringBuffer();
  157.       switch (this.type) {
  158.          case 0:
  159.             var1.append("not(");
  160.             if (this.expr != null) {
  161.                var1.append(this.expr.toString());
  162.             }
  163.  
  164.             var1.append(")");
  165.             break;
  166.          case 1:
  167.             var1.append("first-of-type()");
  168.             break;
  169.          case 2:
  170.             var1.append("first-of-any()");
  171.             break;
  172.          case 3:
  173.             var1.append("last-of-type()");
  174.             break;
  175.          case 4:
  176.             var1.append("last-of-any()");
  177.             break;
  178.          case 5:
  179.             if (this.selectExpr != null) {
  180.                var1.append(this.selectExpr.toString());
  181.             }
  182.             break;
  183.          case 6:
  184.             if (this.selectExpr != null) {
  185.                var1.append(this.selectExpr.toString());
  186.             }
  187.  
  188.             var1.append(" = ");
  189.             if (this.literal != null) {
  190.                var1.append(this.literal);
  191.             }
  192.             break;
  193.          case 7:
  194.             var1.append(" (");
  195.             if (this.expr != null) {
  196.                var1.append(this.expr.toString());
  197.             }
  198.  
  199.             var1.append(") ");
  200.       }
  201.  
  202.       return var1.toString();
  203.    }
  204.  
  205.    protected void setBooleanExpr(BooleanExpr var1) {
  206.       this.expr = var1;
  207.    }
  208.  
  209.    protected void setLiteral(String var1) {
  210.       this.literal = var1;
  211.    }
  212.  
  213.    protected void setSelectExpr(SelectExpr var1) {
  214.       this.selectExpr = var1;
  215.    }
  216. }
  217.