Search in sources :

Example 1 with NutResource

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);
        }
    }
}
Also used : IOException(java.io.IOException) NutResource(org.nutz.resource.NutResource)

Example 2 with NutResource

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);
    }
}
Also used : InputStreamReader(java.io.InputStreamReader) BufferedReader(java.io.BufferedReader) Reader(java.io.Reader) InputStreamReader(java.io.InputStreamReader) BufferedReader(java.io.BufferedReader) IOException(java.io.IOException) NutResource(org.nutz.resource.NutResource) MultiLineProperties(org.nutz.lang.util.MultiLineProperties) Properties(java.util.Properties)

Example 3 with NutResource

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;
}
Also used : HashMap(java.util.HashMap) Reader(java.io.Reader) MultiLineProperties(org.nutz.lang.util.MultiLineProperties) ArrayList(java.util.ArrayList) List(java.util.List) NutResource(org.nutz.resource.NutResource) HashMap(java.util.HashMap) Map(java.util.Map)

Example 4 with NutResource

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);
            }
        }
    }
}
Also used : FileResource(org.nutz.resource.impl.FileResource) ArrayList(java.util.ArrayList) List(java.util.List) NutResource(org.nutz.resource.NutResource) File(java.io.File) HashMap(java.util.HashMap) Map(java.util.Map)

Aggregations

NutResource (org.nutz.resource.NutResource)4 IOException (java.io.IOException)2 Reader (java.io.Reader)2 ArrayList (java.util.ArrayList)2 HashMap (java.util.HashMap)2 List (java.util.List)2 Map (java.util.Map)2 MultiLineProperties (org.nutz.lang.util.MultiLineProperties)2 BufferedReader (java.io.BufferedReader)1 File (java.io.File)1 InputStreamReader (java.io.InputStreamReader)1 Properties (java.util.Properties)1 FileResource (org.nutz.resource.impl.FileResource)1