Class BaseDataJsonFieldBo

  • All Implemented Interfaces:
    com.github.ddth.commons.serialization.ISerializationSupport, java.lang.Cloneable

    public class BaseDataJsonFieldBo
    extends BaseBo
    Similar to BaseBo, 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 Detail

      • dataJson

        protected com.fasterxml.jackson.databind.JsonNode dataJson
    • Constructor Detail

      • BaseDataJsonFieldBo

        public BaseDataJsonFieldBo()
    • 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 class BaseBo
      • triggerPopulate

        protected void triggerPopulate()
        Called when the BO's entire attribute set are (re)populated.
        Overrides:
        triggerPopulate in class BaseBo
      • getDataAttrs

        public com.fasterxml.jackson.databind.JsonNode getDataAttrs()
        Get the "data" field as a JsonNode.
        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 a Date 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

        Overrides:
        checksum in class BaseBo
        Returns:
        Since:
        0.10.0