Mercurial > hg > LGDataverses
diff src/main/java/edu/harvard/iq/dataverse/util/json/NullSafeJsonBuilder.java @ 10:a50cf11e5178
Rewrite LGDataverse completely upgrading to dataverse4.0
| author | Zoe Hong <zhong@mpiwg-berlin.mpg.de> |
|---|---|
| date | Tue, 08 Sep 2015 17:00:21 +0200 |
| parents | |
| children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/main/java/edu/harvard/iq/dataverse/util/json/NullSafeJsonBuilder.java Tue Sep 08 17:00:21 2015 +0200 @@ -0,0 +1,120 @@ +package edu.harvard.iq.dataverse.util.json; + +import edu.harvard.iq.dataverse.DatasetField; +import java.math.BigDecimal; +import java.math.BigInteger; +import javax.json.Json; +import javax.json.JsonArrayBuilder; +import javax.json.JsonObject; +import javax.json.JsonObjectBuilder; +import javax.json.JsonValue; + +/** + * A JSON builder that drops any null values. If we didn't drop'em, + * we'd get an NPE from the standard JSON builder. But just omitting them + * makes sense. So there. + * + * @author michael + */ +public class NullSafeJsonBuilder implements JsonObjectBuilder { + + public static NullSafeJsonBuilder jsonObjectBuilder() { + return new NullSafeJsonBuilder(); + } + + private final JsonObjectBuilder delegate; + + public NullSafeJsonBuilder() { + delegate = Json.createObjectBuilder(); + } + + @Override + public NullSafeJsonBuilder add(String name, JsonValue value) { + if ( value!=null ) delegate.add(name, value); + return this; + } + + @Override + public NullSafeJsonBuilder add(String name, String value) { + if ( value!=null ) + delegate.add(name, value); + return this; + } + + @Override + public NullSafeJsonBuilder add(String name, BigInteger value) { + if ( value!=null ) + delegate.add(name, value); + return this; + } + + @Override + public NullSafeJsonBuilder add(String name, BigDecimal value) { + if ( value!=null ) + delegate.add(name, value); + + return this; + } + + @Override + public NullSafeJsonBuilder add(String name, int value) { + delegate.add(name, value); + return this; + } + + public NullSafeJsonBuilder add(String name, Long value) { + return ( value != null ) ? add(name, value.longValue()) : this; + } + + @Override + public NullSafeJsonBuilder add(String name, long value) { + delegate.add(name, value); + return this; + } + + @Override + public NullSafeJsonBuilder add(String name, double value) { + delegate.add(name, value); + return this; + } + + @Override + public NullSafeJsonBuilder add(String name, boolean value) { + delegate.add(name, value); + return this; + } + + @Override + public NullSafeJsonBuilder addNull(String name) { + delegate.addNull(name); + return this; + } + + @Override + public NullSafeJsonBuilder add(String name, JsonObjectBuilder builder) { + if ( builder!=null ) + delegate.add(name, builder); + return this; + } + + @Override + public NullSafeJsonBuilder add(String name, JsonArrayBuilder builder) { + if ( builder!=null ) + delegate.add(name, builder); + return this; + } + + public NullSafeJsonBuilder addStrValue( String name, DatasetField field ) { + if ( field != null ) { + delegate.add( name, field.getValue() ); + } + return this; + } + + @Override + public JsonObject build() { + return delegate.build(); + } + + +}
