PageRenderTime 76ms CodeModel.GetById 30ms RepoModel.GetById 0ms app.codeStats 0ms

/trunk/fastcodingtools/src/com/fastcodingtools/util/DBUtils.java

http://fastcodingtools.googlecode.com/
Java | 446 lines | 233 code | 149 blank | 64 comment | 13 complexity | fef370ab85d63f82698a044fbc377dbd MD5 | raw file
Possible License(s): Apache-2.0
  1. /*
  2. * Licensed to the Apache Software Foundation (ASF) under one
  3. * or more contributor license agreements. See the NOTICE file
  4. * distributed with this work for additional information
  5. * regarding copyright ownership. The ASF licenses this file
  6. * to you under the Apache License, Version 2.0 (the
  7. * "License"); you may not use this file except in compliance
  8. * with the License. You may obtain a copy of the License at
  9. *
  10. * http://www.apache.org/licenses/LICENSE-2.0
  11. *
  12. * Unless required by applicable law or agreed to in writing,
  13. * software distributed under the License is distributed on an
  14. * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  15. * KIND, either express or implied. See the License for the
  16. * specific language governing permissions and limitations
  17. * under the License.
  18. */
  19. package com.fastcodingtools.util;
  20. import java.io.ByteArrayInputStream;
  21. import java.lang.reflect.InvocationTargetException;
  22. import java.sql.Connection;
  23. import java.sql.PreparedStatement;
  24. import java.sql.ResultSet;
  25. import java.sql.ResultSetMetaData;
  26. import java.sql.SQLException;
  27. import java.sql.Statement;
  28. import java.sql.Types;
  29. import java.util.ArrayList;
  30. import java.util.List;
  31. /**
  32. * @author macg
  33. *
  34. */
  35. public class DBUtils {
  36. public static void updateBlobPostgres(Connection conn,String update,byte[] content) throws SQLException {
  37. conn.setAutoCommit(false);
  38. ByteArrayInputStream bis = new ByteArrayInputStream(content);
  39. PreparedStatement ps = conn.prepareStatement(update);
  40. ps.setBinaryStream(1, bis, content.length);
  41. ps.executeUpdate();
  42. conn.commit();
  43. ps.close();
  44. }
  45. public static byte[] getBlobPostgres(Connection conn,String select) throws SQLException {
  46. byte[] blobBytes = null;
  47. conn.setAutoCommit(false);
  48. Statement ps = conn.createStatement();
  49. ResultSet rs = ps.executeQuery(select);
  50. rs.next();
  51. blobBytes = rs.getBytes(1);
  52. rs.close();
  53. ps.close();
  54. conn.commit();
  55. return blobBytes;
  56. }
  57. public static List populateList(Connection conn, Class classObject, String select) throws SQLException, IllegalAccessException, InvocationTargetException, NoSuchMethodException {
  58. Statement ps = conn.createStatement();
  59. ResultSet rs = ps.executeQuery(select);
  60. ResultSetMetaData metadata = rs.getMetaData();
  61. ArrayList<Object> results = new ArrayList<Object>();
  62. Object object;
  63. while(rs.next()) {
  64. object = FastPropertyUtils.create(classObject);
  65. for (int i = 1; i <= metadata.getColumnCount(); i++) {
  66. FastPropertyUtils.setNestedProperty(object, metadata.getColumnLabel(i), rs.getObject(i));
  67. }
  68. results.add(object);
  69. }
  70. rs.close();
  71. ps.close();
  72. return results;
  73. }
  74. public static boolean isValidDisplaySize(int displaySize) {
  75. return displaySize >= 0;
  76. }
  77. public static boolean isBlobOrClob(int dataType) {
  78. return dataType == Types.BLOB || dataType == Types.CLOB;
  79. }
  80. public static boolean isBlob(int dataType) {
  81. return dataType == Types.BLOB;
  82. }
  83. public static boolean isClob(int dataType) {
  84. return dataType == Types.CLOB;
  85. }
  86. public static boolean isCharOrVarchar(int dataType) {
  87. return dataType == Types.CHAR || dataType == Types.VARCHAR;
  88. }
  89. /**
  90. * @return
  91. */
  92. public static String getJavaType(int dataType, int decimalDigits) {
  93. String javaTypeName;
  94. switch (dataType) {
  95. // case Types.ARRAY:
  96. //
  97. // break;
  98. case Types.BIGINT:
  99. javaTypeName = "Long";
  100. break;
  101. case Types.BINARY:
  102. javaTypeName = "Byte[]";
  103. break;
  104. case Types.BIT:
  105. javaTypeName = "Boolean";
  106. break;
  107. case Types.BLOB:
  108. javaTypeName = "java.sql.Blob";
  109. break;
  110. case Types.BOOLEAN:
  111. javaTypeName = "Boolean";
  112. break;
  113. case Types.CHAR:
  114. javaTypeName = "String";
  115. break;
  116. case Types.CLOB:
  117. javaTypeName = "java.sql.Clob";
  118. break;
  119. // case Types.DATALINK:
  120. //
  121. // break;
  122. case Types.DATE:
  123. javaTypeName = "java.util.Date";
  124. break;
  125. case Types.DECIMAL:
  126. if (decimalDigits > 0) {
  127. javaTypeName = "Double";
  128. } else {
  129. javaTypeName = "Long";
  130. }
  131. break;
  132. // case Types.DISTINCT:
  133. //
  134. // break;
  135. case Types.DOUBLE:
  136. javaTypeName = "Double";
  137. break;
  138. case Types.FLOAT:
  139. javaTypeName = "Double";
  140. break;
  141. case Types.INTEGER:
  142. javaTypeName = "Integer";
  143. break;
  144. case Types.JAVA_OBJECT:
  145. javaTypeName = "Object";
  146. break;
  147. case Types.LONGVARBINARY:
  148. javaTypeName = "Byte[]";
  149. break;
  150. case Types.LONGVARCHAR:
  151. javaTypeName = "String";
  152. break;
  153. // case Types.NULL:
  154. //
  155. // break;
  156. case Types.NUMERIC:
  157. javaTypeName = "Double";
  158. break;
  159. case Types.OTHER:
  160. javaTypeName = "Double";
  161. break;
  162. case Types.REAL:
  163. javaTypeName = "Float";
  164. break;
  165. // case Types.REF:
  166. //
  167. // break;
  168. case Types.SMALLINT:
  169. javaTypeName = "Short";
  170. break;
  171. // case Types.STRUCT:
  172. //
  173. // break;
  174. case Types.TIME:
  175. javaTypeName = "java.util.Date";
  176. break;
  177. case Types.TIMESTAMP:
  178. javaTypeName = "java.util.Date";
  179. break;
  180. case Types.TINYINT:
  181. javaTypeName = "Byte";
  182. break;
  183. case Types.VARBINARY:
  184. javaTypeName = "Byte[]";
  185. break;
  186. case Types.VARCHAR:
  187. javaTypeName = "String";
  188. break;
  189. default:
  190. javaTypeName = "Object";
  191. break;
  192. }
  193. return javaTypeName;
  194. }
  195. /**
  196. * @return
  197. */
  198. public static String getDataTypeName(int dataType) {
  199. String dataTypeName;
  200. switch (dataType) {
  201. // case Types.ARRAY:
  202. //
  203. // break;
  204. case Types.BIGINT:
  205. dataTypeName = "BIGINT";
  206. break;
  207. case Types.BINARY:
  208. dataTypeName = "BINARY";
  209. break;
  210. case Types.BIT:
  211. dataTypeName = "BIT";
  212. break;
  213. case Types.BLOB:
  214. dataTypeName = "BLOB";
  215. break;
  216. case Types.BOOLEAN:
  217. dataTypeName = "BOOLEAN";
  218. break;
  219. case Types.CHAR:
  220. dataTypeName = "CHAR";
  221. break;
  222. case Types.CLOB:
  223. dataTypeName = "CLOB";
  224. break;
  225. // case Types.DATALINK:
  226. //
  227. // break;
  228. case Types.DATE:
  229. dataTypeName = "DATE";
  230. break;
  231. case Types.DECIMAL:
  232. dataTypeName = "DECIMAL";
  233. break;
  234. // case Types.DISTINCT:
  235. //
  236. // break;
  237. case Types.DOUBLE:
  238. dataTypeName = "DOUBLE";
  239. break;
  240. case Types.FLOAT:
  241. dataTypeName = "FLOAT";
  242. break;
  243. case Types.INTEGER:
  244. dataTypeName = "INTEGER";
  245. break;
  246. case Types.JAVA_OBJECT:
  247. dataTypeName = "JAVA_OBJECT";
  248. break;
  249. case Types.LONGVARBINARY:
  250. dataTypeName = "LONGVARBINARY";
  251. break;
  252. case Types.LONGVARCHAR:
  253. dataTypeName = "LONGVARCHAR";
  254. break;
  255. // case Types.NULL:
  256. //
  257. // break;
  258. case Types.NUMERIC:
  259. dataTypeName = "NUMERIC";
  260. break;
  261. case Types.OTHER:
  262. dataTypeName = "OTHER";
  263. break;
  264. case Types.REAL:
  265. dataTypeName = "REAL";
  266. break;
  267. // case Types.REF:
  268. //
  269. // break;
  270. case Types.SMALLINT:
  271. dataTypeName = "SMALLINT";
  272. break;
  273. // case Types.STRUCT:
  274. //
  275. // break;
  276. case Types.TIME:
  277. dataTypeName = "TIME";
  278. break;
  279. case Types.TIMESTAMP:
  280. dataTypeName = "TIMESTAMP";
  281. break;
  282. case Types.TINYINT:
  283. dataTypeName = "TINYINT";
  284. break;
  285. case Types.VARBINARY:
  286. dataTypeName = "VARBINARY";
  287. break;
  288. case Types.VARCHAR:
  289. dataTypeName = "VARCHAR";
  290. break;
  291. default:
  292. dataTypeName = "NOT_IDENTIFIED";
  293. break;
  294. }
  295. return dataTypeName;
  296. }
  297. }