myfaces-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "John" <jo...@jak.com>
Subject RE: Tobago sheet using jdbc ResultSet example request
Date Mon, 06 Mar 2006 22:23:35 GMT
Yes. I verified within the GetRslt() that there are rows being returned.
I did a System.out.println(rslt.getRow())

John 

-----Original Message-----
From: Bernd Bohmann [mailto:bernd.bohmann@atanion.com] 
Sent: Monday, March 06, 2006 12:01 PM
To: MyFaces Discussion
Subject: Re: Tobago sheet using jdbc ResultSet example request

Are you sure that getRslt() returns not null?
And can you check that the resultSet contains rows?

John schrieb:
> No change except no rows found is not reported.
> 
> 
>  package com.pop3gateway;
> 
> import com.pop3gateway.MessageObject.*; import java.util.HashMap; 
> import java.util.*; import java.io.Serializable; import java.io.*; 
> import java.sql.*;
> 
> /**
>  * <p>Title: Extensible Messaging Platform</p>
>  * <p>Description: Enterprise Anti-spam Filter</p>
>  * <p>Copyright: Copyright (c)1997-2004</p>
>  * <p>Company: J.A. Korsmeyer, Inc.</p>
>  * @author J.A. Korsmeyer, Inc.
>  * @version 5.5
>  */
> 
> public class Quarantine extends DatabaseServer {
>   //static final long serialVersionUID = -3537385394408850867L;
>   //protected QuarantineRec QuarantineRec = null;
>   protected boolean hit = false;
>   protected boolean success = true;
> 
>   File messageFile = null;
>   File messageFile2 = null;
> 
>   PreparedStatement stQuerySenderRecipient = null;
>   PreparedStatement stQuerySender = null;
>   PreparedStatement stQueryRecipient = null;
>   PreparedStatement stQueryRecipientLike = null;
>   PreparedStatement stInsertRec = null;
>   PreparedStatement stDeleteRec = null;
> 
>   String quarantine = System.getProperty("EMP.home") + 
> File.separatorChar +
>           "Data"
>           + File.separatorChar + "RouterProcessorEngines" + 
> File.separatorChar
>           + "0" + File.separatorChar + "Quarantine";
> 
>   String msgObjs = System.getProperty("EMP.home") + File.separatorChar
+
>           "Data"
>           + File.separatorChar + "RouterProcessorEngines" + 
> File.separatorChar
>           + "0" + File.separatorChar + "MessageObjects";
> 
>   public Quarantine() {
>     this(System.getProperty("EMP.home") + File.separatorChar + "Db");
>     
>      System.out.println("we ran the beans constructor");
>     //super();
>   }
> 
>   public Quarantine(String databaseDir) {
>     super(databaseDir);
>     System.out.println("We're ready to test if Quarantine tables 
> exist");
>     if(!quarantineTablesExist()) {
>       //System.out.println("They don't so create");
>       try {
>         Statement createTableStatement =
dbConnection.createStatement();
>         System.err.println("create table statement");
>         Statement createIE1Statement = dbConnection.createStatement();
>         Statement createIE2Statement = dbConnection.createStatement();
>         System.err.println("create table");
>         createTableStatement.execute("CREATE CACHED TABLE 
> quarantine(FILENAME CHAR(64), SENDER CHAR(128), RECIPIENT CHAR(128), 
> SUBJECT CHAR(128), FILTEREDBY CHAR(24), MATCHTEXT CHAR(128), 
> CONSTRAINT cQuarPRI PRIMARY KEY (FILENAME))");
>         createIE1Statement.execute("CREATE INDEX IEQ1 ON 
> quarantine(SENDER)");
>         createIE2Statement.execute("CREATE INDEX IEQ2 ON 
> quarantine(RECIPIENT)");
> 
>       }
>       catch (SQLException sqlCreateQuarantineE) {
>         System.err.println("ERROR: unable to create table
quarantine");
>         sqlCreateQuarantineE.printStackTrace();
>       }
>     }
>     // prepare statements for later use
>     initQuarantine();
> 
>   }
> 
> private String test = "beginning value";
>   private Object sheetState;
>   private ResultSet rslt = null;
>   boolean more = false;
>   String returnSender = null;
>   File dbDirPath = null;
>   QuarantineRec quarantineRec = null;
> 
>   public void initQuarantine() {
>     dbDirPath = new File(System.getProperty("EMP.home") + 
> File.separatorChar + "Db");
>     //System.out.println("just entered init");
>     quarantineRec = new QuarantineRec();
> 
>     try {
>       setDatabaseDir(dbDirPath.getCanonicalPath());
>       dbConnect();
> 
>           stQuerySenderRecipient = dbConnection.prepareStatement(
>           "SELECT * FROM quarantine WHERE sender=? AND recipient=?",
>       ResultSet.TYPE_SCROLL_INSENSITIVE,
>               ResultSet.CONCUR_READ_ONLY);
> 
>            //System.out.println("just prepared
stQuerySenderRecipient");
>       stQuerySender = dbConnection.prepareStatement(
>       "SELECT * FROM quarantine WHERE sender=?",
>           ResultSet.TYPE_SCROLL_INSENSITIVE,
>               ResultSet.CONCUR_READ_ONLY);
>            //System.out.println("just prepared stQuerySender");
>       stQueryRecipient = dbConnection.prepareStatement(
>       "SELECT * FROM quarantine WHERE recipient=?",
>           ResultSet.TYPE_SCROLL_INSENSITIVE,
>               ResultSet.CONCUR_READ_ONLY);
>       stQueryRecipientLike = dbConnection.prepareStatement(
>       "SELECT * FROM quarantine WHERE recipient LIKE ?",
>           ResultSet.TYPE_SCROLL_INSENSITIVE,
>               ResultSet.CONCUR_READ_ONLY);
>           //System.out.println("just prepared stQueryRecipient");
>       stInsertRec = dbConnection.prepareStatement("INSERT INTO 
> quarantine VALUES(?,?,?,?,?,?)");
>       stDeleteRec = dbConnection.prepareStatement("DELETE FROM 
> quarantine WHERE filename = ?");
> 
>       messagesList("johnk@jak.com");
>       System.out.println("just called messagesList()");
> 
>     } catch (SQLException stmtPrepE) {
>       System.err.println("ERROR: Couldn't prepare statements");
>     }
>     catch ( IOException dbPathE ) {
>     System.err.println("ERROR: Couldn't find path to DB directory");
>   }
> 
> 
>   }
>   public boolean quarantined(String sender, String recipient) {
>     hit = false;
>     if( sender != null && recipient != null ) {
>       try {
>         stQuerySenderRecipient.setString(1,
> deFocus(sender).toLowerCase());
>         stQuerySenderRecipient.setString(2, recipient.toLowerCase());
>         rslt = stQuerySenderRecipient.executeQuery();
>         if (rslt != null && rslt.next()) {
>           hit = true;
>         }
> 
>       }
>       catch (SQLException queryE) {}
>     }
>     return hit;
>   }
> 
>   public boolean quarantined(SMTPMessageObject mo) {
>    hit = false;
>    if (mo.getSender() != null) {
>      try {
>        stQuerySender.setString(1,
> deFocus(mo.getSender().toLowerCase()));
>        //System.out.println("getSender= " + deFocus(mo.getSender()));
>        //System.out.println("recipientsString= " + 
> mo.getRecipientsAsString());
>        rslt = stQuerySender.executeQuery();
> 
>        if (rslt != null) more = rslt.next();
>        while (more && rslt != null) {
>          //System.out.println("recipient=" + rslt.getString(2));
>          //System.out.println("recipString=" + 
> mo.getRecipientsAsString());
>          if
> (mo.getRecipientsAsString().toLowerCase().indexOf(rslt.getString(2).
>              toLowerCase()) > -1) {
>            //System.out.println("matched");
>            hit = true;
>            break;
>          }
>          more = rslt.next();
>        }
> 
>      }
>      catch (SQLException queryE) {}
>    }
>    return hit;
>  }
> 
>   public void messagesList(String recipient) {
>     if( recipient != null ) {
>       try {
>         stQueryRecipientLike.setString(1, "%" + 
> recipient.toLowerCase()
> + "%");
> 
>         rslt = stQueryRecipientLike.executeQuery();
>         System.out.println("result set=" + rslt);
>         
>         if(rslt.last()) {
> 
>           System.out.println("Number of records: " + rslt.getRow());
>         } else {
>           System.out.println("No records returned");
> 
>         }
> 
> 
> 
>       } catch (SQLException queryE) { queryE.printStackTrace(); }
>     }
> 
>   }
> 
>   boolean tryAgain = true;
>   public QuarantineRec getNextRec() {
>     tryAgain = true;
>     try {
>       if( rslt != null && rslt.next() ) {
> 
>         while(tryAgain) {
>           messageFile = new File(quarantine + File.separatorChar + 
> rslt.getString("FILENAME"));
>           if (messageFile.exists()) {
>             //System.out.println("sender=" + rslt.getString(1));
>             quarantineRec.filename = rslt.getString("FILENAME");
>             quarantineRec.sender = rslt.getString("SENDER");
>             quarantineRec.recipient =
> truncate(rslt.getString("RECIPIENT"), 64);
>             quarantineRec.subject = 
> truncate(rslt.getString("SUBJECT"),
> 64);
>             quarantineRec.filteredby = rslt.getString("FILTEREDBY");
>             quarantineRec.matchtext =
> truncate(rslt.getString("MATCHTEXT"), 64);
>             tryAgain = false;
>           }
>           else {
>             deleteRec(rslt.getString("FILENAME")); // cleanup database

> record for deleted message
>             if(! rslt.next()) { break; }
>           }
>         }
>       }
>       else {
>         return null;
>       }
>     }catch (SQLException getNextE) {}
>     return quarantineRec;
>   }
>   public String displayMessage(String filename) {
>     String messageText = null;
>     String tempLine;
>     int lineNum = 0;
> 
>     try {
>       BufferedReader bufMessageReader = new BufferedReader(new 
> FileReader(quarantine + File.separatorChar + filename));
>       while( (tempLine = bufMessageReader.readLine()) != null ) {
>         //System.out.println("(" + tempLine + ")");
>         messageText += tempLine + "\n";
>         lineNum++;
>         if(lineNum > 100) { break; }
> 
>       }
>       bufMessageReader.close();
> 
>     }
>     catch( Exception e) {
>       e.printStackTrace();
>     }
> 
>     return messageText;
>   }
>   public boolean insertRec(String filename, String sender, String 
> recipient, String subject, String filteredby, String matchtext) {
>     success = false;
>     if( sender != null && recipient != null ) {
>       try {
>         success = true;
>         stInsertRec.setString(1, filename);
>         stInsertRec.setString(2, deFocus(sender.toLowerCase()));
>         stInsertRec.setString(3, recipient.toLowerCase());
>         stInsertRec.setString(4, subject);
>         stInsertRec.setString(5, filteredby);
>         stInsertRec.setString(6, matchtext);
>         stInsertRec.execute();
>       }
>       catch (SQLException insertE) {}
>     }
>     return success;
>   }
>   public boolean deleteRec(String filename) {
>     try {
>       success = true;
>       stDeleteRec.setString(1, filename);
>       stDeleteRec.execute();
>       // Delete from Quarantine directory
> 
>       messageFile = new File(quarantine + File.separatorChar + 
> filename);
>       if(messageFile.exists()) {
>         messageFile.delete();
>       }
> 
>     } catch(SQLException deleteE) { success = false; }
>     return success;
> 
>   }
>   public boolean deliver(String filename) {
>     boolean success = true;
>     try {
>       stDeleteRec.setString(1, filename);
>       stDeleteRec.execute();
> 
>       messageFile = new File(quarantine + File.separatorChar + 
> filename);
>       messageFile2 = new File(msgObjs + File.separatorChar + 
> filename);
> 
>       messageFile.renameTo(messageFile2);
>     } catch(SQLException deleteE) { success = false; }
>     return success;
>   }
>   public boolean messageFileExists(String filename) {
>     boolean exists = false;
>     messageFile = new File(quarantine + File.separatorChar +
filename);
>     if(messageFile.exists()) { exists = true; }
>     return exists;
>   }
>   protected boolean quarantineTablesExist() {
>     boolean exists = true;
>    // String[] types = {"TABLE"};
>     try {
>      Statement statement = dbConnection.createStatement();
>      ResultSet rs = statement.executeQuery("SELECT * FROM
quarantine");
>       /*
>       DatabaseMetaData metaData = dbConnection.getMetaData();
>       ResultSet rs = metaData.getTables(null, null, "whitelist", // 
> 2nd null would be schemapattern
>                                         null);
>       if(rs.next()) {   //the table exists
>         exists = true;
> 
>       }
>       */
>       }catch (Exception e) { e.printStackTrace();  exists = false; }
>     return exists;
> 
>   }
> 
>   public void quarantineDirectoryCleanup() {
>     // Delete from database if not in Quarantine directory
>     //
> 
>   }
>   public void close() {
>         try {
>             dbConnection.commit();
>             dbConnection.close();
>         } catch (SQLException sqlClose) {
>             System.err.println("ERROR: closing connection into 
> statistics database");
>             sqlClose.printStackTrace();
>         }
>   }
>   protected String deFocus(String str) {
>     String returnToken = ""; // probably should be null but we need to

> fix in full path (SMTPmsgObject + output portal
>     StringTokenizer tokenizer = new StringTokenizer(str, "<>");
>     if( tokenizer.hasMoreTokens()) {
>       returnToken = tokenizer.nextToken();
>     }
>     return returnToken;
>   }
> 
>   public String truncate(String string, int maxChars) {
>     String returnString = string;
>     if(string != null && string.length() > maxChars) {
>       returnString = string.substring(0, maxChars);
>     }
>     return returnString;
>   }
> 
>   public ResultSet getRslt() {
>    
>    System.out.println("just called getRslt()");
>    return rslt;
>  }
>   public void setRslt(ResultSet rslt) { this.rslt = rslt; }
> 
>   //void getInitQuarantine() { initQuarantine(); }
>   //void setInitQuarantine() { initQuarantine(); }
> 
>   public Object getSheetState() {
>     return sheetState;
>   }
> 
>   public void setSheetState(Object sheetState) {
>     this.sheetState = sheetState;
>   }
> 
>   public void setTest(String teststring) {
>     this.test = teststring;
>   System.out.println("just setTest to " + this.test);
>   this.test = "this is what we hard setTest to"; } public String 
> getTest() { return this.test; } }
> 
> -----Original Message-----
> From: Bernd Bohmann [mailto:bernd.bohmann@atanion.com]
> Sent: Monday, March 06, 2006 11:27 AM
> To: MyFaces Discussion
> Subject: Re: Tobago sheet using jdbc ResultSet example request
> 
> Please remove the state attribute it should be a ref to a SheetState 
> Instance.
> Please remove showRowRage, showDirectLinks and directLinkCount 
> attributes they make no sense for a dataModel for a resultSet because 
> the dataModel returns rowCount -1 for a resultSet.
> 
> Can you send me the ManagedBean code, please.
> 
> Bernd
> 
> John schrieb:
> 
>>That's what I thought - so I changed it to uppercase. Didn't affect 
>>the results.
>>
>>createTableStatement.execute("CREATE CACHED TABLE quarantine(FILENAME 
>>CHAR(64), SENDER CHAR(128), RECIPIENT CHAR(128), SUBJECT CHAR(128), 
>>FILTEREDBY CHAR(24), MATCHTEXT CHAR(128), CONSTRAINT cQuarPRI PRIMARY 
>>KEY (FILENAME))");
>>
>><t:sheet
>>          value="#{quarantine.rslt}"
>>          id="sheet"
>>          columns="3*;1*;3*;3*;3*"
>>          var="quarantineRec"
>>          state="1"
>>          showRowRange="left"
>>          showPageRange="right"
>>          showDirectLinks="center"
>>          pagingLength="7"
>>          directLinkCount="5">
>>          <t:column label="From" id="name" sortable="true">
>>            <t:out value="#{quarantineRec.SENDER}" />
>>          </t:column>
>>          <t:column label="To" id="number" sortable="false"
>>align="center">
>>            <t:out value="#{quarantineRec.RECIPIENT}" />
>>          </t:column>
>>          <t:column label="Subject" sortable="true">
>>            <t:out value="#{quarantineRec.SUBJECT}" />
>>          </t:column>
>>          <t:column label="Matched" sortable="true">
>>            <t:out value="#{quarantineRecr.MATCHTEXT}" />
>>          </t:column>
>>          <t:column label="Filtered" sortable="true" align="right">
>>            <t:out value="#{quarantineRec.FILTEREDBY}" />
>>          </t:column>
>>        </t:sheet>
>>
>>-----Original Message-----
>>From: Bernd Bohmann [mailto:bernd.bohmann@atanion.com]
>>Sent: Monday, March 06, 2006 11:02 AM
>>To: MyFaces Discussion
>>Subject: Re: Tobago sheet using jdbc ResultSet example request
>>
>>John,
>>
>>please send the sheet jsp and the definition of the table.
>>
>>Maybe a case-sensitive problem.
>>
>>Bernd
>>
>>John schrieb:
>>
>>
>>>Ok.
>>>
>>>My bean is retrieving 2 rows, but they are not being displayed.
>>>
>>>In the definition of the tobago sheet, the var definition: It's 
>>>arbitrary, I'm assuming and doesn't map to any real variables in any 
>>>beans.
>>>Ok. So assuming a var definition of:  QuarantineRec Then in the 
>>>t:outs
>>
>>
>>>if I'm using:  quarantineRec.SENDER  where SENDER is a database 
>>>column
>>
>>
>>>in the returned ResultSet.........
>>>
>>>Does Tobago automatically know that SENDER is a db column?
>>>
>>>No data showing in the Tobago sheet.
>>>
>>>John
>>>
>>>-----Original Message-----
>>>From: Bernd Bohmann [mailto:bernd.bohmann@atanion.com]
>>>Sent: Monday, March 06, 2006 1:28 AM
>>>To: MyFaces Discussion
>>>Subject: Re: Tobago sheet using jdbc ResultSet example request
>>>
>>>
>>>John schrieb:
>>>
>>>
>>>
>>>>Thank you very much for the example.
>>>>The trick seems to be having a function called 'select' within the 
>>>>backing bean, which tobago's sheet looks for to return data into the

>>>>resultSet which has been provided within the sheet's value.
>>>>
>>>>Yes?
>>>
>>>
>>>No, the select method is for the detail page.
>>>
>>>The getSolarObjects() method is for the sheet.
>>>
>>>The other get methods are for the detail page.
>>>
>>>
>>>Bernd
>>>
>>>
>>
>>
>>--
>>Dipl.-Ing. Bernd Bohmann - Atanion GmbH - Software Development 
>>Bismarckstr. 13, 26122 Oldenburg, http://www.atanion.com
>>phone: +49 441 4082312, mobile: +49 173 8839471, fax: +49 441 4082333
>>
>>
> 
> 
> --
> Dipl.-Ing. Bernd Bohmann - Atanion GmbH - Software Development 
> Bismarckstr. 13, 26122 Oldenburg, http://www.atanion.com
> phone: +49 441 4082312, mobile: +49 173 8839471, fax: +49 441 4082333
> 
> 

--
Dipl.-Ing. Bernd Bohmann - Atanion GmbH - Software Development
Bismarckstr. 13, 26122 Oldenburg, http://www.atanion.com
phone: +49 441 4082312, mobile: +49 173 8839471, fax: +49 441 4082333


Mime
View raw message