package co.smartreceipts.android.model.impl; import android.os.Parcel; import co.smartreceipts.android.model.ProcessingStatus; /** * Tracks the different processing states that a given {@link co.smartreceipts.android.model.Trip} can reside in. */ public enum TripProcessingStatus implements ProcessingStatus { /** * Indicates that this Trip should still be treated as in use (i.e. receipts are still being added) */ InUse("InUse"), /** * Indicates that a report has been generated for this trip but may not have been submitted */ Generated("Generated"), /** * Indicates that a report has been submitted for this trip */ Submitted("Submitted"), /** * Indicates that this trip has been reimbursed by whomever is paying for it */ Reimbursed("Reimbursed"), /** * Indicates that we're in an unknown state - shouldn't be normally be used */ None("None"); private final String mStatus; TripProcessingStatus(final String status) { mStatus = status; } @Override public String getProcessingStatus() { return mStatus; } /** * Attempts to generate an enum representation of a given status string * * @param status - the provided status {@link String} * @return the corresponding {@link TripProcessingStatus} or {@link TripProcessingStatus#None} if none match */ public static TripProcessingStatus findProcessingStatusForString(final String status) { final TripProcessingStatus[] tripProcessingStatuses = TripProcessingStatus.values(); for (int i = 0; i < tripProcessingStatuses.length; i++) { if (tripProcessingStatuses[i].getProcessingStatus().equals(status)) { return tripProcessingStatuses[i]; } } return None; } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeString(this.mStatus); } public static final Creator<TripProcessingStatus> CREATOR = new Creator<TripProcessingStatus>() { public TripProcessingStatus createFromParcel(Parcel source) { return findProcessingStatusForString(source.readString()); } public TripProcessingStatus[] newArray(int size) { return new TripProcessingStatus[size]; } }; }