/*
 * Copyright 1998, University Corporation for Atmospheric Research
 * All Rights Reserved.
 * See file LICENSE for copying and redistribution conditions.
 *
 * $Id: Strategy.java,v 1.1 2001-12-19 21:00:49 steve Exp $
 */

package visad.data.netcdf.in;

import java.io.IOException;
import java.rmi.RemoteException;
import visad.VisADException;
import visad.data.BadFormException;
import visad.DataImpl;

/**
 * 

A strategy for importing a netCDF dataset.

* * @author Steven R. Emmerson */ public abstract class Strategy { /** * An import strategy that only tries the {@link MaxFileFieldStrategy} * strategy. */ public static final Strategy UNMERGED_FILE_FLAT_FIELDS; /** * An import strategy that first tries the {@link FileStrategy} strategy * and then tries the {@link #UNMERGED_FILE_FLAT_FIELDS} strategy. */ public static final Strategy MERGED_FILE_FLAT_FIELDS; /** * An import strategy that first tries the {@link InMemoryStrategy} strategy * and then tries the {@link #MERGED_FILE_FLAT_FIELDS} strategy. */ public static final Strategy IN_MEMORY; /** * The default import strategy. The details of this strategy are * unspecified and subject to change. Currently, it is identical to the * {@link #MERGED_FILE_FLAT_FIELDS} strategy. */ public static final Strategy DEFAULT; /** * The singleton instance of this class. */ private static Strategy instance; static { UNMERGED_FILE_FLAT_FIELDS = MaxFileFieldStrategy.instance(); MERGED_FILE_FLAT_FIELDS = CompositeStrategy.instance(new Strategy[] { FileStrategy.instance(), UNMERGED_FILE_FLAT_FIELDS, }); IN_MEMORY = CompositeStrategy.instance(new Strategy[] { InMemoryStrategy.instance(), FileStrategy.instance(), MERGED_FILE_FLAT_FIELDS, }); DEFAULT = MERGED_FILE_FLAT_FIELDS; } /** * Constructs from nothing. */ protected Strategy() {} /** *

Returns a VisAD data object corresponding to the netCDF dataset.

* * @param adapter The netCDF-to-VisAD adapter. * @return The top-level, VisAD data object of the netCDF * dataset. * @throws VisADException if a problem occurs in core VisAD -- probably * because a VisAD object couldn't be created. * @throws IOException if a data access I/O failure occurs. * @throws BadFormException if the netCDF dataset doesn't conform to * conventions implicit in constructing * View. * @throws OutOfMemoryError if the netCDF dataset couldn't be imported into * memory. * @throws RemoteException if a Java RMI failure occurs. */ public abstract DataImpl getData(NetcdfAdapter adapter) throws IOException, VisADException, RemoteException, BadFormException, OutOfMemoryError; }

Ads help maintain this website.