|
What this is
Other links
The source code
/*
* 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 NetBeans. The Initial Developer of the Original
* Code is Sun Microsystems, Inc. Portions Copyright 1997-2000 Sun
* Microsystems, Inc. All Rights Reserved.
*/
package org.netbeans.lib.cvsclient.command.log;
import java.io.*;
import java.util.*;
import org.netbeans.lib.cvsclient.*;
import org.netbeans.lib.cvsclient.command.*;
import org.netbeans.lib.cvsclient.connection.*;
import org.netbeans.lib.cvsclient.event.*;
import org.netbeans.lib.cvsclient.request.*;
/**
* The rlog command is similar to log, but doens't operate on currently checked
* out sources.
*
* @author MIlos Kleint
*/
public class RlogCommand extends BasicCommand {
/**
* The modules to checkout. These names are unexpanded and will be passed
* to a module-expansion request.
*/
private final List modules = new LinkedList();
/**
* The expanded modules.
*/
private final List expandedModules = new LinkedList();
/**
* Holds value of property defaultBranch.
*/
private boolean defaultBranch;
/**
* Holds value of property dateFilter.
*/
private String dateFilter;
/**
* Holds value of property headerOnly.
*/
private boolean headerOnly;
/**
* Holds value of property noTags.
*/
private boolean noTags;
/**
* Holds value of property revisionFilter.
*/
private String revisionFilter;
/**
* Holds value of property stateFilter.
*/
private String stateFilter;
/**
* Holds value of property userFilter.
*/
private String userFilter;
/**
* Holds value of property headerAndDescOnly.
*/
private boolean headerAndDescOnly;
public RlogCommand() {
resetCVSCommand();
}
/**
* Set the modules to export.
* @param theModules the names of the modules to export
*/
public void setModule(String module) {
modules.add(module);
}
/**
* clears the list of modules for export.
*/
public void clearModules() {
this.modules.clear();
}
/**
* Set the modules to export.
* @param theModules the names of the modules to export
*/
public void setModules(String[] modules) {
clearModules();
if (modules == null) {
return;
}
for (int i = 0; i < modules.length; i++) {
String module = modules[i];
this.modules.add(module);
}
}
public String[] getModules() {
String[] mods = new String[modules.size()];
mods = (String[])modules.toArray(mods);
return mods;
}
private void processExistingModules(String localPath) {
if (expandedModules.size() == 0) {
return;
}
String[] directories = new String[expandedModules.size()];
directories = (String[])expandedModules.toArray(directories);
setModules(directories);
}
/**
* Getter for property defaultBranch, equals the command-line CVS switch
* "-b".
* @return Value of property defaultBranch.
*/
public boolean isDefaultBranch() {
return defaultBranch;
}
/**
* Setter for property defaultBranch, equals the command-line CVS switch
* "-b".
* @param defaultBranch New value of property defaultBranch.
*/
public void setDefaultBranch(boolean defaultBranch) {
this.defaultBranch = defaultBranch;
}
/**
* Getter for property dateFilter, equals the command-line CVS switch "-d".
* @return Value of property dateFilter.
*/
public String getDateFilter() {
return dateFilter;
}
/** Setter for property dateFilter, equals the command-line CVS switch "-d".
* @param dateFilter New value of property dateFilter.
*/
public void setDateFilter(String dateFilter) {
this.dateFilter = dateFilter;
}
/** Getter for property headerOnly, equals the command-line CVS switch "-h".
* @return Value of property headerOnly.
*/
public boolean isHeaderOnly() {
return headerOnly;
}
/** Setter for property headerOnly, equals the command-line CVS switch "-h".
* @param headerOnly New value of property headerOnly.
*/
public void setHeaderOnly(boolean headerOnly) {
this.headerOnly = headerOnly;
}
/** Getter for property noTags, equals the command-line CVS switch "-N".
* @return Value of property noTags.
*/
public boolean isNoTags() {
return noTags;
}
/** Setter for property noTags, equals the command-line CVS switch "-N".
* @param noTags New value of property noTags.
*/
public void setNoTags(boolean noTags) {
this.noTags = noTags;
}
/** Getter for property revisionFilter, equals the command-line CVS switch "-r".
* @return Value of property revisionFilter.
*/
public String getRevisionFilter() {
return revisionFilter;
}
/** Setter for property revisionFilter, equals the command-line CVS switch "-r".
* @param revisionFilter New value of property revisionFilter.
empty string means latest revision of default branch.
*/
public void setRevisionFilter(String revisionFilter) {
this.revisionFilter = revisionFilter;
}
/** Getter for property stateFilter, equals the command-line CVS switch "-s".
* @return Value of property stateFilter.
*/
public String getStateFilter() {
return stateFilter;
}
/** Setter for property stateFilter, equals the command-line CVS switch "-s".
* @param stateFilter New value of property stateFilter.
*/
public void setStateFilter(String stateFilter) {
this.stateFilter = stateFilter;
}
/** Getter for property userFilter, equals the command-line CVS switch "-w".
* @return Value of property userFilter, empty string means the current user.
*/
public String getUserFilter() {
return userFilter;
}
/** Setter for property userFilter, equals the command-line CVS switch "-w".
* @param userFilter New value of property userFilter.
*/
public void setUserFilter(String userFilter) {
this.userFilter = userFilter;
}
/** Getter for property headerAndDescOnly, equals the command-line CVS switch "-t".
* @return Value of property headerAndDescOnly.
*/
public boolean isHeaderAndDescOnly() {
return headerAndDescOnly;
}
/** Setter for property headerAndDescOnly, equals the command-line CVS switch "-t".
* @param headerAndDescOnly New value of property headerAndDescOnly.
*/
public void setHeaderAndDescOnly(boolean headerAndDescOnly) {
this.headerAndDescOnly = headerAndDescOnly;
}
/**
* Execute this command.
* @param client the client services object that provides any necessary
* services to this command, including the ability to actually process
* all the requests
*/
public void execute(ClientServices client, EventManager em)
throws CommandException, AuthenticationException {
client.ensureConnection();
requests = new LinkedList();
if (client.isFirstCommand()) {
requests.add(new RootRequest(client.getRepository()));
}
for (Iterator it = modules.iterator(); it.hasNext();) {
String module = (String)it.next();
requests.add(new ArgumentRequest(module));
}
expandedModules.clear();
requests.add(new DirectoryRequest(".", client.getRepository())); //NOI18N
requests.add(new ExpandModulesRequest());
try {
client.processRequests(requests);
}
catch (CommandException ex) {
throw ex;
}
catch (Exception ex) {
throw new CommandException(ex, ex.getLocalizedMessage());
}
requests.clear();
postExpansionExecute(client, em);
}
/**
* This is called when the server has responded to an expand-modules
* request.
*/
public void moduleExpanded(ModuleExpansionEvent e) {
expandedModules.add(e.getModule());
}
/**
* Execute this command
* @param client the client services object that provides any necessary
* services to this command, including the ability to actually process
* all the requests
*/
private void postExpansionExecute(ClientServices client, EventManager em)
throws CommandException, AuthenticationException {
// processExistingModules(client.getLocalPath());
super.execute(client, em);
//
// moved modules code to the end of the other arguments --GAR
//
if (!isRecursive())
{
requests.add(1, new ArgumentRequest("-l")); //NOI18N
}
// first send out all possible parameters..
if (defaultBranch) {
requests.add(1, new ArgumentRequest("-b")); //NOI18N
}
if (headerAndDescOnly) {
requests.add(1, new ArgumentRequest("-t")); //NOI18N
}
if (headerOnly) {
requests.add(1, new ArgumentRequest("-h")); //NOI18N
}
if (noTags) {
requests.add(1, new ArgumentRequest("-N")); //NOI18N
}
if (userFilter != null) {
requests.add(1, new ArgumentRequest("-w" + userFilter)); //NOI18N
}
if (revisionFilter != null) {
requests.add(1, new ArgumentRequest("-r" + revisionFilter)); //NOI18N
}
if (stateFilter != null) {
requests.add(1, new ArgumentRequest("-s" + stateFilter)); //NOI18N
}
if (dateFilter != null) {
requests.add(1, new ArgumentRequest("-d" + dateFilter)); //NOI18N
}
for (Iterator it = modules.iterator(); it.hasNext();) {
String module = (String)it.next();
requests.add(new ArgumentRequest(module));
}
requests.add(new DirectoryRequest(".", client.getRepository())); //NOI18N
requests.add(CommandRequest.RLOG);
try {
client.processRequests(requests);
requests.clear();
}
catch (CommandException ex) {
throw ex;
}
catch (Exception ex) {
throw new CommandException(ex, ex.getLocalizedMessage());
}
}
public String getCVSCommand() {
StringBuffer toReturn = new StringBuffer("rlog "); //NOI18N
toReturn.append(getCVSArguments());
if (modules != null && modules.size() > 0) {
for (Iterator it = modules.iterator(); it.hasNext();) {
String module = (String)it.next();
toReturn.append(module);
toReturn.append(' ');
}
}
else {
String localizedMsg = CommandException.getLocalMessage("ExportCommand.moduleEmpty.text"); //NOI18N
toReturn.append(" "); //NOI18N
toReturn.append(localizedMsg);
}
return toReturn.toString();
}
public String getCVSArguments() {
StringBuffer toReturn = new StringBuffer(""); //NOI18N
if (isDefaultBranch()) {
toReturn.append("-b "); //NOI18N
}
if (isHeaderAndDescOnly()) {
toReturn.append("-t "); //NOI18N
}
if (isHeaderOnly()) {
toReturn.append("-h "); //NOI18N
}
if (isNoTags()) {
toReturn.append("-N "); //NOI18N
}
if (!isRecursive()) {
toReturn.append("-l "); //NOI18N
}
if (userFilter != null) {
toReturn.append("-w"); //NOI18N
toReturn.append(userFilter);
toReturn.append(' ');
}
if (revisionFilter != null) {
toReturn.append("-r"); //NOI18N
toReturn.append(revisionFilter);
toReturn.append(' ');
}
if (stateFilter != null) {
toReturn.append("-s"); //NOI18N
toReturn.append(stateFilter);
toReturn.append(' ');
}
if (dateFilter != null) {
toReturn.append("-d"); //NOI18N
toReturn.append(dateFilter);
toReturn.append(' ');
}
return toReturn.toString();
}
public boolean setCVSCommand(char opt, String optArg) {
if (opt == 'R') {
setRecursive(true);
}
else if (opt == 'l') {
setRecursive(false);
}
else if (opt == 'b') {
setDefaultBranch(true);
}
else if (opt == 'h') {
setHeaderOnly(true);
}
else if (opt == 't') {
setHeaderAndDescOnly(true);
}
else if (opt == 'N') {
setNoTags(true);
}
else if (opt == 'd') {
setDateFilter(optArg);
}
else if (opt == 'r') {
setRevisionFilter(optArg == null ? "" : optArg); //NOI18N
// for switches with optional args do that.. ^^^^
}
else if (opt == 's') {
setStateFilter(optArg);
}
else if (opt == 'w') {
setUserFilter(optArg == null ? "" : optArg); //NOI18N
}
else {
return false;
}
return true;
}
public void resetCVSCommand() {
setRecursive(true);
setDefaultBranch(false);
setHeaderOnly(false);
setHeaderAndDescOnly(false);
setNoTags(false);
setDateFilter(null);
setRevisionFilter(null);
setStateFilter(null);
setUserFilter(null);
}
/**
* String returned by this method defines which options are available for this particular command
*/
public String getOptString() {
return "RlbhtNd:r:s:w:"; //NOI18N4
}
/**
* Create a builder for this command.
* @param eventMan the event manager used to receive events.
*/
public Builder createBuilder(EventManager eventMan) {
return new LogBuilder(eventMan, this);
}
}
|
| ... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.