001: /*
002: * @(#)DefaultProblemManagerInfo.java
003: *
004: * Copyright (C) 2002-2003 Matt Albrecht
005: * groboclown@users.sourceforge.net
006: * http://groboutils.sourceforge.net
007: *
008: * Part of the GroboUtils package at:
009: * http://groboutils.sourceforge.net
010: *
011: * Permission is hereby granted, free of charge, to any person obtaining a
012: * copy of this software and associated documentation files (the "Software"),
013: * to deal in the Software without restriction, including without limitation
014: * the rights to use, copy, modify, merge, publish, distribute, sublicense,
015: * and/or sell copies of the Software, and to permit persons to whom the
016: * Software is furnished to do so, subject to the following conditions:
017: *
018: * The above copyright notice and this permission notice shall be included in
019: * all copies or substantial portions of the Software.
020: *
021: * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
022: * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
023: * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
024: * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
025: * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
026: * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
027: * DEALINGS IN THE SOFTWARE.
028: */
029: package net.sourceforge.groboutils.pmti.v1.defimpl;
030:
031: import net.sourceforge.groboutils.pmti.v1.IProblemManagerInfo;
032: import net.sourceforge.groboutils.pmti.v1.IIssueTypeInfo;
033:
034: import java.util.Hashtable;
035: import java.util.Enumeration;
036:
037: /**
038: * Information about the owning problem manager.
039: *
040: * @author Matt Albrecht <a href="mailto:groboclown@users.sourceforge.net">groboclown@users.sourceforge.net</a>
041: * @version $Date: 2003/02/10 22:51:59 $
042: * @since July 12, 2002
043: */
044: public class DefaultProblemManagerInfo implements IProblemManagerInfo {
045: private String defaultType;
046: private Hashtable types = new Hashtable();
047:
048: /**
049: * There must be at least one type info, and the passed-in default type
050: * (<tt>dt</tt>) must be contained within the set.
051: */
052: public DefaultProblemManagerInfo(String dt, IIssueTypeInfo[] t) {
053: if (dt == null || t == null) {
054: throw new IllegalArgumentException("no null arguments");
055: }
056: boolean foundDT = false;
057: for (int i = 0; i < t.length; ++i) {
058: if (t[i] != null) {
059: String name = t[i].getName();
060: this .types.put(name, t[i]);
061: if (dt.equals(name)) {
062: foundDT = true;
063: }
064: }
065: }
066: if (!foundDT) {
067: throw new IllegalArgumentException("no such type " + dt);
068: }
069: this .defaultType = dt;
070: }
071:
072: /**
073: * Returns a list of all known types of issues, which can be used in
074: * the creation of a new issue through <tt>createIssue( String )</tt>.
075: */
076: public String[] getIssueTypes()
077: {
078: String s[] = new String[ this .types.size() ];
079: Enumeration enum = this .types.keys();
080: for (int i = 0; enum.hasMoreElements(); ++i)
081: {
082: s[i] = (String)enum.nextElement();
083: }
084: return s;
085: }
086:
087: /**
088: *
089: */
090: public String getDefaultType() {
091: return this .defaultType;
092: }
093:
094: /**
095: * Returns all relevant meta-information about the issues of the given
096: * type.
097: */
098: public IIssueTypeInfo getTypeInfo(String type) {
099: return (IIssueTypeInfo) this.types.get(type);
100: }
101: }
|