package fr.tvbarthel.apps.sayitfromthesky.models;
import android.os.Parcel;
import android.os.Parcelable;
import com.google.android.gms.maps.model.LatLng;
import com.google.maps.android.PolyUtil;
import com.google.maps.android.SphericalUtil;
import java.util.ArrayList;
import java.util.List;
/**
* A simple data class that represents a drawing.
*/
public final class Drawing implements Parcelable {
public static final Drawing EMPTY = new Drawing("empty_drawing", 0, new ArrayList<String>());
public static final int NON_VALID_ID = -1;
private int mId;
private String mTitle;
private long mCreationTimeInMillis;
private List<String> mEncodedPolylines;
private double mLength;
public Drawing(String title, long creationTimeInMillis, List<String> encodedPolylines) {
mId = NON_VALID_ID;
mTitle = title;
mCreationTimeInMillis = creationTimeInMillis;
mEncodedPolylines = encodedPolylines;
mLength = computeDrawingLength();
}
/**
* Compute the length of the drawing in meters.
*
* @return the length of the drawing in meters.
*/
private double computeDrawingLength() {
double length = 0d;
for (String encodedPath : mEncodedPolylines) {
final List<LatLng> path = PolyUtil.decode(encodedPath);
length += SphericalUtil.computeLength(path);
}
return length;
}
public Drawing(Parcel in) {
readFromParcel(in);
mLength = computeDrawingLength();
}
public String getTitle() {
return mTitle;
}
public long getCreationTimeInMillis() {
return mCreationTimeInMillis;
}
public List<String> getEncodedPolylines() {
return mEncodedPolylines;
}
public int getId() {
return mId;
}
public void setId(int id) {
mId = id;
}
public double getLength() {
return mLength;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeInt(mId);
dest.writeString(mTitle);
dest.writeLong(mCreationTimeInMillis);
dest.writeStringList(mEncodedPolylines);
}
public void readFromParcel(Parcel in) {
mId = in.readInt();
mTitle = in.readString();
mCreationTimeInMillis = in.readLong();
mEncodedPolylines = new ArrayList<String>();
in.readStringList(mEncodedPolylines);
}
public static final Parcelable.Creator<Drawing> CREATOR
= new Parcelable.Creator<Drawing>() {
public Drawing createFromParcel(Parcel in) {
return new Drawing(in);
}
public Drawing[] newArray(int size) {
return new Drawing[size];
}
};
}