/* * CDDL HEADER START * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only * (the "License"). You may not use this file except in compliance * with the License. * * You can obtain a copy of the license at * trunk/opends/resource/legal-notices/OpenDS.LICENSE * or https://OpenDS.dev.java.net/OpenDS.LICENSE. * See the License for the specific language governing permissions * and limitations under the License. * * When distributing Covered Code, include this CDDL HEADER in each * file and include the License file at * trunk/opends/resource/legal-notices/OpenDS.LICENSE. If applicable, * add the following below this CDDL HEADER, with the fields enclosed * by brackets "[]" replaced with your own identifying information: * Portions Copyright [yyyy] [name of copyright owner] * * CDDL HEADER END * * * Portions Copyright 2007 Sun Microsystems, Inc. */ package org.opends.quicksetup.upgrader; import java.net.URL; import java.util.EnumSet; /** * Representation of an OpenDS build package. */ public class Build implements Comparable { /** * Describes build types. */ enum Category { /** * Daily build descriptor. */ DAILY("Daily Build"), // DO NOT i18n /** * Weekly build descriptor. */ WEEKLY("Weekly Build"), // DO NOT i18n /** * Release build descriptor. */ RELEASE("Release Build"); // DO NOT i18n /** * Creates a Category from its 'key' String value. * @param s String representing a key * @return the Category corresponding to the input key; null * if the input string is not a category key */ public static Category fromString(String s) { Category category = null; for (Category c : EnumSet.allOf(Category.class)) { if (c.key.equals(s)) { category = c; break; } } return category; } String key; private Category(String key) { this.key = key; } /** * Gets the string that represents this category in * the build information page. * @return String key */ public String getKey() { return key; } } private URL downloadUrl; private String displayName; private Category category; /** * Creates an instance. * @param displayName where the build package can be accessed * @param downloadUrl of the new build * @param category build category */ Build(String displayName, URL downloadUrl, Category category) { this.displayName = displayName; this.downloadUrl = downloadUrl; this.category = category; } /** * Gets the URL where the build can be accessed. * @return URL representing access to the build package */ public URL getUrl() { return this.downloadUrl; } /** * Gets a string appropriate for presentation to a user. * @return String representing this build */ public String getDisplayName() { return this.displayName; } /** * Gets the category of this build. * @return Category indicating the type of this build. */ public Category getCategory() { return this.category; } /** * {@inheritDoc} */ public String toString() { return getDisplayName(); } /** * {@inheritDoc} */ public int compareTo(Build o) { if (o == null) throw new NullPointerException(); int c = getCategory().compareTo(o.getCategory()); if (c == 0) { c = getDisplayName().compareTo(o.getDisplayName()); } return c; } /** * {@inheritDoc} */ public int hashCode() { int hc = 11; Category cat = getCategory(); if (cat != null) { hc = 31 * hc + cat.hashCode(); } String disp = getDisplayName(); if (disp != null) { hc = 31 * hc + disp.hashCode(); } return hc; } /** * {@inheritDoc} */ public boolean equals(Object obj) { if (this == obj) return true; boolean eq = false; if (obj != null && obj instanceof Build) { Category thisCat = getCategory(); Category thatCat = ((Build)obj).getCategory(); if ((thisCat != null && thisCat.equals(thatCat)) || (thisCat == null && thatCat == null)) { String thisDisp = getDisplayName(); String thatDisp = ((Build)obj).getDisplayName(); eq = ((thisDisp != null && thisDisp.equals(thatDisp)) || (thisDisp == null && thatDisp == null)); } } return eq; } }