package de.blau.android.util.mapbox.geojson;
import com.google.gson.GsonBuilder;
import de.blau.android.util.mapbox.geojson.custom.GeometryDeserializer;
import de.blau.android.util.mapbox.geojson.custom.PositionDeserializer;
import de.blau.android.util.mapbox.geojson.custom.PositionSerializer;
import de.blau.android.util.mapbox.models.Position;
/**
* Shared by FeatureCollection and CarmenFeatureCollection
*
* @since 1.0.0
*/
public class BaseFeatureCollection implements GeoJSON {
private final String type = "FeatureCollection";
/**
* Should always be "FeatureCollection".
*
* @return String "FeatureCollection".
* @since 1.0.0
*/
@Override
public String getType() {
return type;
}
/**
* Create a GeoJSON feature collection object from JSON.
*
* @param json String of JSON making up a feature collection.
* @return {@link FeatureCollection} GeoJSON object.
* @since 1.0.0
*/
public static FeatureCollection fromJson(String json) {
GsonBuilder gson = new GsonBuilder();
gson.registerTypeAdapter(Position.class, new PositionDeserializer());
gson.registerTypeAdapter(Geometry.class, new GeometryDeserializer());
return gson.create().fromJson(json, FeatureCollection.class);
}
/**
* Convert feature collection into JSON.
*
* @return String containing feature collection JSON.
* @since 1.0.0
*/
@Override
public String toJson() {
GsonBuilder gson = new GsonBuilder();
gson.registerTypeAdapter(Position.class, new PositionSerializer());
return gson.create().toJson(this);
}
}