1 /* 2 * @(#)IProblemManager.java 3 * 4 * Copyright (C) 2002-2003 Matt Albrecht 5 * groboclown@users.sourceforge.net 6 * http://groboutils.sourceforge.net 7 * 8 * Part of the GroboUtils package at: 9 * http://groboutils.sourceforge.net 10 * 11 * Permission is hereby granted, free of charge, to any person obtaining a 12 * copy of this software and associated documentation files (the "Software"), 13 * to deal in the Software without restriction, including without limitation 14 * the rights to use, copy, modify, merge, publish, distribute, sublicense, 15 * and/or sell copies of the Software, and to permit persons to whom the 16 * Software is furnished to do so, subject to the following conditions: 17 * 18 * The above copyright notice and this permission notice shall be included in 19 * all copies or substantial portions of the Software. 20 * 21 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 22 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 23 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 24 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 25 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 26 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 27 * DEALINGS IN THE SOFTWARE. 28 */ 29 package net.sourceforge.groboutils.pmti.v1; 30 31 32 33 /** 34 * The master class (generally a facade) responsible for interfacing the 35 * programmer with the Problem Management Tracker, implementing not only the 36 * query and change elements, but also enforcing the workflow logic associated 37 * with the underlying tracker. 38 * 39 * @author Matt Albrecht <a HREF="mailto:groboclown@users.sourceforge.net">groboclown@users.sourceforge.net</a> 40 * @version $Date: 2003/02/10 22:51:54 $ 41 * @since July 7, 2002 42 */ 43 public interface IProblemManager 44 { 45 46 /** 47 * Returns a list of all issue IDs known by the PMT. This may be an 48 * extremely expensive operation, depending on the size of the underlying 49 * system. This call must never return <tt>null</tt>. This should never 50 * return new issues that have not been comitted yet. 51 */ 52 public String[] getIssueIDs() 53 throws ProblemManagerException; 54 55 56 /** 57 * Returns all issue IDs that match the given 'template'. A template is 58 * an issue where all <tt>null</tt> values are considered 'wildcards', 59 * so that a <tt>null</tt> state, for instance, would match for any 60 * state object. May change the template in the future to a different 61 * but similar type to allow for regular-expressions. 62 */ 63 public String[] getIssueIDsForTemplate( IIssue issue ) 64 throws ProblemManagerException; 65 66 67 /** 68 * Returns the issue associated with the given unique issue ID. If no such 69 * issue exists, then <tt>null</tt> is returned. Note that the returned 70 * element is a non-editable version of the issue. 71 */ 72 public IIssue getIssueByID( String id ) 73 throws ProblemManagerException; 74 75 76 /** 77 * Given the real issue, returns the editable version of the issue. 78 */ 79 public IEditableIssue editIssue( IIssue issue ) 80 throws ProblemManagerException; 81 82 83 /** 84 * Creates a new issue of the given type. If <tt>type</tt> is 85 * <tt>null</tt>, then a new issue of the default issue type is 86 * created and returned. 87 */ 88 public IEditableIssue createIssue( String type ) 89 throws ProblemManagerException; 90 91 92 /** 93 * Returns all meta-data for this problem management tracker. 94 */ 95 public IProblemManagerInfo getProblemManagerInfo(); 96 } 97 98