Package net.sf.jasperreports.json.data
Class JsonDataSource
java.lang.Object
net.sf.jasperreports.engine.data.JRAbstractTextDataSource
net.sf.jasperreports.json.data.JsonDataSource
- All Implemented Interfaces:
HierarchicalDataSource<JsonDataSource>
,JsonData<JsonDataSource>
,RandomAccessDataSource
,JRDataSource
,JRRewindableDataSource
public class JsonDataSource
extends JRAbstractTextDataSource
implements JsonData<JsonDataSource>, RandomAccessDataSource
JSON data source implementation
- Author:
- Narcis Marcu (narcism@users.sourceforge.net)
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final String
static final String
static final String
static final String
static final String
Property specifying the JSON expression for the dataset field.Fields inherited from class net.sf.jasperreports.engine.data.JRAbstractTextDataSource
EXCEPTION_MESSAGE_KEY_CANNOT_CONVERT_FIELD_TYPE, EXCEPTION_MESSAGE_KEY_CANNOT_MODIFY_PROPERTIES_AFTER_START, EXCEPTION_MESSAGE_KEY_NODE_NOT_AVAILABLE, EXCEPTION_MESSAGE_KEY_NULL_DOCUMENT, EXCEPTION_MESSAGE_KEY_NULL_SELECT_EXPRESSION, EXCEPTION_MESSAGE_KEY_UNKNOWN_COLUMN_NAME, EXCEPTION_MESSAGE_KEY_UNKNOWN_NUMBER_TYPE
-
Constructor Summary
ConstructorsModifierConstructorDescriptionprotected
JsonDataSource
(com.fasterxml.jackson.databind.JsonNode jsonTree, String selectExpression) JsonDataSource
(File file) JsonDataSource
(File file, String selectExpression) JsonDataSource
(InputStream stream) JsonDataSource
(InputStream jsonStream, String selectExpression) JsonDataSource
(String location, String selectExpression) JsonDataSource
(JasperReportsContext jasperReportsContext, String location, String selectExpression) Creates a data source instance that reads JSON data from a given locationJsonDataSource
(RepositoryContext repositoryContext, String location, String selectExpression) -
Method Summary
Modifier and TypeMethodDescriptionint
protected String
getFieldExpression
(JRField field) getFieldValue
(JRField jrField) Gets the field value for the current position.protected com.fasterxml.jackson.databind.JsonNode
getJsonData
(com.fasterxml.jackson.databind.JsonNode rootNode, String jsonExpression) Extracts the JSON nodes based on the query expressioncom.fasterxml.jackson.databind.JsonNode
Access the JDON tree that this data source is based on.protected com.fasterxml.jackson.databind.JsonNode
goDownPath
(com.fasterxml.jackson.databind.JsonNode rootNode, String simplePath) Extracts the JSON nodes under the simple pathprotected com.fasterxml.jackson.databind.JsonNode
goDownPathWithAttribute
(com.fasterxml.jackson.databind.JsonNode rootNode, String pathWithAttributeExpression) Extracts the JSON nodes that match the attribute expressionprotected boolean
isValidExpression
(com.fasterxml.jackson.databind.JsonNode operand, String attributeExpression) Validates an attribute expression on a JsonNodevoid
Moves back to the first element in the data source.void
moveToRecord
(int index) boolean
next()
Tries to position the cursor on the next element in the data source.int
Creates a sub data source using the current node as the base for its input stream.subDataSource
(String selectExpression) Creates a sub data source using the current node as the base for its input stream.Methods inherited from class net.sf.jasperreports.engine.data.JRAbstractTextDataSource
convertNumber, convertStringValue, getConvertBean, getDatePattern, getLocale, getNumberPattern, getTextAttributes, getTimeZone, setDatePattern, setLocale, setLocale, setNumberPattern, setTextAttributes, setTextAttributes, setTimeZone, setTimeZone
-
Field Details
-
EXCEPTION_MESSAGE_KEY_JSON_FIELD_VALUE_NOT_RETRIEVED
- See Also:
-
EXCEPTION_MESSAGE_KEY_INVALID_ATTRIBUTE_SELECTION
- See Also:
-
EXCEPTION_MESSAGE_KEY_INVALID_EXPRESSION
- See Also:
-
EXCEPTION_MESSAGE_KEY_NO_DATA
- See Also:
-
PROPERTY_FIELD_EXPRESSION
Property specifying the JSON expression for the dataset field.- See Also:
-
-
Constructor Details
-
JsonDataSource
- Throws:
JRException
-
JsonDataSource
- Throws:
JRException
-
JsonDataSource
protected JsonDataSource(com.fasterxml.jackson.databind.JsonNode jsonTree, String selectExpression) throws JRException - Throws:
JRException
-
JsonDataSource
- Throws:
FileNotFoundException
JRException
-
JsonDataSource
- Throws:
FileNotFoundException
JRException
-
JsonDataSource
public JsonDataSource(JasperReportsContext jasperReportsContext, String location, String selectExpression) throws JRException Creates a data source instance that reads JSON data from a given location- Parameters:
jasperReportsContext
- the JasperReportsContextlocation
- a String representing JSON data sourceselectExpression
- a String representing the select expression- Throws:
JRException
-
JsonDataSource
public JsonDataSource(RepositoryContext repositoryContext, String location, String selectExpression) throws JRException - Throws:
JRException
-
JsonDataSource
- Throws:
JRException
- See Also:
-
-
Method Details
-
getRootNode
public com.fasterxml.jackson.databind.JsonNode getRootNode()Access the JDON tree that this data source is based on.- Returns:
- the JSON tree used by this data source
-
moveFirst
Description copied from interface:JRRewindableDataSource
Moves back to the first element in the data source.- Specified by:
moveFirst
in interfaceJRRewindableDataSource
- Throws:
JRException
-
next
public boolean next()Description copied from interface:JRDataSource
Tries to position the cursor on the next element in the data source.- Specified by:
next
in interfaceJRDataSource
- Returns:
- true if there is a next record, false otherwise
-
recordCount
public int recordCount()- Specified by:
recordCount
in interfaceRandomAccessDataSource
-
currentIndex
public int currentIndex()- Specified by:
currentIndex
in interfaceRandomAccessDataSource
-
moveToRecord
- Specified by:
moveToRecord
in interfaceRandomAccessDataSource
- Throws:
NoRecordAtIndexException
-
getFieldValue
Description copied from interface:JRDataSource
Gets the field value for the current position.- Specified by:
getFieldValue
in interfaceJRDataSource
- Returns:
- an object containing the field value. The object type must be the field object type.
- Throws:
JRException
-
getJsonData
protected com.fasterxml.jackson.databind.JsonNode getJsonData(com.fasterxml.jackson.databind.JsonNode rootNode, String jsonExpression) throws JRException Extracts the JSON nodes based on the query expression- Parameters:
rootNode
-jsonExpression
-- Throws:
JRException
-
goDownPathWithAttribute
protected com.fasterxml.jackson.databind.JsonNode goDownPathWithAttribute(com.fasterxml.jackson.databind.JsonNode rootNode, String pathWithAttributeExpression) throws JRException Extracts the JSON nodes that match the attribute expression- Parameters:
rootNode
-pathWithAttributeExpression
- : e.g. Orders(CustomerId == HILAA)- Throws:
JRException
-
goDownPath
protected com.fasterxml.jackson.databind.JsonNode goDownPath(com.fasterxml.jackson.databind.JsonNode rootNode, String simplePath) Extracts the JSON nodes under the simple path- Parameters:
rootNode
-simplePath
- - a simple field name, with no selection by attribute
-
isValidExpression
protected boolean isValidExpression(com.fasterxml.jackson.databind.JsonNode operand, String attributeExpression) throws JRException Validates an attribute expression on a JsonNode- Parameters:
operand
-attributeExpression
-- Throws:
JRException
-
subDataSource
Creates a sub data source using the current node as the base for its input stream.- Specified by:
subDataSource
in interfaceHierarchicalDataSource<JsonDataSource>
- Returns:
- the JSON sub data source
- Throws:
JRException
-
subDataSource
Creates a sub data source using the current node as the base for its input stream. An additional expression specifies the select criteria that will be applied to the JSON tree node.- Specified by:
subDataSource
in interfaceHierarchicalDataSource<JsonDataSource>
- Parameters:
selectExpression
-- Returns:
- the JSON sub data source
- Throws:
JRException
-
getFieldExpression
-