/* $Id: $ */ package com.oreilly.demo.android.pa.aidl.parcelables; import java.util.Collections; import java.util.Date; import java.util.HashMap; import java.util.Map; import android.os.Parcel; import android.os.Parcelable; /** * * @version $Revision: $ * @author <a href="mailto:bmeike@callmeike.net">Blake Meike</a> */ public class SimpleParcelable implements Parcelable { public enum State { BEGIN, MIDDLE, END; } private static final Map<State, String> marshalState; static { Map<State, String> m = new HashMap<State, String>(); m.put(State.BEGIN, "begin"); m.put(State.MIDDLE, "middle"); m.put(State.END, "end"); marshalState = Collections.unmodifiableMap(m); } private static final Map<String, State> unmarshalState; static { Map<String, State> m = new HashMap<String, State>(); m.put("begin", State.BEGIN); m.put("middle", State.MIDDLE); m.put("end", State.END); unmarshalState = Collections.unmodifiableMap(m); } public static final Parcelable.Creator<SimpleParcelable> CREATOR = new Parcelable.Creator<SimpleParcelable>() { public SimpleParcelable createFromParcel(Parcel src) { return new SimpleParcelable( src.readLong(), src.readString()); } public SimpleParcelable[] newArray(int size) { return new SimpleParcelable[size]; } }; private State state; private Date date; public SimpleParcelable(long date, String state) { if (0 <= date) { this.date = new Date(date); } if ((null != state) && (0 < state.length())) { this.state = unmarshalState.get(state); } } public State getState() { return state; } public void setState(State state) { this.state = state; } public Date getDate() { return date; } public void setDate(Date date) { this.date = date; } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel dest, int flags) { // translate the Date to a long dest.writeLong( (null == date) ? -1 : date.getTime()); dest.writeString( (null == state) ? "" : marshalState.get(state)); } @Override public String toString() { return "SimpleParcelable{" + date + "," + state + "}"; } }