资料监听管理篇FileManager 03

文件监听管理篇FileManager 03
finally
        {
            try
            {
                if(reader!=null)
                {
                    reader.close();
                }
            }
            catch (Exception e2)
            {
                logger.error("Can not close file:"+url.getFile(),e2);
            }
        }       
        return prop;
    }
   
    /**
     * 得到配置文件
     */
    public static FileListener getFileListener(String fileName)
    {
        //先检查Map中是否有值.
        checkFMap();
        //根据Key得到具体的对象
        return FMap.get(fileName);
    }
   
    /**
     * 检查是否有加载配置文件
     */
    public static void checkFMap()
    {
        //先检查Map中是否有值,
        if(FMap.size()==0)
        {
            synchronized (FileManager.class)
            {
                if(FMap.size()==0)
                {
                    //启动监听
                    startService();
                }
            }
        }
    }
    public static Properties getProperties(String fileName)
    {
        //从FMap中根据文件名,得到FileListener对象.
        FileListener listener=getFileListener(fileName);
        if(null==listener)
        {
            logger.error("Can not find the fileListener:"+fileName);
            return null;
        }
        //得到FileListener对象之后,再调用方法得到具体的Properties
        return listener.getProperties();
    }
    public static String getProperty(String fileName,String key)
    {
        FileListener listener=getFileListener(fileName);
        //如果取不到昨听的文件返回空值
        if(listener==null)
        {
            logger.error("Can not find the fileListener:"+ fileName);
            return null;
        }
       
        //在PropertyFileListener类中先得到Properties中再根据key得到其Value
        return listener.getPropertyValue(key);
    }
     public static String getProperty(String fileName, String key,
            String defaultValue)
    {
       //根据文件名和Key先调用本类中的getProperty方法.
        String value = getProperty(fileName, key);
        if (value == null)
        {
            value = defaultValue;
        }
        return value;

    }
   
    /**
     * 遍历所有的枚举文件取值方法,主要是兼容之前的版 本所用
     *
     */
    public static String getPropertyFromAllEnumerates(String key)
    {
        //先检查Map中是否有内容
        checkFMap();
        String result=null;
        //遍历Map中的内容得到所有的key值.
        Iterator<String> it=FMap.keySet().iterator();
        while(it.hasNext())
        {
            String tempKey=it.next();
            //根据 key得到FileListener对象
            FileListener tempListener=FMap.get(tempKey);
           
            //将FileListener对象指引为XMLFileListener对象
            if(tempListener instanceof XMLFileListener)
            {
                //根据key得到 xml文件中所对应的值.
                String tempResult=tempListener.getPropertyValue(key);
                if(tempResult != null)
                {
                    result=tempResult;
                    break;
                }
            }
        }
        return result;
    }