diff --git a/eventlog.rb b/eventlog.rb index 0265b1f..466744c 100644 --- a/eventlog.rb +++ b/eventlog.rb @@ -1,7 +1,7 @@ require 'rubygems' require 'lib/dm-hibernate-adapter.rb' -DataMapper.setup(:default, :adapter => "hibernate") +DataMapper.setup(:default, :adapter => "hibernate", :dialect => "H2", :username => "sa", :url => "jdbc:h2:jibernate") class Event include DataMapper::Resource diff --git a/lib/dm-hibernate-adapter.rb b/lib/dm-hibernate-adapter.rb index c54f9b7..2fa2fad 100644 --- a/lib/dm-hibernate-adapter.rb +++ b/lib/dm-hibernate-adapter.rb @@ -18,18 +18,38 @@ module Adapters class HibernateAdapter < AbstractAdapter + # TODO maybe more drivers + DRIVERS = { + :H2 => "org.h2.Driver", + :HSQL => "org.hsqldb.jdbcDriver", + :Derby => "org.apache.derby.jdbc.EmbeddedDriver", + :MySQL5 => "com.mysql.jdbc.Driver", + :MySQL5InnoDB => "com.mysql.jdbc.Driver", + :MySQL => "com.mysql.jdbc.Driver", + :MySQLInnoDB => "com.mysql.jdbc.Driver", + :MySQLMyISAM => "com.mysql.jdbc.Driver", + :PostgreSQL => "org.postgresql.Driver", + } + DataMapper::Model.append_inclusions Hibernate::Model def initialize(name, options = {}) + dialect = options.delete(:dialect) + username = options.delete(:username) + password = options.delete(:password) + url = options.delete(:url) + url += "jdbc:" unless url =~ /^jdbc:/ + driver = options.delete(:driver) || DRIVERS[dialect.to_sym] + pool_size = options.delete(:pool_size) || "1" super - Hibernate.dialect = Hibernate::Dialects::H2 + Hibernate.dialect = Hibernate::Dialects.const_get(dialect.to_s) Hibernate.current_session_context_class = "thread" - Hibernate.connection_driver_class = "org.h2.Driver" - Hibernate.connection_url = "jdbc:h2:jibernate" - Hibernate.connection_username = "sa" - Hibernate.connection_password = "" - Hibernate.connection_pool_size = "1" + Hibernate.connection_driver_class = driver.to_s + Hibernate.connection_url = url.to_s # "jdbc:h2:jibernate" + Hibernate.connection_username = username.to_s # "sa" + Hibernate.connection_password = password.to_s # "" + Hibernate.connection_pool_size = pool_size.to_s Hibernate.properties["hbm2ddl.auto"] = "update" Hibernate.properties["format_sql"] = "false" Hibernate.properties["show_sql"] = "true" diff --git a/spec/dm-hibernate-adapter_spec.rb b/spec/dm-hibernate-adapter_spec.rb index 20fe1b3..ecd6dec 100644 --- a/spec/dm-hibernate-adapter_spec.rb +++ b/spec/dm-hibernate-adapter_spec.rb @@ -8,7 +8,7 @@ describe DataMapper::Adapters::HibernateAdapter do before :all do - @adapter = DataMapper.setup(:default, :adapter => "hibernate") + @adapter = DataMapper.setup(:default, :adapter => "hibernate", :dialect => "H2", :username => "sa", :url => "jdbc:h2:jibernate" ) end it_should_behave_like 'An Adapter'