Revision 50749
Added by Claudio Atzori about 6 years ago
DatabaseUtils.java | ||
---|---|---|
23 | 23 |
import eu.dnetlib.enabling.database.rmi.DatabaseException; |
24 | 24 |
import eu.dnetlib.miscutils.datetime.DateUtils; |
25 | 25 |
import eu.dnetlib.miscutils.functional.string.Sanitizer; |
26 |
import org.apache.commons.dbcp2.BasicDataSource; |
|
27 | 26 |
import org.apache.commons.lang.BooleanUtils; |
28 | 27 |
import org.apache.commons.logging.Log; |
29 | 28 |
import org.apache.commons.logging.LogFactory; |
... | ... | |
160 | 159 |
final ResultSet rs = stm.executeQuery()) { |
161 | 160 |
con.setAutoCommit(false); |
162 | 161 |
rs.setFetchSize(getFetchSize()); |
162 |
boolean timeout = false; |
|
163 | 163 |
while (rs.next()) { |
164 | 164 |
ResultSetMetaData md = rs.getMetaData(); |
165 | 165 |
Map<String, Object> row = new HashMap<>(); |
... | ... | |
167 | 167 |
row.put(md.getColumnName(i), rs.getObject(i)); |
168 | 168 |
} |
169 | 169 |
if (!enqueue(queue, row)) { |
170 |
timeout = true; |
|
170 | 171 |
break; |
171 | 172 |
} |
172 | 173 |
} |
174 |
|
|
175 |
if (timeout) { |
|
176 |
throw new RuntimeException(String.format("queue full, consumer did not consume for %s seconds", BLOCKING_QUEUE_TIMEOUT)); |
|
177 |
} |
|
173 | 178 |
// An empty Map indicates the end of the resultset |
174 | 179 |
enqueue(queue, new HashMap<>()); |
175 | 180 |
} catch (SQLException e) { |
... | ... | |
182 | 187 |
return (T) queue; |
183 | 188 |
} |
184 | 189 |
|
185 |
try(final BasicDataSource ds = (BasicDataSource) dataSourceFactory.createDataSource(dbName)) { |
|
186 |
final JdbcTemplate jdbcTemplate = jdbcTemplateFactory.createJdbcTemplate(ds); |
|
187 |
if (clazz == Integer.class) return (T) jdbcTemplate.queryForObject(query, Integer.class); |
|
188 |
else if (clazz == List.class) return (T) jdbcTemplate.queryForList(query); |
|
189 |
else if (clazz == Map.class) return (T) jdbcTemplate.queryForMap(query); |
|
190 |
else if (clazz == SqlRowSet.class) return (T) jdbcTemplate.queryForRowSet(query); |
|
191 |
else { |
|
192 |
jdbcTemplate.update(query); |
|
193 |
return null; |
|
194 |
} |
|
195 |
} catch(SQLException e) { |
|
196 |
throw new DatabaseException(e); |
|
190 |
final JdbcTemplate jdbcTemplate = jdbcTemplateFactory.createJdbcTemplate(dbName); |
|
191 |
if (clazz == Integer.class) return (T) jdbcTemplate.queryForObject(query, Integer.class); |
|
192 |
else if (clazz == List.class) return (T) jdbcTemplate.queryForList(query); |
|
193 |
else if (clazz == Map.class) return (T) jdbcTemplate.queryForMap(query); |
|
194 |
else if (clazz == SqlRowSet.class) return (T) jdbcTemplate.queryForRowSet(query); |
|
195 |
else { |
|
196 |
jdbcTemplate.update(query); |
|
197 |
return null; |
|
197 | 198 |
} |
198 | 199 |
} |
199 | 200 |
|
Also available in: Unified diff
experimenting with BasicDatasource(s) from commons-dbcp2