View Javadoc

1   /*
2    * joey-gen and its relative products are published under the terms
3    * of the Apache Software License.
4    * 
5    * Created on 2004/11/24 17:58:41
6    */
7   package org.asyrinx.joey.gen.hibernate;
8   
9   import java.sql.Types;
10  
11  import org.asyrinx.joey.gen.jdbc.JdbcUtils;
12  
13  import net.sf.hibernate.Hibernate;
14  import net.sf.hibernate.type.NullableType;
15  
16  /***
17   * @author takeshi
18   */
19  public class HibernateUtils {
20  
21      /***
22       *  
23       */
24      public HibernateUtils() {
25          super();
26      }
27  
28      public static NullableType getHibernateType(String sqlTypeName, int columnSize, int decimalDigits) {
29          final int sqlType = JdbcUtils.toJdbcType(sqlTypeName);
30          return (sqlType == JdbcUtils.UNKNOWN_TYPE) ? null : getHibernateType(sqlType, columnSize, decimalDigits);
31      }
32  
33      public static NullableType getHibernateType(int sqlType, int columnSize, int decimalDigits) {
34          //logger.debug("sqlType=" + sqlType);
35          //logger.debug("columnSize=" + columnSize);
36          //logger.debug("decimalDigits=" + decimalDigits);
37          NullableType rv = Hibernate.SERIALIZABLE;
38          if (sqlType == Types.CHAR || sqlType == Types.VARCHAR) {
39              rv = Hibernate.STRING;
40          } else if (sqlType == Types.LONGVARCHAR) {
41              rv = Hibernate.TEXT;
42          } else if (sqlType == Types.BLOB) {
43              rv = Hibernate.BLOB;
44          } else if (sqlType == Types.CLOB) {
45              rv = Hibernate.CLOB;
46          } else if (sqlType == Types.FLOAT || sqlType == Types.REAL) {
47              rv = Hibernate.FLOAT;
48          } else if (sqlType == Types.INTEGER) {
49              rv = Hibernate.INTEGER;
50          } else if (sqlType == Types.DOUBLE) {
51              rv = Hibernate.DOUBLE;
52          } else if (sqlType == Types.DATE) {
53              rv = Hibernate.DATE;
54          } else if (sqlType == Types.TIMESTAMP) {
55              rv = Hibernate.TIMESTAMP;
56          } else if (sqlType == Types.TIME) {
57              rv = Hibernate.TIME;
58          } else if (sqlType == Types.BOOLEAN) {
59              rv = Hibernate.BOOLEAN;
60          } else if (sqlType == Types.SMALLINT) {
61              rv = Hibernate.SHORT;
62          } else if (sqlType == Types.BIT) {
63              rv = Hibernate.BOOLEAN;
64          } else if (sqlType == Types.BIGINT) {
65              rv = Hibernate.LONG;
66          } else if (sqlType == Types.NUMERIC || sqlType == Types.DECIMAL) {
67              if (decimalDigits == 0) {
68                  if (columnSize == 1) {
69                      rv = Hibernate.BYTE;
70                  } else if (columnSize < 5) {
71                      rv = Hibernate.SHORT;
72                  } else if (columnSize < 10) {
73                      rv = Hibernate.INTEGER;
74                  } else {
75                      rv = Hibernate.LONG;
76                  }
77              } else {
78                  if (columnSize < 9) {
79                      rv = Hibernate.FLOAT;
80                  } else {
81                      rv = Hibernate.DOUBLE;
82                  }
83              }
84          }
85          return rv;
86      }
87  
88  }