Author: husted Date: Sun Jul 30 12:02:23 2006 New Revision: 426917 URL: http://svn.apache.org/viewvc?rev=426917&view=rev Log: WW-1399 Add initial support for HSQLDB and iBATIS
Added: struts/struts2/trunk/apps/mailreader/src/main/java/mailreader2/AppData.java struts/struts2/trunk/apps/mailreader/src/main/resources/sql/ struts/struts2/trunk/apps/mailreader/src/main/resources/sql-map-config.xml struts/struts2/trunk/apps/mailreader/src/main/resources/sql/mailreader-schema.sql struts/struts2/trunk/apps/mailreader/src/main/resources/sql/sql-map-config-derby.properties struts/struts2/trunk/apps/mailreader/src/main/resources/sql/sql-map-config-hsql.properties struts/struts2/trunk/apps/mailreader/src/main/resources/sql/sql-map.xml struts/struts2/trunk/apps/mailreader/src/test/java/ struts/struts2/trunk/apps/mailreader/src/test/java/mailreader2/ struts/struts2/trunk/apps/mailreader/src/test/java/mailreader2/BaseSqlMapTest.java struts/struts2/trunk/apps/mailreader/src/test/java/mailreader2/MailreaderTest.java struts/struts2/trunk/apps/mailreader/src/test/resources/ struts/struts2/trunk/apps/mailreader/src/test/resources/sql/ struts/struts2/trunk/apps/mailreader/src/test/resources/sql/mailreader-sample.sql Modified: struts/struts2/trunk/apps/mailreader/pom.xml Modified: struts/struts2/trunk/apps/mailreader/pom.xml URL: http://svn.apache.org/viewvc/struts/struts2/trunk/apps/mailreader/pom.xml?rev=426917&r1=426916&r2=426917&view=diff ============================================================================== --- struts/struts2/trunk/apps/mailreader/pom.xml (original) +++ struts/struts2/trunk/apps/mailreader/pom.xml Sun Jul 30 12:02:23 2006 @@ -19,12 +19,23 @@ <version>2.4</version> <scope>provided</scope> </dependency> + + <dependency> + <groupId>hsqldb</groupId> + <artifactId>hsqldb</artifactId> + <version>1.8.0.4</version> + </dependency> + <dependency> + <groupId>com.ibatis</groupId> + <artifactId>ibatis2-sqlmap</artifactId> + <version>2.1.7.597</version> + </dependency> + <dependency> <groupId>${pom.groupId}</groupId> <artifactId>struts-mailreader-dao</artifactId> - <version>1.3.5-SNAPSHOT</version> + <version>1.3.5</version> </dependency> - </dependencies> <build> Added: struts/struts2/trunk/apps/mailreader/src/main/java/mailreader2/AppData.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/apps/mailreader/src/main/java/mailreader2/AppData.java?rev=426917&view=auto ============================================================================== --- struts/struts2/trunk/apps/mailreader/src/main/java/mailreader2/AppData.java (added) +++ struts/struts2/trunk/apps/mailreader/src/main/java/mailreader2/AppData.java Sun Jul 30 12:02:23 2006 @@ -0,0 +1,202 @@ +package mailreader2; + +/** + * <p/> + * Provide properties to transfer data values between + * the view and model layers (data transfer object). + * </p> + * + * @author Ted Husted + * @version $Revision: 1.0 $ $Date: Jul 30, 2006 9:29:50 AM $ + */ +public class AppData { + + private boolean nominal; + + private String locale_key; + private String locale_code; + private String locale_name; + + private String account_key; + private String username; + private String password; + private String password2; + private String fullname; + private String email_from; + private String email_replyto; + + private String protocol_key; + private String protocol_code; + private String protocol_name; + + private String host_key; + private String host_name; + private String host_user; + private String host_pass; + private Integer host_auto; + + public boolean isNominal() { + return nominal; + } + + public void setNominal(boolean nominal) { + this.nominal = nominal; + } + + public String getLocale_key() { + return locale_key; + } + + public void setLocale_key(String locale_key) { + this.locale_key = locale_key; + } + + public String getLocale_code() { + return locale_code; + } + + public void setLocale_code(String locale_code) { + this.locale_code = locale_code; + } + + public String getLocale_name() { + return locale_name; + } + + public void setLocale_name(String locale_name) { + this.locale_name = locale_name; + } + + public String getAccount_key() { + return account_key; + } + + public void setAccount_key(String account_key) { + this.account_key = account_key; + } + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + public String getPassword2() { + return password2; + } + + public void setPassword2(String password2) { + this.password2 = password2; + } + + public String getFullname() { + return fullname; + } + + public void setFullname(String fullname) { + this.fullname = fullname; + } + + public String getEmail_from() { + return email_from; + } + + public void setEmail_from(String email_from) { + this.email_from = email_from; + } + + public String getEmail_replyto() { + return email_replyto; + } + + public void setEmail_replyto(String email_replyto) { + this.email_replyto = email_replyto; + } + + public String getProtocol_key() { + return protocol_key; + } + + public void setProtocol_key(String protocol_key) { + this.protocol_key = protocol_key; + } + + public String getProtocol_code() { + return protocol_code; + } + + public void setProtocol_code(String protocol_code) { + this.protocol_code = protocol_code; + } + + public String getHost_key() { + return host_key; + } + + public void setHost_key(String host_key) { + this.host_key = host_key; + } + + public String getHost_name() { + return host_name; + } + + public void setHost_name(String host_name) { + this.host_name = host_name; + } + + public String getHost_user() { + return host_user; + } + + public void setHost_user(String host_user) { + this.host_user = host_user; + } + + public String getHost_pass() { + return host_pass; + } + + public void setHost_pass(String host_pass) { + this.host_pass = host_pass; + } + + public String getProtocol_name() { + return protocol_name; + } + + public void setProtocol_name(String protocol_name) { + this.protocol_name = protocol_name; + } + + public Integer getHost_auto() { + return host_auto; + } + + public void setHost_auto(Integer host_auto) { + this.host_auto = host_auto; + } + + public boolean isHost_auto_checkbox() { + Integer _host_auto = getHost_auto(); + if (_host_auto == null) _host_auto = 0; + return (_host_auto == 0); + } + + public void setHost_auto_checkbox(boolean host_auto_checkbox) { + if (host_auto_checkbox) + setHost_auto(1); + else setHost_auto(0); + } + +} Added: struts/struts2/trunk/apps/mailreader/src/main/resources/sql-map-config.xml URL: http://svn.apache.org/viewvc/struts/struts2/trunk/apps/mailreader/src/main/resources/sql-map-config.xml?rev=426917&view=auto ============================================================================== --- struts/struts2/trunk/apps/mailreader/src/main/resources/sql-map-config.xml (added) +++ struts/struts2/trunk/apps/mailreader/src/main/resources/sql-map-config.xml Sun Jul 30 12:02:23 2006 @@ -0,0 +1,25 @@ +<!DOCTYPE sqlMapConfig PUBLIC + "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN" + "http://ibatis.apache.org/dtd/sql-map-config-2.dtd";> + +<sqlMapConfig> + + <properties resource="sql/sql-map-config-hsql.properties"/> + + <settings cacheModelsEnabled="true" enhancementEnabled="false" + maxSessions="64" maxTransactions="8" maxRequests="128"/> + + <transactionManager type="JDBC"> + <dataSource type="SIMPLE"> + <property value="${driver}" name="JDBC.Driver"/> + <property value="${url}" name="JDBC.ConnectionURL"/> + <property value="${username}" name="JDBC.Username"/> + <property value="${password}" name="JDBC.Password"/> + <property value="15" name="Pool.MaximumActiveConnections"/> + <property value="15" name="Pool.MaximumIdleConnections"/> + <property value="1000" name="Pool.MaximumWait"/> + </dataSource> + </transactionManager> + + <sqlMap resource="sql/sql-map.xml"/> +</sqlMapConfig> \ No newline at end of file Added: struts/struts2/trunk/apps/mailreader/src/main/resources/sql/mailreader-schema.sql URL: http://svn.apache.org/viewvc/struts/struts2/trunk/apps/mailreader/src/main/resources/sql/mailreader-schema.sql?rev=426917&view=auto ============================================================================== --- struts/struts2/trunk/apps/mailreader/src/main/resources/sql/mailreader-schema.sql (added) +++ struts/struts2/trunk/apps/mailreader/src/main/resources/sql/mailreader-schema.sql Sun Jul 30 12:02:23 2006 @@ -0,0 +1,35 @@ +CREATE TABLE locale +( + pk_locale char(36), + locale_code char(9), + locale_name char(36) +); + +CREATE TABLE registration +( + pk_registration char(36), + fk_locale char(36), + username char(18), + password char(18), + fullname varchar(36), + email_from varchar(72), + email_replyto varchar(72) +); + +CREATE TABLE protocol +( + pk_protocol char(36), + protocol_code char(9), + protocol_name char(36) +); + +CREATE TABLE subscription +( + pk_subscription char(36), + fk_registration char(36), + fk_protocol char(36), + subscription_host char(36), + subscription_user char(18), + subscription_pass char(18), + subscription_auto int +); Added: struts/struts2/trunk/apps/mailreader/src/main/resources/sql/sql-map-config-derby.properties URL: http://svn.apache.org/viewvc/struts/struts2/trunk/apps/mailreader/src/main/resources/sql/sql-map-config-derby.properties?rev=426917&view=auto ============================================================================== --- struts/struts2/trunk/apps/mailreader/src/main/resources/sql/sql-map-config-derby.properties (added) +++ struts/struts2/trunk/apps/mailreader/src/main/resources/sql/sql-map-config-derby.properties Sun Jul 30 12:02:23 2006 @@ -0,0 +1,12 @@ +############################################################## +# Database Connectivity Properties +# (derby - http://db.apache.org/derby/) +############################################################## + +driver=org.apache.derby.jdbc.EmbeddedDriver +url=jdbc:derby:mailreader;create=true +username= +password= +SqlMapPath=mailreader2 +dataSourceType=SIMPLE + Added: struts/struts2/trunk/apps/mailreader/src/main/resources/sql/sql-map-config-hsql.properties URL: http://svn.apache.org/viewvc/struts/struts2/trunk/apps/mailreader/src/main/resources/sql/sql-map-config-hsql.properties?rev=426917&view=auto ============================================================================== --- struts/struts2/trunk/apps/mailreader/src/main/resources/sql/sql-map-config-hsql.properties (added) +++ struts/struts2/trunk/apps/mailreader/src/main/resources/sql/sql-map-config-hsql.properties Sun Jul 30 12:02:23 2006 @@ -0,0 +1,9 @@ +############################################################## +# Database Connectivity Properties +# (HSQL - http://hsql.org/) +############################################################## + +driver=org.hsqldb.jdbcDriver +url=jdbc:hsqldb:mem:mailreader +username=sa +password= Added: struts/struts2/trunk/apps/mailreader/src/main/resources/sql/sql-map.xml URL: http://svn.apache.org/viewvc/struts/struts2/trunk/apps/mailreader/src/main/resources/sql/sql-map.xml?rev=426917&view=auto ============================================================================== --- struts/struts2/trunk/apps/mailreader/src/main/resources/sql/sql-map.xml (added) +++ struts/struts2/trunk/apps/mailreader/src/main/resources/sql/sql-map.xml Sun Jul 30 12:02:23 2006 @@ -0,0 +1,26 @@ +<!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" + "http://ibatis.apache.org/dtd/sql-map-2.dtd";> + +<sqlMap namespace="mailreader"> + + <typeAlias alias="data" + type="mailreader2.AppData"/> + + <update id="registration_update" parameterClass="data"> + </update> + + <select id="subscription_list" parameterClass="data"> + </select> + + <insert id="registration_insert" parameterClass="data"> + </insert> + + <select id="registration_fullname" parameterClass="data" resultClass="data"> + SELECT username, fullname FROM registration WHERE username=#username#; + </select> + + <select id="locale_list" parameterClass="data" resultClass="data"> + SELECT locale_code, locale_name FROM locale; + </select> + +</sqlMap> Added: struts/struts2/trunk/apps/mailreader/src/test/java/mailreader2/BaseSqlMapTest.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/apps/mailreader/src/test/java/mailreader2/BaseSqlMapTest.java?rev=426917&view=auto ============================================================================== --- struts/struts2/trunk/apps/mailreader/src/test/java/mailreader2/BaseSqlMapTest.java (added) +++ struts/struts2/trunk/apps/mailreader/src/test/java/mailreader2/BaseSqlMapTest.java Sun Jul 30 12:02:23 2006 @@ -0,0 +1,60 @@ +package mailreader2; + +import com.ibatis.common.jdbc.ScriptRunner; +import com.ibatis.common.resources.Resources; +import com.ibatis.sqlmap.client.SqlMapClient; +import com.ibatis.sqlmap.client.SqlMapClientBuilder; +import junit.framework.TestCase; + +import javax.sql.DataSource; +import java.io.Reader; +import java.sql.Connection; +import java.util.Properties; + +/** + * @author Ted Husted + * @version $Revision: 1.0 $ $Date: Jul 29, 2006 4:59:19 PM $ + */ +public class BaseSqlMapTest extends TestCase { + + protected static SqlMapClient sqlMap; + + protected static void initSqlMap(String configFile, Properties props) throws Exception { + Reader reader = Resources.getResourceAsReader(configFile); + sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader, props); + reader.close(); + } + + protected static void initScript(String script) throws Exception { + DataSource ds = sqlMap.getDataSource(); + + Connection conn = ds.getConnection(); + + Reader reader = Resources.getResourceAsReader(script); + + ScriptRunner runner = new ScriptRunner(conn, false, false); + runner.setLogWriter(null); + runner.setErrorLogWriter(null); + + runner.runScript(reader); + conn.commit(); + conn.close(); + reader.close(); + } + + + protected void setUp() throws Exception { + if (sqlMap==null) { + initSqlMap("sql-map-config.xml", null); + initScript("sql/mailreader-schema.sql"); + initScript("sql/mailreader-sample.sql"); + } + } + + protected void tearDown() throws Exception { + } + + public void testInit() throws Exception { + assertNotNull(sqlMap); + } +} Added: struts/struts2/trunk/apps/mailreader/src/test/java/mailreader2/MailreaderTest.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/apps/mailreader/src/test/java/mailreader2/MailreaderTest.java?rev=426917&view=auto ============================================================================== --- struts/struts2/trunk/apps/mailreader/src/test/java/mailreader2/MailreaderTest.java (added) +++ struts/struts2/trunk/apps/mailreader/src/test/java/mailreader2/MailreaderTest.java Sun Jul 30 12:02:23 2006 @@ -0,0 +1,22 @@ +package mailreader2; + +/** + * @author Ted Husted + * @version $Revision: 1.0 $ $Date: Jul 29, 2006 5:34:31 PM $ + */ +public class MailreaderTest extends BaseSqlMapTest { + + // SETUP & TEARDOWN + + public void testUser_locale() throws Exception { + AppData output = (AppData) sqlMap.queryForObject("locale_list",null); + assertNotNull(output); + } + + public void testUser_fullname() throws Exception { + AppData input = new AppData(); + input.setUsername("user"); + AppData output = (AppData) sqlMap.queryForObject("registration_fullname", input); + assertEquals("John Q. User", output.getFullname()); + } +} Added: struts/struts2/trunk/apps/mailreader/src/test/resources/sql/mailreader-sample.sql URL: http://svn.apache.org/viewvc/struts/struts2/trunk/apps/mailreader/src/test/resources/sql/mailreader-sample.sql?rev=426917&view=auto ============================================================================== --- struts/struts2/trunk/apps/mailreader/src/test/resources/sql/mailreader-sample.sql (added) +++ struts/struts2/trunk/apps/mailreader/src/test/resources/sql/mailreader-sample.sql Sun Jul 30 12:02:23 2006 @@ -0,0 +1,8 @@ +INSERT INTO locale (pk_locale, locale_code, locale_name) VALUES ('01-en','en','English'), ('02-ru','ru','Russian'), ('03-ja','ja','Japanese'); + +INSERT INTO protocol (pk_protocol, protocol_code, protocol_name) VALUES ('01-pop3','pop3','POP3 Protoocol'), ('02-smtp','smtp','SMTP Protocol'); + +INSERT INTO registration (pk_registration, fk_locale, username, password, fullname, email_from, email_replyto) VALUES ('01-user','01-en','user','pass','John Q. User','[EMAIL PROTECTED]',''); + +INSERT INTO subscription (pk_subscription, fk_registration, fk_protocol, subscription_host, subscription_user, subscription_pass, subscription_auto) VALUES +('01-subscription','01-user','01-pop3','mail.hotmail.com','user1234','bar',0), ('02-subscription','01-user','02-smtp','mail.yahoo.com','jquser','foo',1);