mailsequence.java

来自「java xml开发指南(初学者推荐)Java Xml 编程指南书籍源码」· Java 代码 · 共 77 行

JAVA
77
字号
package MyNa.xml;

import java.util.*;
import java.io.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;
import MyNa.utils.*;

public class MailSequence extends RowSeq {
  int current; Message[]theMessages;
// column labels: msgfromaddr,msgtoaddr,msgdate,msgsubject,msgsize,msgflags,msgxmailer
// can include "msgcontent", but not usually.
   public static String[] defaultLabels={"msgfromaddr","msgdate","msgsubject"};


public MailSequence(Folder folder,FetchProfile fp,Env enumInfo)
           throws MessagingException,Exception {
  super(enumInfo);
  if(null==theColumnLabels || theColumnLabels.length==0)
    theColumnLabels=enumInfo.getStrSeq("columnLabels");
  if(null==theColumnLabels){
     theColumnLabels=defaultLabels;
     enumInfo.put("columnLabels",theColumnLabels);
     }
  theNumberOfColumns=theColumnLabels.length;
  theColumnValues=new String[theNumberOfColumns];
  theColumnTypes=new String[theNumberOfColumns]; 
  for(int i=0;i<theNumberOfColumns;i++)
    theColumnTypes[i]="VARCHAR";
  enumInfo.put("columnTypes",theColumnTypes);
  try{setInitEnv();}
   catch(Exception E){throw new Exception("MailSeq error in setInitEnv:"+E);}

  if(null==folder)throw new Exception("null folder has no messages!");
  theMessages=folder.getMessages(); current=0;
  lg.logIt("MailSeq got "+theMessages.length+" messages with labels "+
                Misc.stringArrayJoin(theColumnLabels,","));
  folder.fetch(theMessages,fp);
}
public MailSequence(Folder folder,FetchProfile fp)
        throws MessagingException,Exception{
  this(folder,fp,new Env());
}

public boolean next(){
  if(theMessages.length <= current++)return false;
  try{
    MessageData md=new MessageData(theMessages[current-1],theColumnLabels);
    md.addToEnv(theEnv);   // defines theEnv.getStr("msgsubject"), &c
    for(int i=0;i<theColumnLabels.length;i++){
      String val=theEnv.getStr(theColumnLabels[i]);
      theColumnValues[i]=val;
      theEnv.put(theFieldValueNum[i],val);
      }
    lg.logIt("columnValues="+Misc.stringArrayJoin(theColumnValues,","));
    return true;
  }catch(Exception E){lg.logIt("MailSequence.next: ",E); return false;}
} 

public void close(){
  current=theMessages.length+1;
}

public void shallowClone(RowSeq re){ // a shallow copy
  super.shallowClone(re);
  if(re instanceof MailSequence){
    this.theMessages=((MailSequence)re).theMessages;
    this.current=((MailSequence)re).current;
    }
}


} // end MailEnumeration


⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?