SessionManager.java
上传用户:xiekaiwei
上传日期:2015-07-04
资源大小:620k
文件大小:4k
源码类别:

Telnet客户端

开发平台:

Java

  1. /*
  2.  * @(#)SessionManager.java
  3.  * Copyright:    Copyright (c) 2001 - 2004
  4.  *
  5.  * This program is free software; you can redistribute it and/or modify
  6.  * it under the terms of the GNU General Public License as published by
  7.  * the Free Software Foundation; either version 2, or (at your option)
  8.  * any later version.
  9.  *
  10.  * This program is distributed in the hope that it will be useful,
  11.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  12.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  13.  * GNU General Public License for more details.
  14.  *
  15.  * You should have received a copy of the GNU General Public License
  16.  * along with this software; see the file COPYING.  If not, write to
  17.  * the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
  18.  * Boston, MA 02111-1307 USA
  19.  *
  20.  */
  21. package org.tn5250j.framework.common;
  22. import java.util.*;
  23. import org.tn5250j.tools.logging.*;
  24. import org.tn5250j.interfaces.SessionManagerInterface;
  25. import org.tn5250j.*;
  26. /**
  27.  * The SessionManager is the central repository for access to all sessions.
  28.  * The SessionManager contains a list of all Session objects available.
  29.  */
  30. public class SessionManager implements SessionManagerInterface, TN5250jConstants {
  31.    static private Sessions sessions;
  32.    static private Vector configs;
  33.    private TN5250jLogger log = TN5250jLogFactory.getLogger (this.getClass());
  34.    /**
  35.     * A handle to the unique SessionManager class
  36.     */
  37.    static private SessionManager _instance;
  38.    /**
  39.     * The constructor is made protected to allow overriding.
  40.     */
  41.    protected SessionManager() {
  42.       if (_instance == null) {
  43.          // initialize the settings information
  44.          initialize();
  45.          // set our instance to this one.
  46.          _instance = this;
  47.       }
  48.    }
  49.    /**
  50.     *
  51.     * @return The unique instance of this class.
  52.     */
  53.    static public SessionManager instance() {
  54.       if (_instance == null) {
  55.          _instance = new SessionManager();
  56.       }
  57.       return _instance;
  58.    }
  59.    private void initialize() {
  60.       log.info("New session Manager initialized");
  61.       sessions = new Sessions();
  62.       configs = new Vector(3);
  63.    }
  64.    public Sessions getSessions() {
  65.       return sessions;
  66.    }
  67.    public void closeSession(String sessionName) {
  68.       SessionGUI session = ((Session5250)sessions.item(sessionName)).getGUI();
  69.       if (session != null)
  70.          closeSession(session);
  71.    }
  72.    public void closeSession(SessionGUI sessionObject) {
  73.       sessionObject.closeDown();
  74.       sessions.removeSession(((SessionGUI)sessionObject).getSession());
  75.    }
  76.    public Session5250 openSession(Properties sesProps, String configurationResource
  77.                                                 , String sessionName) {
  78. //                                             throws TN5250jException {
  79.       if(sessionName == null)
  80.          sesProps.put(SESSION_TERM_NAME,sesProps.getProperty(SESSION_HOST));
  81.       else
  82.          sesProps.put(SESSION_TERM_NAME,sessionName);
  83.       if (configurationResource == null)
  84.          configurationResource = "";
  85.       sesProps.put(SESSION_CONFIG_RESOURCE
  86.                         ,configurationResource);
  87.       Enumeration e = configs.elements();
  88.       SessionConfig useConfig = null;
  89.       while(e.hasMoreElements()) {
  90.          SessionConfig conf = (SessionConfig)e.nextElement();
  91.          if (conf.getSessionName().equals(sessionName)) {
  92.             useConfig = conf;
  93.          }
  94.       }
  95.       if (useConfig == null) {
  96.          useConfig = new SessionConfig(configurationResource,sessionName);
  97.          configs.add(useConfig);
  98.       }
  99.       Session5250 newSession = new Session5250(sesProps,configurationResource,
  100.                                           sessionName,useConfig);
  101.       sessions.addSession(newSession);
  102.       return newSession;
  103.    }
  104.    /**
  105.     * Convenience method to add a session that is instatiated outside of
  106.     * SessionManager.  An example would be the ProtocolBean.
  107.     *
  108.     * @param newSession
  109.     */
  110.    public void addSession(Session5250 newSession) {
  111.       sessions.addSession(newSession);
  112.    }
  113. }