package com.collabnet.ce.webservices; import java.util.AbstractList; import java.util.ArrayList; import java.util.Collection; import java.util.List; /** * Glorified {@link ArrayList} that supports a look-up by the title. * @author Kohsuke Kawaguchi */ public class CTFList<T extends ObjectWithTitle> extends ArrayList<T> { public CTFList() { } public CTFList(Collection<? extends T> c) { super(c); } /** * Looks up the object by its title. */ public T byTitle(String title) { for (T t : this) { if (t.getTitle().equals(title)) return t; } return null; } /** * Looks up the object by its ID. */ public T byId(String id) { for (T t : this) { if (t.getId().equals(id)) return t; } return null; } /** * Gets the view of this list where titles are returned instead of {@code T}. */ public List<String> getTitles() { return new AbstractList<String>() { @Override public String get(int index) { return CTFList.this.get(index).getTitle(); } @Override public int size() { return CTFList.this.size(); } }; } }