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

📄 opermanager.java

📁 sp最新短信API(综合网关)
💻 JAVA
字号:
package com.wayout.wayoutsp.operation;

import java.util.*;
import com.wayout.wayoutsp.publics.*;
import com.wayout.wayoutsp.communication.*;
import java.io.*;

/**
 * <p>Title: OperManager</p>
 * <p>Description: 业务模块管理器</p>
 * <p>Copyright: Copyright (c) 2002</p>
 * <p>Company: wayout</p>
 * @author wayout
 * @version 1.01
 */

public final class OperManager implements Observer
{
    protected final static boolean DEBUG = false;

    private static OperManager _instance = new OperManager();

    private final Vector _busiModule = new Vector();

    /*
     * 服务是否已经启动
     */
    private boolean serverStarted = false;



    /**
     * 返回唯一不变对象
     * @return OperManager对象
     */
    public static OperManager getInstance()
    {
        if(null == _instance)
        {
            _instance = new OperManager();
        }
        return _instance;
    }

    public void startAllBusiModule()
    {
        String[] allModule = getAllModule();
        if(0 == allModule.length)
        {
            /** @todo perhaps modify at later */
            return;
        }

        for(int i = 0 ;i < allModule.length; i++)
        {
            try
            {
                ((Operation)Class.forName(allModule[i]).newInstance()).startAllKindServer();
            }

            catch (ClassNotFoundException ex)
            {
                System.err.println("Please reset "+allModule+".class in your CLASSPATH");

                System.out.println("");
                System.out.println("<BGN>#####################################");
                System.out.println("<Reason><BGN>Module loader error.<END>");
                System.out.println("System will done later 5 second.");
                System.out.println("<END>#####################################");

                try
                {
                    Thread.sleep(5000);
                }
                catch (InterruptedException e)
                {
                }

                System.exit(-1);

            }
            catch (IllegalAccessException ex)
            {
                System.err.println("");
            }
            catch (InstantiationException ex)
            {
                System.err.println("Please provide a no parameter construction by "+allModule[i]+".class");
                System.out.println("");
                System.out.println("<BGN>#####################################");
                System.out.println("<Reason><BGN>must provide a no prrameter construction<END>");
                System.out.println("System will done later 5 second.");
                System.out.println("<END>#####################################");

                try
                {
                    Thread.sleep(5000);
                }
                catch (InterruptedException e)
                {
                }

                System.exit(-1);

            }

        }
    }

    private String[] getAllModule()
    {
        String[] arrLocal = new String[0];
        Properties prop = new Properties();
        try {
            String file =  PublicConstants.ConfigFile;/*System.getProperty("user.dir")
                                              +File.separator
                                              +"cfg"
                                              +File.separator+"com.wayout.wayoutsp.cf";*/
            if(DEBUG)
            {
                System.out.println(file);
            }
            prop.load(new java.io.FileInputStream(file));
        }
        catch (IOException ex)
        {
            System.err.println("com.wayout.wayoutsp.cf not find in current directory");
            System.exit(-1);
        }

        final int busiModuleCount = Integer.parseInt(prop.getProperty("businessModuleCount"));
        System.out.println("busiModuleCount = < "+ busiModuleCount+" >");
        arrLocal = new String[busiModuleCount];
        for(int i = 0 ;i<busiModuleCount;i++)
        {
            final String moduleName = prop.getProperty("businessModule."+(i+1));
            if(null == moduleName)
            {
                System.err.println("Please check your config file."+ "<ERROR><BNG>"+"businessModule."+(i+1)+"<END>");
            }
            arrLocal[i] = moduleName;
        }
        System.out.println("LOADED BUSINESS MODULE : "+java.util.Arrays.asList(arrLocal));
        return arrLocal;
    }


    /**
     * 把观察者加入至观察者队列
     * @param oper 要加入的观察者
     */
    public synchronized void register(Operation oper)
    {
        if(!_busiModule.contains(oper))
        {
            _busiModule.addElement(oper);
        }
    }


//	public static synchronized  void addBusiOper(Operation oper)
//	{
//		getInstance().register(oper);
//	}


    private OperManager()
    {
//		startAllBusiModule();
    }

    /**
     * 目前保留
     * @param observable
     * @param arg
     */
    public void update(Observable observable,Object arg)
    {}

    private boolean notifyAllBusiModule(Object obj)
    {
        boolean returnVaule = false;
        Object[] arrLocal;
        synchronized (this)
        {
            arrLocal = _busiModule.toArray();
        }

        for (int i = 0; i<arrLocal.length; i++)
        {
            returnVaule|=((Operation)arrLocal[i]).addPackage(obj);
        }
        return returnVaule;
    }

    /**
     * 通信模块将显示调用此方法,以便业务处理
     * @param obj 要传给业务处理模块的数据
     */
    public void handReceiverData(Object obj)
    {
        if(!notifyAllBusiModule(obj))
        {
            errorBusiCode(obj);
        }
    }

    public void sendShortMessage(SendDataBean sendBean)
    {
        /** @todo DEBUG */
        CmppConnectionManager.instance().sendToIsmg(sendBean);
        if(DEBUG)
        {
            System.out.println("<MT MESSAGE><BGN>");
            System.out.println("<Dest Address><BGN>"+(sendBean.getDestAddrs())[0]+"<END>");
            System.out.println("<Source Address><BGN>"+sendBean.srcAddr+"<END>");
            System.out.println("<MSG Contents><BGN>"+sendBean.sendData+"<END>");
            System.out.println("<MT MESSAGE><END>");
        }
    }

    private void errorBusiCode(Object obj)
    {
      //modified by dufs@wayoutcom.com 2004-3-31
//        SendDataBean sendBean = new SendDataBean();
//        sendBean.addDestAddr(((com.wayout.wayoutsp.publics.ReceiveDataBean)obj).srcAddr);
//        sendBean.feeType = PublicConstants.TotalHelpFeeType;
//        sendBean.infoFee = PublicConstants.TotalHelpInfoFee;
//        sendBean.srcAddr = com.wayout.wayoutsp.communication.ComConstants.o_IsmgInfo.spCode;
//        sendBean.feeTerminalId=((com.wayout.wayoutsp.publics.ReceiveDataBean)obj).srcAddr;
//        sendBean.servieceType = PublicConstants.TotalHelpServieceType;
//        sendBean.sendData = "输入有误!请重试";//PublicConstants.TotalHelpMsg;
//        sendShortMessage(sendBean);
    }
    public boolean isServerStarted() {
        return serverStarted;
    }
    public void setServerStarted(boolean serverStarted) {
        this.serverStarted = serverStarted;
    }

}

⌨️ 快捷键说明

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