//package com.eactive.eai.adapter; 
//
//import java.util.HashMap;
//import com.eactive.eai.adapter.socket.SocketAdapter;
//
///** 
//* 1. 기능 : 어댑터를 초기화 하기 위한 Factory Class
//* 2. 처리 개요 : 
//*     - 초기화 된 어댑터 인스턴스를 HashMap 객체에 담는다.
//*     - 해당 어댑터의 WLIAdapter 인스턴스를 반환 한다.
//* 3. 주의사항 
//*
//*/
//public class WLIAdapterFactory 
//{ 
//    
//    private static final WLIAdapterFactory factory = new WLIAdapterFactory();
//    
//    private HashMap<String, WLIAdapter> adapterMap;
//    
//    /** 
//    * 1. 기능 :  Default Constructor
//    * 2. 처리 개요 : 
//    *     - 타입 별 어댑터 instance를 어댑터 HashMap에 담는다.
//    * 3. 주의사항 
//    *
//    **/
//    private WLIAdapterFactory() {
//        // 초기화 코드는 여기에 넣어 주세요.
//        //try {
//            adapterMap = new HashMap<String, WLIAdapter>();
//            //adapterMap.put(Keys.TYPE_HTTP, new HttpClientAdapter());
//            //adapterMap.put(Keys.TYPE_SNA, new SNAAdapterClient());
//            //adapterMap.put(Keys.TYPE_NET, SocketAdapter.getInstance());
//            
//            //adapterMap.put(Keys.TYPE_IMS, new IMSAdapter());
//            //adapterMap.put(Keys.TYPE_IMS, IMSAdapter.getInstance());
//        //} catch(Exception e) {
//        //    throw new RuntimeException(ExceptionUtil.getErrorCode(e, "RECEAIAAC026"));
//        //}
//    }
//    
//    /** 
//    * 1. 기능 :  WLIAdapterFactory Object를 반환하는 getter method
//    * 2. 처리 개요 : WLIAdapterFactory Object를 반환한다.
//    * 3. 주의사항 
//    *
//    * @return   WLIAdapterFactory object
//    **/
//    public static WLIAdapterFactory newInstance() {
//        return factory;
//    }
//    
//    /** 
//    * 1. 기능 :  해당 어댑터의 WLIAdapter Object를 반환
//    * 2. 처리 개요 : 
//    *     - WLIAdapter instance HashMap으로 부터 해당 어댑터의 WLIAdapter Object를 반환 한다.
//    * 3. 주의사항 
//    *
//    * @param    adapterName 어댑터명
//    * @return   WLIAdapter object
//    **/
//    public WLIAdapter getWLIAdapter(String adapterName) {
//        WLIAdapter adapter  = (WLIAdapter)adapterMap.get(adapterName);
//        if(adapter==null) {
//            adapter = createAdapter(adapterName);   
//        }
//        if(adapter==null) {
//            throw new RuntimeException("등록된 어댑터를 찾을 수 없습니다. - "+adapterName);
//        }
//        return adapter;
//    }
//    
//    private synchronized WLIAdapter createAdapter(String adapterName) {
//        if(adapterName==null) return null;
//        
//        WLIAdapter adapter = null;
//        if(adapterName.equals(Keys.TYPE_HTTP)) {
//            //adapter = new HttpClientAdapter();
//            //adapterMap.put(Keys.TYPE_HTTP, adapter);
//        } else if(adapterName.equals(Keys.TYPE_SNA)) {
//            //adapter = new SNAAdapterClient();
//            //adapterMap.put(Keys.TYPE_SNA, adapter);
//        } else if(adapterName.equals(Keys.TYPE_NET)) {
//            adapter = SocketAdapter.getInstance();
//            adapterMap.put(Keys.TYPE_NET, adapter);
//        } else if(adapterName.equals(Keys.TYPE_IMS)) {
//            //adapter = IMSAdapter.getInstance();
//            //adapterMap.put(Keys.TYPE_IMS, adapter);
//        }  
//        
//        return adapter;
//    }
//} 

