001 package railo.runtime.orm; 002 003 import java.sql.Connection; 004 import java.sql.PreparedStatement; 005 import java.sql.SQLException; 006 import java.sql.Statement; 007 008 import railo.runtime.PageContext; 009 import railo.runtime.db.DataSource; 010 import railo.runtime.db.DatasourceConnection; 011 import railo.runtime.db.DatasourceConnectionImpl; 012 import railo.runtime.db.SQL; 013 import railo.runtime.op.Caster; 014 015 public class ORMDatasourceConnection implements DatasourceConnection { 016 017 private DataSource datasource; 018 private Connection connection; 019 private Boolean supportsGetGeneratedKeys; 020 021 public ORMDatasourceConnection(PageContext pc, ORMSession session) { 022 datasource=session.getEngine().getDataSource(); 023 connection=new ORMConnection(pc,session); 024 } 025 026 public Connection getConnection() { 027 // TODO Auto-generated method stub 028 return connection; 029 } 030 031 @Override 032 public DataSource getDatasource() { 033 return datasource; 034 } 035 036 @Override 037 public String getPassword() { 038 return datasource.getPassword(); 039 } 040 041 @Override 042 public String getUsername() { 043 return datasource.getUsername(); 044 } 045 046 @Override 047 public boolean isTimeout() { 048 return false; 049 } 050 051 052 053 @Override 054 public boolean equals(Object obj) { 055 if(this==obj) return true; 056 if(!(obj instanceof ORMDatasourceConnection)) return false; 057 return DatasourceConnectionImpl.equals(this, (DatasourceConnection) obj); 058 } 059 060 public boolean supportsGetGeneratedKeys() { 061 if(supportsGetGeneratedKeys==null){ 062 try { 063 supportsGetGeneratedKeys=Caster.toBoolean(getConnection().getMetaData().supportsGetGeneratedKeys()); 064 } catch (Throwable t) { 065 return false; 066 } 067 } 068 return supportsGetGeneratedKeys.booleanValue(); 069 } 070 071 public PreparedStatement getPreparedStatement(SQL sql, boolean createGeneratedKeys, boolean allowCaching) throws SQLException { 072 if(createGeneratedKeys) return getConnection().prepareStatement(sql.getSQLString(),Statement.RETURN_GENERATED_KEYS); 073 return getConnection().prepareStatement(sql.getSQLString()); 074 } 075 076 @Override 077 public PreparedStatement getPreparedStatement(SQL sql, int resultSetType, int resultSetConcurrency) throws SQLException { 078 return getConnection().prepareStatement(sql.getSQLString(),resultSetType,resultSetConcurrency); 079 } 080 081 @Override 082 public void close() throws SQLException { 083 getConnection().close(); 084 } 085 086 }