You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by dw...@apache.org on 2009/03/12 14:51:26 UTC
svn commit: r752865 - in /geronimo/daytrader/branches/2.1.3: ./ modules/ear/
modules/ear/src/main/resources/META-INF/
modules/ejb/src/main/java/org/apache/geronimo/samples/daytrader/
modules/ejb/src/main/java/org/apache/geronimo/samples/daytrader/ejb3/...
Author: dwoods
Date: Thu Mar 12 13:51:25 2009
New Revision: 752865
URL: http://svn.apache.org/viewvc?rev=752865&view=rev
Log:
DAYTRADER-65 Enable daytrader works with JBoss 5. Applied patch from Forrest Xia.
Added:
geronimo/daytrader/branches/2.1.3/README.jboss5
geronimo/daytrader/branches/2.1.3/modules/ear/src/main/resources/META-INF/persistence.xml.jboss5
geronimo/daytrader/branches/2.1.3/modules/web/src/main/webapp/dbscripts/other/
geronimo/daytrader/branches/2.1.3/modules/web/src/main/webapp/dbscripts/other/Table.ddl
Removed:
geronimo/daytrader/branches/2.1.3/modules/ejb/src/main/resources/META-INF/jboss.xml
geronimo/daytrader/branches/2.1.3/modules/ejb/src/main/resources/META-INF/jbosscmp-jdbc.xml
geronimo/daytrader/branches/2.1.3/modules/web/src/main/webapp/WEB-INF/jboss-web.xml
Modified:
geronimo/daytrader/branches/2.1.3/modules/ear/pom.xml
geronimo/daytrader/branches/2.1.3/modules/ejb/src/main/java/org/apache/geronimo/samples/daytrader/TradeConfig.java
geronimo/daytrader/branches/2.1.3/modules/ejb/src/main/java/org/apache/geronimo/samples/daytrader/ejb3/TradeSLSBBean.java
geronimo/daytrader/branches/2.1.3/modules/ejb/src/main/resources/META-INF/persistence.xml
geronimo/daytrader/branches/2.1.3/modules/web/src/main/java/org/apache/geronimo/samples/daytrader/web/TradeConfigServlet.java
geronimo/daytrader/branches/2.1.3/modules/web/src/main/webapp/config.jsp
geronimo/daytrader/branches/2.1.3/modules/web/src/main/webapp/dbscripts/db2/Table.ddl
Added: geronimo/daytrader/branches/2.1.3/README.jboss5
URL: http://svn.apache.org/viewvc/geronimo/daytrader/branches/2.1.3/README.jboss5?rev=752865&view=auto
==============================================================================
--- geronimo/daytrader/branches/2.1.3/README.jboss5 (added)
+++ geronimo/daytrader/branches/2.1.3/README.jboss5 Thu Mar 12 13:51:25 2009
@@ -0,0 +1,177 @@
+(C) Copyright 2009 The Apache Software Foundation.
+----------------------------------------------------------------------
+
+These are instructions for building and using daytrader with JBoss 5 standard configuration:
+
+1. Create a JMS definition file "daytrader-jboss5-destinations-service.xml", and copy to
+$JBOSS_INST_HOME/server/standard/deploy/ directory. The file has the fiollowing contents:
+
+<?xml version="1.0" encoding="UTF-8"?>
+<server>
+ <mbean code="org.jboss.jms.server.destination.TopicService"
+ name="jboss.messaging.destination:service=Topic,name=jms/TradeStreamerTopic"
+ xmbean-dd="xmdesc/Topic-xmbean.xml">
+ <depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer</depends>
+ <depends>jboss.messaging:service=PostOffice</depends>
+ <attribute name="JNDIName">TradeStreamerTopic</attribute>
+ </mbean>
+ <mbean code="org.jboss.jms.server.destination.QueueService"
+ name="jboss.messaging.destination:service=Queue,name=jms/TradeBrokerQueue"
+ xmbean-dd="xmdesc/Queue-xmbean.xml">
+ <depends optional-attribute-name="ServerPeer">jboss.messaging:service=ServerPeer</depends>
+ <depends>jboss.messaging:service=PostOffice</depends>
+ <attribute name="JNDIName">TradeBrokerQueue</attribute>
+ </mbean>
+</server>
+
+
+
+
+2. Create a datasource for daytrader.
+For example, If using MySQL, create a mysql database called tradedb and load it with
+the derby.sql. Create a user named daytrader and grant the proper privileges as follows:
+
+ grant all on tradedb.* to daytrader identified by 'daytrader';
+ grant all on tradedb.* to daytrader@localhost identified by 'daytrader';
+
+Then create a JBoss mysql datasource file "daytrader-jboss5-mysql-ds.xml" with the following contents:
+
+<!-- mySQL datasource -->
+<?xml version="1.0" encoding="UTF-8"?>
+<datasources>
+ <local-tx-datasource>
+ <!-- Don't change this datasource jndi name -->
+ <jndi-name>jdbc/TradeDataSource</jndi-name>
+ <connection-url>jdbc:mysql://localhost:3306/tradedb</connection-url>
+ <driver-class>com.mysql.jdbc.Driver</driver-class>
+ <user-name>daytrader</user-name>
+ <password>daytrader</password>
+ <exception-sorter-class-name>
+ org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter
+ </exception-sorter-class-name>
+ <metadata>
+ <type-mapping>mySQL</type-mapping>
+ </metadata>
+ </local-tx-datasource>
+</datasources>
+
+then copy to $JBOSS_INST_HOME/server/standard/deploy/ directory.
+
+Sample of DB2 datasource:
+<?xml version="1.0" encoding="UTF-8"?>
+<datasources>
+ <local-tx-datasource>
+ <jndi-name>jdbc/TradeDataSource</jndi-name>
+ <use-java-context>false</use-java-context>
+ <connection-url>jdbc:db2://localhost:50000/tradedb</connection-url>
+ <driver-class>com.ibm.db2.jcc.DB2Driver</driver-class>
+ <user-name>trade</user-name>
+ <password>trade</password>
+ <check-valid-connection-sql>select * from sysibm.tables</check-valid-connection-sql>
+ <metadata>
+ <type-mapping>DB2</type-mapping>
+ </metadata>
+ </local-tx-datasource>
+</datasources>
+
+Sample of Oracle datasource:
+<?xml version="1.0" encoding="UTF-8"?>
+<datasources>
+ <local-tx-datasource>
+ <jndi-name>jdbc/TradeDataSource</jndi-name>
+ <connection-url>jdbc:oracle:thin:@localhost:1521:tradedb</connection-url>
+ <driver-class>oracle.jdbc.driver.OracleDriver</driver-class>
+ <user-name>trade</user-name>
+ <password>trade</password>
+ <exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.OracleExceptionSorter</exception-sorter-class-name>
+ <metadata>
+ <type-mapping>Oracle10g</type-mapping>
+ </metadata>
+ </local-tx-datasource>
+</datasources>
+
+
+
+
+3. Rename these files manually:
+ # $DAYTRADER_SRC_HOME/modules/ejb/src/main/resources/META-INF/persistence.xml
+ --> $DAYTRADER_SRC_HOME/modules/ejb/src/main/resources/META-INF/persistence.xml.bak
+
+ # $DAYTRADER_SRC_HOME/modules/ear/src/main/resources/META-INF/persistence.xml.jboss5
+ --> $DAYTRADER_SRC_HOME/modules/ear/src/main/resources/META-INF/persistence.xml
+
+
+
+
+4. Use proper datasource jndi name according to your database vendor. Modify these files:
+ $DAYTRADER_SRC_HOME/modules/ear/src/main/resources/META-INF/persistence.xml
+ $DAYTRADER_SRC_HOME/modules/ejb/src/main/resources/META-INF/jboss.xml
+ $DAYTRADER_SRC_HOME/modules/web/src/main/webapp/WEB-INF/jboss-web.xml
+
+
+
+
+5. Modify $DAYTRADER_SRC_HOME/modules/ejb/pom.xml to comment out OpenJPA PCEnhancer Ant task:
+ <!--<plugin>
+ <artifactId>maven-antrun-plugin</artifactId>
+ <executions>
+ <execution>
+ <phase>compile</phase>
+ <configuration>
+ <tasks>
+ <path id="enhance.path.ref">
+ <fileset dir="${project.build.outputDirectory}">
+ <include name="**/*.class"/>
+ </fileset>
+ </path>
+ <pathconvert property="enhance.files"
+ refid="enhance.path.ref"
+ pathsep=" "/>
+ <java classname="org.apache.openjpa.enhance.PCEnhancer">
+ <arg line="-p persistence.xml"/>
+ <arg line="${enhance.files}"/>
+ <classpath>
+ <path refid="maven.dependency.classpath"/>
+ <path refid="maven.compile.classpath"/>
+ </classpath>
+ </java>
+ </tasks>
+ </configuration>
+ <goals>
+ <goal>run</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>-->
+
+
+
+
+6. Modify $DAYTRADER_SRC_HOME/modules/ear/pom.xml to comment out daytrader streamer client module
+Since not figure out how to make it work in jboss 5 :-/
+
+ <!--<dependency>
+ <groupId>org.apache.geronimo.daytrader</groupId>
+ <artifactId>daytrader-streamer</artifactId>
+ <version>${pom.version}</version>
+ </dependency>-->
+
+
+ <!--<javaModule>
+ <groupId>org.apache.geronimo.daytrader</groupId>
+ <artifactId>daytrader-streamer</artifactId>
+ <bundleFileName>streamer.jar</bundleFileName>
+ <includeInApplicationXml>true</includeInApplicationXml>
+ </javaModule>-->
+
+
+
+7. Build it to ear ball:
+ mvn clean install
+
+
+
+8. Finally, copy the $DAYTRADER_SRC_HOME/modules/ear/target/daytrader-ear-2.2-SNAPSHOT.ear
+to your $JBOSS_INST_HOME/server/standard/deploy/ directory.
+
+Good luck!
Modified: geronimo/daytrader/branches/2.1.3/modules/ear/pom.xml
URL: http://svn.apache.org/viewvc/geronimo/daytrader/branches/2.1.3/modules/ear/pom.xml?rev=752865&r1=752864&r2=752865&view=diff
==============================================================================
--- geronimo/daytrader/branches/2.1.3/modules/ear/pom.xml (original)
+++ geronimo/daytrader/branches/2.1.3/modules/ear/pom.xml Thu Mar 12 13:51:25 2009
@@ -98,6 +98,7 @@
HACK: Include legal muck from maven-remote-resources-plugin
-->
<resourcesDir>${project.build.outputDirectory}</resourcesDir>
+ <earSourceDirectory>${basedir}/src/main/resources</earSourceDirectory>
</configuration>
</plugin>
</plugins>
Added: geronimo/daytrader/branches/2.1.3/modules/ear/src/main/resources/META-INF/persistence.xml.jboss5
URL: http://svn.apache.org/viewvc/geronimo/daytrader/branches/2.1.3/modules/ear/src/main/resources/META-INF/persistence.xml.jboss5?rev=752865&view=auto
==============================================================================
--- geronimo/daytrader/branches/2.1.3/modules/ear/src/main/resources/META-INF/persistence.xml.jboss5 (added)
+++ geronimo/daytrader/branches/2.1.3/modules/ear/src/main/resources/META-INF/persistence.xml.jboss5 Thu Mar 12 13:51:25 2009
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<persistence xmlns="http://java.sun.com/xml/ns/persistence"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
+ version="1.0">
+
+
+ <persistence-unit transaction-type="JTA" name="daytrader">
+ <provider>org.hibernate.ejb.HibernatePersistence</provider>
+ <!-- If using DB2, comment out this line -->
+ <!--<jta-data-source>jdbc/TradeDataSource</jta-data-source> -->
+ <!-- If using mySQL or Oracle, comment out this line -->
+ <jta-data-source>java:jdbc/TradeDataSource</jta-data-source>
+
+
+ <class>org.apache.geronimo.samples.daytrader.AccountDataBean</class>
+ <class>org.apache.geronimo.samples.daytrader.AccountProfileDataBean</class>
+ <class>org.apache.geronimo.samples.daytrader.HoldingDataBean</class>
+ <class>org.apache.geronimo.samples.daytrader.OrderDataBean</class>
+ <class>org.apache.geronimo.samples.daytrader.QuoteDataBean</class>
+ <exclude-unlisted-classes>true</exclude-unlisted-classes>
+
+ <properties>
+ <!-- According to your database type, you can set dialect properly -->
+ <!--<property name="hibernate.dialect" value="org.hibernate.dialect.DB2Dialect"/>-->
+ <!--<property name="hibernate.dialect" value="org.hibernate.dialect.OracleDialect"/>-->
+ <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect"/>
+ <!-- This Hibernate property will update database schema according to EJB3 annotation definitions
+ Possible value: validate, update, create, create-drop -->
+ <!--<property name="hibernate.hbm2ddl.auto" value="update"/>-->
+ </properties>
+ </persistence-unit>
+</persistence>
Modified: geronimo/daytrader/branches/2.1.3/modules/ejb/src/main/java/org/apache/geronimo/samples/daytrader/TradeConfig.java
URL: http://svn.apache.org/viewvc/geronimo/daytrader/branches/2.1.3/modules/ejb/src/main/java/org/apache/geronimo/samples/daytrader/TradeConfig.java?rev=752865&r1=752864&r2=752865&view=diff
==============================================================================
--- geronimo/daytrader/branches/2.1.3/modules/ejb/src/main/java/org/apache/geronimo/samples/daytrader/TradeConfig.java (original)
+++ geronimo/daytrader/branches/2.1.3/modules/ejb/src/main/java/org/apache/geronimo/samples/daytrader/TradeConfig.java Thu Mar 12 13:51:25 2009
@@ -39,6 +39,12 @@
public static final int DIRECT = 1;
public static final int SESSION3 = 2;
public static int runTimeMode = DIRECT;
+
+ /* Trade JPA Layer parameters */
+ public static String[] jpaLayerNames = {"OpenJPA", "Hibernate"};
+ public static final int OPENJPA = 0;
+ public static final int HIBERNATE = 1;
+ public static int jpaLayer = OPENJPA;
public static String[] orderProcessingModeNames =
{ "Synchronous", "Asynchronous_2-Phase" };
@@ -876,6 +882,14 @@
public static int getMarketSummaryInterval() {
return TradeConfig.marketSummaryInterval;
}
-
+
+ /**
+ * Return the list of JPA Layer names
+ * Creation date: (01/10/2009)
+ * @return java.lang.String[]
+ */
+ public static java.lang.String[] getJPALayerNames() {
+ return jpaLayerNames;
+ }
}
Modified: geronimo/daytrader/branches/2.1.3/modules/ejb/src/main/java/org/apache/geronimo/samples/daytrader/ejb3/TradeSLSBBean.java
URL: http://svn.apache.org/viewvc/geronimo/daytrader/branches/2.1.3/modules/ejb/src/main/java/org/apache/geronimo/samples/daytrader/ejb3/TradeSLSBBean.java?rev=752865&r1=752864&r2=752865&view=diff
==============================================================================
--- geronimo/daytrader/branches/2.1.3/modules/ejb/src/main/java/org/apache/geronimo/samples/daytrader/ejb3/TradeSLSBBean.java (original)
+++ geronimo/daytrader/branches/2.1.3/modules/ejb/src/main/java/org/apache/geronimo/samples/daytrader/ejb3/TradeSLSBBean.java Thu Mar 12 13:51:25 2009
@@ -367,9 +367,35 @@
thisOrder.getQuote();
}
- Query updateStatus = entityManager.createNamedQuery("orderejb.completeClosedOrders");
- updateStatus.setParameter("userID", userID);
- updateStatus.executeUpdate();
+ /* Add logic to do update orders operation, because JBoss5' Hibernate 3.3.1GA DB2Dialect
+ * and MySQL5Dialect do not work with annotated query "orderejb.completeClosedOrders"
+ * defined in OrderDatabean
+ */
+ if (TradeConfig.jpaLayer == TradeConfig.OPENJPA) {
+ Query updateStatus = entityManager.createNamedQuery("orderejb.completeClosedOrders");
+ updateStatus.setParameter("userID", userID);
+ updateStatus.executeUpdate();
+ }
+
+ if (TradeConfig.jpaLayer == TradeConfig.HIBERNATE) {
+ Query findaccountid = entityManager.createNativeQuery("select "+
+ "a.ACCOUNTID, "+
+ "a.LOGINCOUNT, "+
+ "a.LOGOUTCOUNT, "+
+ "a.LASTLOGIN, "+
+ "a.CREATIONDATE, "+
+ "a.BALANCE, "+
+ "a.OPENBALANCE, "+
+ "a.PROFILE_USERID "+
+ "from accountejb a where a.profile_userid = ?", org.apache.geronimo.samples.daytrader.AccountDataBean.class);
+ findaccountid.setParameter(1, userID);
+ AccountDataBean account = (AccountDataBean)findaccountid.getSingleResult();
+ Integer accountid = account.getAccountID();
+ Query updateStatus = entityManager.createNativeQuery("UPDATE orderejb o SET o.orderStatus = 'completed' WHERE o.orderStatus = 'closed' AND o.ACCOUNT_ACCOUNTID = ?");
+ updateStatus.setParameter(1, accountid.intValue());
+ updateStatus.executeUpdate();
+ }
+
return results;
} catch (Exception e) {
Log.error("TradeSLSBBean.getClosedOrders", e);
@@ -412,10 +438,20 @@
if (Log.doTrace())
Log.trace("TradeSLSBBean:updateQuote", symbol, changeFactor);
- // QuoteDataBean quote = entityManager.find(QuoteDataBean.class, symbol);
- Query q = entityManager.createNamedQuery("quoteejb.quoteForUpdate");
- q.setParameter(1, symbol);
- QuoteDataBean quote = (QuoteDataBean) q.getSingleResult();
+ /* Add logic to determine JPA layer, because JBoss5' Hibernate 3.3.1GA DB2Dialect
+ * and MySQL5Dialect do not work with annotated query "quoteejb.quoteForUpdate"
+ * defined in QuoteDatabean
+ */
+ QuoteDataBean quote = new QuoteDataBean();
+ if (TradeConfig.jpaLayer == TradeConfig.HIBERNATE) {
+ quote = entityManager.find(QuoteDataBean.class, symbol);
+ }
+
+ if (TradeConfig.jpaLayer == TradeConfig.OPENJPA) {
+ Query q = entityManager.createNamedQuery("quoteejb.quoteForUpdate");
+ q.setParameter(1, symbol);
+ quote = (QuoteDataBean) q.getSingleResult();
+ }
BigDecimal oldPrice = quote.getPrice();
Modified: geronimo/daytrader/branches/2.1.3/modules/ejb/src/main/resources/META-INF/persistence.xml
URL: http://svn.apache.org/viewvc/geronimo/daytrader/branches/2.1.3/modules/ejb/src/main/resources/META-INF/persistence.xml?rev=752865&r1=752864&r2=752865&view=diff
==============================================================================
--- geronimo/daytrader/branches/2.1.3/modules/ejb/src/main/resources/META-INF/persistence.xml (original)
+++ geronimo/daytrader/branches/2.1.3/modules/ejb/src/main/resources/META-INF/persistence.xml Thu Mar 12 13:51:25 2009
@@ -32,6 +32,8 @@
<properties>
<property name="openjpa.jdbc.DBDictionary" value="derby" />
<property name="openjpa.BrokerImpl" value="non-finalizing" />
+ <!-- To enable OpenJPA to generate foreign key constraints, comment out this line -->
+ <!-- <property name="openjpa.jdbc.MappingDefaults" value="ForeignKeyDeleteAction=restrict,JoinForeignKeyDeleteAction=restrict"/> -->
<property name="openjpa.jdbc.SynchronizeMappings" value="buildSchema(ForeignKeys=true)"/>
<property name="openjpa.Sequence" value="table(Table=OPENJPASEQ, Increment=100)"/>
</properties>
Modified: geronimo/daytrader/branches/2.1.3/modules/web/src/main/java/org/apache/geronimo/samples/daytrader/web/TradeConfigServlet.java
URL: http://svn.apache.org/viewvc/geronimo/daytrader/branches/2.1.3/modules/web/src/main/java/org/apache/geronimo/samples/daytrader/web/TradeConfigServlet.java?rev=752865&r1=752864&r2=752865&view=diff
==============================================================================
--- geronimo/daytrader/branches/2.1.3/modules/web/src/main/java/org/apache/geronimo/samples/daytrader/web/TradeConfigServlet.java (original)
+++ geronimo/daytrader/branches/2.1.3/modules/web/src/main/java/org/apache/geronimo/samples/daytrader/web/TradeConfigServlet.java Thu Mar 12 13:51:25 2009
@@ -125,6 +125,28 @@
}
currentConfigStr += "\t\tRunTimeMode:\t\t" + TradeConfig.runTimeModeNames[TradeConfig.runTimeMode] + "\n";
+ /* Add JPA layer choice to avoid some ugly Hibernate bugs */
+ String jpaLayerStr = req.getParameter("JPALayer");
+ if (jpaLayerStr != null)
+ {
+ try
+ {
+ int i = Integer.parseInt(jpaLayerStr);
+ if ((i >= 0)
+ && (i < TradeConfig.jpaLayerNames.length)) //Input validation
+ TradeConfig.jpaLayer = i;
+ }
+ catch (Exception e)
+ {
+ Log.error(
+ e,
+ "TradeConfigServlet.doConfigUpdate(..): minor exception caught",
+ "trying to set JPALayer to " + jpaLayerStr,
+ "reverting to current value");
+
+ } // If the value is bad, simply revert to current
+ }
+ currentConfigStr += "\t\tJPALayer:\t\t" + TradeConfig.jpaLayerNames[TradeConfig.jpaLayer] + "\n";
String orderProcessingModeStr = req.getParameter("OrderProcessingMode");
if (orderProcessingModeStr != null)
Modified: geronimo/daytrader/branches/2.1.3/modules/web/src/main/webapp/config.jsp
URL: http://svn.apache.org/viewvc/geronimo/daytrader/branches/2.1.3/modules/web/src/main/webapp/config.jsp?rev=752865&r1=752864&r2=752865&view=diff
==============================================================================
--- geronimo/daytrader/branches/2.1.3/modules/web/src/main/webapp/config.jsp (original)
+++ geronimo/daytrader/branches/2.1.3/modules/web/src/main/webapp/config.jsp Thu Mar 12 13:51:25 2009
@@ -105,6 +105,32 @@
FAQ</A> for details.<BR>
</TD>
</TR>
+
+
+ <TR>
+ <TD align="left"><B>JPA Layer</B>
+ <P align="left"><%configParm = "JPALayer";
+names = TradeConfig.jpaLayerNames;
+index = TradeConfig.jpaLayer;
+for (int i = 0; i < names.length; i++) {
+ out.print(
+ "<INPUT type=\"radio\" name=\""
+ + configParm
+ + "\" value=\""
+ + i
+ + "\" ");
+ if (index == i)
+ out.print("checked");
+ out.print("> " + names[i] + "<BR>");
+}
+%></P>
+ </TD>
+ <TD><BR>
+ JPA Layer determines what kind of JPA Implementation Daytrader
+ EJB classes use. Typically, Apache Geronimo uses OpenJPA, and RedHat
+ JBoss 5 uses Hibernate.<BR>
+ </TD>
+ </TR>
<TR>
Modified: geronimo/daytrader/branches/2.1.3/modules/web/src/main/webapp/dbscripts/db2/Table.ddl
URL: http://svn.apache.org/viewvc/geronimo/daytrader/branches/2.1.3/modules/web/src/main/webapp/dbscripts/db2/Table.ddl?rev=752865&r1=752864&r2=752865&view=diff
==============================================================================
--- geronimo/daytrader/branches/2.1.3/modules/web/src/main/webapp/dbscripts/db2/Table.ddl (original)
+++ geronimo/daytrader/branches/2.1.3/modules/web/src/main/webapp/dbscripts/db2/Table.ddl Thu Mar 12 13:51:25 2009
@@ -28,18 +28,18 @@
QUANTITY DOUBLE NOT NULL,
PURCHASEDATE TIMESTAMP,
ACCOUNT_ACCOUNTID INTEGER,
- QUOTE_SYMBOL VARCHAR(250));
+ QUOTE_SYMBOL VARCHAR(254));
ALTER TABLE HOLDINGEJB
ADD CONSTRAINT PK_HOLDINGEJB PRIMARY KEY (HOLDINGID);
CREATE TABLE ACCOUNTPROFILEEJB
- (ADDRESS VARCHAR(250),
- PASSWD VARCHAR(250),
- USERID VARCHAR(250) NOT NULL,
- EMAIL VARCHAR(250),
- CREDITCARD VARCHAR(250),
- FULLNAME VARCHAR(250));
+ (ADDRESS VARCHAR(254),
+ PASSWD VARCHAR(254),
+ USERID VARCHAR(254) NOT NULL,
+ EMAIL VARCHAR(254),
+ CREDITCARD VARCHAR(254),
+ FULLNAME VARCHAR(254));
ALTER TABLE ACCOUNTPROFILEEJB
ADD CONSTRAINT PK_ACCOUNTPROFILE2 PRIMARY KEY (USERID);
@@ -50,8 +50,8 @@
VOLUME DOUBLE NOT NULL,
PRICE DECIMAL(14, 2),
HIGH DECIMAL(14, 2),
- COMPANYNAME VARCHAR(250),
- SYMBOL VARCHAR(250) NOT NULL,
+ COMPANYNAME VARCHAR(254),
+ SYMBOL VARCHAR(254) NOT NULL,
CHANGE1 DOUBLE NOT NULL);
ALTER TABLE QUOTEEJB
@@ -59,7 +59,7 @@
CREATE TABLE KEYGENEJB
(KEYVAL INTEGER NOT NULL,
- KEYNAME VARCHAR(250) NOT NULL);
+ KEYNAME VARCHAR(254) NOT NULL);
ALTER TABLE KEYGENEJB
ADD CONSTRAINT PK_KEYGENEJB PRIMARY KEY (KEYNAME);
@@ -72,7 +72,7 @@
ACCOUNTID INTEGER NOT NULL,
LASTLOGIN TIMESTAMP,
LOGINCOUNT INTEGER NOT NULL,
- PROFILE_USERID VARCHAR(250));
+ PROFILE_USERID VARCHAR(254));
ALTER TABLE ACCOUNTEJB
ADD CONSTRAINT PK_ACCOUNTEJB PRIMARY KEY (ACCOUNTID);
@@ -80,14 +80,14 @@
CREATE TABLE ORDEREJB
(ORDERFEE DECIMAL(14, 2),
COMPLETIONDATE TIMESTAMP,
- ORDERTYPE VARCHAR(250),
- ORDERSTATUS VARCHAR(250),
+ ORDERTYPE VARCHAR(254),
+ ORDERSTATUS VARCHAR(254),
PRICE DECIMAL(14, 2),
QUANTITY DOUBLE NOT NULL,
OPENDATE TIMESTAMP,
ORDERID INTEGER NOT NULL,
ACCOUNT_ACCOUNTID INTEGER,
- QUOTE_SYMBOL VARCHAR(250),
+ QUOTE_SYMBOL VARCHAR(254),
HOLDING_HOLDINGID INTEGER);
ALTER TABLE ORDEREJB
Added: geronimo/daytrader/branches/2.1.3/modules/web/src/main/webapp/dbscripts/other/Table.ddl
URL: http://svn.apache.org/viewvc/geronimo/daytrader/branches/2.1.3/modules/web/src/main/webapp/dbscripts/other/Table.ddl?rev=752865&view=auto
==============================================================================
--- geronimo/daytrader/branches/2.1.3/modules/web/src/main/webapp/dbscripts/other/Table.ddl (added)
+++ geronimo/daytrader/branches/2.1.3/modules/web/src/main/webapp/dbscripts/other/Table.ddl Thu Mar 12 13:51:25 2009
@@ -0,0 +1,107 @@
+## Licensed to the Apache Software Foundation (ASF) under one or more
+## contributor license agreements. See the NOTICE file distributed with
+## this work for additional information regarding copyright ownership.
+## The ASF licenses this file to You under the Apache License, Version 2.0
+## (the "License"); you may not use this file except in compliance with
+## the License. You may obtain a copy of the License at
+##
+## http://www.apache.org/licenses/LICENSE-2.0
+##
+## Unless required by applicable law or agreed to in writing, software
+## distributed under the License is distributed on an "AS IS" BASIS,
+## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+## See the License for the specific language governing permissions and
+## limitations under the License.
+
+# Each SQL statement in this file should terminate with a semicolon (;)
+# Lines starting with the pound character (#) are considered as comments
+DROP TABLE HOLDINGEJB;
+DROP TABLE ACCOUNTPROFILEEJB;
+DROP TABLE QUOTEEJB;
+DROP TABLE KEYGENEJB;
+DROP TABLE ACCOUNTEJB;
+DROP TABLE ORDEREJB;
+
+CREATE TABLE HOLDINGEJB
+ (PURCHASEPRICE DECIMAL(14, 2),
+ HOLDINGID INTEGER NOT NULL,
+ QUANTITY DOUBLE NOT NULL,
+ PURCHASEDATE TIMESTAMP,
+ ACCOUNT_ACCOUNTID INTEGER,
+ QUOTE_SYMBOL VARCHAR(250));
+
+ALTER TABLE HOLDINGEJB
+ ADD CONSTRAINT PK_HOLDINGEJB PRIMARY KEY (HOLDINGID);
+
+CREATE TABLE ACCOUNTPROFILEEJB
+ (ADDRESS VARCHAR(250),
+ PASSWD VARCHAR(250),
+ USERID VARCHAR(250) NOT NULL,
+ EMAIL VARCHAR(250),
+ CREDITCARD VARCHAR(250),
+ FULLNAME VARCHAR(250));
+
+ALTER TABLE ACCOUNTPROFILEEJB
+ ADD CONSTRAINT PK_ACCOUNTPROFILE2 PRIMARY KEY (USERID);
+
+CREATE TABLE QUOTEEJB
+ (LOW DECIMAL(14, 2),
+ OPEN1 DECIMAL(14, 2),
+ VOLUME DOUBLE NOT NULL,
+ PRICE DECIMAL(14, 2),
+ HIGH DECIMAL(14, 2),
+ COMPANYNAME VARCHAR(250),
+ SYMBOL VARCHAR(250) NOT NULL,
+ CHANGE1 DOUBLE NOT NULL);
+
+ALTER TABLE QUOTEEJB
+ ADD CONSTRAINT PK_QUOTEEJB PRIMARY KEY (SYMBOL);
+
+CREATE TABLE KEYGENEJB
+ (KEYVAL INTEGER NOT NULL,
+ KEYNAME VARCHAR(250) NOT NULL);
+
+ALTER TABLE KEYGENEJB
+ ADD CONSTRAINT PK_KEYGENEJB PRIMARY KEY (KEYNAME);
+
+CREATE TABLE ACCOUNTEJB
+ (CREATIONDATE TIMESTAMP,
+ OPENBALANCE DECIMAL(14, 2),
+ LOGOUTCOUNT INTEGER NOT NULL,
+ BALANCE DECIMAL(14, 2),
+ ACCOUNTID INTEGER NOT NULL,
+ LASTLOGIN TIMESTAMP,
+ LOGINCOUNT INTEGER NOT NULL,
+ PROFILE_USERID VARCHAR(250));
+
+ALTER TABLE ACCOUNTEJB
+ ADD CONSTRAINT PK_ACCOUNTEJB PRIMARY KEY (ACCOUNTID);
+
+CREATE TABLE ORDEREJB
+ (ORDERFEE DECIMAL(14, 2),
+ COMPLETIONDATE TIMESTAMP,
+ ORDERTYPE VARCHAR(250),
+ ORDERSTATUS VARCHAR(250),
+ PRICE DECIMAL(14, 2),
+ QUANTITY DOUBLE NOT NULL,
+ OPENDATE TIMESTAMP,
+ ORDERID INTEGER NOT NULL,
+ ACCOUNT_ACCOUNTID INTEGER,
+ QUOTE_SYMBOL VARCHAR(250),
+ HOLDING_HOLDINGID INTEGER);
+
+ALTER TABLE ORDEREJB
+ ADD CONSTRAINT PK_ORDEREJB PRIMARY KEY (ORDERID);
+
+ALTER TABLE HOLDINGEJB VOLATILE;
+ALTER TABLE ACCOUNTPROFILEEJB VOLATILE;
+ALTER TABLE QUOTEEJB VOLATILE;
+ALTER TABLE KEYGENEJB VOLATILE;
+ALTER TABLE ACCOUNTEJB VOLATILE;
+ALTER TABLE ORDEREJB VOLATILE;
+
+CREATE INDEX ACCOUNT_USERID ON ACCOUNTEJB(PROFILE_USERID);
+CREATE INDEX HOLDING_ACCOUNTID ON HOLDINGEJB(ACCOUNT_ACCOUNTID);
+CREATE INDEX ORDER_ACCOUNTID ON ORDEREJB(ACCOUNT_ACCOUNTID);
+CREATE INDEX ORDER_HOLDINGID ON ORDEREJB(HOLDING_HOLDINGID);
+CREATE INDEX CLOSED_ORDERS ON ORDEREJB(ACCOUNT_ACCOUNTID,ORDERSTATUS);