package edu.sc.seis.sod.velocity.seismogram; import java.util.ArrayList; import java.util.List; import edu.iris.Fissures.IfNetwork.Channel; import edu.iris.Fissures.IfSeismogramDC.RequestFilter; import edu.iris.Fissures.model.MicroSecondDate; import edu.iris.Fissures.network.ChannelIdUtil; import edu.iris.Fissures.network.ChannelImpl; import edu.sc.seis.fissuresUtil.hibernate.ChannelGroup; import edu.sc.seis.fissuresUtil.time.MicroSecondTimeRange; import edu.sc.seis.sod.velocity.SimpleVelocitizer; import edu.sc.seis.sod.velocity.network.VelocityChannel; /** * @author groves Created on May 26, 2005 */ public class VelocityRequest { public VelocityRequest(RequestFilter rf, Channel chan) { this(rf, new VelocityChannel((ChannelImpl)chan)); } public VelocityRequest(RequestFilter rf, VelocityChannel chan) { range = new MicroSecondTimeRange(rf); this.chan = chan; } public MicroSecondDate getBegin() { return range.getBeginTime(); } public String getBegin(String dateFormat){ return SimpleVelocitizer.format(getBegin(), dateFormat); } public MicroSecondDate getEnd() { return range.getEndTime(); } public String getEnd(String dateFormat){ return SimpleVelocitizer.format(getEnd(), dateFormat); } public VelocityChannel getChannel() { return chan; } public String toString() { return "Request for " + chan + " from " + getBegin() + " to " + getEnd(); } private VelocityChannel chan; private MicroSecondTimeRange range; public static List<VelocityRequest> wrap(RequestFilter[] original, Channel chan) { List<VelocityRequest> results = new ArrayList<VelocityRequest>(original.length); for(int i = 0; i < original.length; i++) { results.add(new VelocityRequest(original[i], chan)); } return results; } public static List<List<VelocityRequest>> wrap(RequestFilter[][] original, ChannelGroup channelGroup) { List<List<VelocityRequest>> results = new ArrayList<List<VelocityRequest>>(original.length); for (int i = 0; i < channelGroup.getChannels().length; i++) { for (int j = 0; j < original.length; j++) { if (original[j].length != 0 && ChannelIdUtil.areEqual(channelGroup.getChannels()[i].getId(), original[j][0].channel_id)) { results.add(wrap(original[j], channelGroup.getChannels()[i])); break; } } } return results; } }