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);


Reply via email to