diff options
author | Bruce Momjian <bruce@momjian.us> | 2001-10-25 06:00:05 +0000 |
---|---|---|
committer | Bruce Momjian <bruce@momjian.us> | 2001-10-25 06:00:05 +0000 |
commit | d2e27b0674e238a4f94f1c190a395a530746d5d3 (patch) | |
tree | d654e117fdc20ecb84da14052fad5124c9f32012 /src/interfaces/jdbc/org/postgresql/jdbc2/Array.java | |
parent | b81844b1738c584d92330a5ccd0fbd8b603d2886 (diff) | |
download | postgresql-d2e27b0674e238a4f94f1c190a395a530746d5d3.tar.gz |
pgjindent jdbc files. First time jdbc files were formatted.
Diffstat (limited to 'src/interfaces/jdbc/org/postgresql/jdbc2/Array.java')
-rw-r--r-- | src/interfaces/jdbc/org/postgresql/jdbc2/Array.java | 446 |
1 files changed, 237 insertions, 209 deletions
diff --git a/src/interfaces/jdbc/org/postgresql/jdbc2/Array.java b/src/interfaces/jdbc/org/postgresql/jdbc2/Array.java index 16015b881b..e741f0f5b5 100644 --- a/src/interfaces/jdbc/org/postgresql/jdbc2/Array.java +++ b/src/interfaces/jdbc/org/postgresql/jdbc2/Array.java @@ -25,69 +25,78 @@ import org.postgresql.util.*; public class Array implements java.sql.Array { - private org.postgresql.Connection conn = null; - private org.postgresql.Field field = null; - private org.postgresql.jdbc2.ResultSet rs = null; - private int idx = 0; - private String rawString = null; + private org.postgresql.Connection conn = null; + private org.postgresql.Field field = null; + private org.postgresql.jdbc2.ResultSet rs = null; + private int idx = 0; + private String rawString = null; - /** - * Create a new Array - * - * @param conn a database connection - * @param idx 1-based index of the query field to load into this Array - * @param field the Field descriptor for the field to load into this Array - * @param rs the ResultSet from which to get the data for this Array - */ - public Array( org.postgresql.Connection conn, int idx, Field field, org.postgresql.jdbc2.ResultSet rs ) - throws SQLException - { + /** + * Create a new Array + * + * @param conn a database connection + * @param idx 1-based index of the query field to load into this Array + * @param field the Field descriptor for the field to load into this Array + * @param rs the ResultSet from which to get the data for this Array + */ + public Array( org.postgresql.Connection conn, int idx, Field field, org.postgresql.jdbc2.ResultSet rs ) + throws SQLException + { this.conn = conn; - this.field = field; + this.field = field; this.rs = rs; this.idx = idx; this.rawString = rs.getFixedString(idx); } - public Object getArray() throws SQLException { + public Object getArray() throws SQLException + { return getArray( 1, 0, null ); } - public Object getArray(long index, int count) throws SQLException { + public Object getArray(long index, int count) throws SQLException + { return getArray( index, count, null ); } - public Object getArray(Map map) throws SQLException { + public Object getArray(Map map) throws SQLException + { return getArray( 1, 0, map ); } - public Object getArray(long index, int count, Map map) throws SQLException { - if( map != null ) // For now maps aren't supported. - throw org.postgresql.Driver.notImplemented(); + public Object getArray(long index, int count, Map map) throws SQLException + { + if ( map != null ) // For now maps aren't supported. + throw org.postgresql.Driver.notImplemented(); - if (index < 1) - throw new PSQLException("postgresql.arr.range"); + if (index < 1) + throw new PSQLException("postgresql.arr.range"); Object retVal = null; ArrayList array = new ArrayList(); - if( rawString != null ) { + if ( rawString != null ) + { char[] chars = rawString.toCharArray(); StringBuffer sbuf = new StringBuffer(); boolean foundOpen = false; boolean insideString = false; - for( int i=0; i<chars.length; i++ ) { - if( chars[i] == '{' ) { - if( foundOpen ) // Only supports 1-D arrays for now + for ( int i = 0; i < chars.length; i++ ) + { + if ( chars[i] == '{' ) + { + if ( foundOpen ) // Only supports 1-D arrays for now throw org.postgresql.Driver.notImplemented(); foundOpen = true; continue; } - if( chars[i] == '"' ) { + if ( chars[i] == '"' ) + { insideString = !insideString; continue; } - if( (!insideString && chars[i] == ',') || chars[i] == '}' || i == chars.length-1) { - if( chars[i] != '"' && chars[i] != '}' && chars[i] != ',' ) + if ( (!insideString && chars[i] == ',') || chars[i] == '}' || i == chars.length - 1) + { + if ( chars[i] != '"' && chars[i] != '}' && chars[i] != ',' ) sbuf.append(chars[i]); array.add( sbuf.toString() ); sbuf = new StringBuffer(); @@ -97,221 +106,240 @@ public class Array implements java.sql.Array } } String[] arrayContents = (String[]) array.toArray( new String[array.size()] ); - if( count == 0 ) + if ( count == 0 ) count = arrayContents.length; index--; - if( index+count > arrayContents.length ) - throw new PSQLException("postgresql.arr.range"); + if ( index + count > arrayContents.length ) + throw new PSQLException("postgresql.arr.range"); int i = 0; switch ( getBaseType() ) { - case Types.BIT: - retVal = new boolean[ count ]; - for( ; count > 0; count-- ) - ((boolean[])retVal)[i++] = ResultSet.toBoolean( arrayContents[(int)index++] ); - break; - case Types.SMALLINT: - case Types.INTEGER: - retVal = new int[ count ]; - for( ; count > 0; count-- ) - ((int[])retVal)[i++] = ResultSet.toInt( arrayContents[(int)index++] ); - break; - case Types.BIGINT: - retVal = new long[ count ]; - for( ; count > 0; count-- ) - ((long[])retVal)[i++] = ResultSet.toLong( arrayContents[(int)index++] ); - break; - case Types.NUMERIC: - retVal = new BigDecimal[ count ]; - for( ; count > 0; count-- ) - ((BigDecimal[])retVal)[i] = ResultSet.toBigDecimal( arrayContents[(int)index++], 0 ); - break; - case Types.REAL: - retVal = new float[ count ]; - for( ; count > 0; count-- ) - ((float[])retVal)[i++] = ResultSet.toFloat( arrayContents[(int)index++] ); - break; - case Types.DOUBLE: - retVal = new double[ count ]; - for( ; count > 0; count-- ) - ((double[])retVal)[i++] = ResultSet.toDouble( arrayContents[(int)index++] ); - break; - case Types.CHAR: - case Types.VARCHAR: - retVal = new String[ count ]; - for( ; count > 0; count-- ) - ((String[])retVal)[i++] = arrayContents[(int)index++]; - break; - case Types.DATE: - retVal = new java.sql.Date[ count ]; - for( ; count > 0; count-- ) - ((java.sql.Date[])retVal)[i++] = ResultSet.toDate( arrayContents[(int)index++] ); - break; - case Types.TIME: - retVal = new java.sql.Time[ count ]; - for( ; count > 0; count-- ) - ((java.sql.Time[])retVal)[i++] = ResultSet.toTime( arrayContents[(int)index++] ); - break; - case Types.TIMESTAMP: - retVal = new Timestamp[ count ]; - StringBuffer sbuf = null; - for( ; count > 0; count-- ) - ((java.sql.Timestamp[])retVal)[i++] = ResultSet.toTimestamp( arrayContents[(int)index], rs ); - break; + case Types.BIT: + retVal = new boolean[ count ]; + for ( ; count > 0; count-- ) + ((boolean[])retVal)[i++] = ResultSet.toBoolean( arrayContents[(int)index++] ); + break; + case Types.SMALLINT: + case Types.INTEGER: + retVal = new int[ count ]; + for ( ; count > 0; count-- ) + ((int[])retVal)[i++] = ResultSet.toInt( arrayContents[(int)index++] ); + break; + case Types.BIGINT: + retVal = new long[ count ]; + for ( ; count > 0; count-- ) + ((long[])retVal)[i++] = ResultSet.toLong( arrayContents[(int)index++] ); + break; + case Types.NUMERIC: + retVal = new BigDecimal[ count ]; + for ( ; count > 0; count-- ) + ((BigDecimal[])retVal)[i] = ResultSet.toBigDecimal( arrayContents[(int)index++], 0 ); + break; + case Types.REAL: + retVal = new float[ count ]; + for ( ; count > 0; count-- ) + ((float[])retVal)[i++] = ResultSet.toFloat( arrayContents[(int)index++] ); + break; + case Types.DOUBLE: + retVal = new double[ count ]; + for ( ; count > 0; count-- ) + ((double[])retVal)[i++] = ResultSet.toDouble( arrayContents[(int)index++] ); + break; + case Types.CHAR: + case Types.VARCHAR: + retVal = new String[ count ]; + for ( ; count > 0; count-- ) + ((String[])retVal)[i++] = arrayContents[(int)index++]; + break; + case Types.DATE: + retVal = new java.sql.Date[ count ]; + for ( ; count > 0; count-- ) + ((java.sql.Date[])retVal)[i++] = ResultSet.toDate( arrayContents[(int)index++] ); + break; + case Types.TIME: + retVal = new java.sql.Time[ count ]; + for ( ; count > 0; count-- ) + ((java.sql.Time[])retVal)[i++] = ResultSet.toTime( arrayContents[(int)index++] ); + break; + case Types.TIMESTAMP: + retVal = new Timestamp[ count ]; + StringBuffer sbuf = null; + for ( ; count > 0; count-- ) + ((java.sql.Timestamp[])retVal)[i++] = ResultSet.toTimestamp( arrayContents[(int)index], rs ); + break; // Other datatypes not currently supported. If you are really using other types ask // yourself if an array of non-trivial data types is really good database design. - default: - throw org.postgresql.Driver.notImplemented(); + default: + throw org.postgresql.Driver.notImplemented(); } return retVal; } - public int getBaseType() throws SQLException { - return conn.getSQLType(getBaseTypeName()); + public int getBaseType() throws SQLException + { + return conn.getSQLType(getBaseTypeName()); } - public String getBaseTypeName() throws SQLException { - String fType = field.getPGType(); - if( fType.charAt(0) == '_' ) + public String getBaseTypeName() throws SQLException + { + String fType = field.getPGType(); + if ( fType.charAt(0) == '_' ) fType = fType.substring(1); return fType; } - public java.sql.ResultSet getResultSet() throws SQLException { + public java.sql.ResultSet getResultSet() throws SQLException + { return getResultSet( 1, 0, null ); } - public java.sql.ResultSet getResultSet(long index, int count) throws SQLException { + public java.sql.ResultSet getResultSet(long index, int count) throws SQLException + { return getResultSet( index, count, null ); } - public java.sql.ResultSet getResultSet(Map map) throws SQLException { + public java.sql.ResultSet getResultSet(Map map) throws SQLException + { return getResultSet( 1, 0, map ); } - public java.sql.ResultSet getResultSet(long index, int count, java.util.Map map) throws SQLException { + public java.sql.ResultSet getResultSet(long index, int count, java.util.Map map) throws SQLException + { Object array = getArray( index, count, map ); Vector rows = new Vector(); Field[] fields = new Field[2]; - fields[0] = new Field(conn, "INDEX", conn.getOID("int2"), 2); + fields[0] = new Field(conn, "INDEX", conn.getOID("int2"), 2); switch ( getBaseType() ) { - case Types.BIT: - boolean[] booleanArray = (boolean[]) array; - fields[1] = new Field(conn, "VALUE", conn.getOID("bool"), 1); - for( int i=0; i<booleanArray.length; i++ ) { - byte[][] tuple = new byte[2][0]; - tuple[0] = conn.getEncoding().encode( Integer.toString((int)index+i) ); // Index - tuple[1] = conn.getEncoding().encode( (booleanArray[i]?"YES":"NO") ); // Value - rows.addElement(tuple); - } - case Types.SMALLINT: - fields[1] = new Field(conn, "VALUE", conn.getOID("int2"), 2); - case Types.INTEGER: - int[] intArray = (int[]) array; - if( fields[1] == null ) - fields[1] = new Field(conn, "VALUE", conn.getOID("int4"), 4); - for( int i=0; i<intArray.length; i++ ) { - byte[][] tuple = new byte[2][0]; - tuple[0] = conn.getEncoding().encode( Integer.toString((int)index+i) ); // Index - tuple[1] = conn.getEncoding().encode( Integer.toString(intArray[i]) ); // Value - rows.addElement(tuple); - } - break; - case Types.BIGINT: - long[] longArray = (long[]) array; - fields[1] = new Field(conn, "VALUE", conn.getOID("int8"), 8); - for( int i=0; i<longArray.length; i++ ) { - byte[][] tuple = new byte[2][0]; - tuple[0] = conn.getEncoding().encode( Integer.toString((int)index+i) ); // Index - tuple[1] = conn.getEncoding().encode( Long.toString(longArray[i]) ); // Value - rows.addElement(tuple); - } - break; - case Types.NUMERIC: - BigDecimal[] bdArray = (BigDecimal[]) array; - fields[1] = new Field(conn, "VALUE", conn.getOID("numeric"), -1); - for( int i=0; i<bdArray.length; i++ ) { - byte[][] tuple = new byte[2][0]; - tuple[0] = conn.getEncoding().encode( Integer.toString((int)index+i) ); // Index - tuple[1] = conn.getEncoding().encode( bdArray[i].toString() ); // Value - rows.addElement(tuple); - } - break; - case Types.REAL: - float[] floatArray = (float[]) array; - fields[1] = new Field(conn, "VALUE", conn.getOID("float4"), 4); - for( int i=0; i<floatArray.length; i++ ) { - byte[][] tuple = new byte[2][0]; - tuple[0] = conn.getEncoding().encode( Integer.toString((int)index+i) ); // Index - tuple[1] = conn.getEncoding().encode( Float.toString(floatArray[i]) ); // Value - rows.addElement(tuple); - } - break; - case Types.DOUBLE: - double[] doubleArray = (double[]) array; - fields[1] = new Field(conn, "VALUE", conn.getOID("float8"), 8); - for( int i=0; i<doubleArray.length; i++ ) { - byte[][] tuple = new byte[2][0]; - tuple[0] = conn.getEncoding().encode( Integer.toString((int)index+i) ); // Index - tuple[1] = conn.getEncoding().encode( Double.toString(doubleArray[i]) ); // Value - rows.addElement(tuple); - } - break; - case Types.CHAR: - fields[1] = new Field(conn, "VALUE", conn.getOID("char"), 1); - case Types.VARCHAR: - String[] strArray = (String[]) array; - if( fields[1] == null ) - fields[1] = new Field(conn, "VALUE", conn.getOID("varchar"), -1); - for( int i=0; i<strArray.length; i++ ) { - byte[][] tuple = new byte[2][0]; - tuple[0] = conn.getEncoding().encode( Integer.toString((int)index+i) ); // Index - tuple[1] = conn.getEncoding().encode( strArray[i] ); // Value - rows.addElement(tuple); - } - break; - case Types.DATE: - java.sql.Date[] dateArray = (java.sql.Date[]) array; - fields[1] = new Field(conn, "VALUE", conn.getOID("date"), 4); - for( int i=0; i<dateArray.length; i++ ) { - byte[][] tuple = new byte[2][0]; - tuple[0] = conn.getEncoding().encode( Integer.toString((int)index+i) ); // Index - tuple[1] = conn.getEncoding().encode( dateArray[i].toString() ); // Value - rows.addElement(tuple); - } - break; - case Types.TIME: - java.sql.Time[] timeArray = (java.sql.Time[]) array; - fields[1] = new Field(conn, "VALUE", conn.getOID("time"), 8); - for( int i=0; i<timeArray.length; i++ ) { - byte[][] tuple = new byte[2][0]; - tuple[0] = conn.getEncoding().encode( Integer.toString((int)index+i) ); // Index - tuple[1] = conn.getEncoding().encode( timeArray[i].toString() ); // Value - rows.addElement(tuple); - } - break; - case Types.TIMESTAMP: - java.sql.Timestamp[] timestampArray = (java.sql.Timestamp[]) array; - fields[1] = new Field(conn, "VALUE", conn.getOID("timestamp"), 8); - for( int i=0; i<timestampArray.length; i++ ) { - byte[][] tuple = new byte[2][0]; - tuple[0] = conn.getEncoding().encode( Integer.toString((int)index+i) ); // Index - tuple[1] = conn.getEncoding().encode( timestampArray[i].toString() ); // Value - rows.addElement(tuple); - } - break; + case Types.BIT: + boolean[] booleanArray = (boolean[]) array; + fields[1] = new Field(conn, "VALUE", conn.getOID("bool"), 1); + for ( int i = 0; i < booleanArray.length; i++ ) + { + byte[][] tuple = new byte[2][0]; + tuple[0] = conn.getEncoding().encode( Integer.toString((int)index + i) ); // Index + tuple[1] = conn.getEncoding().encode( (booleanArray[i] ? "YES" : "NO") ); // Value + rows.addElement(tuple); + } + case Types.SMALLINT: + fields[1] = new Field(conn, "VALUE", conn.getOID("int2"), 2); + case Types.INTEGER: + int[] intArray = (int[]) array; + if ( fields[1] == null ) + fields[1] = new Field(conn, "VALUE", conn.getOID("int4"), 4); + for ( int i = 0; i < intArray.length; i++ ) + { + byte[][] tuple = new byte[2][0]; + tuple[0] = conn.getEncoding().encode( Integer.toString((int)index + i) ); // Index + tuple[1] = conn.getEncoding().encode( Integer.toString(intArray[i]) ); // Value + rows.addElement(tuple); + } + break; + case Types.BIGINT: + long[] longArray = (long[]) array; + fields[1] = new Field(conn, "VALUE", conn.getOID("int8"), 8); + for ( int i = 0; i < longArray.length; i++ ) + { + byte[][] tuple = new byte[2][0]; + tuple[0] = conn.getEncoding().encode( Integer.toString((int)index + i) ); // Index + tuple[1] = conn.getEncoding().encode( Long.toString(longArray[i]) ); // Value + rows.addElement(tuple); + } + break; + case Types.NUMERIC: + BigDecimal[] bdArray = (BigDecimal[]) array; + fields[1] = new Field(conn, "VALUE", conn.getOID("numeric"), -1); + for ( int i = 0; i < bdArray.length; i++ ) + { + byte[][] tuple = new byte[2][0]; + tuple[0] = conn.getEncoding().encode( Integer.toString((int)index + i) ); // Index + tuple[1] = conn.getEncoding().encode( bdArray[i].toString() ); // Value + rows.addElement(tuple); + } + break; + case Types.REAL: + float[] floatArray = (float[]) array; + fields[1] = new Field(conn, "VALUE", conn.getOID("float4"), 4); + for ( int i = 0; i < floatArray.length; i++ ) + { + byte[][] tuple = new byte[2][0]; + tuple[0] = conn.getEncoding().encode( Integer.toString((int)index + i) ); // Index + tuple[1] = conn.getEncoding().encode( Float.toString(floatArray[i]) ); // Value + rows.addElement(tuple); + } + break; + case Types.DOUBLE: + double[] doubleArray = (double[]) array; + fields[1] = new Field(conn, "VALUE", conn.getOID("float8"), 8); + for ( int i = 0; i < doubleArray.length; i++ ) + { + byte[][] tuple = new byte[2][0]; + tuple[0] = conn.getEncoding().encode( Integer.toString((int)index + i) ); // Index + tuple[1] = conn.getEncoding().encode( Double.toString(doubleArray[i]) ); // Value + rows.addElement(tuple); + } + break; + case Types.CHAR: + fields[1] = new Field(conn, "VALUE", conn.getOID("char"), 1); + case Types.VARCHAR: + String[] strArray = (String[]) array; + if ( fields[1] == null ) + fields[1] = new Field(conn, "VALUE", conn.getOID("varchar"), -1); + for ( int i = 0; i < strArray.length; i++ ) + { + byte[][] tuple = new byte[2][0]; + tuple[0] = conn.getEncoding().encode( Integer.toString((int)index + i) ); // Index + tuple[1] = conn.getEncoding().encode( strArray[i] ); // Value + rows.addElement(tuple); + } + break; + case Types.DATE: + java.sql.Date[] dateArray = (java.sql.Date[]) array; + fields[1] = new Field(conn, "VALUE", conn.getOID("date"), 4); + for ( int i = 0; i < dateArray.length; i++ ) + { + byte[][] tuple = new byte[2][0]; + tuple[0] = conn.getEncoding().encode( Integer.toString((int)index + i) ); // Index + tuple[1] = conn.getEncoding().encode( dateArray[i].toString() ); // Value + rows.addElement(tuple); + } + break; + case Types.TIME: + java.sql.Time[] timeArray = (java.sql.Time[]) array; + fields[1] = new Field(conn, "VALUE", conn.getOID("time"), 8); + for ( int i = 0; i < timeArray.length; i++ ) + { + byte[][] tuple = new byte[2][0]; + tuple[0] = conn.getEncoding().encode( Integer.toString((int)index + i) ); // Index + tuple[1] = conn.getEncoding().encode( timeArray[i].toString() ); // Value + rows.addElement(tuple); + } + break; + case Types.TIMESTAMP: + java.sql.Timestamp[] timestampArray = (java.sql.Timestamp[]) array; + fields[1] = new Field(conn, "VALUE", conn.getOID("timestamp"), 8); + for ( int i = 0; i < timestampArray.length; i++ ) + { + byte[][] tuple = new byte[2][0]; + tuple[0] = conn.getEncoding().encode( Integer.toString((int)index + i) ); // Index + tuple[1] = conn.getEncoding().encode( timestampArray[i].toString() ); // Value + rows.addElement(tuple); + } + break; // Other datatypes not currently supported. If you are really using other types ask // yourself if an array of non-trivial data types is really good database design. - default: - throw org.postgresql.Driver.notImplemented(); + default: + throw org.postgresql.Driver.notImplemented(); } - return new ResultSet((org.postgresql.jdbc2.Connection)conn, fields, rows, "OK", 1 ); + return new ResultSet((org.postgresql.jdbc2.Connection)conn, fields, rows, "OK", 1 ); } - public String toString() { return rawString; } + public String toString() + { + return rawString; + } } |