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("[EMAIL PROTECTED]");
      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:[EMAIL PROTECTED] 
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:[EMAIL PROTECTED]
> 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:[EMAIL PROTECTED]
>>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

Reply via email to