Package com.github.ddth.dao
Class BaseDataJsonFieldBo
- java.lang.Object
-
- com.github.ddth.dao.BaseBo
-
- com.github.ddth.dao.BaseDataJsonFieldBo
-
- All Implemented Interfaces:
com.github.ddth.commons.serialization.ISerializationSupport
,java.lang.Cloneable
public class BaseDataJsonFieldBo extends BaseBo
Similar toBaseBo
, but there is one special "data" field which is JSON-encoded."data" must be either
null
or a list or map.- Since:
- 0.8.0
- Author:
- Thanh Ba Nguyen
-
-
Field Summary
Fields Modifier and Type Field Description protected static java.lang.String
ATTR_DATA
protected com.fasterxml.jackson.databind.JsonNode
dataJson
-
Fields inherited from class com.github.ddth.dao.BaseBo
SER_FIELD_ATTRS, SER_FIELD_DIRTY
-
-
Constructor Summary
Constructors Constructor Description BaseDataJsonFieldBo()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected long
checksum()
Sub-class may override this method to implement its own business logic.java.lang.String
getData()
Get raw value of "data" field.com.fasterxml.jackson.databind.JsonNode
getDataAttr(java.lang.String dPath)
Get a "data"'s sub-attribute using d-path.<T> T
getDataAttr(java.lang.String dPath, java.lang.Class<T> clazz)
Get a "data"'s sub-attribute using d-path.java.util.Date
getDataAttrAsDate(java.lang.String dPath, java.lang.String dateTimeFormat)
Get a "data"'s sub-attribute as date.<T> java.util.Optional<T>
getDataAttrOptional(java.lang.String dPath, java.lang.Class<T> clazz)
Get a "data"'s sub-attribute using d-path.com.fasterxml.jackson.databind.JsonNode
getDataAttrs()
Get the "data" field as aJsonNode
.protected void
parseData()
BaseDataJsonFieldBo
removeDataAttr(java.lang.String dPath)
Remove a "data"'s sub-attribute using d-path.BaseDataJsonFieldBo
setData(com.fasterxml.jackson.databind.JsonNode data)
Set the whole "data" field.BaseDataJsonFieldBo
setData(java.lang.Object data)
Set the whole "data" field.BaseDataJsonFieldBo
setData(java.lang.String data)
Set the whole "data" field.BaseDataJsonFieldBo
setDataAttr(java.lang.String dPath, java.lang.Object value)
Set a "data"'s sub-attribute using d-path.protected void
triggerChange(java.lang.String attrName)
Called when one of BO's attributes is changed (added, updated or removed).protected void
triggerPopulate()
Called when the BO's entire attribute set are (re)populated.-
Methods inherited from class com.github.ddth.dao.BaseBo
attributeExists, attributeMap, calcChecksum, clone, cloneData, equals, fromByteArray, fromBytes, fromJson, fromMap, getAttribute, getAttribute, getAttributeAsDate, getAttributeOptional, getAttributes, getAttributesAsJson, getAttributesAsJsonString, hashCode, initAttributes, isDirty, lockForRead, lockForWrite, markClean, markDirty, readLock, removeAttribute, removeAttribute, setAttribute, setAttribute, setAttributes, setAttributes, setAttributes, toByteArray, toBytes, toJson, toMap, toString, tryLockForRead, tryLockForRead, tryLockForWrite, tryLockForWrite, unlockForRead, unlockForWrite, writeLock
-
-
-
-
Field Detail
-
ATTR_DATA
protected static final java.lang.String ATTR_DATA
- See Also:
- Constant Field Values
-
dataJson
protected com.fasterxml.jackson.databind.JsonNode dataJson
-
-
Method Detail
-
getData
public java.lang.String getData()
Get raw value of "data" field.- Returns:
-
setData
public BaseDataJsonFieldBo setData(java.lang.String data)
Set the whole "data" field.- Parameters:
data
- must be a valid JSON string- Returns:
-
setData
public BaseDataJsonFieldBo setData(com.fasterxml.jackson.databind.JsonNode data)
Set the whole "data" field.- Parameters:
data
-- Returns:
- Since:
- 0.10.0
-
setData
public BaseDataJsonFieldBo setData(java.lang.Object data)
Set the whole "data" field.- Parameters:
data
-- Returns:
- Since:
- 0.10.0
-
triggerChange
protected void triggerChange(java.lang.String attrName)
Called when one of BO's attributes is changed (added, updated or removed).- Overrides:
triggerChange
in classBaseBo
-
triggerPopulate
protected void triggerPopulate()
Called when the BO's entire attribute set are (re)populated.- Overrides:
triggerPopulate
in classBaseBo
-
getDataAttrs
public com.fasterxml.jackson.databind.JsonNode getDataAttrs()
Get the "data" field as aJsonNode
.- Returns:
- Since:
- 0.10.0
-
getDataAttr
public com.fasterxml.jackson.databind.JsonNode getDataAttr(java.lang.String dPath)
Get a "data"'s sub-attribute using d-path.- Parameters:
dPath
-- Returns:
- See Also:
DPathUtils
-
getDataAttr
public <T> T getDataAttr(java.lang.String dPath, java.lang.Class<T> clazz)
Get a "data"'s sub-attribute using d-path.- Parameters:
dPath
-clazz
-- Returns:
- See Also:
DPathUtils
-
getDataAttrOptional
public <T> java.util.Optional<T> getDataAttrOptional(java.lang.String dPath, java.lang.Class<T> clazz)
Get a "data"'s sub-attribute using d-path.- Parameters:
dPath
-clazz
-- Returns:
-
getDataAttrAsDate
public java.util.Date getDataAttrAsDate(java.lang.String dPath, java.lang.String dateTimeFormat)
Get a "data"'s sub-attribute as date. If the attribute value is a string, parse it as aDate
using the specified date-time format.- Parameters:
dPath
-dateTimeFormat
-- Returns:
-
setDataAttr
public BaseDataJsonFieldBo setDataAttr(java.lang.String dPath, java.lang.Object value)
Set a "data"'s sub-attribute using d-path.- Parameters:
dPath
-value
-- Returns:
- See Also:
DPathUtils
-
removeDataAttr
public BaseDataJsonFieldBo removeDataAttr(java.lang.String dPath)
Remove a "data"'s sub-attribute using d-path.- Parameters:
dPath
-- Returns:
- Since:
- 0.10.0
-
parseData
protected void parseData()
-
checksum
protected long checksum()
Sub-class may override this method to implement its own business logic.This method is called by
BaseBo.calcChecksum()
, no need to implement lock/synchronization
-
-