package net.osmand.aidl.maplayer; import android.os.Parcel; import android.os.Parcelable; import net.osmand.aidl.maplayer.point.AMapPoint; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; public class AMapLayer implements Parcelable { private String id; private String name; private float zOrder = 5.5f; private Map<String, AMapPoint> points = new ConcurrentHashMap<>(); public AMapLayer(String id, String name, float zOrder, List<AMapPoint> pointList) { this.id = id; this.name = name; this.zOrder = zOrder; if (pointList != null) { for (AMapPoint p : pointList) { this.points.put(p.getId(), p); } } } public AMapLayer(Parcel in) { readFromParcel(in); } public static final Parcelable.Creator<AMapLayer> CREATOR = new Parcelable.Creator<AMapLayer>() { public AMapLayer createFromParcel(Parcel in) { return new AMapLayer(in); } public AMapLayer[] newArray(int size) { return new AMapLayer[size]; } }; public String getId() { return id; } public String getName() { return name; } public float getZOrder() { return zOrder; } public List<AMapPoint> getPoints() { return new ArrayList<>(points.values()); } public boolean hasPoint(String pointId) { return points.containsKey(pointId); } public void putPoint(AMapPoint point) { points.put(point.getId(), point); } public void removePoint(String pointId) { points.remove(pointId); } public void writeToParcel(Parcel out, int flags) { out.writeString(id); out.writeString(name); out.writeFloat(zOrder); out.writeTypedList(new ArrayList<>(points.values())); } private void readFromParcel(Parcel in) { id = in.readString(); name = in.readString(); zOrder = in.readFloat(); List<AMapPoint> pointList = new ArrayList<>(); in.readTypedList(pointList, AMapPoint.CREATOR); for (AMapPoint p : pointList) { this.points.put(p.getId(), p); } } public int describeContents() { return 0; } }