package org.yamcs.yarch.streamsql;
import org.yamcs.yarch.InputStream;
import org.yamcs.yarch.OutputStream;
import org.yamcs.yarch.Stream;
import org.yamcs.yarch.YarchDatabase;
import org.yamcs.yarch.streamsql.ExecutionContext;
import org.yamcs.yarch.streamsql.NotAStreamException;
import org.yamcs.yarch.streamsql.ResourceNotFoundException;
import org.yamcs.yarch.streamsql.StreamSqlException;
import org.yamcs.yarch.streamsql.StreamSqlResult;
import org.yamcs.yarch.streamsql.StreamSqlStatement;
public class ShowStreamStatement extends StreamSqlStatement{
String name;
boolean showPort;
public ShowStreamStatement(String name, boolean showPort) {
this.name=name;
this.showPort=showPort;
}
@Override
public StreamSqlResult execute(ExecutionContext c) throws StreamSqlException {
YarchDatabase dict=YarchDatabase.getInstance(c.getDbName());
Stream s=null;
synchronized(dict) {
s=dict.getStream(name);
}
if(s==null) throw new ResourceNotFoundException(name);
if(showPort) {
final int port;
if(s instanceof InputStream) {
port=((InputStream)s).getPort();
} else if(s instanceof OutputStream) {
port=((OutputStream)s).getPort();
} else {
throw new NotAStreamException(name);
}
return new StreamSqlResult() {
@Override
public String toString() {
return "port="+port;
};
};
} else {
final String ret=s.toString();
return new StreamSqlResult() {
@Override
public String toString() {
return ret;
}
};
}
}
}