Revision 5700 trunk/libraries/libGDBMS/src/main/java/com/hardcode/gdbms/engine/data/driver/AbstractJDBCDriver.java

View differences:

AbstractJDBCDriver.java
42 42

  
43 43
import java.sql.Connection;
44 44
import java.sql.Date;
45
import java.sql.DriverManager;
46 45
import java.sql.ResultSet;
47 46
import java.sql.SQLException;
48 47
import java.sql.Statement;
......
60 59
import com.iver.cit.gvsig.fmap.edition.IWriter;
61 60
import com.iver.cit.gvsig.fmap.edition.writers.JdbcWriter;
62 61

  
63
public abstract class AbstractJDBCDriver implements AlphanumericDBDriver, IWriteable {
62
public abstract class AbstractJDBCDriver implements AlphanumericDBDriver,
63
		IWriteable {
64 64

  
65
    protected JDBCSupport jdbcSupport;
66
    private JdbcWriter jdbcWriter = new JdbcWriter();
67
    private static DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
68
    private static DateFormat timeFormat = new SimpleDateFormat(
69
            "yyyy-MM-dd HH:mm:ss");
65
	protected JDBCSupport jdbcSupport;
70 66

  
71
    
72
    private ValueWriter vWriter = ValueWriter.internalValueWriter;
67
	protected JdbcWriter jdbcWriter = new JdbcWriter();
73 68

  
69
	private static DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
74 70

  
75
    /**
76
     * @see com.hardcode.gdbms.engine.data.driver.DBDriver#executeSQL(java.sql.Connection,
77
     *      java.lang.String)
78
     */
79
    public void open(Connection con, String sql) throws SQLException {
80
        jdbcSupport = JDBCSupport.newJDBCSupport(con, sql);
81
        jdbcWriter.setCreateTable(false);
82
        jdbcWriter.setWriteAll(false);
83
        Statement st = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
84
                ResultSet.CONCUR_UPDATABLE);
85
        ResultSet res = st.executeQuery(sql);
71
	private static DateFormat timeFormat = new SimpleDateFormat(
72
			"yyyy-MM-dd HH:mm:ss");
86 73

  
87
        jdbcWriter.initialize(con, res);
88
    }
74
	private ValueWriter vWriter = ValueWriter.internalValueWriter;
89 75

  
90
    /**
91
     * DOCUMENT ME!
92
     *
93
     * @return DOCUMENT ME!
94
     *
95
     * @throws DriverException DOCUMENT ME!
96
     */
97
    public int getFieldCount() throws DriverException {
98
        return jdbcSupport.getFieldCount();
99
    }
76
	/**
77
	 * @see com.hardcode.gdbms.engine.data.driver.DBDriver#executeSQL(java.sql.Connection,
78
	 *      java.lang.String)
79
	 */
80
	public void open(Connection con, String sql) throws SQLException {
81
		jdbcSupport = JDBCSupport.newJDBCSupport(con, sql);
82
		jdbcWriter.setCreateTable(false);
83
		jdbcWriter.setWriteAll(false);
84
		Statement st = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
85
				ResultSet.CONCUR_UPDATABLE);
86
		ResultSet res = st.executeQuery(sql);
87
		if (res.getConcurrency() != ResultSet.CONCUR_UPDATABLE) {
88
			System.err.println("Error: No se puede editar la tabla " + sql);
89
			jdbcWriter = null;
90
		} else
91
			jdbcWriter.initialize(con, res);
92
	}
100 93

  
101
    /**
102
     * DOCUMENT ME!
103
     *
104
     * @param fieldId DOCUMENT ME!
105
     *
106
     * @return DOCUMENT ME!
107
     *
108
     * @throws DriverException DOCUMENT ME!
109
     */
110
    public String getFieldName(int fieldId) throws DriverException {
111
        return jdbcSupport.getFieldName(fieldId);
112
    }
94
	/**
95
	 * DOCUMENT ME!
96
	 * 
97
	 * @return DOCUMENT ME!
98
	 * 
99
	 * @throws DriverException
100
	 *             DOCUMENT ME!
101
	 */
102
	public int getFieldCount() throws DriverException {
103
		return jdbcSupport.getFieldCount();
104
	}
113 105

  
114
    /**
115
     * DOCUMENT ME!
116
     *
117
     * @param i DOCUMENT ME!
118
     *
119
     * @return DOCUMENT ME!
120
     *
121
     * @throws DriverException DOCUMENT ME!
122
     */
123
    public int getFieldType(int i) throws DriverException {
124
        return jdbcSupport.getFieldType(i);
125
    }
106
	/**
107
	 * DOCUMENT ME!
108
	 * 
109
	 * @param fieldId
110
	 *            DOCUMENT ME!
111
	 * 
112
	 * @return DOCUMENT ME!
113
	 * 
114
	 * @throws DriverException
115
	 *             DOCUMENT ME!
116
	 */
117
	public String getFieldName(int fieldId) throws DriverException {
118
		return jdbcSupport.getFieldName(fieldId);
119
	}
126 120

  
127
    /**
128
     * DOCUMENT ME!
129
     *
130
     * @param rowIndex DOCUMENT ME!
131
     * @param fieldId DOCUMENT ME!
132
     *
133
     * @return DOCUMENT ME!
134
     *
135
     * @throws DriverException DOCUMENT ME!
136
     */
137
    public Value getFieldValue(long rowIndex, int fieldId)
138
        throws DriverException {
139
        return jdbcSupport.getFieldValue(rowIndex, fieldId);
140
    }
121
	/**
122
	 * DOCUMENT ME!
123
	 * 
124
	 * @param i
125
	 *            DOCUMENT ME!
126
	 * 
127
	 * @return DOCUMENT ME!
128
	 * 
129
	 * @throws DriverException
130
	 *             DOCUMENT ME!
131
	 */
132
	public int getFieldType(int i) throws DriverException {
133
		return jdbcSupport.getFieldType(i);
134
	}
141 135

  
142
    /**
143
     * DOCUMENT ME!
144
     *
145
     * @return DOCUMENT ME!
146
     *
147
     * @throws DriverException DOCUMENT ME!
148
     */
149
    public long getRowCount() throws DriverException {
150
        return jdbcSupport.getRowCount();
151
    }
136
	/**
137
	 * DOCUMENT ME!
138
	 * 
139
	 * @param rowIndex
140
	 *            DOCUMENT ME!
141
	 * @param fieldId
142
	 *            DOCUMENT ME!
143
	 * 
144
	 * @return DOCUMENT ME!
145
	 * 
146
	 * @throws DriverException
147
	 *             DOCUMENT ME!
148
	 */
149
	public Value getFieldValue(long rowIndex, int fieldId)
150
			throws DriverException {
151
		return jdbcSupport.getFieldValue(rowIndex, fieldId);
152
	}
152 153

  
153
    /**
154
     * @see com.hardcode.gdbms.engine.data.driver.DBDriver#close()
155
     */
156
    public void close() throws SQLException {
157
        jdbcSupport.close();
158
        jdbcWriter.close();
159
    }
154
	/**
155
	 * DOCUMENT ME!
156
	 * 
157
	 * @return DOCUMENT ME!
158
	 * 
159
	 * @throws DriverException
160
	 *             DOCUMENT ME!
161
	 */
162
	public long getRowCount() throws DriverException {
163
		return jdbcSupport.getRowCount();
164
	}
160 165

  
161
    /**
162
     * @see com.hardcode.gdbms.engine.data.driver.DriverCommons#getDriverProperties()
163
     */
164
    public HashMap getDriverProperties() {
165
        return null;
166
    }
166
	/**
167
	 * @see com.hardcode.gdbms.engine.data.driver.DBDriver#close()
168
	 */
169
	public void close() throws SQLException {
170
		jdbcSupport.close();
171
		jdbcWriter.close();
172
	}
167 173

  
168
    /**
169
     * @see com.hardcode.gdbms.engine.data.driver.DriverCommons#setDataSourceFactory(com.hardcode.gdbms.engine.data.DataSourceFactory)
170
     */
171
    public void setDataSourceFactory(DataSourceFactory dsf) {
172
    }
174
	/**
175
	 * @see com.hardcode.gdbms.engine.data.driver.DriverCommons#getDriverProperties()
176
	 */
177
	public HashMap getDriverProperties() {
178
		return null;
179
	}
173 180

  
174
    /**
175
     * @see com.hardcode.gdbms.engine.data.driver.DBDriver#execute(java.sql.Connection,
176
     *      java.lang.String, com.hardcode.gdbms.engine.data.HasProperties)
177
     */
178
    public void execute(Connection con, String sql) throws SQLException {
179
        JDBCSupport.execute(con, sql);
180
    }
181
	/**
182
	 * @see com.hardcode.gdbms.engine.data.driver.DriverCommons#setDataSourceFactory(com.hardcode.gdbms.engine.data.DataSourceFactory)
183
	 */
184
	public void setDataSourceFactory(DataSourceFactory dsf) {
185
	}
181 186

  
182
    /**
183
     * @see com.hardcode.gdbms.engine.data.driver.DBDriver#getInternalTableName(java.lang.String)
184
     */
185
    public String getInternalTableName(String tableName) {
186
        return tableName;
187
    }
187
	/**
188
	 * @see com.hardcode.gdbms.engine.data.driver.DBDriver#execute(java.sql.Connection,
189
	 *      java.lang.String, com.hardcode.gdbms.engine.data.HasProperties)
190
	 */
191
	public void execute(Connection con, String sql) throws SQLException {
192
		JDBCSupport.execute(con, sql);
193
	}
188 194

  
189
    /**
190
     * @see com.hardcode.gdbms.engine.data.driver.DBDriver#getStatementString(long)
191
     */
192
    public String getStatementString(long i) {
193
        return vWriter.getStatementString(i);
194
    }
195
	/**
196
	 * @see com.hardcode.gdbms.engine.data.driver.DBDriver#getInternalTableName(java.lang.String)
197
	 */
198
	public String getInternalTableName(String tableName) {
199
		return tableName;
200
	}
195 201

  
196
    /**
197
     * @see com.hardcode.gdbms.engine.data.driver.DBDriver#getStatementString(int,
198
     *      int)
199
     */
200
    public String getStatementString(int i, int sqlType) {
201
        return vWriter.getStatementString(i, sqlType);
202
    }
202
	/**
203
	 * @see com.hardcode.gdbms.engine.data.driver.DBDriver#getStatementString(long)
204
	 */
205
	public String getStatementString(long i) {
206
		return vWriter.getStatementString(i);
207
	}
203 208

  
204
    /**
205
     * @see com.hardcode.gdbms.engine.data.driver.DBDriver#getStatementString(double,
206
     *      int)
207
     */
208
    public String getStatementString(double d, int sqlType) {
209
        return vWriter.getStatementString(d, sqlType);
210
    }
209
	/**
210
	 * @see com.hardcode.gdbms.engine.data.driver.DBDriver#getStatementString(int,
211
	 *      int)
212
	 */
213
	public String getStatementString(int i, int sqlType) {
214
		return vWriter.getStatementString(i, sqlType);
215
	}
211 216

  
212
    /**
213
     * @see com.hardcode.gdbms.engine.data.driver.DBDriver#getStatementString(java.lang.String,
214
     *      int)
215
     */
216
    public String getStatementString(String str, int sqlType) {
217
        return vWriter.getStatementString(str, sqlType);
218
    }
217
	/**
218
	 * @see com.hardcode.gdbms.engine.data.driver.DBDriver#getStatementString(double,
219
	 *      int)
220
	 */
221
	public String getStatementString(double d, int sqlType) {
222
		return vWriter.getStatementString(d, sqlType);
223
	}
219 224

  
220
    /**
221
     * @see com.hardcode.gdbms.engine.data.driver.DBDriver#getStatementString(java.sql.Date)
222
     */
223
    public String getStatementString(Date d) {
224
        return dateFormat.format(d);
225
    }
225
	/**
226
	 * @see com.hardcode.gdbms.engine.data.driver.DBDriver#getStatementString(java.lang.String,
227
	 *      int)
228
	 */
229
	public String getStatementString(String str, int sqlType) {
230
		return vWriter.getStatementString(str, sqlType);
231
	}
226 232

  
227
    /**
228
     * @see com.hardcode.gdbms.engine.data.driver.DBDriver#getStatementString(java.sql.Time)
229
     */
230
    public String getStatementString(Time t) {
231
        return timeFormat.format(t);
232
    }
233
	/**
234
	 * @see com.hardcode.gdbms.engine.data.driver.DBDriver#getStatementString(java.sql.Date)
235
	 */
236
	public String getStatementString(Date d) {
237
		return dateFormat.format(d);
238
	}
233 239

  
234
    /**
235
     * @see com.hardcode.gdbms.engine.data.driver.DBDriver#getStatementString(java.sql.Timestamp)
236
     */
237
    public String getStatementString(Timestamp ts) {
238
        return timeFormat.format(ts);
239
    }
240
	/**
241
	 * @see com.hardcode.gdbms.engine.data.driver.DBDriver#getStatementString(java.sql.Time)
242
	 */
243
	public String getStatementString(Time t) {
244
		return timeFormat.format(t);
245
	}
240 246

  
241
    /**
242
     * @see com.hardcode.gdbms.engine.data.driver.DBDriver#getStatementString(byte[])
243
     */
244
    public String getStatementString(byte[] binary) {
245
        return "x" + vWriter.getStatementString(binary);
246
    }
247
	/**
248
	 * @see com.hardcode.gdbms.engine.data.driver.DBDriver#getStatementString(java.sql.Timestamp)
249
	 */
250
	public String getStatementString(Timestamp ts) {
251
		return timeFormat.format(ts);
252
	}
247 253

  
248
    /**
249
     * @see com.hardcode.gdbms.engine.data.driver.DBDriver#getStatementString(boolean)
250
     */
251
    public String getStatementString(boolean b) {
252
        return vWriter.getStatementString(b);
253
    }
254
	/**
255
	 * @see com.hardcode.gdbms.engine.data.driver.DBDriver#getStatementString(byte[])
256
	 */
257
	public String getStatementString(byte[] binary) {
258
		return "x" + vWriter.getStatementString(binary);
259
	}
254 260

  
255
    /**
256
     * @see com.hardcode.gdbms.engine.values.ValueWriter#getNullStatementString()
257
     */
258
    public String getNullStatementString() {
259
        return "null";
260
    }
261
	/**
262
	 * @see com.hardcode.gdbms.engine.data.driver.DBDriver#getStatementString(boolean)
263
	 */
264
	public String getStatementString(boolean b) {
265
		return vWriter.getStatementString(b);
266
	}
267

  
268
	/**
269
	 * @see com.hardcode.gdbms.engine.values.ValueWriter#getNullStatementString()
270
	 */
271
	public String getNullStatementString() {
272
		return "null";
273
	}
274

  
261 275
	public int getFieldWidth(int i) throws DriverException {
262 276
		return jdbcSupport.getFieldWidth(i);
263 277
	}
......
266 280
		return jdbcWriter;
267 281
	}
268 282
}
269

  
270

  

Also available in: Unified diff