com.jn.sqlhelper.jsqlparser.instrument.JSqlParserOrderByTransformer Maven / Gradle / Ivy
The newest version!
package com.jn.sqlhelper.jsqlparser.instrument;
import com.jn.langx.annotation.NonNull;
import com.jn.langx.lifecycle.InitializationException;
import com.jn.langx.text.StringTemplates;
import com.jn.langx.util.Emptys;
import com.jn.langx.util.Preconditions;
import com.jn.langx.util.function.Supplier;
import com.jn.sqlhelper.dialect.instrument.AbstractClauseTransformer;
import com.jn.sqlhelper.dialect.instrument.SQLTransformException;
import com.jn.sqlhelper.dialect.instrument.TransformConfig;
import com.jn.sqlhelper.dialect.instrument.orderby.OrderByTransformer;
import com.jn.sqlhelper.dialect.orderby.OrderBy;
import com.jn.sqlhelper.dialect.orderby.OrderByItem;
import com.jn.sqlhelper.dialect.orderby.OrderByType;
import com.jn.sqlhelper.dialect.sqlparser.SQLParseException;
import com.jn.sqlhelper.dialect.sqlparser.SqlStatementWrapper;
import com.jn.sqlhelper.jsqlparser.utils.JSqlParsers;
import net.sf.jsqlparser.JSQLParserException;
import net.sf.jsqlparser.expression.Expression;
import net.sf.jsqlparser.parser.CCJSqlParserUtil;
import net.sf.jsqlparser.statement.Statement;
import net.sf.jsqlparser.statement.select.OrderByElement;
import net.sf.jsqlparser.statement.select.PlainSelect;
import net.sf.jsqlparser.statement.select.Select;
import net.sf.jsqlparser.statement.select.SelectBody;
import java.util.ArrayList;
import java.util.List;
public class JSqlParserOrderByTransformer extends AbstractClauseTransformer implements OrderByTransformer {
@Override
public void init() throws InitializationException {
}
@Override
public SqlStatementWrapper transform(@NonNull SqlStatementWrapper sw, @NonNull TransformConfig config) {
Preconditions.checkNotNull(sw);
Preconditions.checkNotNull(config);
OrderBy orderBy = Preconditions.checkNotNull(config.getOrderBy());
final Statement statement = sw.get();
Preconditions.checkNotNull(statement, "statement is null");
Preconditions.checkTrue(statement instanceof Select, new Supplier