package com.tesora.dve.sql.transform.execution;
/*
* #%L
* Tesora Inc.
* Database Virtualization Engine
* %%
* Copyright (C) 2011 - 2014 Tesora Inc.
* %%
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License, version 3,
* as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
* #L%
*/
import com.tesora.dve.sql.util.BinaryProcedure;
import com.tesora.dve.sql.util.Functional;
import com.tesora.dve.sql.util.ListOfPairs;
import com.tesora.dve.sql.util.Pair;
public class PassThroughCommand<T,K,V> {
public enum Command {
CREATE, DROP, ALTER, SHOW
}
protected T target;
protected Command action;
protected ListOfPairs<K, V> options;
public PassThroughCommand(Command a, T target, ListOfPairs<K,V> opts) {
this.action = a;
this.target = target;
this.options = opts;
}
public Command getAction() {
return action;
}
public T getTarget() {
return target;
}
public ListOfPairs<K,V> getOptions() {
return options;
}
@Override
public String toString() {
StringBuilder buf = new StringBuilder();
buf.append(this.getClass().getName()).append(":'").append(getTarget()).append("':")
.append(action).append("{");
Functional.join(options, buf, ", ", new BinaryProcedure<Pair<K, V>, StringBuilder>() {
@Override
public void execute(Pair<K, V> aobj, StringBuilder bobj) {
bobj.append(aobj.getFirst()).append("=").append(aobj.getSecond());
}
});
buf.append("}");
return buf.toString();
}
}