summaryrefslogtreecommitdiff
path: root/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/style/functions/Function.java
diff options
context:
space:
mode:
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.java37
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
*/