/* * * * Copyright 1998-2014 University Corporation for Atmospheric Research/Unidata * * * * Portions of this software were developed by the Unidata Program at the * * University Corporation for Atmospheric Research. * * * * Access and use of this software shall impose the following obligations * * and understandings on the user. The user is granted the right, without * * any fee or cost, to use, copy, modify, alter, enhance and distribute * * this software, and any derivative works thereof, and its supporting * * documentation for any purpose whatsoever, provided that this entire * * notice appears in all copies of the software, derivative works and * * supporting documentation. Further, UCAR requests that the user credit * * UCAR/Unidata in any publications that result from the use of this * * software or in any product that includes this software. The names UCAR * * and/or Unidata, however, may not be used in any advertising or publicity * * to endorse or promote any products or commercial entity unless specific * * written permission is obtained from UCAR/Unidata. The user also * * understands that UCAR/Unidata is not obligated to provide the user with * * any support, consulting, training or assistance of any kind with regard * * to the use, operation and performance of this software nor to provide * * the user with any updates, revisions, new versions or "bug fixes." * * * * THIS SOFTWARE IS PROVIDED BY UCAR/UNIDATA "AS IS" AND ANY EXPRESS OR * * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * * DISCLAIMED. IN NO EVENT SHALL UCAR/UNIDATA BE LIABLE FOR ANY SPECIAL, * * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING * * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, * * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION * * WITH THE ACCESS, USE OR PERFORMANCE OF THIS SOFTWARE. * */ package ucar.nc2.grib.collection; import thredds.featurecollection.FeatureCollectionConfig; import ucar.nc2.Attribute; import ucar.nc2.NetcdfFile; import ucar.nc2.NetcdfFileSubclass; import ucar.nc2.constants.CDM; import ucar.nc2.constants.DataFormatType; import ucar.nc2.dataset.NetcdfDataset; import java.io.Closeable; import java.io.IOException; import java.util.Formatter; import java.util.List; /** * PartitionCollection for Grib2. * * @author John * @since 12/7/13 */ public class Grib2Partition extends PartitionCollectionImmutable implements Closeable { Grib2Partition( PartitionCollectionMutable pc) { super(pc); } // LOOK - needs time partition collection iosp or something @Override public ucar.nc2.dataset.NetcdfDataset getNetcdfDataset(Dataset ds, GroupGC group, String filename, FeatureCollectionConfig config, Formatter errlog, org.slf4j.Logger logger) throws IOException { ucar.nc2.grib.collection.Grib2Iosp iosp = new ucar.nc2.grib.collection.Grib2Iosp(group, ds.getType()); NetcdfFile ncfile = new NetcdfFileSubclass(iosp, null, getLocation(), null); return new NetcdfDataset(ncfile); } @Override public ucar.nc2.dt.grid.GridDataset getGridDataset(Dataset ds, GroupGC group, String filename, FeatureCollectionConfig config, Formatter errlog, org.slf4j.Logger logger) throws IOException { ucar.nc2.grib.collection.Grib2Iosp iosp = new ucar.nc2.grib.collection.Grib2Iosp(group, ds.getType()); NetcdfFile ncfile = new NetcdfFileSubclass(iosp, null, getLocation(), null); NetcdfDataset ncd = new NetcdfDataset(ncfile); return new ucar.nc2.dt.grid.GridDataset(ncd); // LOOK - replace with custom GridDataset?? } @Override protected void addGlobalAttributes(List<Attribute> result) { String val = cust.getGeneratingProcessTypeName(getGenProcessType()); if (val != null) result.add(new Attribute("Type_of_generating_process", val)); val = cust.getGeneratingProcessName(getGenProcessId()); if (val != null) result.add( new Attribute("Analysis_or_forecast_generating_process_identifier_defined_by_originating_centre", val)); val = cust.getGeneratingProcessName(getBackProcessId()); if (val != null) result.add( new Attribute("Background_generating_process_identifier_defined_by_originating_centre", val)); result.add(new Attribute(CDM.FILE_FORMAT, DataFormatType.GRIB2.getDescription())); } }