[jboss-user] [JBoss Tools] - Re: Hibernate Tools question
Alex Popa-Tesileanu
do-not-reply at jboss.com
Mon Sep 24 03:21:42 EDT 2012
Alex Popa-Tesileanu [https://community.jboss.org/people/alexpote] created the discussion
"Re: Hibernate Tools question"
To view the discussion, visit: https://community.jboss.org/message/761036#761036
--------------------------------------------------------------
Hi,
I tried to get the connection from RuntimeInfo without success.
I created two functions: initConn and initConn1.
In first one I get the connection from RuntimeInfo. The result is:
> java.lang.NullPointerException
> at ro.alex.CustReveng.initConn(CustReveng.java:49)
> at ro.alex.CustReveng.<init>(CustReveng.java:30)
> at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
> at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
> at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
> at java.lang.reflect.Constructor.newInstance(Unknown Source)
> at org.jboss.tools.hibernate4_0.console.ConsoleExtension4_0.loadreverseEngineeringStrategy(ConsoleExtension4_0.java:297)
> at org.jboss.tools.hibernate4_0.console.ConsoleExtension4_0.access$1(ConsoleExtension4_0.java:293)
> at org.jboss.tools.hibernate4_0.console.ConsoleExtension4_0$3.execute(ConsoleExtension4_0.java:256)
> at org.hibernate.console.execution.DefaultExecutionContext.execute(DefaultExecutionContext.java:63)
> at org.jboss.tools.hibernate4_0.HibernateExtension4_0.execute(HibernateExtension4_0.java:211)
> at org.jboss.tools.hibernate4_0.console.ConsoleExtension4_0.buildConfiguration(ConsoleExtension4_0.java:237)
> at org.jboss.tools.hibernate4_0.console.ConsoleExtension4_0.runExporters(ConsoleExtension4_0.java:167)
> at org.jboss.tools.hibernate4_0.console.ConsoleExtension4_0.launchExporters(ConsoleExtension4_0.java:126)
> at org.hibernate.eclipse.launch.CodeGenerationLaunchDelegate.launch(CodeGenerationLaunchDelegate.java:270)
> at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:855)
> at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:704)
> at org.eclipse.debug.internal.ui.DebugUIPlugin.buildAndLaunch(DebugUIPlugin.java:1047)
> at org.eclipse.debug.internal.ui.DebugUIPlugin$8.run(DebugUIPlugin.java:1251)
> at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
>
In the initConn1 I created a new con nection and it work.
Bellow is the code:
> package ro.alex;
>
>
> import java.sql.Connection;
> import java.sql.DriverManager;
> import java.sql.ResultSet;
> import java.sql.SQLException;
> import java.sql.Statement;
> import java.util.Date;
> import java.util.HashMap;
> import java.util.Map;
>
>
> import org.hibernate.cfg.reveng.DelegatingReverseEngineeringStrategy;
> import org.hibernate.cfg.reveng.ReverseEngineeringRuntimeInfo;
> import org.hibernate.cfg.reveng.ReverseEngineeringStrategy;
> import org.hibernate.cfg.reveng.TableIdentifier;
> import org.hibernate.mapping.MetaAttribute;
> import org.apache.log4j.Logger;
> import org.apache.log4j.BasicConfigurator;
>
>
>
>
> public class CustReveng extends DelegatingReverseEngineeringStrategy {
> private ReverseEngineeringRuntimeInfo RuntimeInfo;
> private Connection conn;
> static Logger logger = Logger.getLogger(CustReveng.class);
>
>
> public CustReveng(ReverseEngineeringStrategy strategy) {
> super (strategy);
> BasicConfigurator.configure();
> configure(getRuntimeInfo());
> initConn();
> //initConn1();
> }
>
>
> public Connection getConn() {
> return conn;
> }
> public void setConn(Connection conn) {
> this.conn = conn;
> }
> public void setRuntimeInfo(ReverseEngineeringRuntimeInfo runtimeInfo) {
> RuntimeInfo = runtimeInfo;
> }
> public ReverseEngineeringRuntimeInfo getRuntimeInfo() {
> return RuntimeInfo;
> }
>
>
> public void initConn(){
> try {
> setConn(getRuntimeInfo().getConnectionProvider().getConnection());
> } catch (SQLException e) {
> // TODO Auto-generated catch block
> e.printStackTrace();
> }
> }
>
>
> public void initConn1(){
> //Create a new database connection
> String dbUrl = "jdbc:mysql://localhost:3307/conta";
> try {
> setConn(DriverManager.getConnection (dbUrl,"user","password"));
> }
> catch(SQLException e) {
> e.printStackTrace();
> logger.info("test"+e.getMessage());
> }
> }
>
> public Map<String, MetaAttribute> columnToMetaAttributes(TableIdentifier identifier, String column) {
> Map<String, MetaAttribute> result = new HashMap<String, MetaAttribute>();
>
> MetaAttribute ma = new MetaAttribute("default-value");
> String table;
> table=identifier.getName();
> String defaultValue = getTableColumnDefault(table, column);
> if(defaultValue!=null && !defaultValue.isEmpty()){
> ma.addValue(defaultValue);
> result.put("default-value", ma);
> }
> return result;
> }
>
> public String getTableColumnDefault(String table, String column){
> String xdefault = "";
> String xType = "";
> String query = "SHOW COLUMNS FROM "+table+" LIKE '"+column+"'";
> try {
> Connection con = getConn();
> Statement stmt = con.createStatement();
> ResultSet rs = stmt.executeQuery(query);
> while (rs.next()) {
> xdefault = rs.getString(5);
> xType = rs.getString(2);
> //logger.info("Default value for "+column+" "+xdefault);
> } //end while
> } //end try
> catch(SQLException e) {
> e.printStackTrace();
> logger.info("SQL Error: "+e.getMessage());
> }
> //Code to calculate default value
> //logger.info("Type value for "+column+" "+(xType.substring(0,Math.min(xType.length(), 7))));
> if(xType.substring(0,Math.min(xType.length(), 4)).equals("char")){
> if(xType.trim().equals("char(1)")){
> xdefault="\'"+xdefault+"\'";
> }else{
> xdefault="\""+xdefault+"\"";
> }
> }else if(xType.substring(0,Math.min(xType.length(), 7)).equals("varchar")){
> if(xType.trim().equals("varchar(1)")){
> xdefault="\'"+xdefault+"\'";
> }else{
> xdefault="\""+xdefault+"\"";
> }
> }else if(xType.trim()=="text"){
> xdefault="\""+xdefault+"\"";
> }else if(xdefault!=null && !xdefault.isEmpty() && (xType.trim().equals("date") || xType.trim().equals("datetime")) ){
> xdefault="new Date(0)";
> }else if(xdefault!=null && !xdefault.isEmpty() && (xType=="decimal" || xType.trim()=="int" || xType.trim()=="smallint" || xType.trim()=="tinyint" )){
> xdefault="0";
> }else{
> xdefault="\"ccc\"";
> }
>
>
> return xdefault;
> }
>
>
> public void finalize(){
> try {
> getConn().close();
> } catch (SQLException e) {
> // TODO Auto-generated catch block
> e.printStackTrace();
> }
> try {
> super.finalize();
> } catch (Throwable e) {
> // TODO Auto-generated catch block
> e.printStackTrace();
> }
> }
>
> }
>
I can't figure out where is the problem.
getTableColumnDefault function is not yet finished. Can be helpful if I can get JDBC type and Hibernate type.
It is possible ?
Thank You,
Alex
--------------------------------------------------------------
Reply to this message by going to Community
[https://community.jboss.org/message/761036#761036]
Start a new discussion in JBoss Tools at Community
[https://community.jboss.org/choose-container!input.jspa?contentType=1&containerType=14&container=2128]
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/jboss-user/attachments/20120924/38e34f8e/attachment-0001.html
More information about the jboss-user
mailing list