package edu.sc.seis.sod.mock;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import edu.iris.Fissures.IfNetwork.ChannelNotFound;
import edu.iris.Fissures.IfNetwork.Instrumentation;
import edu.iris.Fissures.IfNetwork.NetworkAccess;
import edu.iris.Fissures.IfNetwork.NetworkId;
import edu.iris.Fissures.IfNetwork.NetworkNotFound;
import edu.iris.Fissures.model.QuantityImpl;
import edu.iris.Fissures.model.TimeInterval;
import edu.iris.Fissures.model.UnitImpl;
import edu.iris.Fissures.network.ChannelImpl;
import edu.iris.Fissures.network.NetworkAttrImpl;
import edu.iris.Fissures.network.NetworkIdUtil;
import edu.iris.Fissures.network.StationImpl;
import edu.sc.seis.fissuresUtil.cache.CacheNetworkAccess;
import edu.sc.seis.fissuresUtil.mockFissures.IfNetwork.MockNetworkAccess;
import edu.sc.seis.fissuresUtil.sac.InvalidResponse;
import edu.sc.seis.sod.source.network.AbstractNetworkSource;
import edu.sc.seis.sod.source.network.NetworkQueryConstraints;
import edu.sc.seis.sod.source.network.NetworkSource;
public class MockNetworkSource extends AbstractNetworkSource implements NetworkSource {
TimeInterval refresh;
public MockNetworkSource(TimeInterval refresh) {
super("MockNetworkSource", 0);
this.refresh = refresh;
}
public MockNetworkSource() {
this(new TimeInterval(3, UnitImpl.DAY));
}
@Override
public String getName() {
return "MockNetworkSource";
}
@Override
public TimeInterval getRefreshInterval() {
return refresh;
}
@Override
public CacheNetworkAccess getNetwork(NetworkAttrImpl attr) {
for (int i = 0; i < nets.length; i++) {
if (NetworkIdUtil.areEqual(nets[i].get_attributes().getId(), attr.getId())) {
return new CacheNetworkAccess(nets[i]);
}
}
return null;
}
@Override
public List<? extends CacheNetworkAccess> getNetworkByName(String name) throws NetworkNotFound {
ArrayList<CacheNetworkAccess> out = new ArrayList<CacheNetworkAccess>();
for (int i = 0; i < nets.length; i++) {
if (nets[i].get_attributes().getName().equals( name)) {
out.add( new CacheNetworkAccess(nets[i]));
}
}
return out;
}
@Override
public List<? extends NetworkAttrImpl> getNetworks() {
ArrayList<NetworkAttrImpl> out = new ArrayList<NetworkAttrImpl>();
for (int i = 0; i < nets.length; i++) {
out.add( (NetworkAttrImpl)nets[i].get_attributes());
}
return out;
}
@Override
public List<? extends StationImpl> getStations(NetworkAttrImpl net) {
for (int i = 0; i < nets.length; i++) {
if (NetworkIdUtil.areEqual(nets[i].get_attributes().getId(), net.getId())) {
return Arrays.asList((StationImpl[])nets[i].retrieve_stations());
}
}
return null;
}
@Override
public List<? extends ChannelImpl> getChannels(StationImpl station) {
for (int i = 0; i < nets.length; i++) {
if (NetworkIdUtil.areEqual(nets[i].get_attributes().getId(), station.getNetworkAttrImpl().getId())) {
return Arrays.asList((ChannelImpl[])nets[i].retrieve_for_station(station.getId()));
}
}
return null;
}
@Override
public QuantityImpl getSensitivity(ChannelImpl chanId) throws ChannelNotFound, InvalidResponse {
// TODO Auto-generated method stub
return null;
}
@Override
public Instrumentation getInstrumentation(ChannelImpl chanId) throws ChannelNotFound, InvalidResponse {
// TODO Auto-generated method stub
return null;
}
@Override
public void setConstraints(NetworkQueryConstraints constraints) {
//no op
}
NetworkAccess[] nets = new NetworkAccess[] { MockNetworkAccess.createNetworkAccess(),
MockNetworkAccess.createOtherNetworkAccess(),
MockNetworkAccess.createManySplendoredNetworkAccess() };
}