Class ExchangeRateReader
java.lang.Object
org.episteme.core.io.AbstractResourceReader<Real>
org.episteme.social.economics.loaders.ExchangeRateReader
- All Implemented Interfaces:
ResourceIO<Real>, ResourceReader<Real>
Modern currency exchange rate reader using free public APIs.
Supports multiple data sources:
- ECB (European Central Bank) - Free, no API key required, updates daily
- Frankfurter - Free, based on ECB data, no API key required
- ExchangeRate-API - Free tier with 1500 requests/month
This replaces the deprecated OandaRateLoader.
- Since:
- 1.0
- Author:
- Silvere Martin-Michiellot, Gemini AI (Google DeepMind)
-
Nested Class Summary
Nested Classes -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionConverts an amount between currencies.getAllRates(String baseCurrency) Gets all available rates for a base currency.Returns the category for grouping.Returns a short description of this resource handler.Returns a long description of this resource handler.getName()Returns the display name of this resource handler.Returns the base path where this resource is located.Returns the type of resource.String[]Returns the supported versions of the format this reader/writer handles.protected RealloadFromSource(String currencyPairId) Loads an exchange rate for a currency pair.Methods inherited from class AbstractResourceReader
clearCache, getMiniCatalog, getSampleDataPath, isUsingFallback, load, loadAll, loadAllFromSource, loadFromFallback, loadFromInputStream, setCacheEnabledMethods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface ResourceIO
getExpectedResourceFiles, getSupportedExtensions, isFileBased, isOutputMethods inherited from interface ResourceReader
isInput
-
Constructor Details
-
ExchangeRateReader
public ExchangeRateReader() -
ExchangeRateReader
-
-
Method Details
-
getName
Description copied from interface:ResourceIOReturns the display name of this resource handler. MUST be implemented with I18N support.- Returns:
- the display name
-
getCategory
Description copied from interface:ResourceIOReturns the category for grouping. MUST be implemented with I18N support.- Returns:
- the category name
-
getDescription
Description copied from interface:ResourceIOReturns a short description of this resource handler. MUST be implemented with I18N support.- Returns:
- the description
-
getLongDescription
Description copied from interface:ResourceIOReturns a long description of this resource handler. MUST be implemented with I18N support.- Returns:
- the long description
-
getResourcePath
Description copied from interface:ResourceIOReturns the base path where this resource is located. -
getResourceType
Description copied from interface:ResourceIOReturns the type of resource. -
getSupportedVersions
Description copied from interface:ResourceIOReturns the supported versions of the format this reader/writer handles.Each implementation MUST override this method to declare which versions of the underlying format are supported. The returned array should contain version strings in the format's standard notation (e.g., "3.0", "2.1", "Level 3 Version 2").
Examples:
- MathML: {"3.0", "2.0"}
- SBML: {"Level 3 Version 2", "Level 3 Version 1", "Level 2 Version 5"}
- PhyloXML: {"1.10", "1.00"}
- Returns:
- array of supported version strings, never null (empty array if version-agnostic)
-
loadFromSource
Loads an exchange rate for a currency pair.- Specified by:
loadFromSourcein classAbstractResourceReader<Real>- Parameters:
currencyPairId- Format: "FROM/TO" (e.g., "USD/EUR" or "EUR/JPY")- Returns:
- The exchange rate (how many target units per 1 source unit)
- Throws:
Exception
-
getAllRates
-
convert
-