View Javadoc

1   /*
2   Karma core - Core of the Karma application
3   Copyright (C) 2004  Toolforge <www.toolforge.nl>
4   
5   This library is free software; you can redistribute it and/or
6   modify it under the terms of the GNU Lesser General Public
7   License as published by the Free Software Foundation; either
8   version 2.1 of the License, or (at your option) any later version.
9   
10  This library is distributed in the hope that it will be useful,
11  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13  Lesser General Public License for more details.
14  
15  You should have received a copy of the GNU Lesser General Public
16  License along with this library; if not, write to the Free Software
17  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
18  */
19  package nl.toolforge.karma.core.vc;
20  
21  import nl.toolforge.karma.core.Version;
22  import nl.toolforge.karma.core.vc.threads.RunnerResult;
23  
24  /***
25   * <p>Each module exists on a number of places. Virtually, they appear as a <code>Module</code> instance in Karma. The
26   * status of a module at any given point in time is determined by a number of variables:
27   *
28   * <ul>
29   *   <li/>Latest remote version; this is the latest version of the module in the version control system as determined
30   *        by the <code>PromoteCommand</code> command. The version is relative to the development line for the module
31   *        (which could be a patch line for <code>STATIC</code> modules in a <code>ReleaseManifest</code>.
32   *   <li/>The local version; this is the version of the locally checked out module. For CVS, this is the so-called
33   *        sticky-tag.
34   *   <li/>The next version of the module; this is the version when the module will be promoted again.
35   *   <li/>The manifest version of the module; this is the version as specified in the &lt;version&gt;-attribute of a
36   *        module in the manifest.
37   *   <li/>Existence of a module in a version control repository; one can specify a module in a manifest with a certain
38   *        location, but if the module doesn't exist in the version control repository (as identified by that location),
39   *        Karma needs to know that.
40   * </ul>
41   *
42   * <p>This class contains the full status of a module, as specified by the above variables.
43   *
44   * @author D.A. Smedes
45   * @version $Id: ModuleStatus.java,v 1.8 2004/11/16 22:31:57 asmedes Exp $
46   */
47  public interface ModuleStatus extends RunnerResult {
48  
49    public Version getNextVersion();
50  
51    public Version getNextMajorVersion();
52  
53    public Version getLastVersion();
54  
55    public Version getLocalVersion() throws VersionControlException;
56  
57    public void setLogInformation(Object logInfo);
58  
59    public void setExistsInRepository(boolean exists);
60  
61    public boolean existsInRepository();
62  
63    public boolean connectionFailure();
64  
65    public boolean authenticationFailure();
66  
67    public boolean internalError();
68  }