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 + -
显示快捷键?