package hudson.plugins.collabnet.util; import com.collabnet.ce.webservices.CTFPackage; import com.collabnet.ce.webservices.CTFProject; import com.collabnet.ce.webservices.CTFRelease; import com.collabnet.ce.webservices.CollabNetApp; import com.collabnet.ce.webservices.ObjectWithTitle; import hudson.util.ComboBoxModel; import java.rmi.RemoteException; import java.util.Collection; import java.util.logging.Logger; /** * These classes are used to update the list of items for a combo box. */ public abstract class ComboBoxUpdater { protected static Logger log = Logger.getLogger("ComboBoxUpdater"); private ComboBoxUpdater() { } /** * @return a list of projects which has been sanitized. */ public static ComboBoxModel getProjectList(CollabNetApp cna) { if (cna != null) { try { return toModel(cna.getProjects()); } catch (RemoteException re) { CommonUtil.logRE(log, "getProjectList", re); } } return EMPTY_MODEL; } /** * Obtains the list of packages in the given project. */ public static ComboBoxModel getPackages(CollabNetApp cna, String project) throws RemoteException { if (cna==null) return EMPTY_MODEL; CTFProject p = cna.getProjectByTitle(project); if (p==null) return EMPTY_MODEL; return toModel(p.getPackages()); } public static ComboBoxModel getReleases(CollabNetApp cna, String project, String rpackage) throws RemoteException { if (cna==null) return EMPTY_MODEL; CTFProject p = cna.getProjectByTitle(project); if (p==null) return EMPTY_MODEL; if (CommonUtil.unset(rpackage)) { return getReleaseList(p); } else { CTFPackage pkg = p.getPackages().byTitle(rpackage); return getReleaseList(pkg); } } /** * @return a list of releases in the package which has been sanitized. */ public static ComboBoxModel getReleaseList(CTFPackage pkg) throws RemoteException { if (pkg == null) return EMPTY_MODEL; return toModel(pkg.getReleases()); } /** * @return a list of all releases in the project which has been * sanitized. */ public static ComboBoxModel getReleaseList(CTFProject p) throws RemoteException { if (p == null) return EMPTY_MODEL; ComboBoxModel cbm = new ComboBoxModel(); for (CTFPackage pkg : p.getPackages()) { for (CTFRelease r : pkg.getReleases()) { cbm.add(r.getTitle()); } } return cbm; } public static ComboBoxModel getRepos(CollabNetApp cna, String project) throws RemoteException { if (cna==null) return EMPTY_MODEL; CTFProject p = cna.getProjectByTitle(project); if (p==null) return EMPTY_MODEL; return toModel(p.getScmRepositories()); } public static ComboBoxModel toModel(Collection<? extends ObjectWithTitle> list) { ComboBoxModel r = new ComboBoxModel(); for (ObjectWithTitle t : list) r.add(t.getTitle()); return r; } /** * @return a list of trackers which has been sanitized. */ public static ComboBoxModel getTrackerList(CTFProject p) throws RemoteException { if (p!=null) return toModel(p.getTrackers()); return EMPTY_MODEL; } public static ComboBoxModel getUsers(CollabNetApp cna, String project) throws RemoteException { CTFProject p = cna.getProjectByTitle(project); if (p==null) return EMPTY_MODEL; return toModel(p.getMembers()); } /** * @return a list of usernames which has been sanitized. */ public static ComboBoxModel getUserList(CTFProject p) { if (p!=null) { try { return toModel(p.getMembers()); } catch (RemoteException re) { CommonUtil.logRE(log, "getUserList", re); } } return EMPTY_MODEL; } private static final ComboBoxModel EMPTY_MODEL = new ComboBoxModel(); }