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

io.github.h800572003.generate.mapper.XmlSqlReader Maven / Gradle / Ivy

The newest version!
package io.github.h800572003.generate.mapper;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import java.io.StringReader;
import java.util.function.BiConsumer;

public class XmlSqlReader {

    public SqlConfigDTO loadByString(String xmlString) {
        return loadByString(xmlString, (i, v) -> {
        });
    }

    public SqlConfigDTO loadByString(String xmlString, BiConsumer consumer) {
        try {


            DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
            DocumentBuilder builder = factory.newDocumentBuilder();
            InputSource is = new InputSource(new StringReader(xmlString));
            Document document = builder.parse(is);

            Element root = document.getDocumentElement();
            SqlConfigDTO sqlConfigDTO = new SqlConfigDTO();
            NodeList sqlStringList = root.getElementsByTagName("sqlString");
            NodeList describe = root.getElementsByTagName("describe");
            if (describe.getLength() > 0) {
                sqlConfigDTO.setDescribe(describe.item(0).getTextContent());
            }
            NodeList interfaceString = root.getElementsByTagName("interfaceString");
            if (interfaceString.getLength() > 0) {
                sqlConfigDTO.setInterfaceString(interfaceString.item(0).getTextContent());
            }
            Element sqlStringElement = (Element) sqlStringList.item(0);
            NodeList appendList = sqlStringElement.getElementsByTagName("append");
            for (int i = 0; i < appendList.getLength(); i++) {
                SqlConfigDTO.SqlAppender sqlAppender = new SqlConfigDTO.SqlAppender();
                Element appendElement = (Element) appendList.item(i);
                sqlAppender.setValue(appendElement.getTextContent());
                String valueAttribute = appendElement.getAttribute("id");
                if (!valueAttribute.isEmpty()) {
                    sqlAppender.setId(valueAttribute);
                }
                sqlConfigDTO.getSqlString().add(sqlAppender);


            }

            NodeList parametersList = root.getElementsByTagName("parameters");
            Element parametersElement = (Element) parametersList.item(0);
            NodeList valueList = parametersElement.getElementsByTagName("value");
            for (int i = 0; i < valueList.getLength(); i++) {

                SqlConfigDTO.ParameterValue parameterValue = new SqlConfigDTO.ParameterValue();

                Element valueElement = (Element) valueList.item(i);
                String id = valueElement.getAttribute("id");
                String value = valueElement.getAttribute("value");

                parameterValue.setId(id);
                parameterValue.setValue(value);
                sqlConfigDTO.getParameters().add(parameterValue);

            }
            consumer.accept(root, sqlConfigDTO);
            return sqlConfigDTO;
        } catch (Exception e) {
            throw new RuntimeException("xml error", e);
        }
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy