diff options
Diffstat (limited to 'sched')
-rw-r--r-- | sched/src/com/android/sched/util/codec/OrCodec.java | 30 |
1 files changed, 19 insertions, 11 deletions
diff --git a/sched/src/com/android/sched/util/codec/OrCodec.java b/sched/src/com/android/sched/util/codec/OrCodec.java index c1789a1b..c4d3f8a2 100644 --- a/sched/src/com/android/sched/util/codec/OrCodec.java +++ b/sched/src/com/android/sched/util/codec/OrCodec.java @@ -16,10 +16,14 @@ package com.android.sched.util.codec; +import com.google.common.base.Function; +import com.google.common.base.Joiner; +import com.google.common.collect.Collections2; + import com.android.sched.util.config.ConfigurationError; +import java.util.Arrays; import java.util.Collections; -import java.util.Iterator; import java.util.List; import javax.annotation.CheckForNull; @@ -35,10 +39,15 @@ public class OrCodec<T> implements StringCodec<T> { private final List<StringCodec<? extends T>> codecList; public OrCodec(@Nonnull List<StringCodec<? extends T>> codecList) { - assert codecList.size() >= 1; + assert codecList.size() >= 2; this.codecList = codecList; } + public OrCodec(@Nonnull StringCodec<? extends T>... codecList) { + assert codecList.length >= 2; + this.codecList = Arrays.asList(codecList); + } + @Override @Nonnull public T parseString(@Nonnull CodecContext context, @Nonnull String string) { @@ -65,20 +74,19 @@ public class OrCodec<T> implements StringCodec<T> { @Override public void checkValue(@Nonnull CodecContext context, @Nonnull T data) { + //STOPSHIP: TBI } @Override @Nonnull public String getUsage() { - StringBuffer usage = new StringBuffer(); - Iterator<StringCodec<? extends T>> codecListIterator = codecList.iterator(); - while (codecListIterator.hasNext()) { - usage.append(codecListIterator.next().getUsage()); - if (codecListIterator.hasNext()) { - usage.append(" or "); - } - } - return usage.toString(); + return Joiner.on(" or ").join( + Collections2.transform(codecList, new Function<StringCodec<? extends T>, String>() { + @Override + public String apply(StringCodec<? extends T> codec) { + return codec.getUsage(); + } + })); } @Override |