diff options
Diffstat (limited to 'platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/style/functions/Function.java')
-rw-r--r-- | platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/style/functions/Function.java | 37 |
1 files changed, 36 insertions, 1 deletions
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/style/functions/Function.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/style/functions/Function.java index e7bb52ebb3..82fd33843f 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/style/functions/Function.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/style/functions/Function.java @@ -3,6 +3,9 @@ package com.mapbox.mapboxsdk.style.functions; import android.support.annotation.NonNull; import android.support.annotation.Nullable; +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.mapbox.mapboxsdk.style.expressions.Expression; import com.mapbox.mapboxsdk.style.functions.stops.CategoricalStops; import com.mapbox.mapboxsdk.style.functions.stops.ExponentialStops; import com.mapbox.mapboxsdk.style.functions.stops.IdentityStops; @@ -10,6 +13,8 @@ import com.mapbox.mapboxsdk.style.functions.stops.IntervalStops; import com.mapbox.mapboxsdk.style.functions.stops.Stop; import com.mapbox.mapboxsdk.style.functions.stops.Stops; +import java.util.ArrayList; +import java.util.List; import java.util.Map; import timber.log.Timber; @@ -249,7 +254,8 @@ public class Function<I, O> { // Class definition // - private final Stops<I, O> stops; + private Stops<I, O> stops; + private JsonArray expression; /** * JNI Cosntructor for implementation classes @@ -260,6 +266,35 @@ public class Function<I, O> { this.stops = stops; } + Function(Object object) { + Timber.e("Class: %s", object.getClass().getSimpleName()); + if (object instanceof JsonArray) { + this.expression = (JsonArray) object; + } + } + + public Expression getExpression() { + return convert(this.expression); + } + + private Expression convert(JsonArray jsonArray) { + final String operator = jsonArray.get(0).getAsString(); + final List<Expression> arguments = new ArrayList<>(); + + JsonElement jsonElement; + for (int i = 1; i < jsonArray.size(); i++) { + jsonElement = jsonArray.get(i); + if (jsonElement instanceof JsonArray) { + arguments.add(convert((JsonArray) jsonElement)); + } else { + arguments.add(new Expression(jsonElement.getAsString())); + } + } + + return new Expression(operator, arguments.toArray(new Expression[arguments.size()])); + } + + /** * @return the stops in this function */ |