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]