home *** CD-ROM | disk | FTP | other *** search
- package com.kav.xsl;
-
- import java.util.Hashtable;
- import org.w3c.dom.Element;
- import org.w3c.dom.Node;
-
- public class BooleanPrimaryExpr {
- public static final String NOT_FN = "not";
- public static final String FIRST_OF_TYPE_FN = "first-of-type";
- public static final String FIRST_OF_ANY_FN = "first-of-any";
- public static final String LAST_OF_TYPE_FN = "last-of-type";
- public static final String LAST_OF_ANY_FN = "last-of-any";
- public static final int NOT = 0;
- public static final int FIRST_OF_TYPE = 1;
- public static final int FIRST_OF_ANY = 2;
- public static final int LAST_OF_TYPE = 3;
- public static final int LAST_OF_ANY = 4;
- public static final int TEST = 5;
- public static final int EQUALITY = 6;
- public static final int BOOLEAN_GROUP = 7;
- private SelectExpr selectExpr;
- private BooleanExpr expr;
- private String literal;
- private int type;
-
- protected BooleanPrimaryExpr(int var1) {
- this(var1, (BooleanExpr)null);
- }
-
- protected BooleanPrimaryExpr(int var1, BooleanExpr var2) {
- this.type = -1;
- this.type = var1;
- this.expr = var2;
- }
-
- public int getType() {
- return this.type;
- }
-
- public boolean evaluate(Node var1) {
- Object var2 = null;
- switch (this.type) {
- case 0:
- if (this.expr != null) {
- if (this.expr.evaluate(var1)) {
- return false;
- }
-
- return true;
- }
- break;
- case 2:
- if (var1.getNodeType() == 1) {
- return firstOfAny((Element)var1);
- }
- case 1:
- if (var1.getNodeType() == 1) {
- return firstOfType((Element)var1);
- }
- case 4:
- if (var1.getNodeType() == 1) {
- return lastOfAny((Element)var1);
- }
- case 3:
- if (var1.getNodeType() == 1) {
- return lastOfType((Element)var1);
- }
- case 5:
- if (this.selectExpr != null) {
- NodeSet var6 = this.selectExpr.selectNodes(var1, (Hashtable)null);
- if (var6.size() <= 0) {
- return false;
- }
-
- return true;
- }
- break;
- case 6:
- if (this.selectExpr == null) {
- return false;
- }
-
- if (this.literal == null) {
- return false;
- }
-
- NodeSet var3 = this.selectExpr.selectNodes(var1, (Hashtable)null);
-
- for(int var4 = 0; var4 < var3.size(); ++var4) {
- String var5 = XSLObject.getNodeValue(var3.get(var4));
- if (var5.equals(this.literal)) {
- return true;
- }
- }
- break;
- case 7:
- if (this.expr != null) {
- return this.expr.evaluate(var1);
- }
- }
-
- return false;
- }
-
- public static boolean firstOfAny(Element var0) {
- Object var1 = var0;
-
- while((var1 = ((Node)var1).getPreviousSibling()) != null) {
- if (((Node)var1).getNodeType() == 1) {
- return false;
- }
- }
-
- return true;
- }
-
- public static boolean firstOfType(Element var0) {
- String var1 = var0.getNodeName();
- Object var2 = var0;
-
- while((var2 = ((Node)var2).getPreviousSibling()) != null) {
- if (((Node)var2).getNodeType() == 1 && var1.equals(((Node)var2).getNodeName())) {
- return false;
- }
- }
-
- return true;
- }
-
- public static boolean lastOfAny(Element var0) {
- Object var1 = var0;
-
- while((var1 = ((Node)var1).getNextSibling()) != null) {
- if (((Node)var1).getNodeType() == 1) {
- return false;
- }
- }
-
- return true;
- }
-
- public static boolean lastOfType(Element var0) {
- String var1 = var0.getNodeName();
- Object var2 = var0;
-
- while((var2 = ((Node)var2).getNextSibling()) != null) {
- if (((Node)var2).getNodeType() == 1 && var1.equals(((Node)var2).getNodeName())) {
- return false;
- }
- }
-
- return true;
- }
-
- public String toString() {
- StringBuffer var1 = new StringBuffer();
- switch (this.type) {
- case 0:
- var1.append("not(");
- if (this.expr != null) {
- var1.append(this.expr.toString());
- }
-
- var1.append(")");
- break;
- case 1:
- var1.append("first-of-type()");
- break;
- case 2:
- var1.append("first-of-any()");
- break;
- case 3:
- var1.append("last-of-type()");
- break;
- case 4:
- var1.append("last-of-any()");
- break;
- case 5:
- if (this.selectExpr != null) {
- var1.append(this.selectExpr.toString());
- }
- break;
- case 6:
- if (this.selectExpr != null) {
- var1.append(this.selectExpr.toString());
- }
-
- var1.append(" = ");
- if (this.literal != null) {
- var1.append(this.literal);
- }
- break;
- case 7:
- var1.append(" (");
- if (this.expr != null) {
- var1.append(this.expr.toString());
- }
-
- var1.append(") ");
- }
-
- return var1.toString();
- }
-
- protected void setBooleanExpr(BooleanExpr var1) {
- this.expr = var1;
- }
-
- protected void setLiteral(String var1) {
- this.literal = var1;
- }
-
- protected void setSelectExpr(SelectExpr var1) {
- this.selectExpr = var1;
- }
- }
-