All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.nutz.spring.boot.dao.sqlmanager.XmlSqlManager Maven / Gradle / Ivy

There is a newer version: 3.4.1
Show newest version
package org.nutz.spring.boot.dao.sqlmanager;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

import org.nutz.dao.impl.FileSqlManager;
import org.nutz.lang.Xmls;
import org.nutz.log.Log;
import org.nutz.log.Logs;
import org.nutz.resource.NutResource;
import org.nutz.resource.Scans;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

/**
 * 
 * @author Kerbores([email protected])
 *
 */
public class XmlSqlManager extends FileSqlManager {

    private static final Log log = Logs.get();

    public XmlSqlManager() {}

    public XmlSqlManager(String... paths) {
        super(paths);
    }

    @Override
    public void refresh() {
        if (paths != null) {
            for (String path : paths) {
                List res = Scans.me().scan(path, "^.+[.]xml$");
                for (NutResource nr : res) {
                    log.debug("add xml " + nr.getName());
                    try {
                        add(nr.getInputStream());
                    }
                    catch (IOException e) {
                        log.debug("fail at " + nr.getName(), e);
                    }
                }
            }
        }
    }

    public void add(InputStream ins) {
        Document doc = Xmls.xml(ins);
        doc.normalize();
        Element root = doc.getDocumentElement();
        NodeList nodes = root.getChildNodes();
        for (int i = 0; i < nodes.getLength(); i++) {
            Node node = nodes.item(i);
            if ("sql".equals(node.getNodeName())) {
                Element ele = (Element) node;
                String key = ele.getAttribute("key");
                String value = Xmls.getText(ele);
                addSql(key, value);
            }
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy