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]

Reply via email to