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