changeset 29:c26213e86442

Use newSQLFeatureNotSupportedException() for setArray() Beautifying code layout and indentation.
author Martin van Dinther <martin.van.dinther@monetdbsolutions.com>
date Thu, 27 Oct 2016 15:54:13 +0200 (2016-10-27)
parents 9d4b1ef73a5f
children c2bf983dc79b
files src/main/java/nl/cwi/monetdb/jdbc/MonetPreparedStatement.java src/main/java/nl/cwi/monetdb/jdbc/MonetStatement.java
diffstat 2 files changed, 51 insertions(+), 58 deletions(-) [+]
line wrap: on
line diff
--- a/src/main/java/nl/cwi/monetdb/jdbc/MonetPreparedStatement.java
+++ b/src/main/java/nl/cwi/monetdb/jdbc/MonetPreparedStatement.java
@@ -60,7 +60,8 @@ import java.util.Map;
  * [ "int",        9,      0       ]
  * </pre>
  *
- * @author Fabian Groffen, Martin van Dinther
+ * @author Fabian Groffen
+ * @author Martin van Dinther
  * @version 0.4
  */
 public class MonetPreparedStatement
@@ -79,7 +80,7 @@ public class MonetPreparedStatement
 	private final int rscolcnt;
 
 	private final String[] values;
-	
+
 	private final MonetConnection connection;
 
 	/* only parse the date patterns once, use multiple times */
@@ -280,7 +281,7 @@ public class MonetPreparedStatement
 	 *                      statement does not return a ResultSet object
 	 */
 	@Override
-	public ResultSet executeQuery() throws SQLException{
+	public ResultSet executeQuery() throws SQLException {
 		if (execute() != true)
 			throw new SQLException("Query did not produce a result set", "M1M19");
 
@@ -463,7 +464,7 @@ public class MonetPreparedStatement
 			public boolean isCurrency(int column) {
 				return false;
 			}
-			
+
 			/**
 			 * Indicates whether values in the designated column are signed
 			 * numbers.
@@ -771,7 +772,7 @@ public class MonetPreparedStatement
 					if (column[i] == null)
 						cnt++;
 				}
-				
+
 				return cnt;
 			}
 
@@ -943,14 +944,14 @@ public class MonetPreparedStatement
 	 * Sets the designated parameter to the given Array object.  The
 	 * driver converts this to an SQL ARRAY value when it sends it to
 	 * the database.
-     *
+	 *
 	 * @param i the first parameter is 1, the second is 2, ...
 	 * @param x an Array object that maps an SQL ARRAY value
 	 * @throws SQLException if a database access error occurs
 	 */
 	@Override
 	public void setArray(int i, Array x) throws SQLException {
-		throw new SQLException("Operation setArray(int i, Array x) currently not supported!", "0A000");
+		throw newSQLFeatureNotSupportedException("setArray");
 	}
 
 	/**
@@ -1036,31 +1037,29 @@ public class MonetPreparedStatement
 	 * @throws SQLException if a database access error occurs
 	 */
 	@Override
-	public void setBigDecimal(int idx, BigDecimal x)
-	    throws SQLException
-	{
-	  // get array position
-	  int i = getParamIdx(idx);
+	public void setBigDecimal(int idx, BigDecimal x) throws SQLException {
+		// get array position
+		int i = getParamIdx(idx);
 
-	  // round to the scale of the DB:
-	  x = x.setScale(scale[i], RoundingMode.HALF_UP);
+		// round to the scale of the DB:
+		x = x.setScale(scale[i], RoundingMode.HALF_UP);
+
+		// if precision is now greater than that of the db, throw an error:
+		if (x.precision() > digits[i]) {
+			throw new SQLDataException("DECIMAL value exceeds allowed digits/scale: " + x.toPlainString() + " (" + digits[i] + "/" + scale[i] + ")", "22003");
+		}
 
-	  // if precision is now greater than that of the db, throw an error:
-	  if (x.precision() > digits[i]) {
-	    throw new SQLDataException("DECIMAL value exceeds allowed digits/scale: " + x.toPlainString() + " (" + digits[i] + "/" + scale[i] + ")", "22003");
-	  }
-
-	  // MonetDB doesn't like leading 0's, since it counts them as part of
-	  // the precision, so let's strip them off. (But be careful not to do
-	  // this to the exact number "0".)  Also strip off trailing
-	  // numbers that are inherent to the double representation.
-	  String xStr = x.toPlainString();
-	  int dot = xStr.indexOf('.');
-	  if (dot >= 0)
-	    xStr = xStr.substring(0, Math.min(xStr.length(), dot + 1 + scale[i]));
-	  while (xStr.startsWith("0") && xStr.length() > 1)
-	    xStr = xStr.substring(1);
-	  setValue(idx, xStr);
+		// MonetDB doesn't like leading 0's, since it counts them as part of
+		// the precision, so let's strip them off. (But be careful not to do
+		// this to the exact number "0".)  Also strip off trailing
+		// numbers that are inherent to the double representation.
+		String xStr = x.toPlainString();
+		int dot = xStr.indexOf('.');
+		if (dot >= 0)
+			xStr = xStr.substring(0, Math.min(xStr.length(), dot + 1 + scale[i]));
+		while (xStr.startsWith("0") && xStr.length() > 1)
+			xStr = xStr.substring(1);
+		setValue(idx, xStr);
 	}
 
 	/**
@@ -2128,7 +2127,7 @@ public class MonetPreparedStatement
 				public void writeLong(long x) throws SQLException {
 					setLong(paramnr, x);
 				}
-				
+
 				@Override
 				public void writeFloat(float x) throws SQLException {
 					setFloat(paramnr, x);
--- a/src/main/java/nl/cwi/monetdb/jdbc/MonetStatement.java
+++ b/src/main/java/nl/cwi/monetdb/jdbc/MonetStatement.java
@@ -22,17 +22,17 @@ import java.util.concurrent.locks.Reentr
 
 /**
  * A Statement suitable for the MonetDB database.
- * 
+ *
  * The object used for executing a static SQL statement and returning
  * the results it produces.<br />
- * 
+ *
  * By default, only one {@link ResultSet} object per Statement object can be
  * open at the same time. Therefore, if the reading of one ResultSet
  * object is interleaved with the reading of another, each must have
  * been generated by different {@link Statement} objects. All execution methods
  * in the Statement interface implicitly close a Statement's current
  * ResultSet object if an open one exists.
- * 
+ *
  * The current state of this Statement is that it only implements the
  * executeQuery() which returns a ResultSet where from results can be
  * read and executeUpdate() which doesn't return the affected rows.
@@ -41,6 +41,7 @@ import java.util.concurrent.locks.Reentr
  * Multi-result queries are supported using the getMoreResults() method.
  *
  * @author Fabian Groffen
+ * @author Martin van Dinther
  * @version 0.7
  */
 public class MonetStatement extends MonetWrapper implements Statement {
@@ -147,7 +148,7 @@ public class MonetStatement extends Mone
 	}
 
 	Lock batchLock = new ReentrantLock();
-	
+
 	/**
 	 * Submits a batch of commands to the database for execution and if
 	 * all commands execute successfully, returns an array of update
@@ -284,7 +285,7 @@ public class MonetStatement extends Mone
 	}
 
 	/**
-     * Cancels this Statement object if both the DBMS and driver support
+	 * Cancels this Statement object if both the DBMS and driver support
 	 * aborting an SQL statement.  This method can be used by one thread to
 	 * cancel a statement that is being executed by another thread.
 	 *
@@ -322,7 +323,8 @@ public class MonetStatement extends Mone
 	@Override
 	public void close() {
 		// close previous ResultSet, if not closed already
-		if (lastResponseList != null) lastResponseList.close();
+		if (lastResponseList != null)
+			lastResponseList.close();
 		closed = true;
 	}
 
@@ -349,7 +351,7 @@ public class MonetStatement extends Mone
 	public boolean execute(String sql) throws SQLException {
 		return internalExecute(sql);
 	}
-	
+
 	/**
 	 * Executes the given SQL statement, which may return multiple
 	 * results, and signals the driver that any auto-generated keys
@@ -385,11 +387,10 @@ public class MonetStatement extends Mone
 		throws SQLException
 	{
 		if (autoGeneratedKeys != Statement.RETURN_GENERATED_KEYS &&
-				autoGeneratedKeys != Statement.NO_GENERATED_KEYS)
+		    autoGeneratedKeys != Statement.NO_GENERATED_KEYS)
 			throw new SQLException("Invalid argument, expected RETURN_GENERATED_KEYS or NO_GENERATED_KEYS", "M1M05");
-		
-		/* MonetDB has no way to disable this, so just do the normal
-		 * thing ;) */
+
+		/* MonetDB has no way to disable this, so just do the normal thing ;) */
 		return internalExecute(sql);
 	}
 
@@ -576,11 +577,10 @@ public class MonetStatement extends Mone
 		throws SQLException
 	{
 		if (autoGeneratedKeys != Statement.RETURN_GENERATED_KEYS &&
-				autoGeneratedKeys != Statement.NO_GENERATED_KEYS)
+		    autoGeneratedKeys != Statement.NO_GENERATED_KEYS)
 			throw new SQLException("Invalid argument, expected RETURN_GENERATED_KEYS or NO_GENERATED_KEYS", "M1M05");
-		
-		/* MonetDB has no way to disable this, so just do the normal
-		 * thing ;) */
+
+		/* MonetDB has no way to disable this, so just do the normal thing ;) */
 		if (execute(sql) != false)
 			throw new SQLException("Query produced a result set", "M1M17");
 
@@ -706,7 +706,7 @@ public class MonetStatement extends Mone
 		types = new String[1];
 
 		columns[0] = "GENERATED_KEY";
-		/* the generated key should be an integer, because (wait for it) other 
+		/* the generated key should be an integer, because (wait for it) other
 		 * frameworks such as spring expect this. */
 		types[0] = "BIGINT";
 
@@ -745,9 +745,7 @@ public class MonetStatement extends Mone
 	 * @throws SQLException if a database access error occurs
 	 */
 	@Override
-	public int getMaxFieldSize()
-		throws SQLException
-	{
+	public int getMaxFieldSize() {
 		return 0;
 	}
 
@@ -814,11 +812,7 @@ public class MonetStatement extends Mone
 		// we default to keep current result, which requires no action
 		header = lastResponseList.getNextResponse();
 
-		if (header instanceof MonetConnection.ResultSetResponse) {
-			return true;
-		} else {
-			return false;
-		}
+		return (header instanceof MonetConnection.ResultSetResponse);
 	}
 
 	/**
@@ -864,7 +858,7 @@ public class MonetStatement extends Mone
 	 * @throws SQLException if a database access error occurs
 	 */
 	@Override
-	public ResultSet getResultSet() throws SQLException{
+	public ResultSet getResultSet() throws SQLException {
 		return (header instanceof MonetConnection.ResultSetResponse)
 			? new MonetResultSet(this,
 					(MonetConnection.ResultSetResponse)header)
@@ -1024,7 +1018,7 @@ public class MonetStatement extends Mone
 	public void setFetchDirection(int direction) throws SQLException {
 		if (direction == ResultSet.FETCH_FORWARD ||
 		    direction == ResultSet.FETCH_REVERSE ||
-			direction == ResultSet.FETCH_UNKNOWN)
+		    direction == ResultSet.FETCH_UNKNOWN)
 		{
 			fetchDirection = direction;
 		} else {
@@ -1169,7 +1163,7 @@ public class MonetStatement extends Mone
 	}
 
 	//== 1.7 methods (JDBC 4.1)
-	
+
 	/**
 	 * Specifies that this Statement will be closed when all its
 	 * dependent result sets are closed.  If execution of the Statement