Author: craigmcc
Date: Mon Jan 30 23:22:54 2006
New Revision: 373749
URL: http://svn.apache.org/viewcvs?rev=373749&view=rev
Log:
Update the basic application to create a trivial table ZIP_CODES. Unfortunately
it doesn't actually display the data yet ... something wierd between JSF and
Derby, I think ...
Modified:
struts/shale/trunk/sql-browser/derby.log
struts/shale/trunk/sql-browser/src/java/org/apache/shale/examples/sqlbrowser/Application.java
struts/shale/trunk/sql-browser/src/java/org/apache/shale/examples/sqlbrowser/Listener.java
struts/shale/trunk/sql-browser/src/java/org/apache/shale/examples/sqlbrowser/Query.java
Modified: struts/shale/trunk/sql-browser/derby.log
URL:
http://svn.apache.org/viewcvs/struts/shale/trunk/sql-browser/derby.log?rev=373749&r1=373748&r2=373749&view=diff
==============================================================================
--- struts/shale/trunk/sql-browser/derby.log (original)
+++ struts/shale/trunk/sql-browser/derby.log Mon Jan 30 23:22:54 2006
@@ -1,10 +1,10 @@
----------------------------------------------------------------
-2006-01-31 05:59:02.653 GMT:
- Booting Derby version The Apache Software Foundation - Apache Derby -
10.1.2.1 - (330608): instance c013800d-0109-1f0a-ea90-0000004fd248
+2006-01-31 07:20:22.377 GMT:
+ Booting Derby version The Apache Software Foundation - Apache Derby -
10.1.2.1 - (330608): instance c013800d-0109-1f55-5f40-0000009eca30
on database directory
/home/craigmcc/jakarta-tomcat-5.0.28/work/Catalina/localhost/shale-sql-browser/DATABASE
Database Class Loader started - derby.database.classpath=''
-2006-01-31 06:00:37.431 GMT:
-Shutting down instance c013800d-0109-1f0a-ea90-0000004fd248
+2006-01-31 07:22:11.658 GMT:
+Shutting down instance c013800d-0109-1f55-5f40-0000009eca30
----------------------------------------------------------------
Modified:
struts/shale/trunk/sql-browser/src/java/org/apache/shale/examples/sqlbrowser/Application.java
URL:
http://svn.apache.org/viewcvs/struts/shale/trunk/sql-browser/src/java/org/apache/shale/examples/sqlbrowser/Application.java?rev=373749&r1=373748&r2=373749&view=diff
==============================================================================
---
struts/shale/trunk/sql-browser/src/java/org/apache/shale/examples/sqlbrowser/Application.java
(original)
+++
struts/shale/trunk/sql-browser/src/java/org/apache/shale/examples/sqlbrowser/Application.java
Mon Jan 30 23:22:54 2006
@@ -136,7 +136,7 @@
FacesContext context = FacesContext.getCurrentInstance();
// FIXME - localize the label
- list.add(new SelectItem("", "Embedded"));
+ list.add(new SelectItem("", "(Internal)"));
}
Modified:
struts/shale/trunk/sql-browser/src/java/org/apache/shale/examples/sqlbrowser/Listener.java
URL:
http://svn.apache.org/viewcvs/struts/shale/trunk/sql-browser/src/java/org/apache/shale/examples/sqlbrowser/Listener.java?rev=373749&r1=373748&r2=373749&view=diff
==============================================================================
---
struts/shale/trunk/sql-browser/src/java/org/apache/shale/examples/sqlbrowser/Listener.java
(original)
+++
struts/shale/trunk/sql-browser/src/java/org/apache/shale/examples/sqlbrowser/Listener.java
Mon Jan 30 23:22:54 2006
@@ -19,7 +19,9 @@
package org.apache.shale.examples.sqlbrowser;
import java.io.File;
+import java.sql.Connection;
import java.sql.SQLException;
+import java.sql.Statement;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.faces.FacesException;
@@ -97,8 +99,6 @@
// Calculate a database URL for the database to be created
ServletContext context = event.getServletContext();
File tempDir = (File)
context.getAttribute("javax.servlet.context.tempdir");
-// String url = "jdbc:derby:" + tempDir.getAbsolutePath() +
-// File.separator + "DATABASE";
String url = tempDir.getAbsolutePath() + File.separator + "DATABASE";
if (logger.isLoggable(Level.INFO)) {
logger.log(Level.INFO, "Creating database " + url);
@@ -107,6 +107,7 @@
// Create and publish a data source for the embedded database
try {
ds = new InternalDataSource(url);
+ populate(ds);
} catch (SQLException e) {
if (logger.isLoggable(Level.SEVERE)) {
while (e != null) {
@@ -117,6 +118,78 @@
throw new FacesException("SQLException occurred during startup
(see log for details): " + e.getMessage());
}
context.setAttribute(INTERNAL_DATA_SOURCE, ds);
+
+ }
+
+
+ // ----------------------------------------------------- Private Static
Data
+
+
+ /**
+ * <p>Initialization commands for the internal database. If an exception
+ * occurs on the first one (presumed to be a CREATE TABLE), then the
+ * database is assumed to be already populated.</p>
+ */
+ private static final String populate[] = {
+ "create table zip_codes (" +
+ "zip_code varchar(10)," +
+ "city varchar(30)," +
+ "state varchar(2)" +
+ ")",
+ "insert into zip_codes (zip_code, city, state) " +
+ "values ('97062', 'Tualatin', 'OR')",
+ "insert into zip_codes (zip_code, city, state) " +
+ "values ('97034', 'Lake Oswego', 'OR')",
+ "insert into zip_codes (zip_code, city, state) " +
+ "values ('97035', 'Lake Oswego', 'OR')",
+ };
+
+
+
+ // --------------------------------------------------------- Private
Methods
+
+
+ /**
+ * <p>Populate the internal database with dummy data.</p>
+ *
+ * @param ds <code>DataSource</code> for the internal database
+ *
+ * @exception SQLException if a database error occurs
+ */
+ private void populate(DataSource ds) throws SQLException {
+
+ int i = -1;
+ Connection conn = null;
+ Statement stmt = null;
+ try {
+ conn = ds.getConnection();
+ for (i = 0; i < populate.length; i++) {
+ System.err.println("populate(): Executing: " + populate[i]);
+ stmt = conn.createStatement();
+ stmt.executeUpdate(populate[i]);
+ stmt.close();
+ }
+ } catch (SQLException e) {
+ if (i == 0) {
+ return; // Database is already populated
+ }
+ throw e;
+ } finally {
+ if (stmt != null) {
+ try {
+ stmt.close();
+ } catch (SQLException e) {
+ ;
+ }
+ }
+ if (conn != null) {
+ try {
+ conn.close();
+ } catch (SQLException e) {
+ ;
+ }
+ }
+ }
}
Modified:
struts/shale/trunk/sql-browser/src/java/org/apache/shale/examples/sqlbrowser/Query.java
URL:
http://svn.apache.org/viewcvs/struts/shale/trunk/sql-browser/src/java/org/apache/shale/examples/sqlbrowser/Query.java?rev=373749&r1=373748&r2=373749&view=diff
==============================================================================
---
struts/shale/trunk/sql-browser/src/java/org/apache/shale/examples/sqlbrowser/Query.java
(original)
+++
struts/shale/trunk/sql-browser/src/java/org/apache/shale/examples/sqlbrowser/Query.java
Mon Jan 30 23:22:54 2006
@@ -23,8 +23,12 @@
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
+import java.util.Iterator;
+import java.util.List;
import javax.faces.application.FacesMessage;
+import javax.faces.component.UIColumn;
import javax.faces.component.html.HtmlDataTable;
+import javax.faces.component.html.HtmlOutputText;
import javax.faces.context.FacesContext;
import javax.faces.model.ResultSetDataModel;
import javax.sql.DataSource;
@@ -160,16 +164,44 @@
// Execute the requested query
System.err.println("prerender(): Prepare and execute query");
- stmt = conn.prepareStatement(query);
+ stmt = conn.prepareStatement(query,
+ ResultSet.TYPE_SCROLL_INSENSITIVE,
+ ResultSet.CONCUR_READ_ONLY);
rs = stmt.executeQuery();
// Acquire the result set metadata
+ System.err.println("prerender(): Acquiring result set metadata");
ResultSetMetaData rsmd = rs.getMetaData();
System.err.println("prerender(): There are " +
rsmd.getColumnCount() + " columns");
// Wire up our table binding
+ System.err.println("prerender(): Wiring up our table binding");
+ resultSetDataModel = new ResultSetDataModel();
+ resultSetDataModel.setWrappedData(rs);
+ results.setValueBinding("value",
+
context.getApplication().createValueBinding("#{query.resultSetDataModel}"));
+ System.err.println("prerender(): There are " +
resultSetDataModel.getRowCount() + " rows");
// Dynamically create columns as needed
+ System.err.println("prerender(): Dynamically creating columns");
+ List children = results.getChildren();
+ children.clear();
+ for (int i = 1; i <= rsmd.getColumnCount(); i++) { // SQL stuff is
one-relative
+ System.err.println("prerender(): Adding column '" +
rsmd.getColumnName(i) + "'");
+ UIColumn column = new UIColumn();
+ children.add(column);
+ HtmlOutputText header = new HtmlOutputText();
+ String label = rsmd.getColumnLabel(i);
+ if ((label == null) || (label.length() < 1)) {
+ label = rsmd.getColumnName(i);
+ }
+ header.setValue(label);
+ column.setHeader(header);
+ HtmlOutputText data = new HtmlOutputText();
+ column.getChildren().add(data);
+ data.setValueBinding("value",
+ context.getApplication().createValueBinding("#{currentRow['"
+ rsmd.getColumnName(i) + "']}"));
+ }
} catch (SQLException e) {
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]