Author: fancy
Date: Wed May 28 15:19:31 2008
New Revision: 661124
URL: http://svn.apache.org/viewvc?rev=661124&view=rev
Log:
OPENJPA-612 Add support for calculating update value in QueryImpl.updateInMemory
Help comitting patch provided by Fay Wang
Add support for in-memory string function evulation
Modified:
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/JDBCStoreQuery.java
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/AbstractVal.java
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/Args.java
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/Concat.java
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/IndexOf.java
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/StringLength.java
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/Substring.java
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/ToLowerCase.java
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/ToUpperCase.java
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/Trim.java
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/Val.java
Modified:
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/JDBCStoreQuery.java
URL:
http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/JDBCStoreQuery.java?rev=661124&r1=661123&r2=661124&view=diff
==============================================================================
---
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/JDBCStoreQuery.java
(original)
+++
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/JDBCStoreQuery.java
Wed May 28 15:19:31 2008
@@ -680,104 +680,238 @@
return sql.prepareStatement(conn);
}
- public Object evaluate(Object value, Object ob, Object[] params,
+ public Object evaluate(Object value, Object ob, Object[] params,
OpenJPAStateManager sm) {
- if (value instanceof org.apache.openjpa.jdbc.kernel.exps.Math) {
- org.apache.openjpa.jdbc.kernel.exps.Math mathVal =
- (org.apache.openjpa.jdbc.kernel.exps.Math) value;
-
- Val value1 = mathVal.getVal1();
- Object val1 = getValue(value1, ob, params, sm);
- Class c1 = value1.getType();
-
- Val value2 = mathVal.getVal2();
- Object val2 = getValue(value2, ob, params, sm);
- Class c2 = value2.getType();
-
- String op = mathVal.getOperation();
-
- if (op.equals(org.apache.openjpa.jdbc.kernel.exps.Math.ADD))
- return Filters.add(val1, c1, val2, c2);
- else if (op.equals(
- org.apache.openjpa.jdbc.kernel.exps.Math.SUBTRACT))
- return Filters.subtract(val1, c1, val2, c2);
- else if (op.equals(
- org.apache.openjpa.jdbc.kernel.exps.Math.MULTIPLY))
- return Filters.multiply(val1, c1, val2, c2);
- else if (op.equals(
- org.apache.openjpa.jdbc.kernel.exps.Math.DIVIDE))
- return Filters.divide(val1, c1, val2, c2);
- else if (op.equals(org.apache.openjpa.jdbc.kernel.exps.Math.MOD))
- return Filters.mod(val1, c1, val2, c2);
+ int id = 0;
+ if (value instanceof org.apache.openjpa.jdbc.kernel.exps.Val)
+ id = ((org.apache.openjpa.jdbc.kernel.exps.Val)value).getId();
+ else
+ throw new UnsupportedException();
+
+ switch(id) {
+ case Val.MATH_VAL:
+ return handleMathVal(value, ob, params, sm);
+ case Val.CONCAT_VAL:
+ return handleConcatVal(value, ob, params, sm);
+ case Val.SUBSTRING_VAL:
+ return handleSubstringVal(value, ob, params, sm);
+ case Val.ARGS_VAL:
+ return handleArgsVal(value, ob, params, sm);
+ case Val.LOWER_VAL:
+ return handleLowerVal(value, ob, params, sm);
+ case Val.UPPER_VAL:
+ return handleUpperVal(value, ob, params, sm);
+ case Val.LENGTH_VAL:
+ return handleLengthVal(value, ob, params, sm);
+ case Val.TRIM_VAL:
+ return handleTrimVal(value, ob, params, sm);
+ case Val.INDEXOF_VAL:
+ return handleIndexOfVal(value, ob, params, sm);
+ default:
throw new UnsupportedException();
}
+ }
+
+ private Object handleMathVal(Object value, Object ob, Object[] params,
+ OpenJPAStateManager sm) {
+ org.apache.openjpa.jdbc.kernel.exps.Math mathVal =
+ (org.apache.openjpa.jdbc.kernel.exps.Math) value;
+ Val value1 = mathVal.getVal1();
+ Object val1 = getValue(value1, ob, params, sm);
+ Class c1 = value1.getType();
+
+ Val value2 = mathVal.getVal2();
+ Object val2 = getValue(value2, ob, params, sm);
+ Class c2 = value2.getType();
+
+ String op = mathVal.getOperation();
+ if (op.equals(org.apache.openjpa.jdbc.kernel.exps.Math.ADD))
+ return Filters.add(val1, c1, val2, c2);
+ else if (op.equals(
+ org.apache.openjpa.jdbc.kernel.exps.Math.SUBTRACT))
+ return Filters.subtract(val1, c1, val2, c2);
+ else if (op.equals(
+ org.apache.openjpa.jdbc.kernel.exps.Math.MULTIPLY))
+ return Filters.multiply(val1, c1, val2, c2);
+ else if (op.equals(
+ org.apache.openjpa.jdbc.kernel.exps.Math.DIVIDE))
+ return Filters.divide(val1, c1, val2, c2);
+ else if (op.equals(org.apache.openjpa.jdbc.kernel.exps.Math.MOD))
+ return Filters.mod(val1, c1, val2, c2);
throw new UnsupportedException();
}
- private Object getValue(Object ob, FieldMapping fmd,
+ private Object handleConcatVal(Object value, Object ob, Object[] params,
OpenJPAStateManager sm) {
- int i = fmd.getIndex();
- switch (fmd.getDeclaredTypeCode()) {
- case JavaTypes.BOOLEAN:
- return sm.fetchBooleanField(i);
- case JavaTypes.BYTE:
- return sm.fetchByteField(i);
- case JavaTypes.CHAR:
- return sm.fetchCharField(i);
- case JavaTypes.DOUBLE:
- return sm.fetchDoubleField(i);
- case JavaTypes.FLOAT:
- return sm.fetchFloatField(i);
- case JavaTypes.INT:
- return sm.fetchIntField(i);
- case JavaTypes.LONG:
- return sm.fetchLongField(i);
- case JavaTypes.SHORT:
- return sm.fetchShortField(i);
- case JavaTypes.STRING:
- return sm.fetchStringField(i);
- case JavaTypes.DATE:
- case JavaTypes.NUMBER:
- case JavaTypes.BOOLEAN_OBJ:
- case JavaTypes.BYTE_OBJ:
- case JavaTypes.CHAR_OBJ:
- case JavaTypes.DOUBLE_OBJ:
- case JavaTypes.FLOAT_OBJ:
- case JavaTypes.INT_OBJ:
- case JavaTypes.LONG_OBJ:
- case JavaTypes.SHORT_OBJ:
- case JavaTypes.BIGDECIMAL:
- case JavaTypes.BIGINTEGER:
- case JavaTypes.LOCALE:
- case JavaTypes.OBJECT:
- case JavaTypes.OID:
- return sm.fetchObjectField(i);
- default:
- throw new UnsupportedException();
+ org.apache.openjpa.jdbc.kernel.exps.Concat concatVal =
+ (org.apache.openjpa.jdbc.kernel.exps.Concat)value;
+ Val value1 = concatVal.getVal1();
+ Object val1 = getValue(value1, ob, params, sm);
+
+ Val value2 = concatVal.getVal2();
+ Object val2 = getValue(value2, ob, params, sm);
+ return new StringBuffer(100).append(val1).append(val2).toString();
+ }
+
+ private Object handleSubstringVal(Object value, Object ob, Object[] params,
+ OpenJPAStateManager sm) {
+ org.apache.openjpa.jdbc.kernel.exps.Substring substrVal =
+ (org.apache.openjpa.jdbc.kernel.exps.Substring) value;
+ Val value1 = substrVal.getVal1();
+ String val1 = (String) getValue(value1, ob, params, sm);
+
+ Val value2 = substrVal.getVal2();
+ Object val2 = getValue(value2, ob, params, sm);
+
+ org.apache.openjpa.kernel.exps.Value[] valAry2 =
+ (org.apache.openjpa.kernel.exps.Value[]) val2;
+ Object arg1 = getValue(valAry2[0], ob, params, sm); //starting pos
+ Object arg2 = getValue(valAry2[1], ob, params, sm); // length
+ int startIdx = ((Long) arg1).intValue();
+ int length = ((Long) arg2).intValue();
+ int endIdx = startIdx + length;
+ return val1.substring(startIdx, endIdx);
+ }
+
+ private Object handleArgsVal(Object value, Object ob, Object[] params,
+ OpenJPAStateManager sm) {
+ org.apache.openjpa.jdbc.kernel.exps.Args argsVal =
+ (org.apache.openjpa.jdbc.kernel.exps.Args) value;
+ return argsVal.getValues();
+ }
+
+ private Object handleLowerVal(Object value, Object ob, Object[] params,
+ OpenJPAStateManager sm) {
+ org.apache.openjpa.jdbc.kernel.exps.ToLowerCase lowerVal =
+ (org.apache.openjpa.jdbc.kernel.exps.ToLowerCase) value;
+ Val val = lowerVal.getValue();
+ return ((String) getValue(val, ob, params, sm)).toLowerCase();
+ }
+
+ private Object handleUpperVal(Object value, Object ob, Object[] params,
+ OpenJPAStateManager sm){
+ org.apache.openjpa.jdbc.kernel.exps.ToUpperCase upperVal =
+ (org.apache.openjpa.jdbc.kernel.exps.ToUpperCase) value;
+ Val val = upperVal.getValue();
+ return ((String) getValue(val, ob, params, sm)).toUpperCase();
+ }
+
+ private Object handleLengthVal(Object value, Object ob, Object[] params,
+ OpenJPAStateManager sm){
+ org.apache.openjpa.jdbc.kernel.exps.StringLength strLenVal =
+ (org.apache.openjpa.jdbc.kernel.exps.StringLength) value;
+ Val val = strLenVal.getValue();
+ return ((String) getValue(val, ob, params, sm)).length();
+ }
+
+ private Object handleTrimVal(Object value, Object ob, Object[] params,
+ OpenJPAStateManager sm) {
+ org.apache.openjpa.jdbc.kernel.exps.Trim trimVal =
+ (org.apache.openjpa.jdbc.kernel.exps.Trim) value;
+ Val val = trimVal.getVal();
+ String valStr = (String) getValue(val, ob, params, sm);
+ Val trimChar = trimVal.getTrimChar();
+ char trimCharObj = ((String) getValue(trimChar, ob, params, sm)).
+ charAt(0);
+ Boolean where = trimVal.getWhere();
+ if (where == null) { //trim both
+ return trimLeading(trimTrailing(valStr, trimCharObj), trimCharObj);
+ } else if (where.booleanValue()) { // trim leading
+ return trimLeading(valStr, trimCharObj);
+ } else { // trim trailing
+ return trimTrailing(valStr, trimCharObj);
}
}
- private Object eval(Object ob, Object value, Object[] params,
- OpenJPAStateManager sm) {
- Object val = null;
- if (value instanceof Literal)
- val = ((Literal) value).getValue();
- else if (value instanceof Constant)
- val = ((Constant) value).getValue(params);
- else
- val = evaluate(value, ob, params, sm);
+ private String trimLeading(String value, char trimChar) {
+ int startIdx = 0;
+ int len = value.length();
+ for (int i = 0; i < len; i++) {
+ if (value.charAt(i) != trimChar) {
+ startIdx = i;
+ break;
+ }
+ }
+ return value.substring(startIdx);
+ }
- return val;
+ private String trimTrailing(String value, char trimChar) {
+ int endIdx = 0;
+ int len = value.length();
+ for (int i = len-1; i >= 0; i--) {
+ if (value.charAt(i) != trimChar) {
+ endIdx = i;
+ break;
+ }
+ }
+ return value.substring(0, endIdx+1);
+ }
+
+ private Object handleIndexOfVal(Object value, Object ob, Object[] params,
+ OpenJPAStateManager sm) {
+ org.apache.openjpa.jdbc.kernel.exps.IndexOf locateVal =
+ (org.apache.openjpa.jdbc.kernel.exps.IndexOf) value;
+ String val1 = (String) getValue(locateVal.getVal1(), ob, params, sm);
+ Val[] val2 = (Val[]) getValue(locateVal.getVal2(), ob, params, sm);
+ String strVal = (String)getValue(val2[0], ob, params, sm);
+ int idx = ((Long) getValue(val2[1], ob, params, sm)).intValue();
+ return strVal.indexOf(val1, idx);
}
private Object getValue(Object value, Object ob, Object[] params,
OpenJPAStateManager sm) {
- if (value instanceof org.apache.openjpa.jdbc.kernel.exps.Math)
- return evaluate(value, ob, params, sm);
- else if (value instanceof PCPath) {
- FieldMapping fm = (FieldMapping)((PCPath)value).last();
+ if (value instanceof PCPath) {
+ FieldMapping fm = (FieldMapping)((PCPath) value).last();
return getValue(ob, fm, sm);
- } else
- return eval(ob, value, params, sm);
+ } else if (value instanceof Literal) {
+ return ((Literal) value).getValue();
+ } else if (value instanceof Constant) {
+ return ((Constant) value).getValue(params);
+ } else {
+ return evaluate(value, ob, params, sm);
+ }
+ }
+
+ private Object getValue(Object ob, FieldMapping fmd,
+ OpenJPAStateManager sm) {
+ int i = fmd.getIndex();
+ switch (fmd.getDeclaredTypeCode()) {
+ case JavaTypes.BOOLEAN:
+ return sm.fetchBooleanField(i);
+ case JavaTypes.BYTE:
+ return sm.fetchByteField(i);
+ case JavaTypes.CHAR:
+ return sm.fetchCharField(i);
+ case JavaTypes.DOUBLE:
+ return sm.fetchDoubleField(i);
+ case JavaTypes.FLOAT:
+ return sm.fetchFloatField(i);
+ case JavaTypes.INT:
+ return sm.fetchIntField(i);
+ case JavaTypes.LONG:
+ return sm.fetchLongField(i);
+ case JavaTypes.SHORT:
+ return sm.fetchShortField(i);
+ case JavaTypes.STRING:
+ return sm.fetchStringField(i);
+ case JavaTypes.DATE:
+ case JavaTypes.NUMBER:
+ case JavaTypes.BOOLEAN_OBJ:
+ case JavaTypes.BYTE_OBJ:
+ case JavaTypes.CHAR_OBJ:
+ case JavaTypes.DOUBLE_OBJ:
+ case JavaTypes.FLOAT_OBJ:
+ case JavaTypes.INT_OBJ:
+ case JavaTypes.LONG_OBJ:
+ case JavaTypes.SHORT_OBJ:
+ case JavaTypes.BIGDECIMAL:
+ case JavaTypes.BIGINTEGER:
+ case JavaTypes.LOCALE:
+ case JavaTypes.OBJECT:
+ case JavaTypes.OID:
+ return sm.fetchObjectField(i);
+ default:
+ throw new UnsupportedException();
+ }
}
}
Modified:
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/AbstractVal.java
URL:
http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/AbstractVal.java?rev=661124&r1=661123&r2=661124&view=diff
==============================================================================
---
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/AbstractVal.java
(original)
+++
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/AbstractVal.java
Wed May 28 15:19:31 2008
@@ -81,5 +81,9 @@
visitor.enter(this);
visitor.exit(this);
}
+
+ public int getId() {
+ return Val.VAL;
+ }
}
Modified:
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/Args.java
URL:
http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/Args.java?rev=661124&r1=661123&r2=661124&view=diff
==============================================================================
---
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/Args.java
(original)
+++
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/Args.java
Wed May 28 15:19:31 2008
@@ -194,4 +194,8 @@
_args[i].acceptVisit(visitor);
visitor.exit(this);
}
+
+ public int getId() {
+ return Val.ARGS_VAL;
+ }
}
Modified:
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/Concat.java
URL:
http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/Concat.java?rev=661124&r1=661123&r2=661124&view=diff
==============================================================================
---
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/Concat.java
(original)
+++
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/Concat.java
Wed May 28 15:19:31 2008
@@ -35,7 +35,7 @@
*
* @author Marc Prud'hommeaux
*/
-class Concat
+public class Concat
extends AbstractVal {
private final Val _val1;
@@ -50,6 +50,14 @@
_val2 = val2;
}
+ public Val getVal1() {
+ return _val1;
+ }
+
+ public Val getVal2() {
+ return _val2;
+ }
+
public ClassMetaData getMetaData() {
return _meta;
}
@@ -145,5 +153,9 @@
_val2.acceptVisit(visitor);
visitor.exit(this);
}
+
+ public int getId() {
+ return Val.CONCAT_VAL;
+ }
}
Modified:
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/IndexOf.java
URL:
http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/IndexOf.java?rev=661124&r1=661123&r2=661124&view=diff
==============================================================================
---
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/IndexOf.java
(original)
+++
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/IndexOf.java
Wed May 28 15:19:31 2008
@@ -33,7 +33,7 @@
*
* @author Abe White
*/
-class IndexOf
+public class IndexOf
extends AbstractVal {
private final Val _val1;
@@ -49,6 +49,13 @@
_val2 = val2;
}
+ public Val getVal1() {
+ return _val1;
+ }
+
+ public Val getVal2() {
+ return _val2;
+ }
public ClassMetaData getMetaData() {
return _meta;
}
@@ -141,5 +148,9 @@
_val2.acceptVisit(visitor);
visitor.exit(this);
}
+
+ public int getId() {
+ return Val.INDEXOF_VAL;
+ }
}
Modified:
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/StringLength.java
URL:
http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/StringLength.java?rev=661124&r1=661123&r2=661124&view=diff
==============================================================================
---
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/StringLength.java
(original)
+++
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/StringLength.java
Wed May 28 15:19:31 2008
@@ -27,7 +27,7 @@
*
* @author Marc Prud'hommeaux
*/
-class StringLength
+public class StringLength
extends StringFunction {
private Class _cast = null;
@@ -61,5 +61,9 @@
getValue().appendTo(sel, ctx, state, buf, index);
buf.append(func.substring(idx + 3));
}
+
+ public int getId() {
+ return Val.LENGTH_VAL;
+ }
}
Modified:
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/Substring.java
URL:
http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/Substring.java?rev=661124&r1=661123&r2=661124&view=diff
==============================================================================
---
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/Substring.java
(original)
+++
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/Substring.java
Wed May 28 15:19:31 2008
@@ -33,7 +33,7 @@
*
* @author Abe White
*/
-class Substring
+public class Substring
extends AbstractVal {
private final Val _val1;
@@ -48,6 +48,14 @@
_val2 = val2;
}
+ public Val getVal1() {
+ return _val1;
+ }
+
+ public Val getVal2() {
+ return _val2;
+ }
+
public ClassMetaData getMetaData() {
return _meta;
}
@@ -137,5 +145,9 @@
_val2.acceptVisit(visitor);
visitor.exit(this);
}
+
+ public int getId() {
+ return Val.SUBSTRING_VAL;
+ }
}
Modified:
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/ToLowerCase.java
URL:
http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/ToLowerCase.java?rev=661124&r1=661123&r2=661124&view=diff
==============================================================================
---
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/ToLowerCase.java
(original)
+++
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/ToLowerCase.java
Wed May 28 15:19:31 2008
@@ -27,7 +27,7 @@
*
* @author Abe White
*/
-class ToLowerCase
+public class ToLowerCase
extends StringFunction {
/**
@@ -50,4 +50,8 @@
getValue().appendTo(sel, ctx, state, buf, index);
buf.append(func.substring(idx + 3));
}
+
+ public int getId() {
+ return Val.LOWER_VAL;
+ }
}
Modified:
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/ToUpperCase.java
URL:
http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/ToUpperCase.java?rev=661124&r1=661123&r2=661124&view=diff
==============================================================================
---
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/ToUpperCase.java
(original)
+++
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/ToUpperCase.java
Wed May 28 15:19:31 2008
@@ -27,7 +27,7 @@
*
* @author Abe White
*/
-class ToUpperCase
+public class ToUpperCase
extends StringFunction {
/**
@@ -50,5 +50,9 @@
getValue().appendTo(sel, ctx, state, buf, index);
buf.append(func.substring(idx + 3));
}
+
+ public int getId() {
+ return Val.UPPER_VAL;
+ }
}
Modified:
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/Trim.java
URL:
http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/Trim.java?rev=661124&r1=661123&r2=661124&view=diff
==============================================================================
---
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/Trim.java
(original)
+++
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/Trim.java
Wed May 28 15:19:31 2008
@@ -36,7 +36,7 @@
*
* @author Marc Prud'hommeaux
*/
-class Trim
+public class Trim
extends AbstractVal {
private final Val _val;
@@ -53,6 +53,18 @@
_where = where;
}
+ public Val getVal() {
+ return _val;
+ }
+
+ public Val getTrimChar() {
+ return _trimChar;
+ }
+
+ public Boolean getWhere(){
+ return _where;
+ }
+
public ClassMetaData getMetaData() {
return _meta;
}
@@ -195,5 +207,9 @@
_trimChar.acceptVisit(visitor);
visitor.exit(this);
}
+
+ public int getId() {
+ return Val.TRIM_VAL;
+ }
}
Modified:
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/Val.java
URL:
http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/Val.java?rev=661124&r1=661123&r2=661124&view=diff
==============================================================================
---
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/Val.java
(original)
+++
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/Val.java
Wed May 28 15:19:31 2008
@@ -51,6 +51,18 @@
*/
public final int FORCE_OUTER = 2 << 2;
+ public final int VAL = 0;
+ public final int MATH_VAL = 1;
+ public final int CONCAT_VAL = 2;
+ public final int SUBSTRING_VAL = 3;
+ public final int UPPER_VAL = 4;
+ public final int LOWER_VAL = 5;
+ public final int TRIM_VAL = 6;
+ public final int LENGTH_VAL = 7;
+ public final int LOCATE_VAL = 8;
+ public final int ARGS_VAL = 9;
+ public final int INDEXOF_VAL = 10;
+
/**
* Initialize the value. This method should recursively initialize any
* sub-values.
@@ -144,4 +156,6 @@
*/
public void appendIsNotNull(Select sel, ExpContext ctx, ExpState state,
SQLBuffer sql);
+
+ public int getId();
}