package com.javaweb.common.utils;
|
|
import java.io.FileNotFoundException;
|
import java.io.FileWriter;
|
import java.io.IOException;
|
import java.io.InputStream;
|
import java.util.LinkedHashMap;
|
import java.util.Map;
|
import org.yaml.snakeyaml.DumperOptions;
|
import org.yaml.snakeyaml.Yaml;
|
import com.javaweb.common.utils.StringUtils;
|
|
/**
|
* 配置处理工具类
|
*
|
* @author yml
|
*/
|
public class YamlUtil
|
{
|
public static Map<?, ?> loadYaml(String fileName) throws FileNotFoundException
|
{
|
InputStream in = YamlUtil.class.getClassLoader().getResourceAsStream(fileName);
|
return StringUtils.isNotEmpty(fileName) ? (LinkedHashMap<?, ?>) new Yaml().load(in) : null;
|
}
|
|
public static void dumpYaml(String fileName, Map<?, ?> map) throws IOException
|
{
|
if (StringUtils.isNotEmpty(fileName))
|
{
|
FileWriter fileWriter = new FileWriter(YamlUtil.class.getResource(fileName).getFile());
|
DumperOptions options = new DumperOptions();
|
options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK);
|
Yaml yaml = new Yaml(options);
|
yaml.dump(map, fileWriter);
|
}
|
}
|
|
public static Object getProperty(Map<?, ?> map, Object qualifiedKey)
|
{
|
if (map != null && !map.isEmpty() && qualifiedKey != null)
|
{
|
String input = String.valueOf(qualifiedKey);
|
if (!"".equals(input))
|
{
|
if (input.contains("."))
|
{
|
int index = input.indexOf(".");
|
String left = input.substring(0, index);
|
String right = input.substring(index + 1, input.length());
|
return getProperty((Map<?, ?>) map.get(left), right);
|
}
|
else if (map.containsKey(input))
|
{
|
return map.get(input);
|
}
|
else
|
{
|
return null;
|
}
|
}
|
}
|
return null;
|
}
|
|
@SuppressWarnings("unchecked")
|
public static void setProperty(Map<?, ?> map, Object qualifiedKey, Object value)
|
{
|
if (map != null && !map.isEmpty() && qualifiedKey != null)
|
{
|
String input = String.valueOf(qualifiedKey);
|
if (!input.equals(""))
|
{
|
if (input.contains("."))
|
{
|
int index = input.indexOf(".");
|
String left = input.substring(0, index);
|
String right = input.substring(index + 1, input.length());
|
setProperty((Map<?, ?>) map.get(left), right, value);
|
}
|
else
|
{
|
((Map<Object, Object>) map).put(qualifiedKey, value);
|
}
|
}
|
}
|
}
|
}
|