Vipin Gambhir
Vipin Gambhir

Reputation: 3

Handle long min value condition

When I ran a program, long min value is getting persisted instead of original value coming from the backend.

I am using the code:

if (columnName.equals(Fields.NOTIONAL)) {
            orderData.notional(getNewValue(data));

As output of this, i am getting long min value, instead of original value.

I tried using this method to handle the scenario

public String getNewValue(Object data) {
        return ((Long)data).getLong("0")==Long.MIN_VALUE?"":((Long)data).toString();
    }

but doesn't work.

Please suggest

Upvotes: 0

Views: 121

Answers (1)

rzwitserloot
rzwitserloot

Reputation: 103018

EDITED: I misread the code in the question; rereading it, I now get what the author is trying to do, and cleaned up the suggestion as a consequence.

(Long) data).getLong("0") is a silly way to write null, because that doesn't do anything. It retrieves the system property named '0', and then attempts to parse it as a Long value. As in, if you start your VM with java -D0=1234 com.foo.YourClass, that returns 1234. I don't even know what you're attempting to accomplish with this call. Obviously it is not equal to Long.MIN_VALUE, thus the method returns ((Long) data).toString(). If data is in fact a Long representing MIN_VALUE, you'll get the digits of MIN_VALUE, clearly not what you wanted.

Try this:

public String getNewValue(Object data) {
    if (data instanceof Number) {
        long v = ((Number) data).longValue();
        return v == Long.MIN_VALUE ? "" : data.toString();
    }
// what do you want to return if the input isn't a numeric object at all?
    return "";

Upvotes: 2

Related Questions