You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@empire-db.apache.org by do...@apache.org on 2018/01/07 19:08:19 UTC
empire-db git commit: EMPIREDB-267 Allow use of command params as
value expression
Repository: empire-db
Updated Branches:
refs/heads/master 48be208a9 -> 417ceb5cb
EMPIREDB-267
Allow use of command params as value expression
Project: http://git-wip-us.apache.org/repos/asf/empire-db/repo
Commit: http://git-wip-us.apache.org/repos/asf/empire-db/commit/417ceb5c
Tree: http://git-wip-us.apache.org/repos/asf/empire-db/tree/417ceb5c
Diff: http://git-wip-us.apache.org/repos/asf/empire-db/diff/417ceb5c
Branch: refs/heads/master
Commit: 417ceb5cb00b76bb5fb0f0fc1f4d3830185893c2
Parents: 48be208
Author: Rainer Döbele <do...@apache.org>
Authored: Sun Jan 7 20:09:00 2018 +0100
Committer: Rainer Döbele <do...@apache.org>
Committed: Sun Jan 7 20:09:00 2018 +0100
----------------------------------------------------------------------
.../java/org/apache/empire/db/DBColumnExpr.java | 2 -
.../java/org/apache/empire/db/DBDatabase.java | 15 +-
.../empire/db/expr/column/DBValueExpr.java | 414 ++++++++++---------
3 files changed, 224 insertions(+), 207 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/empire-db/blob/417ceb5c/empire-db/src/main/java/org/apache/empire/db/DBColumnExpr.java
----------------------------------------------------------------------
diff --git a/empire-db/src/main/java/org/apache/empire/db/DBColumnExpr.java b/empire-db/src/main/java/org/apache/empire/db/DBColumnExpr.java
index 99dc2cc..0208e7c 100644
--- a/empire-db/src/main/java/org/apache/empire/db/DBColumnExpr.java
+++ b/empire-db/src/main/java/org/apache/empire/db/DBColumnExpr.java
@@ -18,8 +18,6 @@
*/
package org.apache.empire.db;
-// java
-import java.util.Date;
import java.util.HashMap;
import java.util.Map;
http://git-wip-us.apache.org/repos/asf/empire-db/blob/417ceb5c/empire-db/src/main/java/org/apache/empire/db/DBDatabase.java
----------------------------------------------------------------------
diff --git a/empire-db/src/main/java/org/apache/empire/db/DBDatabase.java b/empire-db/src/main/java/org/apache/empire/db/DBDatabase.java
index c7ca54c..c36e182 100644
--- a/empire-db/src/main/java/org/apache/empire/db/DBDatabase.java
+++ b/empire-db/src/main/java/org/apache/empire/db/DBDatabase.java
@@ -498,9 +498,9 @@ public abstract class DBDatabase extends DBObject
}
/**
- * Creates and returns a value object for the given value.
+ * Creates and returns a value object for the given scalar value.
*
- * @param value the value
+ * @param value the scalar value
* @param dataType the database systems data type used for this value
* @return the new DBValueExpr object
*/
@@ -510,6 +510,17 @@ public abstract class DBDatabase extends DBObject
}
/**
+ * Creates and returns a value expression for a command parameter
+ *
+ * @param param the command param
+ * @return the new DBValueExpr object
+ */
+ public DBValueExpr getValueExpr(DBCmdParam param)
+ {
+ return new DBValueExpr(this, param, param.getDataType());
+ }
+
+ /**
* Adds a DBTable object to list of database tables.<BR>
* This function is called internally from the DBTable's constructor.
* <P>
http://git-wip-us.apache.org/repos/asf/empire-db/blob/417ceb5c/empire-db/src/main/java/org/apache/empire/db/expr/column/DBValueExpr.java
----------------------------------------------------------------------
diff --git a/empire-db/src/main/java/org/apache/empire/db/expr/column/DBValueExpr.java b/empire-db/src/main/java/org/apache/empire/db/expr/column/DBValueExpr.java
index 1947df6..429e992 100644
--- a/empire-db/src/main/java/org/apache/empire/db/expr/column/DBValueExpr.java
+++ b/empire-db/src/main/java/org/apache/empire/db/expr/column/DBValueExpr.java
@@ -1,203 +1,211 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.empire.db.expr.column;
-
-// Java
-import org.apache.empire.data.DataType;
-import org.apache.empire.db.DBColumn;
-import org.apache.empire.db.DBColumnExpr;
-import org.apache.empire.db.DBDatabase;
-import org.apache.empire.db.DBDatabaseDriver;
-import org.apache.empire.xml.XMLUtil;
-import org.w3c.dom.Element;
-
-import java.util.Set;
-
-
-/**
- * This class is used for declaring constant values in SQL.
- * <P>
- * There is no need to explicitly create instances of this class.<BR>
- * Instead use {@link DBDatabase#getValueExpr(String)} or one of it's overloads
- * <P>
- *
- */
-public class DBValueExpr extends DBColumnExpr
-{
- private final static long serialVersionUID = 1L;
-
- public final DBDatabase db;
- public final DataType type;
- public final DBColumnExpr column;
- // the underlying value
- protected Object value;
-
- /**
- * Constructs a new DBValueExpr object.
- *
- * @param db the database
- * @param value the value for this constant
- * @param type the data type for this constant
- */
- public DBValueExpr(DBDatabase db, Object value, DataType type)
- {
- this.db = db;
- this.type = type;
- this.column = null;
- this.value = value;
- }
-
- /**
- * Construct a new DBValueExpr object set the specified parameters to this object.
- * @param col the column
- * @param value the value
- */
- public DBValueExpr(DBColumnExpr col, Object value)
- {
- this.column = col;
- this.type = col.getDataType();
- this.db = col.getDatabase();
- this.value = value;
- }
-
- /**
- * return the value associated with this value expression
- * @return the current value
- */
- public Object getValue()
- {
- return value;
- }
-
- /**
- * set the value associated with this value expression
- * @param the value
- */
- public void setValue(Object value)
- {
- this.value = value;
- }
-
- /**
- * Returns the current DBDatabase object.
- *
- * @return the current DBDatabase object
- */
- @Override
- public DBDatabase getDatabase()
- {
- return db;
- }
-
- /**
- * Returns the data type of the DBColumnExpr object.
- *
- * @return the data type
- */
- @Override
- public DataType getDataType()
- {
- return type;
- }
-
- /**
- * Returns the column name.
- *
- * @return the column name
- */
- @Override
- public String getName()
- {
- return (column != null) ? column.getName() : null;
- }
-
- /** this helper function calls the DBColumnExpr.addXML(Element, long) method */
- @Override
- public Element addXml(Element parent, long flags)
- {
- Element elem;
- if (column!=null)
- { // Update Column
- elem = column.addXml(parent, flags);
- }
- else
- { // Add a column expression for this function
- elem = XMLUtil.addElement(parent, "column");
- String name = getName();
- if (name!=null)
- elem.setAttribute("name", getName());
- // Add Other Attributes
- if (attributes!=null)
- attributes.addXml(elem, flags);
- // add All Options
- if (options!=null)
- options.addXml(elem, flags);
- }
- // Done
- elem.setAttribute("function", "value");
- return elem;
- }
-
- /**
- * Returns null.
- *
- * @return null
- */
- @Override
- public DBColumn getUpdateColumn()
- {
- return (column != null) ? column.getUpdateColumn() : null;
- }
-
- /**
- * Always returns false since value expressions cannot be an aggregate.
- *
- * @return false
- */
- @Override
- public boolean isAggregate()
- {
- return false;
- }
-
- /**
- * Creates the SQL-Command.
- *
- * @param buf the SQL-Command
- * @param context the current SQL-Command context
- */
- @Override
- public void addSQL(StringBuilder buf, long context)
- {
- DBDatabaseDriver driver = db.getDriver();
- String text = (driver!=null) ? driver.getValueString(value, getDataType()) : String.valueOf(value);
- buf.append(text);
- }
-
- /**
- * @see org.apache.empire.db.DBExpr#addReferencedColumns(Set)
- */
- @Override
- public void addReferencedColumns(Set<DBColumn> list)
- {
- // nothing to do!
- return;
- }
-
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.empire.db.expr.column;
+
+import java.util.Set;
+
+// Java
+import org.apache.empire.data.DataType;
+import org.apache.empire.db.DBColumn;
+import org.apache.empire.db.DBColumnExpr;
+import org.apache.empire.db.DBDatabase;
+import org.apache.empire.db.DBDatabaseDriver;
+import org.apache.empire.db.DBExpr;
+import org.apache.empire.xml.XMLUtil;
+import org.w3c.dom.Element;
+
+
+/**
+ * This class is used for declaring constant values in SQL.
+ * <P>
+ * There is no need to explicitly create instances of this class.<BR>
+ * Instead use {@link DBDatabase#getValueExpr(String)} or one of it's overloads
+ * <P>
+ *
+ */
+public class DBValueExpr extends DBColumnExpr
+{
+ private final static long serialVersionUID = 1L;
+
+ public final DBDatabase db;
+ public final DataType type;
+ public final DBColumnExpr column;
+ // the underlying value
+ protected Object value;
+
+ /**
+ * Constructs a new DBValueExpr object.
+ *
+ * @param db the database
+ * @param value the value for this constant
+ * @param type the data type for this constant
+ */
+ public DBValueExpr(DBDatabase db, Object value, DataType type)
+ {
+ this.db = db;
+ this.type = type;
+ this.column = null;
+ this.value = value;
+ }
+
+ /**
+ * Construct a new DBValueExpr object set the specified parameters to this object.
+ * @param col the column
+ * @param value the value
+ */
+ public DBValueExpr(DBColumnExpr col, Object value)
+ {
+ this.column = col;
+ this.type = col.getDataType();
+ this.db = col.getDatabase();
+ this.value = value;
+ }
+
+ /**
+ * return the value associated with this value expression
+ * @return the current value
+ */
+ public Object getValue()
+ {
+ return value;
+ }
+
+ /**
+ * set the value associated with this value expression
+ * @param the value
+ */
+ public void setValue(Object value)
+ {
+ this.value = value;
+ }
+
+ /**
+ * Returns the current DBDatabase object.
+ *
+ * @return the current DBDatabase object
+ */
+ @Override
+ public DBDatabase getDatabase()
+ {
+ return db;
+ }
+
+ /**
+ * Returns the data type of the DBColumnExpr object.
+ *
+ * @return the data type
+ */
+ @Override
+ public DataType getDataType()
+ {
+ return type;
+ }
+
+ /**
+ * Returns the column name.
+ *
+ * @return the column name
+ */
+ @Override
+ public String getName()
+ {
+ return (column != null) ? column.getName() : null;
+ }
+
+ /** this helper function calls the DBColumnExpr.addXML(Element, long) method */
+ @Override
+ public Element addXml(Element parent, long flags)
+ {
+ Element elem;
+ if (column!=null)
+ { // Update Column
+ elem = column.addXml(parent, flags);
+ }
+ else
+ { // Add a column expression for this function
+ elem = XMLUtil.addElement(parent, "column");
+ String name = getName();
+ if (name!=null)
+ elem.setAttribute("name", getName());
+ // Add Other Attributes
+ if (attributes!=null)
+ attributes.addXml(elem, flags);
+ // add All Options
+ if (options!=null)
+ options.addXml(elem, flags);
+ }
+ // Done
+ elem.setAttribute("function", "value");
+ return elem;
+ }
+
+ /**
+ * Returns null.
+ *
+ * @return null
+ */
+ @Override
+ public DBColumn getUpdateColumn()
+ {
+ return (column != null) ? column.getUpdateColumn() : null;
+ }
+
+ /**
+ * Always returns false since value expressions cannot be an aggregate.
+ *
+ * @return false
+ */
+ @Override
+ public boolean isAggregate()
+ {
+ return false;
+ }
+
+ /**
+ * Creates the SQL-Command.
+ *
+ * @param buf the SQL-Command
+ * @param context the current SQL-Command context
+ */
+ @Override
+ public void addSQL(StringBuilder buf, long context)
+ {
+ if (value instanceof DBExpr)
+ { // its an expression
+ ((DBExpr)value).addSQL(buf, context);
+ }
+ else
+ { // convert value to sql literal
+ DBDatabaseDriver driver = db.getDriver();
+ String text = (driver!=null) ? driver.getValueString(value, getDataType()) : String.valueOf(value);
+ buf.append(text);
+ }
+ }
+
+ /**
+ * @see org.apache.empire.db.DBExpr#addReferencedColumns(Set)
+ */
+ @Override
+ public void addReferencedColumns(Set<DBColumn> list)
+ {
+ // nothing to do!
+ return;
+ }
+
+}