root/www.mail/JavaPopWeb/src/jp/ac/nime/computer/mailsim/MailServItem.java

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. MailServItem
  2. init
  3. addQueue
  4. addSpool
  5. setSpool
  6. getQueue
  7. getSpool
  8. deQueue
  9. deSpool
  10. onMousePressed
  11. postMailAction
  12. postPacketAction
  13. postEventAction

package jp.ac.nime.computer.mailsim;

import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;

import jp.ac.nime.computer.*;
import jp.ac.nime.computer.websim.HTTPPacketData;

/**
 * MAILサーバーオブジェクトクラス
 * 
 * @version 1.00 2003/03/31
 * @author Toshikazu Matsumoto Avion Corp.
 */
public class MailServItem extends MachineItem
{
        private MailSim m_Applet        =null;
        private Thread  m_Thread        =null;
        private Vector  m_vcQueue       =null;
        private Vector  m_vcSpool       =null;
        private MailServDialog m_Dialog=null;
        private Image   m_imMail;
        private boolean m_bPOP          =true;
        private boolean m_bSMTP         =true;
        
        /**
         * クラスコンストラクタ
         * @param parent メインアプレットクラス
         * @param sLabel 画像の下に表示される名前
         * @param sIP IPアドレス
         * @param imSrc サーバ画像
         * @param imMail メール画像
         * @param nX 表示するX座標
         * @param nY 表示するY座標
         */
        public MailServItem(MailSim parent,String sLabel,String sIP,Image imSrc,Image imMail,int nX,int nY)
        {
                super((Component)parent,sLabel,sIP,imSrc,nX,nY);
                this.m_vcQueue=new Vector();
                this.m_vcSpool=new Vector();
                this.m_Applet=parent;
                this.m_imMail=imMail;
                
        }
        /**
         * クラスの初期化処理
         */
        public void init()
        {
                this.m_Dialog=new MailServDialog(super.getRootFrame(),this.m_Applet,this,super.getImage(),this.m_imMail,super.getIP(),this.m_vcQueue,this.m_vcSpool);
        }
        /**
         * キューにオブジェクトを追加する
         * @param objMail 追加するメールオブジェクト
         */
        public void addQueue(MailDataObject objMail)
        {
                this.m_vcQueue.addElement(objMail);
        }
        /**
         * スプールにオブジェクトを追加する
         * @param objMail 追加するメールオブジェクト
         */
        public void addSpool(MailDataObject objMail)
        {
                this.m_vcSpool.addElement(objMail);
        }
        /**
         * 指定の位置にメールオブジェクトをスプールにセットする
         * @param objMail セットするメールオブジェクト
         * @param n セットする位置
         */
        public void setSpool(MailDataObject objMail,int n)
        {
                this.m_vcSpool.setElementAt(objMail,n);
        }
        /**
         * キュー全体を取得する
         * @return 取り出したキューのVector
         */
        public Vector getQueue()
        {
                return this.m_vcQueue;
        }
        /**
         * スプール全体を取得する
         * @return 取り出したスプールのVector
         */
        public Vector getSpool()
        {
                return this.m_vcSpool;
        }
        /**
         * 指定の位置のオブジェクトをキューから削除する
         * @param n 削除するキューの位置
         */
        public void deQueue(int n)
        {
                this.m_vcQueue.removeElementAt(n);
        }
        /**
         * スプールから一番先頭のオブジェクトを削除する
         * @return 削除したメールオブジェクト
         */
        public MailDataObject deSpool()
        {
                return (MailDataObject)this.m_vcSpool.elementAt(0);
        }
        /**
         * マウス押下時の処理
         * @return 押下時の結果
         */
        public boolean onMousePressed()
        {
                this.m_Dialog.show();
                return true;
        }
        /**
         * メールオブジェクトが到着した際のアクション
         * @param objMail 到着したメールオブジェクト
         */
        public void postMailAction(MailDataObject objMail)
        {
                if(objMail!=null)
                {
                        switch(objMail.getStatus())
                        {
                        case MailDataObject.MAIL_STATUS_FOR_QUEUE:
                                this.addQueue(objMail);
                                break;
                        case MailDataObject.MAIL_STATUS_REACH_SPOOL:
                                this.addSpool(objMail);
                                break;
                        case MailDataObject.MAIL_STATUS_TELL_SPOOL:
                                Vector vcTemp=new Vector();
                                for(int i=0;i<this.m_vcSpool.size();i++)
                                {
                                        MailDataObject objSpMail=(MailDataObject)this.m_vcSpool.elementAt(i);
                                        if(objSpMail.getStatus()==MailDataObject.MAIL_STATUS_SPOOL)
                                        {
                                                objSpMail.setProcess(1);
                                                objSpMail.setStatus(MailDataObject.MAIL_STATUS_TELL_SPOOL);
                                                objSpMail.setMoveObject((MachineItem)this,objMail.getMoveFrom());
                                                //objSpMail.startThread();
                                        }
                                        this.m_vcSpool.setElementAt(objSpMail,i);
                                }
                                //this.m_vcSpool=vcTemp;
                                break;
                        }
                }
        }
        /**
         * HTTPパケットが到達した際のアクション
         * @param objPack 到達したHTTPパケット
         */
        public void postPacketAction(HTTPPacketData objPack)
        {
        }
        /**
         * 外部からイベントを通知された場合のアクション
         * @param nEvent イベントの種類
         */
        public void postEventAction(int nEvent)
        {
                
        }
}

/* [<][>][^][v][top][bottom][index][help] */