⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 folderlist.java

📁 mail sent and revesive system jsp+mysql
💻 JAVA
字号:
package fengyun.Fastmail.beans;

import java.io.*;
import javax.mail.*;
import java.util.Vector;
import java.sql.ResultSet;
import fengyun.Fastmail.Maildir.*;
import java.sql.SQLException;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpServletRequest;

/**
 * 邮件夹列表处理
 * @author sanware & fengyun
 * @version 1.01
 */
public class FolderList {
	
	private static BeansConstants CONST = BeansConstants.getInstance();
	
	/**
	 * 邮件夹列表
	 */
	public Vector lists = new Vector();
	public int quotasize = 0;
	/**
	 * 构造FolderList
	 * @param httpsession HttpSession
	 */
	public FolderList(HttpSession httpsession) throws MessagingException {
		
		String userid = (String)httpsession.getAttribute(CONST.FastmailUserid);
		String sql = "select folderindex,folderid,foldername,type from folderlist where userid = ? order by folderindex";
		String quotasql = "select quota from mailbox where userid = ?";

		try {
			Mysql  mysql  = (Mysql) httpsession.getAttribute(CONST.FastmailMysql);
			mysql.prepareStatement(sql);
			mysql.setString(1,userid);
			ResultSet RS = mysql.executeQuery();
			
			if (RS.next()) {
				do {
					FolderSummary fs = new FolderSummary(RS.getInt(1),RS.getString(2),RS.getString(3),RS.getInt(4));
					lists.addElement(fs);
				}
				while(RS.next());
			}
			mysql.prepareStatement(quotasql);
			mysql.setString(1,userid);
			RS = mysql.executeQuery();
			if (RS.next()) {
				quotasize = RS.getInt(1) * 1024;
			}
			else {
				quotasize = 3 * 1024 * 1024;
			}

			mysql.close();
			mysql = null;
			RS.close();
			RS = null;
			httpsession.removeAttribute(CONST.FastmailMysql);
		}
		catch(Exception e) {
			throw new MessagingException("SQL ERROR:" + e.getMessage());
		}
	}
	
	/**
	 * 返回邮件夹的上一级邮件夹
	 * @param summary 邮件夹摘要
	 * @return FolderSummay 上一级邮件夹
	 */
	public FolderSummary getParent(FolderSummary summary) {
		int index = summary.getParentIndex();
		for(int i = 0; i < lists.size(); i++) {
			if (((FolderSummary)lists.get(i)).getIndex() == index) return (FolderSummary)lists.get(i);
		}
		return null;
	}
	/**
	 * 返回子邮件夹
	 * @param summary 邮件夹摘要
	 * @return FolderSummary[] 邮件夹摘要集
	 */
	public FolderSummary[] getChildren(FolderSummary summary) {
		Vector vSummary = new Vector();
		for(int i = 0; i < lists.size(); i++) {
			if (summary.isChild((FolderSummary)lists.get(i))) {
				vSummary.addElement(lists.get(i));
			}
		}
		if (vSummary.size() > 0) {
			FolderSummary[] fs = new FolderSummary[vSummary.size()];
			vSummary.toArray(fs);
			return fs;
		}
		else {
			vSummary = null;
			return null;
		}
	}
	/**
	 * 返回某一级上的所有邮件夹
	 * @param level 级
	 * @return FolderSummary[] 邮件夹摘要集
	 */
	public FolderSummary[] getFolderSummarys(int level) {
		Vector vSummary = new Vector();
		for(int i = 0; i < lists.size(); i++) {
			if (((FolderSummary)lists.get(i)).getLevel() == level) {
				vSummary.addElement(lists.get(i));
			}
		}
		if (vSummary.size() > 0) {
			FolderSummary[] fs = new FolderSummary[vSummary.size()];
			vSummary.toArray(fs);
			return fs;
		}
		else {
			vSummary = null;
			return null;
		}
	}
	/**
	 * 新建邮件夹
	 * @param parent 上一级邮件夹的摘要
	 * @param foldername 邮件夹名称
	 */
	public static int addFolder(HttpServletRequest request) {
		String foldername = request.getParameter(CONST.foldername);
		String strParentIndex = request.getParameter(CONST.folderid);
		HttpSession httpsession = request.getSession(false);
		if (foldername == null || strParentIndex == null || "".equals(foldername) || "".equals(strParentIndex) || httpsession == null)
			return CONST.HTTPREQUEST_ERROR;
		
		FolderView folderview = (FolderView)httpsession.getAttribute(CONST.FastmailFolderView);
		if (folderview == null) return CONST.HTTPREQUEST_ERROR;
			
		FolderList folderlist = folderview.folderlist;
		
		int parentindex = Integer.parseInt(strParentIndex);
		
		int folderindex = 0;
		int type = 0;
		String folderid = null;
		if (parentindex < CONST.revbox) { //根目录
			int tmp = CONST.revbox;
			for(int i = 5; i < 10; i++) {
				if (folderlist.getFolderid(i * tmp) == null) {
					folderindex = i * tmp;
					folderid = String.valueOf(folderindex);
					break;
				}
			}
		}
		else {

			FolderSummary parent = folderlist.getFolderSummary(parentindex);
			if (parent == null) return CONST.HTTPREQUEST_ERROR;

			int level = parent.getLevel();
			if (level >= CONST.maxlevel) return CONST.CANTCREATEFOLD;
			level = CONST.maxlevel - level;
			if (level == 1) type = 1;
			int tmp = 1;
			for(int i = 1; i < level; i++) {
				tmp *= 10;
			}
			for(int i = 1; i < 10; i++) {
				if (folderlist.getFolderid(parentindex + i * tmp) == null) {
					folderindex = parentindex + i * tmp;
					folderid = parent.getName() + File.separator + String.valueOf(folderindex);
					break;
				}
			}
		}
		if (folderindex == 0) return CONST.CANTCREATEFOLD;
		
		//创建邮件夹
		String userid = (String)httpsession.getAttribute(CONST.FastmailUserid);
		MaildirStore store = (MaildirStore)httpsession.getAttribute(CONST.FastmailStore);
		if (userid == null || store == null) return CONST.HTTPSESSION_ERROR;
		
		if (!store.makeFolder(folderid)) return CONST.CANTCREATEFOLD;

/*		String sql = "insert into folderlist (userid,folderindex,folderid,foldername,type) values ('"
					 + userid + "','" + folderindex + "','" + folderid
					 + "','" + foldername + "',"+ type + ")";*/
		String sql = "insert into folderlist (userid,folderindex,folderid,foldername,type) values (?,?,?,?,?)";
		
		try {
			Mysql  mysql  = new Mysql(sql);
			mysql.setString(1,userid);
			mysql.setInt(2,folderindex);
			mysql.setString(3,folderid);
			mysql.setString(4,foldername);
			mysql.setInt(5,type);
			mysql.executeUpdate();
			mysql.close();
			mysql = null;
		}
		catch(Exception e) {
			return CONST.SQL_ERROR;
		}
		
		FolderSummary fs = new FolderSummary(folderindex,folderid,foldername,type);
		int index = folderlist.lists.size();
		for(int i = 0; i <  index; i++) {
			FolderSummary tmpFS = (FolderSummary)folderlist.lists.get(i);
			if (tmpFS.getIndex() > folderindex) {
				index = i;
				break;
			}
		}
		folderlist.lists.insertElementAt(fs,index);
		try {
			MaildirFolder mf = (MaildirFolder)store.getFolder(fs.getName());
			if (!mf.isOpen()) mf.open(0);
			MaildirFolderSummary mfs = mf.getSummary();
			folderview.views.put(new Integer(fs.getIndex()),mfs);
		}
		catch(Exception e) {
			e.printStackTrace();
		}

		return CONST.OK;
	}
	/**
	 * 删除文件夹
	 * @param request HttpServletRequest
	 */
	public static int deleteFolder(HttpServletRequest request) {
		String strFolderIndex = request.getParameter(CONST.folderid);
		HttpSession httpsession = request.getSession(false);
		if (httpsession == null) return CONST.HTTPREQUEST_ERROR;
		
		int FolderIndex = Integer.parseInt(strFolderIndex);
		if (FolderIndex % CONST.revbox == 0 && (FolderIndex <= CONST.dsbbox))
			return CONST.CANTDELETEFOLD;

		String userid = (String)httpsession.getAttribute(CONST.FastmailUserid);
		FolderView folderview = (FolderView)httpsession.getAttribute(CONST.FastmailFolderView);
		MaildirStore store = (MaildirStore)httpsession.getAttribute(CONST.FastmailStore);
		if (userid == null || folderview == null || store == null) return CONST.HTTPREQUEST_ERROR;
		
		FolderList folderlist = folderview.folderlist;		

		FolderSummary fs = folderlist.getFolderSummary(FolderIndex);
		if (fs == null) return CONST.FOLDERID_ERROR;


		if (!store.deleteFolder(fs.getName())) return CONST.CANTDELETEFOLD;
		
		String sql = "delete from folderlist where userid = ? and folderindex = ?";
		try {
			Mysql  mysql  = new Mysql(sql);
			mysql.setString(1,userid);
			mysql.setInt(2,FolderIndex);
			mysql.executeUpdate();
			mysql.close();
			mysql = null;
		}
		catch(Exception e) {
			return CONST.SQL_ERROR;
		}
		
		folderlist.lists.removeElement(fs);

		return CONST.OK;
		
	}
	/**
	 * 邮件夹是否有子邮件夹
	 * @return 是否有子邮件夹
	 */
	public boolean hasChild(FolderSummary summary) {
		return (getChildren(summary) !=null);
	}
	/**
	 * 根据名称返回索引
	 * @param folderid 邮件夹名称
	 * @return int 索引
	 */
	public int getIndex(String folderid) {
		for(int i = 0;i < lists.size();i++) {
			FolderSummary fs = (FolderSummary) lists.get(i);
			if (folderid.equals(fs.getName())) { 
				return fs.getIndex();
			}			
		}
		return -1;
	}
	/**
	 * 根据索引返回名称
	 * @param index 邮件夹索引
	 * @return String 邮件夹名称
	 */
	public String getFolderid(int index) {
		for(int i = 0;i < lists.size();i++) {
			FolderSummary fs = (FolderSummary) lists.get(i);
			if (fs.getIndex() == index) { 
				return fs.getName();
			}
		}
		return null;
	}
	/**
	 * 根据索引返回摘要
	 * @param index 索引
	 * @return FolderSummary 邮件夹摘要
	 */
	public FolderSummary getFolderSummary(int index) {
		for(int i = 0;i < lists.size();i++) {
			FolderSummary fs = (FolderSummary) lists.get(i);
			if (fs.getIndex() == index) { 
				return fs;
			}
		}
		return null;	
	}
	/**
	 * 根据索引返回邮件夹所在级
	 */
	public int getLevel(int index) {
		for(int i = 0;i < lists.size();i++) {
			FolderSummary fs = (FolderSummary) lists.get(i);
			if (fs.getIndex() == index) { 
				return fs.getLevel();
			}
		}
		return 0;
	}
	/**
	 * 根据索引返回显示名称
	 * @param index 索引
	 * @return String 显示名称
	 */
	public String getViewName(int index) {
		for(int i = 0;i < lists.size();i++) {
			FolderSummary fs = (FolderSummary) lists.get(i);
			if (fs.getIndex() == index) { 
				return fs.getViewName();
			}
		}
		return null;
	}
}

⌨️ 快捷键说明

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