Package jsynoptic.builtin

Source Code of jsynoptic.builtin.AsciiProvider

package jsynoptic.builtin;

import java.io.File;
import java.io.IOException;
import java.util.Iterator;
import java.util.Set;

import jsynoptic.data.DataSourceProvider;
import simtools.data.AsciiFileDataSourceCollection;
import simtools.data.DataSource;
import simtools.data.DataSourceCollection;
import simtools.data.DataSourcePool;
import simtools.data.DefaultEmptyDataSource;
import simtools.data.AsciiFileDataSourceCollection.InvalidFormatException;
import simtools.data.buffer.ResizeableBuffer;


/**
* @author zxpletran007
*
*/
public class AsciiProvider  extends DataSourceProvider{

  public AsciiProvider() {
    super(Builtin.asciiFileFilter,AsciiFileDataSourceCollection.ID_MARKER);
  }


  /* (non-Javadoc)
   * @see simtools.data.BasicDataSourceProvider#createCollection(java.io.File, java.lang.Object)
   */
  protected DataSourceCollection createCollection(File f, Object optionalInformation){
    try{
      int granularity = ((int[])optionalInformation)[0];
      int subsampling = ((int[])optionalInformation)[1];
      return createCollection(f, granularity, subsampling);

    }catch (IOException e){
    }catch (InvalidFormatException e){}

    return null;
  }

  /* (non-Javadoc)
   * @see simtools.data.BasicDataSourceProvider#getOptionalInformation(simtools.data.DataSource, simtools.data.DataSourceCollection)
   */
  public Object getOptionalInformation(DataSource ds, DataSourceCollection dsc) {
    if ((dsc==null) || (!(dsc instanceof AsciiFileDataSourceCollection)))
      return null;
    AsciiFileDataSourceCollection adsc = (AsciiFileDataSourceCollection)dsc;
    return new int[] {adsc.getGranularity(), adsc.getSubsampling()};
  }


  protected DataSourceCollection createCollection(File f,int granularity, int subsamplingthrows IOException, InvalidFormatException {
    return  new AsciiFileDataSourceCollection(f, subsampling, granularity,f.getName().endsWith(".csv"));
  }


  /** We create Ascii Collections with buffers
   *  => same behaviour when loading an ascii file and an archive
   */
  public DataSource provide(String id, String dscId, Object optionalInformation, DataSourcePool pool) {
    DataSource ret = super.provide(id, dscId, optionalInformation, pool);
    if (pool!=null) {
      DataSourceCollection dsc = null;
      int index = -1;
      Set set = pool.dataSourceCollections();
      for (Iterator it = set.iterator(); it.hasNext(); ) {
        DataSourceCollection col = (DataSourceCollection)it.next();
        int idx = col.indexOf(ret);
        if (idx!=-1) {
          index = idx;
          dsc = col;
          break;
        }
      }
      if (dsc!=null) {
        pool.bufferize(dsc, new ResizeableBuffer(Builtin.resources.getIntValue("maxBufferSize")));
        return (DataSource)dsc.get(index);
      }
    }
    return ret;
  }

  /* (non-Javadoc)
   * @see simtools.data.BasicDataSourceProvider#createEmptyDatasource(java.lang.String)
   */
  protected DataSource createEmptyDatasource(String id, String dscId, Object optionalInformation){
    return new DefaultEmptyDataSource(id, dscId, optionalInformation);
  }

}
TOP

Related Classes of jsynoptic.builtin.AsciiProvider

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.