| /***************************************************************************** |
| * Sun Public License Notice |
| * |
| * The contents of this file are subject to the Sun Public License Version |
| * 1.0 (the "License"). You may not use this file except in compliance with |
| * the License. A copy of the License is available at http://www.sun.com/ |
| * |
| * The Original Code is the CVS Client Library. |
| * The Initial Developer of the Original Code is Robert Greig. |
| * Portions created by Robert Greig are Copyright (C) 2000. |
| * All Rights Reserved. |
| * |
| * Contributor(s): Robert Greig. |
| *****************************************************************************/ |
| package org.netbeans.lib.cvsclient.command; |
| |
| import org.netbeans.lib.cvsclient.IClientEnvironment; |
| import org.netbeans.lib.cvsclient.IRequestProcessor; |
| import org.netbeans.lib.cvsclient.connection.AuthenticationException; |
| import org.netbeans.lib.cvsclient.event.ICvsListenerRegistry; |
| import org.netbeans.lib.cvsclient.event.IEventSender; |
| import org.netbeans.lib.cvsclient.progress.IProgressViewer; |
| import org.jetbrains.annotations.NonNls; |
| |
| /** |
| * All commands must extend this class. A command is essentially a |
| * collection of requests that make up what is logically known as a CVS |
| * command (from a user's perspective). Commands correspond to operations the |
| * user can perform with CVS, for example checkout a module or perform a |
| * diff on two file versions.<br> |
| * Commands are automatically added as CVS event listeners. They can act |
| * on particular events and perhaps fire new events. |
| * |
| * @author Robert Greig |
| */ |
| public abstract class Command { |
| |
| // Abstract =============================================================== |
| |
| public abstract boolean execute(IRequestProcessor requestProcessor, IEventSender eventManager, ICvsListenerRegistry listenerRegistry, IClientEnvironment clientEnvironment, IProgressViewer progressViewer) |
| throws CommandException, AuthenticationException; |
| |
| /** |
| * This method returns how the command would looklike when typed on the |
| * command line. |
| * |
| * Each command is responsible for constructing this information. |
| * |
| * @return <command's name> [<parameters>] files/dirs. Example: checkout -p CvsCommand.java |
| */ |
| @NonNls public abstract String getCvsCommandLine(); |
| |
| // Fields ================================================================= |
| |
| private final GlobalOptions globalOptions = new GlobalOptions(); |
| |
| // Setup ================================================================== |
| |
| protected Command() { |
| resetCvsCommand(); |
| } |
| |
| // Accessing ============================================================== |
| |
| public final GlobalOptions getGlobalOptions() { |
| return globalOptions; |
| } |
| |
| // Utils ================================================================== |
| |
| /** |
| * Returns the trimmed version of the specified String s. |
| * The returned String is null if the specified String is null or contains |
| * only white spaces. |
| */ |
| protected static final String getTrimmedString(String s) { |
| if (s == null) { |
| return null; |
| } |
| |
| s = s.trim(); |
| if (s.length() == 0) { |
| return null; |
| } |
| |
| return s; |
| } |
| |
| /** |
| * Resets all switches in the command to the default behaviour. |
| * After calling this method, the command should behave defaultly. |
| */ |
| protected void resetCvsCommand() { |
| if (globalOptions != null) { |
| globalOptions.reset(); |
| } |
| } |
| |
| public void setUpdateByRevisionOrDate(String revision, final String date) { |
| throw new UnsupportedOperationException(); |
| } |
| } |