Package com.dbdeploy.database

Source Code of com.dbdeploy.database.QueryStatementSplitter

package com.dbdeploy.database;

import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.text.StrBuilder;
import org.apache.commons.lang.text.StrMatcher;
import org.apache.commons.lang.text.StrTokenizer;

import java.util.ArrayList;
import java.util.List;

public class QueryStatementSplitter {
    private String delimiter = ";";
    private DelimiterType delimiterType = DelimiterType.normal;
  private LineEnding lineEnding = LineEnding.platform;

  public QueryStatementSplitter() {
    }

    public List<String> split(String input) {
        List<String> statements = new ArrayList<String>();
        StrBuilder currentSql = new StrBuilder();

        StrTokenizer lineTokenizer = new StrTokenizer(input);
        lineTokenizer.setDelimiterMatcher(StrMatcher.charSetMatcher("\r\n"));

        for (String line : lineTokenizer.getTokenArray()) {
          String strippedLine = StringUtils.stripEnd(line, null);
            if (!currentSql.isEmpty()) {
                currentSql.append(lineEnding.get());
            }

            currentSql.append(strippedLine);

           if (delimiterType.matches(strippedLine, delimiter)) {
                statements.add(currentSql.substring(0, currentSql.length() - delimiter.length()));
                currentSql.clear();
            }
        }

        if (!currentSql.isEmpty()) {
            statements.add(currentSql.toString());
        }
       
        return statements;
    }

    public String getDelimiter() {
        return delimiter;
    }

    public void setDelimiter(String delimiter) {
        this.delimiter = delimiter;
    }

    public DelimiterType getDelimiterType() {
        return delimiterType;
    }

    public void setDelimiterType(DelimiterType delimiterType) {
        this.delimiterType = delimiterType;
    }

  public void setOutputLineEnding(LineEnding lineEnding) {
    this.lineEnding = lineEnding;
  }
}
TOP

Related Classes of com.dbdeploy.database.QueryStatementSplitter

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.