Class DataProvidersManager
- java.lang.Object
-
- org.orekit.data.DataProvidersManager
-
public class DataProvidersManager extends Object
Singleton class managing all supporteddata providers
.This class is the single point of access for all data loading features. It is used for example to load Earth Orientation Parameters used by IERS frames, to load UTC leap seconds used by time scales, to load planetary ephemerides ...
It is user-customizable: users can add their own data providers at will. This allows them for example to use a database or an existing data loading library in order to embed an Orekit enabled application in a global system with its own data handling mechanisms. There is no upper limitation on the number of providers, but often each application will use only a few.
If the list of providers is empty when attempting to
feed
a file loader, theaddDefaultProviders()
method is called automatically to set up a default configuration. This default configuration contains onedata provider
for each component of the path-like list specified by the java propertyorekit.data.path
. See thefeed
method documentation for further details. The default providers configuration is not set up if the list is not empty. If users want to have both the default providers and additional providers, they must call explicitly theaddDefaultProviders()
method.The default configuration uses a predefined set of
data filters
that already handled gzip-compressed files (recognized by the.gz
suffix) and Unix-compressed files (recognized by the.Z
suffix). Users canadd
custom filters for handling specific types of filters (decompression, deciphering...).- Author:
- Luc Maisonobe
- See Also:
DirectoryCrawler
,ClasspathCrawler
-
-
Field Summary
Fields Modifier and Type Field Description static String
OREKIT_DATA_PATH
Name of the property defining the root directories or zip/jar files path for default configuration.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addDefaultProviders()
Add the default providers configuration.void
addFilter(DataFilter filter)
Add a data filter.void
addProvider(DataProvider provider)
Add a data provider to the supported list.NamedData
applyAllFilters(NamedData original)
Apply all the relevant data filters, taking care of layers.void
clearFilters()
Remove all data filters, except the predefined ones.void
clearLoadedDataNames()
Clear the set of data file names that have been loaded.void
clearProviders()
Remove all data providers.boolean
feed(String supportedNames, DataLoader loader)
Feed a data file loader by browsing all data providers.static DataProvidersManager
getInstance()
Get the unique instance.Set<String>
getLoadedDataNames()
Get an unmodifiable view of the set of data file names that have been loaded.List<DataProvider>
getProviders()
Get an unmodifiable view of the list of supported providers.boolean
isSupported(DataProvider provider)
Check if some provider is supported.DataProvider
removeProvider(DataProvider provider)
Remove one provider.
-
-
-
Field Detail
-
OREKIT_DATA_PATH
public static final String OREKIT_DATA_PATH
Name of the property defining the root directories or zip/jar files path for default configuration.- See Also:
- Constant Field Values
-
-
Method Detail
-
getInstance
public static DataProvidersManager getInstance()
Get the unique instance.- Returns:
- unique instance of the manager.
-
addDefaultProviders
public void addDefaultProviders()
Add the default providers configuration.The default configuration contains one
data provider
for each component of the path-like list specified by the java propertyorekit.data.path
.If the property is not set or is null, no data will be available to the library (for example no pole corrections will be applied and only predefined UTC steps will be taken into account). No errors will be triggered in this case.
If the property is set, it must contains a list of existing directories or zip/jar archives. One
DirectoryCrawler
instance will be set up for each directory and oneZipJarCrawler
instance (configured to look for the archive in the filesystem) will be set up for each zip/jar archive. The list elements in the java property are separated using the standard path separator for the operating system as returned bySystem.getProperty("path.separator")
. This standard path separator is ":" on Linux and Unix type systems and ";" on Windows types systems.
-
addProvider
public void addProvider(DataProvider provider)
Add a data provider to the supported list.- Parameters:
provider
- data provider to add- See Also:
removeProvider(DataProvider)
,clearProviders()
,isSupported(DataProvider)
,getProviders()
-
removeProvider
public DataProvider removeProvider(DataProvider provider)
Remove one provider.- Parameters:
provider
- provider instance to remove- Returns:
- instance removed (null if the provider was not already present)
- Since:
- 5.1
- See Also:
addProvider(DataProvider)
,clearProviders()
,isSupported(DataProvider)
,getProviders()
-
clearProviders
public void clearProviders()
Remove all data providers.
-
addFilter
public void addFilter(DataFilter filter)
Add a data filter.- Parameters:
filter
- filter to add- Since:
- 9.2
- See Also:
applyAllFilters(NamedData)
,clearFilters()
-
clearFilters
public void clearFilters()
Remove all data filters, except the predefined ones.- Since:
- 9.2
- See Also:
addFilter(DataFilter)
-
applyAllFilters
public NamedData applyAllFilters(NamedData original) throws IOException
Apply all the relevant data filters, taking care of layers.If several filters can be applied, they will all be applied as a stack, even recursively if required. This means that if filter A applies to files with names of the form base.ext.a and filter B applies to files with names of the form base.ext.b, then providing base.ext.a.b.a will result in filter A being applied on top of filter B which itself is applied on top of another instance of filter A.
- Parameters:
original
- original named data- Returns:
- fully filtered named data
- Throws:
IOException
- if some data stream cannot be filtered- Since:
- 9.2
- See Also:
addFilter(DataFilter)
,clearFilters()
-
isSupported
public boolean isSupported(DataProvider provider)
Check if some provider is supported.- Parameters:
provider
- provider to check- Returns:
- true if the specified provider instance is already in the supported list
- Since:
- 5.1
- See Also:
addProvider(DataProvider)
,removeProvider(DataProvider)
,clearProviders()
,getProviders()
-
getProviders
public List<DataProvider> getProviders()
Get an unmodifiable view of the list of supported providers.- Returns:
- unmodifiable view of the list of supported providers
- See Also:
addProvider(DataProvider)
,removeProvider(DataProvider)
,clearProviders()
,isSupported(DataProvider)
-
getLoadedDataNames
public Set<String> getLoadedDataNames()
Get an unmodifiable view of the set of data file names that have been loaded.The names returned are exactly the ones that were given to the
DataLoader.loadData
method.- Returns:
- unmodifiable view of the set of data file names that have been loaded
- See Also:
feed(String, DataLoader)
,clearLoadedDataNames()
-
clearLoadedDataNames
public void clearLoadedDataNames()
Clear the set of data file names that have been loaded.- See Also:
getLoadedDataNames()
-
feed
public boolean feed(String supportedNames, DataLoader loader)
Feed a data file loader by browsing all data providers.If this method is called with an empty list of providers, a default providers configuration is set up. This default configuration contains only one
data provider
: aDirectoryCrawler
instance that loads data from files located somewhere in a directory hierarchy. This default provider is not added if the list is not empty. If users want to have both the default provider and other providers, they must add it explicitly.The providers are used in the order in which they were
added
. As soon as one provider is able to feed the data loader, the loop is stopped. If no provider is able to feed the data loader, then the last error triggered is thrown.- Parameters:
supportedNames
- regular expression for file names supported by the visitorloader
- data loader to use- Returns:
- true if some data has been loaded
-
-