Package com.github.ddth.dao
Class BaseJsonBo
- java.lang.Object
-
- com.github.ddth.dao.BaseBo
-
- com.github.ddth.dao.BaseJsonBo
-
- All Implemented Interfaces:
com.github.ddth.commons.serialization.ISerializationSupport
,java.lang.Cloneable
public class BaseJsonBo extends BaseBo
Similar toBaseBo
but each attribute is JSON-encoded string (or aJsonNode
. If an attribute is a map or list, sub-attributes are accessed using d-path (seeDPathUtils
).setAttribute(String, Object)
andsetAttribute(String, Object, boolean)
convert theinput value
to JSON-encoded string.- If
setAttribute(String, Object)
andsetAttribute(String, Object, boolean)
detect that theinput value
is already in JSON-encoded format, the value is used as-is.
- Since:
- 0.7.1
- Author:
- Thanh Ba Nguyen
-
-
Field Summary
Fields Modifier and Type Field Description protected java.util.Map<java.lang.String,com.fasterxml.jackson.databind.JsonNode>
cacheJsonObjs
-
Fields inherited from class com.github.ddth.dao.BaseBo
SER_FIELD_ATTRS, SER_FIELD_DIRTY
-
-
Constructor Summary
Constructors Constructor Description BaseJsonBo()
-
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.com.fasterxml.jackson.databind.JsonNode
getAttribute(java.lang.String attrName)
Get a BO's attribute.<T> T
getAttribute(java.lang.String attrName, java.lang.Class<T> clazz)
Get a BO's attribute.java.util.Date
getAttributeAsDate(java.lang.String attrName, java.lang.String dateTimeFormat)
Get a BO's attribute as a date.<T> java.util.Optional<T>
getAttributeOptional(java.lang.String attrName, java.lang.Class<T> clazz)
Get a BO's attribute.com.fasterxml.jackson.databind.JsonNode
getSubAttr(java.lang.String attrName, java.lang.String dPath)
Get a sub-attribute using d-path.<T> T
getSubAttr(java.lang.String attrName, java.lang.String dPath, java.lang.Class<T> clazz)
Get a sub-attribute using d-path.java.util.Date
getSubAttrAsDate(java.lang.String attrName, java.lang.String dPath, java.lang.String dateTimeFormat)
Get a sub-attribute as a date using d-path.<T> java.util.Optional<T>
getSubAttrOptional(java.lang.String attrName, java.lang.String dPath, java.lang.Class<T> clazz)
Get a sub-attribute using d-path.BaseJsonBo
removeSubAttr(java.lang.String attrName, java.lang.String dPath)
Remove a sub-attribute.BaseJsonBo
setAttribute(java.lang.String attrName, java.lang.Object value)
Set a BO's attribute.BaseJsonBo
setAttribute(java.lang.String attrName, java.lang.Object value, boolean triggerChange)
Set a BO's attribute.BaseJsonBo
setSubAttr(java.lang.String attrName, java.lang.String dPath, java.lang.Object value)
Set a sub-attribute.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, getAttributes, getAttributesAsJson, getAttributesAsJsonString, hashCode, initAttributes, isDirty, lockForRead, lockForWrite, markClean, markDirty, readLock, removeAttribute, removeAttribute, setAttributes, setAttributes, setAttributes, toByteArray, toBytes, toJson, toMap, toString, tryLockForRead, tryLockForRead, tryLockForWrite, tryLockForWrite, unlockForRead, unlockForWrite, writeLock
-
-
-
-
Method Detail
-
setAttribute
public BaseJsonBo setAttribute(java.lang.String attrName, java.lang.Object value)
Set a BO's attribute.- Overrides:
setAttribute
in classBaseBo
- Returns:
- Since:
- 0.10.0
-
setAttribute
public BaseJsonBo setAttribute(java.lang.String attrName, java.lang.Object value, boolean triggerChange)
Set a BO's attribute.- Overrides:
setAttribute
in classBaseBo
triggerChange
- if set totrue
BaseBo.triggerChange(String)
will be called- Returns:
- Since:
- 0.10.0
-
getAttribute
public com.fasterxml.jackson.databind.JsonNode getAttribute(java.lang.String attrName)
Get a BO's attribute.- Overrides:
getAttribute
in classBaseBo
- Returns:
-
getAttribute
public <T> T getAttribute(java.lang.String attrName, java.lang.Class<T> clazz)
Get a BO's attribute.- Overrides:
getAttribute
in classBaseBo
- Returns:
-
getAttributeOptional
public <T> java.util.Optional<T> getAttributeOptional(java.lang.String attrName, java.lang.Class<T> clazz)
Get a BO's attribute.- Overrides:
getAttributeOptional
in classBaseBo
- Returns:
-
getAttributeAsDate
public java.util.Date getAttributeAsDate(java.lang.String attrName, java.lang.String dateTimeFormat)
Get a BO's attribute as a date. If the attribute value is a string, parse it as aDate
using the specified date-time format.- Overrides:
getAttributeAsDate
in classBaseBo
- Returns:
-
getSubAttr
public com.fasterxml.jackson.databind.JsonNode getSubAttr(java.lang.String attrName, java.lang.String dPath)
Get a sub-attribute using d-path.- Parameters:
attrName
-dPath
-- Returns:
- See Also:
DPathUtils
-
getSubAttr
public <T> T getSubAttr(java.lang.String attrName, java.lang.String dPath, java.lang.Class<T> clazz)
Get a sub-attribute using d-path.- Parameters:
attrName
-dPath
-clazz
-- Returns:
- See Also:
DPathUtils
-
getSubAttrOptional
public <T> java.util.Optional<T> getSubAttrOptional(java.lang.String attrName, java.lang.String dPath, java.lang.Class<T> clazz)
Get a sub-attribute using d-path.- Parameters:
attrName
-dPath
-clazz
-- Returns:
- Since:
- 0.8.0
-
getSubAttrAsDate
public java.util.Date getSubAttrAsDate(java.lang.String attrName, java.lang.String dPath, java.lang.String dateTimeFormat)
Get a sub-attribute as a date using d-path. If sub-attr's value is a string, parse it as aDate
using the specified date-time format.- Parameters:
attrName
-dPath
-dateTimeFormat
-- Returns:
-
setSubAttr
public BaseJsonBo setSubAttr(java.lang.String attrName, java.lang.String dPath, java.lang.Object value)
Set a sub-attribute.- Parameters:
attrName
-value
-- Returns:
-
removeSubAttr
public BaseJsonBo removeSubAttr(java.lang.String attrName, java.lang.String dPath)
Remove a sub-attribute.- Parameters:
attrName
-dPath
-- Returns:
-
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
-
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
-
-