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

📄 msnmanager.java

📁 MSN客服自动化机器人
💻 JAVA
字号:
package jm.form.msn;

import java.awt.Component;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.io.File;
import java.io.FileOutputStream;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.Map;

import javax.swing.JOptionPane;
import javax.xml.stream.XMLOutputFactory;
import javax.xml.stream.XMLStreamWriter;

import jm.JM;
import jm.dbo.JMDBOConnectionPool;
import jm.dbo.JMDBOConntionInfoKeyValue;
import jm.entity.CommandSYKeys;
import jm.entity.ESC000500;
import jm.entity.ESC000700;
import jm.entity.ESM000200;
import jm.entity.ESM000300;
import jm.entity.ESM000500;
import jm.form.msn.bean.BusinessUser;
import jm.form.msn.config.JMMRConfig;
import jm.form.msn.config.JMMRConfigConstants;
import jm.form.msn.ctrl.MsgSegmenter;
import jm.form.msn.form.Log;
import jm.form.msn.form.Main;
import jm.form.msn.util.Logger;
import jm.form.msn.util.Manager;
import jm.framework.util.SimpleEntityTable;
import jm.util.JMVector;

/**
 * 系统管理主程序 
 * 梦界家园MSNP12
 * @author ISHome
 * @since 0.1
 * @version 0.5.0.2.1
 */
@SuppressWarnings("unchecked")
public class MSNManager implements JMMRConfigConstants, Manager {
	private static MSNManager instance;

	/**
	 * 获得程序实例
	 * 
	 * @return
	 */
	public static MSNManager getinstance() {
		if (instance == null)
			instance = new MSNManager();
		return instance;
	}

	/**
	 * 起动程序 显示版权信息
	 */
	public void run() {
		//是否自动运行
		License license = new License(getinstance());
		openFrame(license);
	}

	/**
	 * MSN机器人实例
	 */
	private MSNServer msn = null;

	/**
	 * 起动服务
	 */
	public void runServer() {
		if (msn == null) {
			msn = new MSNServer(this);
			msn.start();
			getLogger().info("logining ......");
		}
	}

	/**
	 * 关闭服务
	 */
	public void closeServer() {
		try {
			msn.stop();
		} catch (Exception e) {
		}
		System.exit(0);
	}

	/**
	 * 显示画面
	 * 
	 * @param fame
	 *            被显示画面
	 */
	public void openFrame(Component fame) {		
		Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
		fame.setLocation((d.width - fame.getSize().width) / 2, (d.height - fame.getSize().height) / 2);
		fame.setVisible(true);
	}
	// *********************画面************************* */
	// 主画面
	private Main main;

	public Main getMainForm() {
		if (main == null)
			main = new Main(getinstance());
		return main;
	}

	/**
	 * 运行主画面
	 */
	public void runMainForm() {
		if (main != null)
			main.dispose();
		main = new Main(getinstance());
		Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
		main.setLocation((d.width - main.getSize().width), (d.height - main.getSize().height * 2));
		main.setVisible(true);
	}

	// ** *********************数据********************** */
	private Hashtable<String, String> configMap;

	public void loadConfigMap() {
		configMap = new Hashtable<String, String>();
		// 数据初始化//配置文件读取
		try {
			configMap = JMMRConfig.getConfigs();
		} catch (Exception e) {
			showErrorMessageDialog("配置文件读取异常!");
			System.exit(0);
		}
	}

	/**
	 * 获得配置信息
	 * 
	 * @return
	 */
	public Hashtable<String, String> getConfigMap() {
		if (configMap == null) {
			loadConfigMap();
		}
		return configMap;
	}
	
	/**
	 * 保存配置信息到文件
	 * 
	 * @param fileNameKey
	 * @param config
	 */
	public void saveConfigFile(String fileNameKey, Hashtable<String, String> config) {
		final String NEW_LINE = "\n";
		try{
			//创建工厂
			XMLOutputFactory outputFactory=XMLOutputFactory.newInstance(); 
			FileOutputStream output=new FileOutputStream(new File(getConfigMap().get(fileNameKey))); 
			XMLStreamWriter XMLStreamWriterr=outputFactory.createXMLStreamWriter(output,"utf-8"); 
			//创建头部信息
			XMLStreamWriterr.writeStartDocument("utf-8","1.0");
			XMLStreamWriterr.writeCharacters(NEW_LINE);
			//创建开始标记
			XMLStreamWriterr.writeStartElement(CONFIG); 
			XMLStreamWriterr.writeCharacters(NEW_LINE);			
			//保存全部内容
			Iterator it = config.entrySet().iterator();
            while (it.hasNext()) {
                Map.Entry mpField = (Map.Entry) it.next();
    			XMLStreamWriterr.writeStartElement(""+mpField.getKey()); 
    			XMLStreamWriterr.writeCharacters(""+mpField.getValue()); 
    			XMLStreamWriterr.writeEndElement();
    			XMLStreamWriterr.writeCharacters(NEW_LINE);
            }			
            //结束XML
			XMLStreamWriterr.writeEndElement();
			XMLStreamWriterr.writeEndDocument() ;
			//关闭数据流
			XMLStreamWriterr.flush(); 
			XMLStreamWriterr.close(); 
			this.showInfoMessageDialog(getConfigMap().get(fileNameKey)+"\r\n"+getConfigMap().get(LANG_CONFIG_SAVE_SUCCESS));
		} catch (Exception e) {
			e.printStackTrace();
			this.showErrorMessageDialog(getConfigMap().get(fileNameKey)+"\r\n"+getConfigMap().get(LANG_CONFIG_SAVE_FAILED));
		}
	}

	//////////////////////////////

	/** 全部FAQ信息 */
	private Hashtable<String, ESM000500> faqMap;

	/**
	 * 获得全部FAQ信息
	 * 
	 * @return FAQ信息
	 */
	public Hashtable<String, ESM000500> getFaqMap() {
		if (faqMap == null) {
			try {
				ESM000500 faq = new ESM000500();
				JMVector faqList = (new SimpleEntityTable(faq, true)).select().getResultList();
				faqMap = new Hashtable<String, ESM000500>();
				for (int i = 0; i < faqList.size(); i++) {
					faq = (ESM000500) faqList.get(i);
					faqMap.put(faq.getNumID(), faq);
				}
			} catch (Exception e) {
				getLogger().error(null, e);
			}
		}
		return faqMap;
	}

	/** 全部Talk信息 */
	private Hashtable<String, ESM000200> talkMap;

	private Log logForm = null;

	/**
	 * 获得日志画面
	 */
	public Log getLogForm() {
		if (logForm == null)
			logForm = new Log(getMainForm(), this);
		return logForm;
	}

	/**
	 * 获得日志
	 */
	public Logger getLogger() {
		return getLogForm();
	}

	/**
	 * 获得全部Talk信息
	 * 
	 * @return Talk信息
	 */
	public Hashtable<String, ESM000200> getTalkMap() {
		if (talkMap == null) {
			try {
				ESM000200 talk = new ESM000200();
				JMVector faqList = (new SimpleEntityTable(talk, true)).select().getResultList();
				talkMap = new Hashtable<String, ESM000200>();
				for (int i = 0; i < faqList.size(); i++) {
					talk = (ESM000200) faqList.get(i);
					talkMap.put(talk.getNumID(), talk);
				}
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		return talkMap;
	}

	// ** *********************JMDBOConnectionPool************************ */
	private JMDBOConnectionPool connectionPool;

	/**
	 * 获得数据库连接
	 * 
	 * @return
	 */
	public JMDBOConnectionPool getConnectionPool() {
		try {
			if (connectionPool == null) {
				JMDBOConntionInfoKeyValue dbconfig = new JMDBOConntionInfoKeyValue();

				dbconfig.setDriver(getConfigMap().get(CONFIG_DATABASE_DRIVER));
				dbconfig.setUrl(getConfigMap().get(CONFIG_DATABASE_URL));
				dbconfig.setUser(getConfigMap().get(CONFIG_DATABASE_USER));
				dbconfig.setPassword(getConfigMap().get(CONFIG_DATABASE_PASSWORD));
				dbconfig.setMaxcon(getConfigMap().get(CONFIG_DATABASE_CON_MAX));

				connectionPool = new JMDBOConnectionPool(dbconfig);
			}
		} catch (Exception e) {
			e.printStackTrace();
			MSNManager.getinstance().showErrorMessageDialog("配置文件读取异常!");
		}
		return connectionPool;
	}

	/** 连接用户全部数据 */
	private Hashtable<String, BusinessUser> userList = new Hashtable<String, BusinessUser>();

	/**
	 * 获得系统运行时候的用户临时数据
	 * 
	 * @return
	 */
	public Hashtable<String, BusinessUser> getUserList() {
		return userList;
	}

	// ////////////////////////////////////////////////////
	/** 允许访问用户列表 */
	private Hashtable<String, ESM000300> canUseList;

	/**
	 * (商业用)获得允许访问用户ID
	 * 
	 * @param u
	 * @return
	 */
	public String getBusinessUsers(BusinessUser u) {
		try {
			ESM000300 user = getBusinessCanUseList().get(u.getMsnID());
			return user.getUserID();
		} catch (Exception e) {
			return JM.Author;
		}
	}

	/**
	 * (商业用)获得允许访问用户列表
	 * 
	 * @return
	 */
	public Hashtable<String, ESM000300> getBusinessCanUseList() {
		if (canUseList == null) {
			try {
				ESM000300 user = new ESM000300();
				JMVector out = (new SimpleEntityTable(user, true)).select().getResultList();
				canUseList = new Hashtable<String, ESM000300>();
				for (int i = 0; i < out.size(); i++) {
					user = (ESM000300) out.get(i);
					canUseList.put(user.getLoginID(), user);
				}
			} catch (Exception ex) {
				ex.printStackTrace();
			}
		}
		return canUseList;
	}

	/** 命令管理列表 */
	private Hashtable<String, String> gamenList;

	/**
	 * (商业用)获得商业命令列表
	 * 
	 * @return
	 */
	public Hashtable<String, String> getBusinessGamenList() {
		if (gamenList == null) {
			try {
				ESC000700 gamen = new ESC000700();
				JMVector out = (new SimpleEntityTable(gamen, true)).select().getResultList();
				gamenList = new Hashtable<String, String>();
				for (int i = 0; i < out.size(); i++) {
					gamen = (ESC000700) out.get(i);
					gamenList.put(gamen.getGamenID(), gamen.getGamenPath());
				}
			} catch (Exception ex) {
				ex.printStackTrace();
			}
		}
		return gamenList;
	}

	/** 权限设置列表 */
	private Hashtable<String, JMVector> roolList;

	/**
	 * (商业用)确认权限
	 * 
	 * @param u
	 * @param gamenID
	 * @return
	 */
	public boolean haveBusinessRool(BusinessUser u, String gamenID) {
		try {
			JMVector rool = getBusinessRoolList().get(u.getUserID());
			return rool.contains(gamenID);
		} catch (Exception e) {
			return false;
		}
	}

	/**
	 * (商业用)获得权限设置列表
	 * 
	 * @return
	 */
	public Hashtable<String, JMVector> getBusinessRoolList() {
		if (roolList == null) {
			try {
				ESC000500 rool = new ESC000500();
				JMVector list = null;
				JMVector out = (new SimpleEntityTable(rool, true)).select().getResultList();
				roolList = new Hashtable<String, JMVector>();
				for (int i = 0; i < out.size(); i++) {
					rool = (ESC000500) out.get(i);
					list = roolList.get(rool.getUserID());
					if (list == null) {
						list = new JMVector();
					}
					list.add(rool.getGamenID());
					roolList.put(rool.getUserID(), list);
				}
			} catch (Exception ex) {
				ex.printStackTrace();
			}
		}
		return roolList;
	}

	// ////////////////////////////////////////////////////
	/**
	 * 显示警告信息
	 * 
	 * @param message
	 *            String
	 */
	public void showErrorMessageDialog(String message) {
		JOptionPane.showMessageDialog(null, message, CommandSYKeys.MESSAGE_ERROR, JOptionPane.ERROR_MESSAGE);
	}

	/**
	 * 显示确认信息
	 * 
	 * @param message
	 *            String
	 */
	public int showConfirmMessageDialog(String message) {
		return JOptionPane.showConfirmDialog(null, message, CommandSYKeys.MESSAGE_CONFIRM, JOptionPane.YES_NO_OPTION);
	}

	/**
	 * 显示提示信息
	 * 
	 * @param message
	 */
	public void showInfoMessageDialog(String message) {
		JOptionPane.showMessageDialog(null, message, CommandSYKeys.MESSAGE_INFO, JOptionPane.INFORMATION_MESSAGE);
	}

	/** 分词程序 */
	private MsgSegmenter segmenter = null;

	public MsgSegmenter getSegmenter() {
		if (segmenter == null)
			segmenter = new MsgSegmenter(getinstance());
		return segmenter;
	}
}

⌨️ 快捷键说明

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