Class ThreddsDataFactory


  • public class ThreddsDataFactory
    extends Object
    This tries to translate a THREDDS InvDataset into a data object that can be used, either as a NetcdfDataset or as a FeatureDataset.

    As input, it can take

    1. An InvAccess object.
    2. An InvDataset object. If the InvDataset has more that one InvAccess, it has to try to choose which to use, based on what Service type we know how to work with.
    3. A url of the form [thredds:]catalog.xml#datasetId. In this case it opens the catalog, and looks for the InvDataset with the given datasetId.
    4. A url of the form thredds:resolve:resolveURL. In this case it expects that the URL will return a catalog with a single top level dataset, which is the "resolved" dataset.

    It annotates the NetcdfDataset with info from the InvDataset.

    You can reuse a ThreddsDataFactory, but only within a single thread.

    • Constructor Detail

      • ThreddsDataFactory

        public ThreddsDataFactory()
    • Method Detail

      • setPreferCdm

        public static void setPreferCdm​(boolean prefer)
      • setPreferAccess

        public static void setPreferAccess​(ServiceType... prefer)
      • setDebugFlags

        public static void setDebugFlags​(DebugFlags debugFlag)
      • openFeatureDataset

        public ThreddsDataFactory.Result openFeatureDataset​(String urlString,
                                                            CancelTask task)
                                                     throws IOException
        Open a FeatureDataset from a URL location string. Example URLS:
        • http://localhost:8080/test/addeStationDataset.xml#surfaceHourly
        • thredds:http://localhost:8080/test/addeStationDataset.xml#surfaceHourly
        • thredds://localhost:8080/test/addeStationDataset.xml#surfaceHourly
        • thredds:file:c:/test/data/catalog/addeStationDataset.xml#AddeSurfaceData (absolute file)
        • thredds:resolve:resolveURL
        Parameters:
        urlString - [thredds:]catalog.xml#datasetId
        task - may be null
        Returns:
        ThreddsDataFactory.Result check fatalError for validity
        Throws:
        IOException - on read error
      • openFeatureDataset

        public ThreddsDataFactory.Result openFeatureDataset​(FeatureType wantFeatureType,
                                                            String urlString,
                                                            CancelTask task)
                                                     throws IOException
        Open a FeatureDataset from a URL location string, and a desired type (may by NONE or null).
        Parameters:
        wantFeatureType - desired feature type, may be NONE or null
        urlString - [thredds:]catalog.xml#datasetId
        task - may be null
        Returns:
        ThreddsDataFactory.Result check fatalError for validity
        Throws:
        IOException - on read error
      • openFeatureDataset

        public ThreddsDataFactory.Result openFeatureDataset​(InvDataset invDataset,
                                                            CancelTask task)
                                                     throws IOException
        Open a FeatureDataset from an InvDataset object, deciding on which InvAccess to use.
        Parameters:
        invDataset - use this to figure out what type, how to open, etc
        task - allow user to cancel; may be null
        Returns:
        ThreddsDataFactory.Result check fatalError for validity
        Throws:
        IOException - on read error
      • openFeatureDataset

        public ThreddsDataFactory.Result openFeatureDataset​(InvAccess access,
                                                            CancelTask task)
                                                     throws IOException
        Open a FeatureDataset from an InvAccess object.
        Parameters:
        access - use this InvAccess.
        task - may be null
        Returns:
        ThreddsDataFactory.Result check fatalError for validity
        Throws:
        IOException - on read error
      • openDataset

        public NetcdfDataset openDataset​(String location,
                                         boolean acquire,
                                         CancelTask task,
                                         Formatter log)
                                  throws IOException
        Open a NetcdfDataset from a URL location string. Example URLS:
        • http://localhost:8080/test/addeStationDataset.xml#surfaceHourly
        • thredds:http://localhost:8080/test/addeStationDataset.xml#surfaceHourly
        • thredds://localhost:8080/test/addeStationDataset.xml#surfaceHourly
        • thredds:file:c:/dev/netcdf-java-2.2/test/data/catalog/addeStationDataset.xml#AddeSurfaceData (absolute file)
        • thredds:resolve:resolveURL
        Parameters:
        location - catalog.xml#datasetId, may optionally start with "thredds:"
        task - may be null
        log - error messages gp here, may be null
        acquire - if true, aquire the dataset, else open it
        Returns:
        NetcdfDataset
        Throws:
        IOException - on read error
      • openDataset

        public NetcdfDataset openDataset​(InvDataset invDataset,
                                         boolean acquire,
                                         CancelTask task,
                                         Formatter log)
                                  throws IOException
        Try to open as a NetcdfDataset.
        Parameters:
        invDataset - open this
        acquire - if true, aquire the dataset, else open it
        task - may be null
        log - error message, may be null
        Returns:
        NetcdfDataset or null if failure
        Throws:
        IOException - on read error
      • openDataset

        public NetcdfDataset openDataset​(InvAccess access,
                                         boolean acquire,
                                         CancelTask task,
                                         Formatter log)
                                  throws IOException
        Try to open invAccess as a NetcdfDataset.
        Parameters:
        access - open this InvAccess
        acquire - if true, aquire the dataset, else open it
        task - may be null
        log - error message, may be null
        Returns:
        NetcdfDataset or null if failure
        Throws:
        IOException - on read error
      • chooseDatasetAccess

        public InvAccess chooseDatasetAccess​(List<InvAccess> accessList)
        Find the "best" access in case theres more than one, based on what the CDM knows how to open and use.
        Parameters:
        accessList - choose from this list.
        Returns:
        best access method.
      • annotate

        public static void annotate​(InvDataset ds,
                                    NetcdfDataset ncDataset)
        Add information from the InvDataset to the NetcdfDataset.
        Parameters:
        ds - get info from here
        ncDataset - add to here