package org.yamcs.archive; import org.yamcs.YamcsException; import org.yamcs.protobuf.Yamcs.Event; import org.yamcs.protobuf.Yamcs.ProtoDataType; import org.yamcs.protobuf.Yamcs.ReplayRequest; import org.yamcs.yarch.Tuple; import com.google.protobuf.MessageLite; public class EventReplayHandler implements ReplayHandler { ReplayRequest request; @Override public void setRequest(ReplayRequest newRequest) throws YamcsException { this.request = newRequest; } @Override public String getSelectCmd() { StringBuilder sb=new StringBuilder(); sb.append("SELECT ").append(ProtoDataType.EVENT.getNumber()).append(",* from events"); appendWhereClause(sb, request); if(request.hasReverse() && request.getReverse()) { sb.append(" ORDER DESC"); } return sb.toString(); } static void appendWhereClause(StringBuilder sb, ReplayRequest request) { if(request.hasStart() || (request.hasStop())) { sb.append(" where "); if(request.hasStart()) { sb.append(" gentime>="+request.getStart()); if(request.hasStop()) sb.append(" and gentime<"+request.getStop()); } else { sb.append(" gentime<"+request.getStop()); } } } @Override public MessageLite transform(Tuple t) { return (Event) t.getColumn("body"); } @Override public void reset() { } }