use of org.nutz.resource.NutResource in project nutz by nutzam.
the class FileSqlManager method refresh.
public void refresh() {
for (String path : paths) {
List<NutResource> list = Scans.me().scan(path, ".(sql|sqlx|sqls)$");
for (NutResource res : list) {
int c = count();
log.debugf("load >> %s from root=%s", res.getName(), path);
try {
add(res.getReader());
} catch (IOException e) {
log.warnf("fail to load %s from root=%s", res.getName(), path, e);
}
log.debugf("load %d sql >> %s from root=%s", (count() - c), res.getName(), path);
}
}
}
use of org.nutz.resource.NutResource in project nutz by nutzam.
the class PropertiesProxy method setPaths.
/**
* 加载指定文件/文件夹的Properties文件,合并成一个Properties对象
* <p>
* <b style=color:red>如果有重复的key,请务必注意加载的顺序!!<b/>
*
* @param paths
* 需要加载的Properties文件路径
*/
public void setPaths(String... paths) {
clear();
try {
List<NutResource> list = getResources(paths);
if (utf8)
for (NutResource nr : list) {
if (log.isDebugEnabled())
log.debug("load properties from " + nr);
Reader r = nr.getReader();
try {
load(nr.getReader(), false);
} finally {
Streams.safeClose(r);
}
}
else {
Properties p = new Properties();
for (NutResource nr : list) {
// 用字符流来读取文件
BufferedReader bf = new BufferedReader(new InputStreamReader(nr.getInputStream()));
try {
p.load(bf);
} finally {
Streams.safeClose(bf);
}
}
putAll(p);
}
} catch (IOException e) {
throw Lang.wrapThrow(e);
}
}
use of org.nutz.resource.NutResource in project nutz by nutzam.
the class NutMessageLoader method load.
public Map<String, Map<String, Object>> load(String refer) {
Map<String, Map<String, Object>> re = new HashMap<String, Map<String, Object>>();
List<NutResource> allnrs = Scans.me().scan(refer, "^.+[.]properties$");
if (log.isDebugEnabled())
log.debugf("Load Messages in %s resource : [%s]", allnrs.size(), allnrs);
// 求取路径的最大长度
int max = 0;
for (NutResource nr : allnrs) {
String[] nms = nr.getName().split("[\\\\/]");
max = Math.max(max, nms.length);
}
// 根据第二级目录,编制列表
Map<String, List<NutResource>> map = new HashMap<String, List<NutResource>>();
for (NutResource nr : allnrs) {
String langType;
String resName = nr.getName();
if (resName.contains("/"))
langType = resName.substring(0, resName.indexOf('/'));
else if (resName.contains("\\"))
langType = resName.substring(0, resName.indexOf('\\'));
else
langType = Mvcs.DEFAULT_MSGS;
// 按语言类型编制
List<NutResource> list = map.get(langType);
if (null == list) {
list = new ArrayList<NutResource>(10);
map.put(langType, list);
}
list.add(nr);
}
// 根据语言的分类,依次构建字符串 Map
try {
for (Entry<String, List<NutResource>> entry : map.entrySet()) {
List<NutResource> nrs = entry.getValue();
String langType = entry.getKey();
// 循环读取该语言的文件夹
for (NutResource nr : nrs) {
// 读取多行属性
MultiLineProperties p = new MultiLineProperties();
Reader r = nr.getReader();
p.load(r);
r.close();
// 获取当前语言的 Map
Map<String, Object> msgs = re.get(langType);
if (null == msgs) {
msgs = new NutMessageMap();
re.put(langType, msgs);
}
// 将本地化字符串增加到当前语言
for (Map.Entry<String, String> en : p.entrySet()) {
msgs.put(en.getKey(), en.getValue());
}
}
// ~ 内部循环结束
}
} catch (Exception e) {
throw Lang.wrapThrow(e);
}
// TODO 这段代码应该在 1.b.46 之后的某一个版本删掉
if (!re.containsKey(Mvcs.DEFAULT_MSGS)) {
if (re.size() > 0) {
String first_lang = re.keySet().iterator().next();
re.put(Mvcs.DEFAULT_MSGS, re.get(first_lang));
}
}
if (log.isDebugEnabled())
log.debugf("Message Loaded, size = %s", re.size());
// 返回结果
return re;
}
use of org.nutz.resource.NutResource in project nutz by nutzam.
the class NutConf method loadResource.
/**
* 加载资源
*/
@SuppressWarnings({ "unchecked", "rawtypes" })
private void loadResource(String... paths) {
for (String path : paths) {
List<NutResource> resources;
if (path.endsWith(".js") || path.endsWith(".json")) {
File f = Files.findFile(path);
resources = new ArrayList<NutResource>();
resources.add(new FileResource(f));
} else {
resources = Scans.me().scan(path, "\\.(js|json)$");
}
for (NutResource nr : resources) {
try {
Object obj = Json.fromJson(nr.getReader());
if (obj instanceof Map) {
Map m = (Map) obj;
map = (Map) Mapl.merge(map, m);
for (Object key : m.keySet()) {
if (key.equals("include")) {
map.remove("include");
List<String> include = (List) m.get("include");
loadResource(include.toArray(new String[include.size()]));
}
}
}
} catch (Throwable e) {
if (log.isWarnEnabled())
log.warn("Fail to load config?! for " + nr.getName(), e);
}
}
}
}
Aggregations