User: dsundstrom
  Date: 01/08/19 15:50:33

  Modified:    src/main/org/jboss/ejb/plugins/cmp/jdbc/ejbql
                        EJBQLParser.java SQLTarget.java
  Log:
  Added function mapping for EJB-QL.
  
  Revision  Changes    Path
  1.3       +12 -6     
jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/ejbql/EJBQLParser.java
  
  Index: EJBQLParser.java
  ===================================================================
  RCS file: 
/cvsroot/jboss/jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/ejbql/EJBQLParser.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- EJBQLParser.java  2001/08/19 03:32:24     1.2
  +++ EJBQLParser.java  2001/08/19 22:50:33     1.3
  @@ -816,9 +816,10 @@
                        concat.add(new Symbol(")").discard());
                        concat.setAssembler(new Assembler() {
                                public void workOn(Assembly a) {
  +                                     SQLTarget target = (SQLTarget)a.getTarget();
                                        String param2 = a.pop().toString();
                                        String param1 = a.pop().toString();
  -                                     a.push("{fn concat("+param1+", "+param2+")}");
  +                                     a.push(target.getConcatFunction(param1, 
param2));
                                }
                        });
                        funRetStr.add(concat);
  @@ -834,10 +835,11 @@
                        substring.add(new Symbol(")").discard());
                        substring.setAssembler(new Assembler() {
                                public void workOn(Assembly a) {
  +                                     SQLTarget target = (SQLTarget)a.getTarget();
                                        String param3 = a.pop().toString();
                                        String param2 = a.pop().toString();
                                        String param1 = a.pop().toString();
  -                                     a.push("{fn substring("+param1+", "+param2+", 
"+param3+")}");
  +                                     a.push(target.getSubstringFunction(param1, 
param2, param3));
                                }
                        });
                        funRetStr.add(substring);
  @@ -864,8 +866,9 @@
                        length.add(new Symbol(")").discard());
                        length.setAssembler(new Assembler() {
                                public void workOn(Assembly a) {
  +                                     SQLTarget target = (SQLTarget)a.getTarget();
                                        String param = a.pop().toString();
  -                                     a.push("{fn length("+param+")}");
  +                                     a.push(target.getLengthFunction(param));
                                }
                        });
                        funRetNum.add(length);
  @@ -883,6 +886,7 @@
                        locate.add(new Symbol(")").discard());
                        locate.setAssembler(new Assembler() {
                                public void workOn(Assembly a) {
  +                                     SQLTarget target = (SQLTarget)a.getTarget();
                                        String param3 = a.pop().toString();
                                        String param2 = a.pop().toString();
                                        String param1 = a.pop().toString();
  @@ -893,7 +897,7 @@
                                        } else {
                                                a.pop(); // pop the token "LOCATE"
                                        }
  -                                     a.push("{fn locate("+param1+", "+param2+", 
"+param3+")}");
  +                                     a.push(target.getLocateFunction(param1, 
param2, param3));
                                }
                        });
                        funRetNum.add(locate);
  @@ -906,7 +910,8 @@
                        abs.setAssembler(new Assembler() {
                                public void workOn(Assembly a) {
                                        String param = a.pop().toString();
  -                                     a.push("{fn abs("+param+")}");
  +                                     SQLTarget target = (SQLTarget)a.getTarget();
  +                                     a.push(target.getAbsFunction(param));
                                }
                        });
                        funRetNum.add(abs);
  @@ -918,8 +923,9 @@
                        sqrt.add(new Symbol(")").discard());
                        sqrt.setAssembler(new Assembler() {
                                public void workOn(Assembly a) {
  +                                     SQLTarget target = (SQLTarget)a.getTarget();
                                        String param = a.pop().toString();
  -                                     a.push("{fn sqrt("+param+")}");
  +                                     a.push(target.getSqrtFunction(param));
                                }
                        });
                        funRetNum.add(sqrt);
  
  
  
  1.3       +42 -0     
jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/ejbql/SQLTarget.java
  
  Index: SQLTarget.java
  ===================================================================
  RCS file: 
/cvsroot/jboss/jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/ejbql/SQLTarget.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- SQLTarget.java    2001/08/19 03:32:24     1.2
  +++ SQLTarget.java    2001/08/19 22:50:33     1.3
  @@ -23,6 +23,8 @@
   import org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMPFieldBridge;
   import org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMRFieldBridge;
   import org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCEntityBridge;
  +import org.jboss.ejb.plugins.cmp.jdbc.metadata.JDBCFunctionMappingMetaData;
  +import org.jboss.ejb.plugins.cmp.jdbc.metadata.JDBCTypeMappingMetaData;
   
   public class SQLTarget implements DeepCloneable {
        private final Application application;
  @@ -607,4 +609,44 @@
                return buf.toString();
        }
   
  +     public String getConcatFunction(String param1, String param2) {
  +             String[] args = new String[] {param1, param2};
  +        JDBCFunctionMappingMetaData function = 
getTypeMappingMetaData().getFunctionMapping("concat");
  +             return function.getFunctionSql(args);
  +     }
  +     
  +     public String getSubstringFunction(String param1, String param2, String 
param3) {
  +             String[] args = new String[] {param1, param2, param3}; 
  +             JDBCFunctionMappingMetaData function = 
getTypeMappingMetaData().getFunctionMapping("substring");
  +             return function.getFunctionSql(args);
  +     }
  +     
  +     public String getLengthFunction(String param) {
  +             String[] args = new String[] {param}; 
  +             JDBCFunctionMappingMetaData function = 
getTypeMappingMetaData().getFunctionMapping("length");
  +             return function.getFunctionSql(args);
  +     }
  +     
  +     public String getLocateFunction(String param1, String param2, String param3) {
  +             String[] args = new String[] {param1, param2, param3}; 
  +             JDBCFunctionMappingMetaData function = 
getTypeMappingMetaData().getFunctionMapping("locate");
  +             return function.getFunctionSql(args);
  +     }
  +     
  +     public String getAbsFunction(String param) {
  +             String[] args = new String[] {param}; 
  +             JDBCFunctionMappingMetaData function = 
getTypeMappingMetaData().getFunctionMapping("abs");
  +             return function.getFunctionSql(args);
  +     }
  +     
  +     public String getSqrtFunction(String param) {
  +             String[] args = new String[] {param}; 
  +             JDBCFunctionMappingMetaData function = 
getTypeMappingMetaData().getFunctionMapping("sqrt");
  +             return function.getFunctionSql(args);
  +     }
  +     
  +     private JDBCTypeMappingMetaData getTypeMappingMetaData() {
  +             JDBCStoreManager manager = 
(JDBCStoreManager)managerByAbstractSchemaName.values().iterator().next();
  +             return manager.getMetaData().getTypeMapping();
  +     }
   }
  
  
  

_______________________________________________
Jboss-development mailing list
[EMAIL PROTECTED]
http://lists.sourceforge.net/lists/listinfo/jboss-development

Reply via email to