package org.safehaus.penrose.jdbc; import org.safehaus.penrose.filter.Filter; import java.util.*; /** * @author Endi S. Dewata */ public class SelectStatement extends Statement { protected Collection<String> columnNames = new ArrayList<String>(); protected Map<String,StatementSource> sources = new LinkedHashMap<String,StatementSource>(); // maintain source order protected Collection<JoinClause> joinClauses = new ArrayList<JoinClause>(); protected Filter filter; private String whereClause; protected Collection<String> orders = new ArrayList<String>(); public Collection<String> getColumnNames() { return columnNames; } public void addColumn(String columnName) { columnNames.add(columnName); } public void setColumnNames(Collection<String> columnNames) { if (this.columnNames == columnNames) return; this.columnNames.clear(); if (columnNames == null) return; this.columnNames.addAll(columnNames); } public Collection<String> getSourceAliases() { return sources.keySet(); } public StatementSource getSource(String alias) { return sources.get(alias); } public void addSource(String alias, String partitionName, String sourceName) { StatementSource source = new StatementSource(); source.setAlias(alias); source.setPartitionName(partitionName); source.setSourceName(sourceName); sources.put(alias, source); } public void addJoin(JoinClause joinClause) { joinClauses.add(joinClause); } public Collection<JoinClause> getJoinClauses() { return joinClauses; } public Filter getFilter() { return filter; } public void setFilter(Filter filter) { this.filter = filter; } public Collection<String> getOrders() { return orders; } public void addOrder(String order) { orders.add(order); } public void addOrders(Collection<String> orders) { this.orders.addAll(orders); } public void setOrders(Collection<String> orders) { if (this.orders == orders) return; this.orders.clear(); if (orders == null) return; this.orders.addAll(orders); } public String getWhereClause() { return whereClause; } public void setWhereClause(String whereClause) { this.whereClause = whereClause; } }