MethodCmp2Desc.java

00001 
00027 package org.objectweb.jonas_ejb.deployment.api;
00028 
00029 import java.io.CharArrayReader;
00030 import java.lang.reflect.Method;
00031 
00032 import org.objectweb.jonas_ejb.deployment.ejbql.ASTEJBQL;
00033 import org.objectweb.jonas_ejb.deployment.ejbql.EJBQL;
00034 import org.objectweb.jonas_ejb.deployment.ejbql.ParseException;
00035 import org.objectweb.jonas_ejb.lib.EjbqlQueryTreeHolder;
00036 import org.objectweb.jonas_lib.deployment.api.DeploymentDescException;
00037 import org.objectweb.jorm.api.PMapper;
00038 
00039 
00045 public class MethodCmp2Desc extends MethodDesc  {
00046 
00047     protected String query = null;
00048     protected ASTEJBQL queryNode = null;
00049     protected EjbqlQueryTreeHolder queryTreeHolder = null;
00050     protected boolean resultTypeMappingRemote = false;
00051     protected EntityDesc entityDesc;
00052 
00053 
00057     MethodCmp2Desc(BeanDesc beanDesc, Method meth,int index) {
00058         super(beanDesc, meth, index);
00059         entityDesc = (EntityDesc) beanDesc;
00060     }
00061 
00066     public String getQuery() {
00067         return query;
00068     }
00069 
00074     public void setQuery(String query) throws ParseException {
00075         // we want a one line query for error reporting
00076         this.query = query.replace('\r',' ').replace('\n',' ').replace('\t',' ');
00077         EJBQL parser = new EJBQL(new CharArrayReader(query.toCharArray()));
00078         queryNode = (ASTEJBQL)parser.EJBQL();
00079         queryTreeHolder=null;
00080     }
00081 
00082 
00086     public EjbqlQueryTreeHolder getQueryTreeHolder(PMapper mapper) throws DeploymentDescException {
00087         if (queryTreeHolder==null) {
00088             try {
00089                 queryTreeHolder = new EjbqlQueryTreeHolder(this, queryNode, mapper);
00090             } catch (Exception e) {
00091                 throw new DeploymentDescException("ejbql query "+query+" does not map to the persistent schema",e);
00092             }
00093         }
00094         return queryTreeHolder;
00095     }
00096 
00101     public boolean isResultTypeMappingRemote() {
00102         return resultTypeMappingRemote;
00103     }
00104 
00108     public void setResultTypeMapping(String resultTypeMapping)
00109         throws DeploymentDescException {
00110             if (resultTypeMapping.equals("Remote")) {
00111                 resultTypeMappingRemote=true;
00112             } else if (resultTypeMapping.equals("Local")) {
00113                 resultTypeMappingRemote=false;
00114             } else {
00115                 throw new DeploymentDescException(resultTypeMapping+" is not a valid result-type-mapping value");
00116             }
00117     }
00118 
00123     public boolean getPrefetch() {
00124         if (this.isFinder()) {
00125             return entityDesc.isPrefetch();
00126         } else {
00127             return false;
00128         }
00129     }
00130 
00131 
00137     public static String queryMethodElementToString(org.objectweb.jonas_ejb.deployment.xml.QueryMethod m) {
00138         return methodElementToString(null, m.getMethodName(),m.getMethodParams());
00139     }
00140 
00145     public String toString() {
00146         StringBuffer ret = new StringBuffer();
00147         ret.append(super.toString());
00148         ret.append("\nquery = " + query);
00149         ret.append("\nqueryNode = " + queryNode);
00150         ret.append("\nqueryTreeHolder = " + queryTreeHolder);
00151         ret.append("\nresultTypeMappingRemote = " + resultTypeMappingRemote);
00152         return ret.toString();
00153     }
00154 
00155 }

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