DRAFT SDMX-CORE
Architectire
The sdmx-io modules are as follows
Interface Modules
These modules contains Java Interfaces only, no Java classes. The sdmx-io framework uses Interfaces over implementation classes in order to achieve loose coupling.
fusion-api - contains generic Interfaces that are unrelated to SDMX. Each package in this project is broken down by function, i.e audit, cache, date, email, exception fusion-api-dao - contains Interface definitions for database persistence, not coupled to database platform, but all based on storeage and retrieval of Java Objects fusion-api-sdmx - contains Interfaces for SDMX Information model (SdmxBeans and related), high level Interfaces for SDMX related functions which cross mulitple modules fusion-api-service - contains Interfaces definitions for web services to use - allowing projects the implement web service entry points to not require web service depdenancies
Implementation Modules
These modules contain Java classes which are core to SDMX, they implement Interfaces in the higher api modules
fusion-sdmx-im - contains the implementation code for the SDMX Information Model (SdmxBeans and related structures such as Codelists, Concepts, etc) fusion-core-data - contains code to read/write data and generic data related features such as determining series/obs, validation, temporary data stores fusion-core-sdmx - contains core code for structural metadata, including temporary store, cross reference resolution, contains some data and reference metadata features fusion-core-structure - contains core code for processing structural metadata fusion-core-xlsx - contains code to read and write structures and data in Excel
Format Modules
These modules contains Java classes for reading and writing SDMX Structureal Metadata, Reference Metadata, and Data
fusion-sdmx-csv - reading and writing SDMX-CSV format fusion-sdmx-edi - reading and writing SDMX-EDI format fusion-sdmx-json - reading and writing SDMX-JSON format fusion-sdmx-ml reading and writing SDMX-XML
Feature Modules
These modules provide feature specific code
fusion-core-dao - fusion-audit - audit events and centralised error handling fusion-sdmx-kafka - connecting to, and sending/recieving messages to Apache Kafka fusion-sdmx-publication - SDMX Publication Tables: SdmxBean implementations, and buisness logic to materilise table based on definition fusion-sdmx-reporttemplate - Reporting Templates: SdmxBean implementations, and buisness logic to genearte excel workbook from template definition, reading data from workbooks fusion-sdmx-rest - SDMX web services, and additional web service implementations from APIs defined in fusion-api-service fusion-sdmx-search - Lucene search engine for structures fusion-sdmx-security - authentication against LDAP/AD/Fusion Security - contains user definition (SecurityDetailsImpl)
Utility Modules
fusion-utils
The packages are generally split into the following
api - contains interfaces relevent to the module constant engine factory filter manager model service (or rest) util
Sdmx Core makes heavy use of Interfaces as opposed to Implementation code, this allows classes to work to interfaces without needing to concern themselves about the actual implementation used.