package org.autoplot.pds; import gov.nasa.pds.label.Label; import gov.nasa.pds.label.object.ArrayObject; import gov.nasa.pds.label.object.FieldDescription; import gov.nasa.pds.label.object.FieldType; import gov.nasa.pds.label.object.TableObject; import gov.nasa.pds.label.object.TableRecord; import java.io.File; import java.io.IOException; import java.net.URI; import java.net.URL; import java.text.ParseException; import java.util.ArrayList; import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; import org.autoplot.datasource.AbstractDataSource; import org.autoplot.datasource.DataSetURI; import org.autoplot.datasource.URISplit; import org.das2.datum.TimeParser; import org.das2.datum.Units; import org.das2.qds.ArrayDataSet; import org.das2.qds.DDataSet; import org.das2.qds.QDataSet; import org.das2.qds.ops.Ops; import org.das2.qds.util.DataSetBuilder; import org.das2.util.monitor.NullProgressMonitor; import org.das2.util.monitor.ProgressMonitor; /** * * @author jbf */ public class PdsDataSource extends AbstractDataSource { public PdsDataSource(URI uri) { super(uri); } /** * bootstrap routine for getting data from fields of a TableObject. TODO: rewrite so that * multiple fields are read at once. * @param t * @param columnName * @return * @throws IOException */ private QDataSet getFromTable( TableObject t, String[] columnNames ) throws IOException { int ncols= columnNames.length; int[] icols= new int[ncols]; DataSetBuilder dsb= new DataSetBuilder(2,100,ncols); for ( int i=0; i names= new ArrayList<>(); String X= getParam("X",""); if ( !X.equals("") ) { names.add(X); } String Y= getParam("Y",""); if ( !Y.equals("") ) { names.add(Y); } String Z= getParam("Z",""); if ( !Z.equals("") ) { names.add(Z); } if ( !name.equals("") ) { names.add(name); } QDataSet result=null; QDataSet[] results= new QDataSet[names.size()]; // see which parameters will come from tables. for ( TableObject t : label.getObjects( TableObject.class) ) { List tableColumnNames= new ArrayList<>(); List datasetColumnIndexes= new ArrayList<>(); for ( int i=0; i0 ) { QDataSet bresults= getFromTable( t, tableColumnNames.toArray(new String[tableColumnNames.size()]) ); int iresults= 0; for ( int i:datasetColumnIndexes ) { results[i]= Ops.unbundle( bresults, iresults ); iresults++; } } } for ( int i=0; i