/tags/v2_0_4a/generator/src/org/collazos/bdbean/BdUtils.java

# · Java · 223 lines · 208 code · 7 blank · 8 comment · 28 complexity · 1d51dde21cf6063c54b2ce6bde071b28 MD5 · raw file

  1. //Generation Date: Sun Oct 23 14:43:48 CEST 2005
  2. package org.collazos.bdbean;
  3. import java.sql.*;
  4. import org.collazos.util.database.ConnectDB;
  5. import org.collazos.generator.bdexception.*;
  6. import electric.xml.*;
  7. /**
  8. * BdUtils
  9. * Generator version: 2.0.4
  10. * Class to provide some useful stuff.
  11. * Generation Date: Sun Oct 23 14:43:48 CEST 2005
  12. *
  13. */
  14. public class BdUtils {
  15. public BdUtils() {
  16. }
  17. public static Element executeQueryToXml(String sql) {
  18. Connection con = null;
  19. Statement stm = null;
  20. ResultSet rs = null;
  21. int k=0;
  22. try {
  23. con = ConnectDB.getSimpleConnection();
  24. stm = con.createStatement();
  25. rs = stm.executeQuery(sql);
  26. Element queryResult = new Element("query-result");
  27. int numColumns = rs.getMetaData().getColumnCount();
  28. String[] fieldName = new String[numColumns];
  29. String[] fieldType = new String[numColumns];
  30. for (int i=0;i<numColumns;i++) {
  31. fieldName[i]=rs.getMetaData().getColumnName(i+1);
  32. int numType = rs.getMetaData().getColumnType(i+1);
  33. ColumnData cd = new ColumnData(fieldName[i],numType,1);
  34. fieldType[i]=cd.getJavaType();
  35. }
  36. while (rs.next()) {
  37. Element tmpElem = new Element("row");
  38. for (int i=0;i<numColumns;i++) {
  39. String fieldValue=rs.getString(fieldName[i]);
  40. Element fieldElem = new Element("field");
  41. fieldElem.setAttribute("name",fieldName[i]);
  42. fieldElem.setAttribute("java-type",fieldType[i]);
  43. fieldElem.setAttribute("value",rs.getString(fieldName[i]));
  44. tmpElem.addChild(fieldElem);
  45. }
  46. tmpElem.setAttribute("rowid",""+k);
  47. queryResult.addChild(tmpElem);
  48. k++;
  49. }
  50. return queryResult;
  51. } catch (Exception e) {
  52. throw new BaseRuntimeException(e.toString());
  53. } finally {
  54. if (rs != null) try { rs.close(); } catch (Exception ignored) {}
  55. if (stm != null) try { stm.close(); } catch (Exception ignored) {}
  56. if (con != null) ConnectDB.putConnection(con);
  57. }
  58. }
  59. public static String replaceString (String str, String find, String replace) {
  60. if (str == null) return null;
  61. if ((find == null) || (find.length() == 0)) return str;
  62. if (replace == null) replace = "";
  63. StringBuffer sb = new StringBuffer(str.length());
  64. int pos = 0;
  65. int lastPos = 0;
  66. while (pos >= 0) {
  67. pos = str.indexOf(find, lastPos);
  68. if (pos >= 0) {
  69. sb.append(str.substring(lastPos, pos));
  70. sb.append(replace);
  71. } else {
  72. sb.append(str.substring(lastPos));
  73. }
  74. lastPos = pos + find.length();
  75. }
  76. return sb.toString();
  77. }
  78. private static class ColumnData
  79. {
  80. String[] sqlTypes = { "CHAR","TINYINT","BIGINT","INT","SMALLINT","FLOAT","REAL","DOUBLE","NUMERIC","DECIMAL","DATE","VARCHAR","LONGVARCHAR","TIMESTAMP","TIME","BIT","BINARY","VARBINARY","LONGVARBINARY","NULL","OTHER","TEXT" };
  81. int type;
  82. int columns;
  83. String name;
  84. public ColumnData (String name,int origType, int columns)
  85. {
  86. this.name = name;
  87. this.type = origType;
  88. this.columns = columns;
  89. switch (type)
  90. {
  91. case -1:
  92. break;
  93. case -2:
  94. type = 18;
  95. break;
  96. case -3:
  97. type = 19;
  98. break;
  99. case -4:
  100. type = 19;
  101. break;
  102. case -5:
  103. type = 3;
  104. break;
  105. case -6:
  106. type = 2;
  107. break;
  108. case -7:
  109. type = 16;
  110. break;
  111. case 1111:
  112. type = 3;
  113. break;
  114. case 91:
  115. type = 11;
  116. break;
  117. case 92:
  118. type = 14;
  119. break;
  120. case 93:
  121. type = 14;
  122. break;
  123. default:
  124. break;
  125. }
  126. }
  127. public ColumnData (String name, String coltype, int columns)
  128. {
  129. this.name = name;
  130. this.columns = columns;
  131. int i=0;
  132. boolean quit = false;
  133. this.type = -1; // invalid
  134. while (!quit)
  135. {
  136. if (coltype.toUpperCase().compareTo(sqlTypes[i]) == 0)
  137. {
  138. this.type = i+1;
  139. quit = true;
  140. }
  141. i++;
  142. if (i>=sqlTypes.length)
  143. quit = true;
  144. }
  145. }
  146. public String getName() {
  147. return name;
  148. }
  149. public String getJavaType()
  150. {
  151. String jType = null;
  152. switch (type)
  153. {
  154. case 1:
  155. case 12:
  156. case 13:
  157. case 22:
  158. jType = "String";
  159. break;
  160. case 2:
  161. jType = "byte";
  162. break;
  163. case 3:
  164. jType = "long";
  165. break;
  166. case 4:
  167. jType = "int";
  168. break;
  169. case 5:
  170. jType = "short";
  171. break;
  172. case 6:
  173. case 8:
  174. jType = "double";
  175. break;
  176. case 9:
  177. case 10:
  178. jType = "java.math.BigDecimal";
  179. break;
  180. case 7:
  181. jType = "float";
  182. break;
  183. case 11:
  184. jType = "java.util.Date";
  185. break;
  186. case 14:
  187. jType = "Timestamp";
  188. break;
  189. case 15:
  190. jType = "Time";
  191. break;
  192. case 16:
  193. jType = "boolean";
  194. break;
  195. case 17:
  196. case 18:
  197. case 19:
  198. jType = "byte[]";
  199. break;
  200. case 20:
  201. jType = "null";
  202. break;
  203. default:
  204. jType = "unknown";
  205. break;
  206. }
  207. return jType;
  208. }
  209. public String getType() {
  210. if ((type > sqlTypes.length) || (type < 0))
  211. return ""+type;
  212. else
  213. return sqlTypes[type-1];
  214. }
  215. }
  216. }