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

org.meridor.perspective.sql.SelectQuery Maven / Gradle / Ivy

There is a newer version: 1.3.4.1
Show newest version
package org.meridor.perspective.sql;

import java.util.*;
import java.util.stream.Collectors;

public class SelectQuery extends BaseQueryPart {

    private final Map columns = new LinkedHashMap<>();

    public SelectQuery() {
        addToSql("select");
    }

    public SelectQuery all() {
        addToSql(" *");
        return this;
    }
    
    public SelectQuery column(String name) {
        columns.put(name, null);
        return this;
    }
    
    public SelectQuery column(String name, String alias) {
        columns.put(name, alias);
        return this;
    }
    
    public SelectQuery columns(String... names) {
        if (names != null) {
            Arrays.stream(names).forEach(this::column);
        }
        return this;
    }

    public FromClause from() {
        return new FromClause(this);
    }
    
    @Override
    public String getSql() {
        if (!columns.isEmpty()) {
            String columnNames = columns.keySet().stream()
                    .map(n ->
                            (columns.get(n) != null) ?
                                    String.format("%s as %s", n, columns.get(n)) :
                                    n
                    )
                    .collect(Collectors.joining(", "));
            addToSql(" " + columnNames);
        }
        return super.getSql();
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy