/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package org.das2.datasource; import java.text.ParseException; import java.util.Map; import java.util.logging.Level; import java.util.logging.Logger; import org.das2.datum.Datum; import org.das2.datum.DatumRange; import org.das2.datum.Units; import org.das2.util.LoggerManager; import org.autoplot.datasource.URISplit; import org.autoplot.datasource.capability.TimeSeriesBrowse; /** * * @author jbf */ public class Das2ServerTimeSeriesBrowse implements TimeSeriesBrowse { DatumRange timeRange; Datum resolution; String uri; private final static Logger logger= LoggerManager.getLogger("apdss.das2server"); public void setTimeRange(DatumRange dr) { timeRange= dr; } public void setTimeResolution(Datum d) { resolution= d; } public String getURI() { URISplit split= URISplit.parse(uri); Map params= URISplit.parseParams(split.params); if ( timeRange==null ) { throw new IllegalArgumentException("either setTimeRange or setURI must be called to set the timeRange"); } String stime= timeRange.min().toString().replace(" ", "+"); String etime= timeRange.max().toString().replace(" ", "+"); params.put( "start_time", stime ); params.put( "end_time", etime ); if ( resolution==null ) { params.remove("resolution"); } else { params.put( "resolution", String.valueOf(resolution.doubleValue(Units.seconds)) ); } split.params= URISplit.formatParams(params); String suri= URISplit.format( split ); logger.log(Level.FINER, "tsb getURI->{0}", suri); return suri; } public DatumRange getTimeRange() { return timeRange; } public Datum getTimeResolution() { return resolution; } public void setURI(String suri) throws ParseException { logger.log(Level.FINER, "tsb setURI {0}", suri); this.uri= suri; URISplit split= URISplit.parse(suri); Map params= URISplit.parseParams(split.params); String startTime= params.remove( "start_time" ); String endTime= params.get( "end_time" ); String sresolution= params.get("resolution"); if ( startTime!=null && endTime!=null ) { timeRange= new DatumRange( Units.us2000.parse(startTime), Units.us2000.parse(endTime) ); } if ( sresolution!=null ) { resolution= Units.seconds.parse(sresolution); } } public String blurURI() { URISplit split= URISplit.parse(uri); Map params= URISplit.parseParams(split.params); params.remove( "start_time" ); params.remove( "end_time" ); params.remove("resolution"); split.params= URISplit.formatParams(params); String suri= URISplit.format( split ); logger.log(Level.FINER, "tsb blurURI->{0}", suri); return suri; } }