首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > XML SOAP >

XML跟String数据替换 DataCache 02

2012-09-09 
XML和String数据替换 DataCache 02private static MapString, HashtableObject, Object getProperties

XML和String数据替换 DataCache 02
private static Map<String, Hashtable<Object, Object>> getProperties(
            String path)
    {
        File file = new File(path);
        logger.info("Properties directory is" + path);
        // 读出文件夹中的所有.properties文件
        File[] subFiles = file.listFiles(new FilenameFilter()
        {
            public boolean accept(File dir, String name)
            {
                return name.indexOf(".properties") != -1;
            }
        });
        // 读文件器
        FileReader freader = null;
        String fileName = null;
        String interfaceName = null;
        // 初始化Hashtable的长度和properties文件个数一样
        Map<String, Hashtable<Object, Object>> allProperties = new Hashtable<String, Hashtable<Object, Object>>(
                subFiles.length);
        Hashtable<Object, Object> nameSpaceMap = null;
        Hashtable<Object, Object> fieldXpathMap = null;
        Hashtable<Object, Object> encryptXpathMap = null;
        Hashtable<Object, Object> prefixXpathMap = null;

        Properties prop = null;
        String key = null;
        // 遍历已经过滤出来的.properties,存入Hashtable中
        for (File subFile : subFiles)
        {
            logger.debug("Properties file is:" + subFile.getAbsolutePath());
            prop = new Properties();
            nameSpaceMap = new Hashtable<Object, Object>(2);
            encryptXpathMap = new Hashtable<Object, Object>(2);
            fieldXpathMap = new Hashtable<Object, Object>(20);
            prefixXpathMap = new Hashtable<Object, Object>(2);
            // 读取文件名中的接口名
            fileName = subFile.getName();
            interfaceName = fileName.substring(0, fileName.indexOf("."));
            logger.debug("interfaceName file is:" + interfaceName);
            try
            {
                freader = new FileReader(subFile);
                prop.load(freader);
                for (Map.Entry<Object, Object> entry : prop.entrySet())
                {
                    key = (String) entry.getKey();
                    if (key != null && key.startsWith("_namespace_"))
                    {
                        nameSpaceMap.put(key.substring(11), entry.getValue());
                    }
                    else if (key.startsWith("_encrypt_"))
                    {
                        encryptXpathMap.put(key.substring(9), entry.getValue());
                    }
                    else if (key.startsWith("_prefix_"))
                    {
                        prefixXpathMap.put(key.substring(8), entry.getValue());
                    }
                    else
                    {
                        fieldXpathMap.put(key, entry.getValue());
                    }
                }
                prop = null;
                // 将正常的内容 加入allProperties Map中
                allProperties.put(interfaceName, fieldXpathMap);
                // 将带有命名空间的内容加入allProperties Map中
                allProperties.put(interfaceName + "namespace", nameSpaceMap);
                // 带有加密的内容加入allProperties Map中
                allProperties.put(interfaceName + "encrypt", encryptXpathMap);
                // 带有前缀的内容(号码之类)加入allProperties Map中
                allProperties.put(interfaceName + "prefix", fieldXpathMap);
            }
            catch (Exception e)
            {
                logger.error("Close FileReader failure:" + e.getMessage());
            }
            finally
            {
                try
                {
                    if (freader != null)
                    {
                        freader.close();
                    }
                }
                catch (Exception e2)
                {
                    logger.error("Close FileReader failure:" + e2.getMessage());
                }
            }
        }
        return allProperties;
    }

热点排行