EjbqlAbstractVisitor.java

00001 
00025 package org.objectweb.jonas_ejb.lib;
00026 
00027 import org.objectweb.jonas_ejb.deployment.ejbql.ASTAbstractSchemaName;
00028 import org.objectweb.jonas_ejb.deployment.ejbql.ASTAggregateSelectExpression;
00029 import org.objectweb.jonas_ejb.deployment.ejbql.ASTArithmeticExpression;
00030 import org.objectweb.jonas_ejb.deployment.ejbql.ASTArithmeticFactor;
00031 import org.objectweb.jonas_ejb.deployment.ejbql.ASTArithmeticLiteral;
00032 import org.objectweb.jonas_ejb.deployment.ejbql.ASTArithmeticTerm;
00033 import org.objectweb.jonas_ejb.deployment.ejbql.ASTBetweenExpression;
00034 import org.objectweb.jonas_ejb.deployment.ejbql.ASTBooleanExpression;
00035 import org.objectweb.jonas_ejb.deployment.ejbql.ASTBooleanLiteral;
00036 import org.objectweb.jonas_ejb.deployment.ejbql.ASTCmpPathExpression;
00037 import org.objectweb.jonas_ejb.deployment.ejbql.ASTCollectionMemberDeclaration;
00038 import org.objectweb.jonas_ejb.deployment.ejbql.ASTCollectionMemberExpression;
00039 import org.objectweb.jonas_ejb.deployment.ejbql.ASTCollectionValuedPathExpression;
00040 import org.objectweb.jonas_ejb.deployment.ejbql.ASTComparisonExpression;
00041 import org.objectweb.jonas_ejb.deployment.ejbql.ASTConditionalExpression;
00042 import org.objectweb.jonas_ejb.deployment.ejbql.ASTConditionalFactor;
00043 import org.objectweb.jonas_ejb.deployment.ejbql.ASTConditionalTerm;
00044 import org.objectweb.jonas_ejb.deployment.ejbql.ASTDatetimeExpression;
00045 import org.objectweb.jonas_ejb.deployment.ejbql.ASTEJBQL;
00046 import org.objectweb.jonas_ejb.deployment.ejbql.ASTEmptyCollectionComparisonExpression;
00047 import org.objectweb.jonas_ejb.deployment.ejbql.ASTEntityBeanExpression;
00048 import org.objectweb.jonas_ejb.deployment.ejbql.ASTFloatingPointLiteral;
00049 import org.objectweb.jonas_ejb.deployment.ejbql.ASTFromClause;
00050 import org.objectweb.jonas_ejb.deployment.ejbql.ASTFunctionsReturningNumerics;
00051 import org.objectweb.jonas_ejb.deployment.ejbql.ASTFunctionsReturningStrings;
00052 import org.objectweb.jonas_ejb.deployment.ejbql.ASTIdentificationVariable;
00053 import org.objectweb.jonas_ejb.deployment.ejbql.ASTIdentifier;
00054 import org.objectweb.jonas_ejb.deployment.ejbql.ASTInExpression;
00055 import org.objectweb.jonas_ejb.deployment.ejbql.ASTInputParameter;
00056 import org.objectweb.jonas_ejb.deployment.ejbql.ASTIntegerLiteral;
00057 import org.objectweb.jonas_ejb.deployment.ejbql.ASTLikeExpression;
00058 import org.objectweb.jonas_ejb.deployment.ejbql.ASTLimitClause;
00059 import org.objectweb.jonas_ejb.deployment.ejbql.ASTLimitExpression;
00060 import org.objectweb.jonas_ejb.deployment.ejbql.ASTLiteral;
00061 import org.objectweb.jonas_ejb.deployment.ejbql.ASTNullComparisonExpression;
00062 import org.objectweb.jonas_ejb.deployment.ejbql.ASTOrderByClause;
00063 import org.objectweb.jonas_ejb.deployment.ejbql.ASTOrderByItem;
00064 import org.objectweb.jonas_ejb.deployment.ejbql.ASTPath;
00065 import org.objectweb.jonas_ejb.deployment.ejbql.ASTRangeVariableDeclaration;
00066 import org.objectweb.jonas_ejb.deployment.ejbql.ASTSelectClause;
00067 import org.objectweb.jonas_ejb.deployment.ejbql.ASTSelectExpression;
00068 import org.objectweb.jonas_ejb.deployment.ejbql.ASTSingleValuedCmrPathExpression;
00069 import org.objectweb.jonas_ejb.deployment.ejbql.ASTSingleValuedPathExpression;
00070 import org.objectweb.jonas_ejb.deployment.ejbql.ASTStringExpression;
00071 import org.objectweb.jonas_ejb.deployment.ejbql.ASTStringLiteral;
00072 import org.objectweb.jonas_ejb.deployment.ejbql.ASTWhereClause;
00073 import org.objectweb.jonas_ejb.deployment.ejbql.EJBQLVisitor;
00074 import org.objectweb.jonas_ejb.deployment.ejbql.SimpleNode;
00075 import org.objectweb.medor.query.api.QueryTree;
00076 import org.objectweb.medor.query.jorm.lib.NavigatorNodeFactory;
00077 
00078 import java.util.ArrayList;
00079 import java.util.Iterator;
00080 import java.util.Stack;
00081 import java.util.StringTokenizer;
00082 
00093 public class EjbqlAbstractVisitor implements EJBQLVisitor {
00094 
00098     protected class IdValue {
00102         private ArrayList paths = null;
00103 
00107         private String[] name = null;
00108 
00112         private QueryTree qt = null;
00113 
00118         public IdValue(String pathName) {
00119             this();
00120             name = splitPath(pathName);
00121         }
00122 
00126         public IdValue() {
00127             paths = new ArrayList();
00128         }
00129 
00133         public String [] getName() {
00134             return name;
00135         }
00136 
00140         public void setName(String [] name) {
00141             this.name = name;
00142         }
00143 
00148         public void addPath(String path) {
00149             if (!paths.contains(path)) {
00150                 paths.add(path);
00151             }
00152         }
00153 
00158         public String[] getSplitedPath(int idx) {
00159             return splitPath((String) paths.get(idx));
00160         }
00161 
00166         public String getMergedPath(int idx) {
00167             return (String) paths.get(idx);
00168         }
00169 
00173         public int getDeclaredPathLength() {
00174             return paths.size();
00175         }
00176 
00180         public QueryTree getQueryTree() {
00181             return qt;
00182         }
00183 
00187         public void setQueryTree(QueryTree qt) {
00188             this.qt = qt;
00189         }
00190 
00194         public String toString() {
00195             StringBuffer sb = new StringBuffer();
00196             sb = sb.append("(paths=[");
00197             Iterator ip = paths.iterator();
00198             while (ip.hasNext()) {
00199                 sb = sb.append((String) ip.next() + ",");
00200             }
00201             if (name == null) {
00202                 sb = sb.append("],name=null");
00203             } else {
00204                 sb = sb.append("],name=");
00205                 for (int i = 0; i < name.length; i++) {
00206                     sb = sb.append(name[i] + ".");
00207                 }
00208             }
00209             if (qt == null) {
00210                 sb = sb.append(",qt=null)");
00211             } else {
00212                 sb = sb.append(",qt!=null)");
00213             }
00214             return sb.toString();
00215         }
00216     }
00217 
00221     protected class VisitorException extends RuntimeException {
00222 
00223         Exception nestedException;
00224 
00225         VisitorException(Exception nestedException) {
00226             this.nestedException = nestedException;
00227         }
00228 
00229         Exception getNestedException() {
00230             return nestedException;
00231         }
00232     }
00233 
00239     protected String[] splitPath(String path) {
00240         StringTokenizer st = new StringTokenizer(path, ".");
00241         String[] ret = new String[st.countTokens()];
00242         for (int i = 0; i < ret.length; i++) {
00243             ret[i] = st.nextToken();
00244         }
00245         return ret;
00246     }
00247 
00254     protected String mergePath(String[] path, int begin, int length) {
00255         if (length == 0) {
00256             return "";
00257         }
00258         StringBuffer ret = new StringBuffer();
00259         for (int i = begin; i < (begin + length); i++) {
00260             ret.append(path[i]);
00261             ret.append('.');
00262         }
00263         ret.deleteCharAt(ret.length() - 1);
00264         return ret.toString();
00265     }
00266 
00271     protected String mergePath(String[] path) {
00272         return (mergePath(path, 0, path.length));
00273     }
00274 
00280     protected boolean endsWith(String[] path, String suffix) {
00281         return (suffix.equals(path[path.length - 1]));
00282     }
00283 
00290     protected String[] basePath(String[] path) {
00291         String[] base = new String[path.length - 1];
00292         for (int i = 0; i < path.length - 1; i++) {
00293             base[i] = new String(path[i]);
00294         }
00295         return base;
00296     }
00297 
00305     public Object visit(SimpleNode node) throws Exception {
00306         try {
00307             return visit((SimpleNode) node, new Stack());
00308         } catch (VisitorException e) {
00309             throw e.getNestedException();
00310         }
00311     }
00312 
00319     public Object visit(SimpleNode node, Object data) {
00320         return node.childrenAccept(this, data);
00321     }
00322 
00329     public Object visit(ASTEJBQL node, Object data) {
00330         return null;
00331     }
00332 
00339     public Object visit(ASTFromClause node, Object data) {
00340         return null;
00341     }
00342 
00349     public Object visit(ASTCollectionMemberDeclaration node, Object data) {
00350         return null;
00351     }
00352 
00359     public Object visit(ASTRangeVariableDeclaration node, Object data) {
00360         return null;
00361     }
00362 
00369     public Object visit(ASTSingleValuedPathExpression node, Object data) {
00370         return null;
00371     }
00372 
00379     public Object visit(ASTCmpPathExpression node, Object data) {
00380         return null;
00381     }
00382 
00389     public Object visit(ASTSingleValuedCmrPathExpression node, Object data) {
00390         return null;
00391     }
00392 
00399     public Object visit(ASTCollectionValuedPathExpression node, Object data) {
00400         return null;
00401     }
00402 
00409     public Object visit(ASTSelectClause node, Object data) {
00410         return null;
00411     }
00412 
00419     public Object visit(ASTSelectExpression node, Object data) {
00420         return null;
00421     }
00422 
00429     public Object visit(ASTAggregateSelectExpression node, Object data) {
00430         return null;
00431     }
00432 
00439     public Object visit(ASTOrderByClause node, Object data) {
00440         return null;
00441     }
00442 
00449     public Object visit(ASTOrderByItem node, Object data) {
00450         return null;
00451     }
00452 
00459     public Object visit(ASTLimitClause node, Object data) {
00460         return null;
00461     }
00462 
00469     public Object visit(ASTLimitExpression node, Object data) {
00470         return null;
00471     }
00472 
00479     public Object visit(ASTWhereClause node, Object data) {
00480         return null;
00481     }
00482 
00489     public Object visit(ASTConditionalExpression node, Object data) {
00490         return null;
00491     }
00492 
00499     public Object visit(ASTConditionalTerm node, Object data) {
00500         return null;
00501     }
00502 
00509     public Object visit(ASTConditionalFactor node, Object data) {
00510         return null;
00511     }
00512 
00519     public Object visit(ASTBetweenExpression node, Object data) {
00520         return null;
00521     }
00522 
00529     public Object visit(ASTInExpression node, Object data) {
00530         return null;
00531     }
00532 
00539     public Object visit(ASTLikeExpression node, Object data) {
00540         return null;
00541     }
00542 
00549     public Object visit(ASTNullComparisonExpression node, Object data) {
00550         return null;
00551     }
00552 
00559     public Object visit(ASTEmptyCollectionComparisonExpression node, Object data) {
00560         return null;
00561     }
00562 
00569     public Object visit(ASTCollectionMemberExpression node, Object data) {
00570         return null;
00571     }
00572 
00579     public Object visit(ASTComparisonExpression node, Object data) {
00580         return null;
00581     }
00582 
00589     public Object visit(ASTArithmeticExpression node, Object data) {
00590         return null;
00591     }
00592 
00599     public Object visit(ASTIntegerLiteral node, Object data) {
00600         return null;
00601     }
00602 
00609     public Object visit(ASTFloatingPointLiteral node, Object data) {
00610         return null;
00611     }
00612 
00619     public Object visit(ASTArithmeticTerm node, Object data) {
00620         return null;
00621     }
00622 
00629     public Object visit(ASTArithmeticFactor node, Object data) {
00630         return null;
00631     }
00632 
00639     public Object visit(ASTStringExpression node, Object data) {
00640         return null;
00641     }
00642 
00649     public Object visit(ASTDatetimeExpression node, Object data) {
00650         return null;
00651     }
00652 
00659     public Object visit(ASTBooleanExpression node, Object data) {
00660         return null;
00661     }
00662 
00669     public Object visit(ASTEntityBeanExpression node, Object data) {
00670         return null;
00671     }
00672 
00679     public Object visit(ASTFunctionsReturningStrings node, Object data) {
00680         return null;
00681     }
00682 
00689     public Object visit(ASTFunctionsReturningNumerics node, Object data) {
00690         return null;
00691     }
00692 
00699     public Object visit(ASTAbstractSchemaName node, Object data) {
00700         return null;
00701     }
00702 
00709     public Object visit(ASTIdentificationVariable node, Object data) {
00710         return null;
00711     }
00712 
00719     public Object visit(ASTIdentifier node, Object data) {
00720         return null;
00721     }
00722 
00729     public Object visit(ASTPath node, Object data) {
00730         return null;
00731     }
00732 
00740     public Object visit(ASTLiteral node, Object data) {
00741         return null;
00742     }
00743 
00750     public Object visit(ASTStringLiteral node, Object data) {
00751         return null;
00752     }
00753 
00760     public Object visit(ASTArithmeticLiteral node, Object data) {
00761         return null;
00762     }
00763 
00770     public Object visit(ASTBooleanLiteral node, Object data) {
00771         return null;
00772     }
00773 
00780     public Object visit(ASTInputParameter node, Object data) {
00781         return null;
00782     }
00783 }

Generated on Tue Feb 15 15:05:48 2005 for JOnAS by  doxygen 1.3.9.1