All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.mokung.pomegranate.jackson.handler.getter.BigDecimalGetter Maven / Gradle / Ivy

package com.mokung.pomegranate.jackson.handler.getter;

import java.math.BigDecimal;

import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.*;
import com.mokung.pomegranate.jackson.handler.Getter;

/**
 *
 * @author mokung
 */
public class BigDecimalGetter implements Getter {

    @Override
    public BigDecimal getter(JsonNode valueNode, ObjectMapper mapper, boolean cast) {
        if (valueNode instanceof DecimalNode) {
            return valueNode.decimalValue();
        }
        if (!cast || valueNode == null || valueNode instanceof NullNode) {
            return null;
        }
        if (valueNode instanceof NumericNode) {
            return valueNode.decimalValue();
        }
        if (valueNode instanceof TextNode) {
            String value = valueNode.asText();
            return stringToBigDecimal(value);
        }
        if (valueNode instanceof POJONode) {
            Object valueObj = ((POJONode)valueNode).getPojo();
            if (valueObj == null) {
                return null;
            }
            return stringToBigDecimal(valueObj.toString());
        }
        return null;
    }

    protected static final int STRING_MAX_LENGTH = 65535;

    protected static BigDecimal stringToBigDecimal(String value) {
        if (value == null || value.length() <= 0 || value.trim().length() <= 0) {
            return null;
        }
        if (value.length() > STRING_MAX_LENGTH) {
            return null;
        }
        try {
            return new BigDecimal(value);
        } catch (Exception e) {
            return null;
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy