public interface XBRLDataSource
XBRLDataSources can be develop for Relational Databases, Excel Spreadsheets, TXT files, web services, API calls to existing ERPs, etc.
The MapperEngine and the driver establish a dialog to obtain the data for the preparation of the instance document. The dialog has specific order and the order is the following:
startOfDocument(XBRLInstance, Object[], DTSLoadingBarInterface)
getNumberOfValues(String, MapperFact)
if previous function returns a number greater than 0 then the following loop is performed for each fact
startOfFact(String, QName)
getContext(String, int, XBRLContext)
isNil(String, int, XMLElementDefinition)
getValue(String, int, XBRLContext, SimpleType)
getUnit(String, int, XBRLContext, XBRLUnit)
getFormat(String, int, XBRLContext, XBRLUnit)
getFormatValue(String, int, XBRLContext, XBRLUnit)
getFootnote(String, int, XBRLFact)
getFootnoteLang(String, int, XBRLFact, Object)
endOfFact(String, QName)
endOfDocument(XBRLInstance)
Other methods serves different purposes and are out of the dialog:
createConfigFileContent()
must be implemented by drivers that interacts with the MapperEditor. This method
should create a configuration file for the driver is the driver is selected in the GUI.
getConfigFile()
must be implemented to return this drivers' absolute URI configuration file.
getSampleData(Object)
must be implemented if this driver will be integrated with the MapperEngine
the parameter passed to this function is an object of arbitrary type like an URI of a file. the
returned object will be the input object for the driver to generate values. For example, the excel
driver will convert an URI into an HSSFWorkBook object.
init()
called when the mapper instantiates this driver
isConfigfileRequired()
boolean value that indicates if this driver requires a configuration file or not
save(MapperFileSaveInterface)
called by the GUI to serialize the configuration parameters in a file
setConfigFile(URI)
called from the MapperEditor to set the file name for the configuration file
The cycle for creating an instance of a XBRLDataSource is:
setConfigFile(URI)
,
init()
Modifier and Type | Method and Description |
---|---|
void |
createConfigFileContent()
This function is used by the GUI during the generation of a new mapper.
|
void |
endOfDocument(XBRLInstance instance)
Called by the MapEngine when a new instance is finished
Can be used to close connections to data sources.
|
void |
endOfFact(java.lang.String mapIdentifier,
javax.xml.namespace.QName factName)
Called by the MapEngine when a new fact is finalized
returns nothing.
|
boolean |
equals(java.lang.Object obj)
Equals.
|
java.net.URI |
getConfigFile()
Access to the name of the configuration file.
|
XBRLContext |
getContext(java.lang.String mapIdentifier,
int index,
XBRLContext context)
Each data item has mapIdentifier string each used concept in the taxonomy
has at least one mapIdentifier
returns the XBRLContext to be used for the fact item.
|
java.lang.Object |
getFootnote(java.lang.String mapIdentifier,
int index,
XBRLFact fact)
After a fact is produced the data source is asked for a footnote to be
added to the instance document by doing a call to this method.
|
java.lang.String |
getFootnoteLang(java.lang.String mapIdentifier,
int index,
XBRLFact fact,
java.lang.Object footnoteContent)
Every footnote MUST have an xml:lang attribute.
|
XBRLNumber.ExactitudeMode |
getFormat(java.lang.String mapIdentifier,
int index,
XBRLContext context,
XBRLUnit localUnit)
Ask the driver for the preferred serialization for the numeric data.
|
java.lang.String |
getFormatValue(java.lang.String mapIdentifier,
int index,
XBRLContext context,
XBRLUnit localUnit)
Returns the value (as string) for the data format.
|
java.lang.Object[] |
getMapIdentifierReferences(java.lang.String mapIdentifier)
This method is used to automatically generate loader files from mapper files.
|
int |
getNumberOfValues(java.lang.String mapIdentifier,
MapperFact fact)
Each data item has mapIdentifier string, each used concept in the taxonomy
has at least one mapIdentifier
This method returns the number of facts in the source that corresponds to the
mapIdentifier string.
|
java.lang.Object |
getSampleData(java.lang.Object data)
This method is used by the mapper editor during test cycles of the mapper
The implemented class should use the incoming data to produce an object that
the mapper can use later to produce an instance document .
|
java.lang.String |
getSourceReference(java.lang.String mapIdentifier,
int index,
XBRLContext localContext,
net.sf.saxon.type.SimpleType theType)
Returns a string that describes the source of data for a specific mapIdentifier, index, localContext and data type
This method is used in order to build an error message that takes into consideration where the data comes from
so the user can better track the path the data is following inside the tools.
|
XBRLUnit |
getUnit(java.lang.String mapIdentifier,
int index,
XBRLContext localContext,
XBRLUnit unit)
Each time a numeric concept is created this function is called to request or change the required
unit.
|
net.sf.saxon.value.AtomicValue |
getValue(java.lang.String mapIdentifier,
int index,
XBRLContext context,
net.sf.saxon.type.SimpleType schemaType)
Each data item has mapIdentifier string each used concept in the taxonomy
has at least one mapIdentifier
returns the Value to be sent to the fact item. null is allowed and will
be considered as no input data available
|
int |
hashCode()
Hash code.
|
void |
init()
Called by the mapping engine once the object is created.
|
boolean |
isConfigfileRequired()
Returns true if the configuration file is required for this
XBRLDataSource.
|
boolean |
isInputFileRequired()
Returns true if this driver requires an input file.
|
boolean |
isNil(java.lang.String mapIdentifier,
int index,
XMLElementDefinition concept)
Return true if the concept content is xsi:nil so there will be no request for a value.
|
boolean |
isTupleSourceRequired()
Returns a boolean value indicating if the source format has a meaning to indicate the
number of occurrences of a tuple.
|
void |
save(MapperFileSaveInterface mapperFileSave)
Save the content of the configuration file to disk.
|
void |
setConfigFile(java.net.URI configFile)
Sets the configuration file for this XBRLDataSource.
|
void |
startOfDocument(XBRLInstance instance,
java.lang.Object[] inputs,
DTSLoadingBarInterface bar)
Called by the MapEngine when a new instance that requires this data source is
going to be created.
|
void |
startOfFact(java.lang.String mapIdentifier,
javax.xml.namespace.QName factName)
Called by the MapEngine when a new fact is about to be started
Return nothing.
|
boolean |
verifyRule(MapperSection section)
Checks the current driver for a rule for section passed in in the parameter.
|
void startOfDocument(XBRLInstance instance, java.lang.Object[] inputs, DTSLoadingBarInterface bar) throws MapException
instance
- this is the XBRLInstance document.inputs
- Input parameters, they are different objects for each driver.bar
- this is an optional parameter, if not null, the driver can send messages to inform about the initialization processMapException
- the map exceptionvoid endOfDocument(XBRLInstance instance)
instance
- this is the XBRLInstance document.void startOfFact(java.lang.String mapIdentifier, javax.xml.namespace.QName factName)
mapIdentifier
- StringfactName
- QNamevoid endOfFact(java.lang.String mapIdentifier, javax.xml.namespace.QName factName)
mapIdentifier
- the map identifierfactName
- the fact nameint getNumberOfValues(java.lang.String mapIdentifier, MapperFact fact)
mapIdentifier
- the map identifierfact
- the factXBRLContext getContext(java.lang.String mapIdentifier, int index, XBRLContext context)
mapIdentifier
- Stringindex
- intcontext
- XBRLContext the context proposed by the mapping engine. If the context is modified
it will be modified for all concepts using this context. So if the context requires modifications
for a specified fact it would be better to clone the context before modifications are performed.net.sf.saxon.value.AtomicValue getValue(java.lang.String mapIdentifier, int index, XBRLContext context, net.sf.saxon.type.SimpleType schemaType) throws MapException
mapIdentifier
- Stringindex
- intcontext
- XBRLContext the XBRL Context for the fact being reported. The context
should not be modified here.schemaType
- This is that target schema type obtained from the element definitionMapException
- the map exceptionjava.lang.Object getFootnote(java.lang.String mapIdentifier, int index, XBRLFact fact)
mapIdentifier
- Stringindex
- intfact
- XBRLFactItemjava.lang.String getFootnoteLang(java.lang.String mapIdentifier, int index, XBRLFact fact, java.lang.Object footnoteContent)
mapIdentifier
- the map identifierindex
- the indexfact
- the factfootnoteContent
- the footnote contentboolean isNil(java.lang.String mapIdentifier, int index, XMLElementDefinition concept)
mapIdentifier
- the map identifierindex
- the indexconcept
- the conceptvoid init() throws MapConfigurationFileException
MapConfigurationFileException
- the map configuration file exceptionvoid setConfigFile(java.net.URI configFile)
configFile
- the new config filejava.net.URI getConfigFile()
XBRLUnit getUnit(java.lang.String mapIdentifier, int index, XBRLContext localContext, XBRLUnit unit)
mapIdentifier
- String codeindex
- int indicating which value we are working onlocalContext
- the context for the new dataunit
- the proposed unit. Can be changedXBRLNumber.ExactitudeMode getFormat(java.lang.String mapIdentifier, int index, XBRLContext context, XBRLUnit localUnit)
mapIdentifier
- the map identifierindex
- the indexcontext
- the contextlocalUnit
- the local unitjava.lang.String getFormatValue(java.lang.String mapIdentifier, int index, XBRLContext context, XBRLUnit localUnit)
mapIdentifier
- the map identifierindex
- the indexcontext
- the contextlocalUnit
- the local unitjava.lang.Object getSampleData(java.lang.Object data) throws MapException
data
- objectMapException
- in the case the input object cannot be usedboolean isConfigfileRequired()
void createConfigFileContent()
void save(MapperFileSaveInterface mapperFileSave) throws MapException
This method is called by the GUI when the mapper has changes in the configuration and the configuration requires to be serialized to disk.
mapperFileSave
- optional parameter, if the configuration file content is
empty, and the mapperFileSave parameter is not null, the driver can use the
parameter to prepare a sample configuration file. Note not all drivers can
do this, for example the Excel data source driver cannot, but the SQL Data
source can prepare a kind of virtual table from which the data would eventually
comeMapException
- in the event of problems like IOExceptionboolean isInputFileRequired()
boolean isTupleSourceRequired()
This information is used during the algorithm for generating a template file automatically.
Excel Data Source, for example, does not provides a meaning to indicate the number of occurrences of a tuple. The number of occurrences will be indicated in the instance document template itself. SQL Data Source, is on the other side. The SQL Driver and the source format may have information to provide the number of occurrences for a tuple.
Note, once a template has been automatically generated. it is up to the team to change the generated template into something different if this is required by the project.
java.lang.String getSourceReference(java.lang.String mapIdentifier, int index, XBRLContext localContext, net.sf.saxon.type.SimpleType theType)
This method is used in order to build an error message that takes into consideration where the data comes from so the user can better track the path the data is following inside the tools.
mapIdentifier
- current map identifierindex
- current index for the map identifierlocalContext
- XBRL context for the generated facttheType
- data type as SimpleTypeboolean verifyRule(MapperSection section)
This method is called only if the fact contains a sectionRef and the sectionRef contains a rule.
The algorithm to determine the output value is driver dependant and there is no default value.
If the return value is true, the fact will be included to the output instance and all files in the section will be added to the DTS. If the return value is false, the fact will be skipped.
section
- the sectionjava.lang.Object[] getMapIdentifierReferences(java.lang.String mapIdentifier)
mapIdentifier
- the map identifierint hashCode()
hashCode
in class java.lang.Object
boolean equals(java.lang.Object obj)
equals
in class java.lang.Object
obj
- the objCopyright 2006-2015 Reporting Standard S.L., C/ Torrecilla del Puerto 1, 28043, Madrid, Espaņa