package org.dodgybits.shuffle.web.client.model; import java.io.Serializable; import java.util.ArrayList; @SuppressWarnings("serial") public class ValueSelection<T> implements Serializable { static enum SelectionType { All, Some, None } private SelectionType mType; private ArrayList<KeyValue<T>> mKeyValues; @SuppressWarnings("unused") private ValueSelection() { // required for GWT serialization } private ValueSelection(SelectionType type) { mType = type; } public ValueSelection(ArrayList<KeyValue<T>> keyValues) { if (keyValues == null || keyValues.isEmpty()) { mType = SelectionType.All; } else { mType = SelectionType.Some; mKeyValues = keyValues; } } public ValueSelection<T> createNoneSelection() { return new ValueSelection<T>(SelectionType.None); } public ValueSelection<T> createAllSelection() { return new ValueSelection<T>(SelectionType.All); } public boolean isNone() { return mType == SelectionType.None; } public boolean isAll() { return mType == SelectionType.All; } public ArrayList<KeyValue<T>> getKeyValues() { return mKeyValues; } @Override public String toString() { String result; switch (mType) { case All: result="All"; break; case None: result="None"; break; default: result = mKeyValues.toString(); break; } return "[ValueSelection " + result + "]"; } }