git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@274797 13f79535-47bb-0310-9956-ffa450edef68master
@@ -63,7 +63,7 @@ import java.util.Enumeration; | |||||
import org.apache.tools.ant.BuildException; | import org.apache.tools.ant.BuildException; | ||||
/** | /** | ||||
* Checks files into a StarTeam project. | |||||
* Checks files into a StarTeam project. | |||||
* Optionally adds files and in the local tree that | * Optionally adds files and in the local tree that | ||||
* are not managed by the repository to its control. | * are not managed by the repository to its control. | ||||
* Created: Sat Dec 15 20:26:07 2001 | * Created: Sat Dec 15 20:26:07 2001 | ||||
@@ -128,7 +128,7 @@ public class StarTeamCheckin extends TreeBasedTask { | |||||
} | } | ||||
/** | /** | ||||
* if true, any files or folders NOT in StarTeam will be | |||||
* if true, any files or folders NOT in StarTeam will be | |||||
* added to the repository. Defaults to "false". | * added to the repository. Defaults to "false". | ||||
* @param addUncontrolled Value to assign to addUncontrolled. | * @param addUncontrolled Value to assign to addUncontrolled. | ||||
*/ | */ | ||||
@@ -147,7 +147,7 @@ public class StarTeamCheckin extends TreeBasedTask { | |||||
/** | /** | ||||
* Set to do an unlocked checkout; optional, default is false; | * Set to do an unlocked checkout; optional, default is false; | ||||
* If true, file will be unlocked so that other users may | * If true, file will be unlocked so that other users may | ||||
* change it. If false, lock status will not change. | |||||
* change it. If false, lock status will not change. | |||||
* @param v true means do an unlocked checkout | * @param v true means do an unlocked checkout | ||||
* false means leave status alone. | * false means leave status alone. | ||||
*/ | */ | ||||
@@ -175,45 +175,44 @@ public class StarTeamCheckin extends TreeBasedTask { | |||||
* Implements base-class abstract function to define tests for | * Implements base-class abstract function to define tests for | ||||
* any preconditons required by the task. | * any preconditons required by the task. | ||||
* | * | ||||
* @exception BuildException thrown if both rootLocalFolder | |||||
* @exception BuildException thrown if both rootLocalFolder | |||||
* and viewRootLocalFolder are defined | * and viewRootLocalFolder are defined | ||||
*/ | */ | ||||
protected void testPreconditions() throws BuildException { | protected void testPreconditions() throws BuildException { | ||||
} | } | ||||
/** | /** | ||||
* Implements base-class abstract function to emit to the log an | |||||
* Implements base-class abstract function to emit to the log an | |||||
* entry describing the parameters that will be used by this operation. | * entry describing the parameters that will be used by this operation. | ||||
* | * | ||||
* @param starteamrootFolder | * @param starteamrootFolder | ||||
* root folder in StarTeam for the operation | * root folder in StarTeam for the operation | ||||
* @param targetrootFolder | * @param targetrootFolder | ||||
* root local folder for the operation | |||||
* root local folder for the operation | |||||
* (whether specified by the user or not). | * (whether specified by the user or not). | ||||
*/ | */ | ||||
protected void logOperationDescription( | protected void logOperationDescription( | ||||
Folder starteamrootFolder, java.io.File targetrootFolder) | |||||
{ | |||||
Folder starteamrootFolder, java.io.File targetrootFolder) { | |||||
log((this.isRecursive() ? "Recursive" : "Non-recursive") | log((this.isRecursive() ? "Recursive" : "Non-recursive") | ||||
+" Checkin from" | |||||
+ (null == getRootLocalFolder() ? " (default): " : ": ") | |||||
+ " Checkin from" | |||||
+ (null == getRootLocalFolder() ? " (default): " : ": ") | |||||
+ targetrootFolder.getAbsolutePath()); | + targetrootFolder.getAbsolutePath()); | ||||
log("Checking in to: " + starteamrootFolder.getFolderHierarchy()); | log("Checking in to: " + starteamrootFolder.getFolderHierarchy()); | ||||
logIncludes(); | logIncludes(); | ||||
logExcludes(); | logExcludes(); | ||||
if (this.lockStatus == Item.LockType.UNLOCKED) { | if (this.lockStatus == Item.LockType.UNLOCKED) { | ||||
log(" Items will be checked in unlocked."); | log(" Items will be checked in unlocked."); | ||||
} | |||||
else { | |||||
} else { | |||||
log(" Items will be checked in with no change in lock status."); | log(" Items will be checked in with no change in lock status."); | ||||
} | } | ||||
if (this.isForced()) { | if (this.isForced()) { | ||||
log(" Items will be checked in in accordance with repository status and regardless of lock status."); | |||||
} | |||||
else { | |||||
log(" Items will be checked in regardless of repository status only if locked." ); | |||||
log(" Items will be checked in in accordance with repository " | |||||
+ "status and regardless of lock status."); | |||||
} else { | |||||
log(" Items will be checked in regardless of repository status " | |||||
+ "only if locked."); | |||||
} | } | ||||
@@ -225,12 +224,11 @@ public class StarTeamCheckin extends TreeBasedTask { | |||||
* | * | ||||
* @param starteamFolder the StarTeam folder to which files | * @param starteamFolder the StarTeam folder to which files | ||||
* will be checked in | * will be checked in | ||||
* @param localFolder local folder from which files will be checked in | |||||
* @param targetFolder local folder from which files will be checked in | |||||
* @exception BuildException if any error occurs | * @exception BuildException if any error occurs | ||||
*/ | */ | ||||
protected void visit(Folder starteamFolder, java.io.File targetFolder) | protected void visit(Folder starteamFolder, java.io.File targetFolder) | ||||
throws BuildException | |||||
{ | |||||
throws BuildException { | |||||
try { | try { | ||||
if (null != getRootLocalFolder()) { | if (null != getRootLocalFolder()) { | ||||
starteamFolder.setAlternatePathFragment( | starteamFolder.setAlternatePathFragment( | ||||
@@ -239,20 +237,20 @@ public class StarTeamCheckin extends TreeBasedTask { | |||||
Folder[] foldersList = starteamFolder.getSubFolders(); | Folder[] foldersList = starteamFolder.getSubFolders(); | ||||
Item[] stFiles = starteamFolder.getItems(getTypeNames().FILE); | Item[] stFiles = starteamFolder.getItems(getTypeNames().FILE); | ||||
// note, it's important to scan the items BEFORE we make the | // note, it's important to scan the items BEFORE we make the | ||||
// UnmatchedFileMap because that creates a bunch of NEW | // UnmatchedFileMap because that creates a bunch of NEW | ||||
// folders and files (unattached to repository) and we | // folders and files (unattached to repository) and we | ||||
// don't want to include those in our traversal. | // don't want to include those in our traversal. | ||||
UnmatchedFileMap ufm = | |||||
UnmatchedFileMap ufm = | |||||
new CheckinMap().init( | new CheckinMap().init( | ||||
targetFolder.getAbsoluteFile(), starteamFolder); | targetFolder.getAbsoluteFile(), starteamFolder); | ||||
for (int i = 0, size = foldersList.length; i < size; i++) { | for (int i = 0, size = foldersList.length; i < size; i++) { | ||||
Folder stFolder = foldersList[i]; | Folder stFolder = foldersList[i]; | ||||
java.io.File subfolder = | |||||
java.io.File subfolder = | |||||
new java.io.File(targetFolder, stFolder.getName()); | new java.io.File(targetFolder, stFolder.getName()); | ||||
ufm.removeControlledItem(subfolder); | ufm.removeControlledItem(subfolder); | ||||
@@ -262,12 +260,12 @@ public class StarTeamCheckin extends TreeBasedTask { | |||||
} | } | ||||
} | } | ||||
for (int i = 0, size = stFiles.length; i < size; i++) { | for (int i = 0, size = stFiles.length; i < size; i++) { | ||||
com.starbase.starteam.File stFile = | |||||
com.starbase.starteam.File stFile = | |||||
(com.starbase.starteam.File) stFiles[i]; | (com.starbase.starteam.File) stFiles[i]; | ||||
processFile(stFile); | processFile(stFile); | ||||
ufm.removeControlledItem( | ufm.removeControlledItem( | ||||
new java.io.File(targetFolder, stFile.getName())); | new java.io.File(targetFolder, stFile.getName())); | ||||
} | } | ||||
@@ -284,13 +282,12 @@ public class StarTeamCheckin extends TreeBasedTask { | |||||
/** | /** | ||||
* provides a string showing from and to full paths for logging | * provides a string showing from and to full paths for logging | ||||
* | |||||
* | |||||
* @param remotefile the Star Team file being processed. | * @param remotefile the Star Team file being processed. | ||||
* | |||||
* | |||||
* @return a string showing from and to full paths | * @return a string showing from and to full paths | ||||
*/ | */ | ||||
private String describeCheckin(com.starbase.starteam.File remotefile) | |||||
{ | |||||
private String describeCheckin(com.starbase.starteam.File remotefile) { | |||||
StringBuffer sb = new StringBuffer(); | StringBuffer sb = new StringBuffer(); | ||||
sb.append(remotefile.getFullName()) | sb.append(remotefile.getFullName()) | ||||
.append(" --> ") | .append(" --> ") | ||||
@@ -328,23 +325,21 @@ public class StarTeamCheckin extends TreeBasedTask { | |||||
if (fileStatus == Status.MODIFIED) { | if (fileStatus == Status.MODIFIED) { | ||||
log("Checking in: " + describeCheckin(eachFile)); | log("Checking in: " + describeCheckin(eachFile)); | ||||
} | |||||
else if (fileStatus == Status.MISSING) { | |||||
} else if (fileStatus == Status.MISSING) { | |||||
log("Local file missing: " + describeCheckin(eachFile)); | log("Local file missing: " + describeCheckin(eachFile)); | ||||
checkin = false; | checkin = false; | ||||
} | |||||
else { | |||||
} else { | |||||
if (isForced()) { | if (isForced()) { | ||||
log("Forced checkin of " + describeCheckin(eachFile) + | |||||
" over status " + Status.name(fileStatus)); | |||||
log("Forced checkin of " + describeCheckin(eachFile) | |||||
+ " over status " + Status.name(fileStatus)); | |||||
} else { | } else { | ||||
log("Skipping: " + getFullRepositoryPath(eachFile) + | |||||
" - status: " + Status.name(fileStatus)); | |||||
log("Skipping: " + getFullRepositoryPath(eachFile) | |||||
+ " - status: " + Status.name(fileStatus)); | |||||
checkin = false; | checkin = false; | ||||
} | } | ||||
} | } | ||||
if (checkin) { | if (checkin) { | ||||
eachFile.checkin(this.comment, this.lockStatus, | |||||
eachFile.checkin(this.comment, this.lockStatus, | |||||
this.isForced(), true, true); | this.isForced(), true, true); | ||||
} | } | ||||
} | } | ||||
@@ -357,10 +352,10 @@ public class StarTeamCheckin extends TreeBasedTask { | |||||
return StarTeamCheckin.this.addUncontrolled; | return StarTeamCheckin.this.addUncontrolled; | ||||
} | } | ||||
/** | /** | ||||
* This override adds all its members to the repository. It is assumed | |||||
* that this method will not be called until all the items in the | |||||
* This override adds all its members to the repository. It is assumed | |||||
* that this method will not be called until all the items in the | |||||
* corresponding folder have been processed, and that the internal map | * corresponding folder have been processed, and that the internal map | ||||
* will contain only uncontrolled items. | * will contain only uncontrolled items. | ||||
*/ | */ | ||||
@@ -371,26 +366,26 @@ public class StarTeamCheckin extends TreeBasedTask { | |||||
java.io.File local = (java.io.File) e.nextElement(); | java.io.File local = (java.io.File) e.nextElement(); | ||||
Item remoteItem = (Item) this.get(local); | Item remoteItem = (Item) this.get(local); | ||||
remoteItem.update(); | remoteItem.update(); | ||||
// once we find a folder that isn't in the repository, | |||||
// once we find a folder that isn't in the repository, | |||||
// we know we can add it. | // we know we can add it. | ||||
if (local.isDirectory()) { | if (local.isDirectory()) { | ||||
Folder folder = (Folder) remoteItem; | Folder folder = (Folder) remoteItem; | ||||
log("Added uncontrolled folder " | |||||
log("Added uncontrolled folder " | |||||
+ folder.getFolderHierarchy() | + folder.getFolderHierarchy() | ||||
+ " from " + local.getAbsoluteFile()); | + " from " + local.getAbsoluteFile()); | ||||
if (isRecursive()) { | if (isRecursive()) { | ||||
UnmatchedFileMap submap = | |||||
UnmatchedFileMap submap = | |||||
new CheckinMap().init(local, folder); | new CheckinMap().init(local, folder); | ||||
submap.processUncontrolledItems(); | submap.processUncontrolledItems(); | ||||
} | } | ||||
} else { | } else { | ||||
com.starbase.starteam.File remoteFile = | com.starbase.starteam.File remoteFile = | ||||
(com.starbase.starteam.File) remoteItem; | (com.starbase.starteam.File) remoteItem; | ||||
log("Added uncontrolled file " | |||||
log("Added uncontrolled file " | |||||
+ TreeBasedTask.getFullRepositoryPath(remoteFile) | + TreeBasedTask.getFullRepositoryPath(remoteFile) | ||||
+ " from " + local.getAbsoluteFile()); | + " from " + local.getAbsoluteFile()); | ||||
} | } | ||||
} | } | ||||
} | } | ||||
@@ -59,6 +59,7 @@ import com.starbase.starteam.Status; | |||||
import com.starbase.starteam.View; | import com.starbase.starteam.View; | ||||
import com.starbase.starteam.ViewConfiguration; | import com.starbase.starteam.ViewConfiguration; | ||||
import java.io.IOException; | import java.io.IOException; | ||||
import java.io.File; | |||||
import java.util.Enumeration; | import java.util.Enumeration; | ||||
import java.util.Hashtable; | import java.util.Hashtable; | ||||
import org.apache.tools.ant.BuildException; | import org.apache.tools.ant.BuildException; | ||||
@@ -100,7 +101,7 @@ public class StarTeamCheckout extends TreeBasedTask { | |||||
/** | /** | ||||
* holder for the deleteUncontrolled attribute. If true, | * holder for the deleteUncontrolled attribute. If true, | ||||
* (default) local non-binary files will be checked out using the local | |||||
* (default) local non-binary files will be checked out using the local | |||||
* platform's EOL convention. If false, checkouts will preserve the | * platform's EOL convention. If false, checkouts will preserve the | ||||
* server's EOL convention. | * server's EOL convention. | ||||
*/ | */ | ||||
@@ -134,10 +135,10 @@ public class StarTeamCheckout extends TreeBasedTask { | |||||
public void setConvertEOL(boolean value) { | public void setConvertEOL(boolean value) { | ||||
this.convertEOL = value; | this.convertEOL = value; | ||||
} | } | ||||
/** | /** | ||||
* Sets the label StarTeam is to use for checkout; defaults to the most recent file. | * Sets the label StarTeam is to use for checkout; defaults to the most recent file. | ||||
* The label must exist in starteam or an exception will be thrown. | |||||
* The label must exist in starteam or an exception will be thrown. | |||||
* @param label the label to be used | * @param label the label to be used | ||||
*/ | */ | ||||
public void setLabel(String label) { | public void setLabel(String label) { | ||||
@@ -156,7 +157,7 @@ public class StarTeamCheckout extends TreeBasedTask { | |||||
private int lockStatus = Item.LockType.UNCHANGED; | private int lockStatus = Item.LockType.UNCHANGED; | ||||
/** | /** | ||||
* Set to do a locked checkout; optional default is false. | |||||
* Set to do a locked checkout; optional default is false. | |||||
* @param v True to do a locked checkout, false to checkout without | * @param v True to do a locked checkout, false to checkout without | ||||
* changing status/. | * changing status/. | ||||
* @exception BuildException if both locked and unlocked are set true | * @exception BuildException if both locked and unlocked are set true | ||||
@@ -190,27 +191,26 @@ public class StarTeamCheckout extends TreeBasedTask { | |||||
/** | /** | ||||
* should checked out files get the timestamp from the repository | * should checked out files get the timestamp from the repository | ||||
* or the time they are checked out. True means use the repository | |||||
* or the time they are checked out. True means use the repository | |||||
* timestamp. | * timestamp. | ||||
*/ | */ | ||||
private boolean useRepositoryTimeStamp = false; | private boolean useRepositoryTimeStamp = false; | ||||
/** | /** | ||||
* sets the useRepositoryTimestmp member. | * sets the useRepositoryTimestmp member. | ||||
* | |||||
* | |||||
* @param useRepositoryTimeStamp | * @param useRepositoryTimeStamp | ||||
* true means checked out files will get the repository timestamp. | * true means checked out files will get the repository timestamp. | ||||
* false means the checked out files will be timestamped at the time | * false means the checked out files will be timestamped at the time | ||||
* of checkout. | * of checkout. | ||||
*/ | */ | ||||
public void setUseRepositoryTimeStamp(boolean useRepositoryTimeStamp) | |||||
{ | |||||
public void setUseRepositoryTimeStamp(boolean useRepositoryTimeStamp) { | |||||
this.useRepositoryTimeStamp = useRepositoryTimeStamp; | this.useRepositoryTimeStamp = useRepositoryTimeStamp; | ||||
} | } | ||||
/** | /** | ||||
* returns the value of the useRepositoryTimestamp member | * returns the value of the useRepositoryTimestamp member | ||||
* | |||||
* | |||||
* @return the value of the useRepositoryTimestamp member | * @return the value of the useRepositoryTimestamp member | ||||
*/ | */ | ||||
public boolean getUseRepositoryTimeStamp() { | public boolean getUseRepositoryTimeStamp() { | ||||
@@ -221,24 +221,22 @@ public class StarTeamCheckout extends TreeBasedTask { | |||||
* appropriately configured view for checkouts - either | * appropriately configured view for checkouts - either | ||||
* the current view or a view from this.label or the raw | * the current view or a view from this.label or the raw | ||||
* view itself in the case of a revision label. | * view itself in the case of a revision label. | ||||
* | |||||
* | |||||
* @param raw the unconfigured <code>View</code> | * @param raw the unconfigured <code>View</code> | ||||
* | |||||
* | |||||
* @return the snapshot <code>View</code> appropriately configured. | * @return the snapshot <code>View</code> appropriately configured. | ||||
* @exception BuildException | * @exception BuildException | ||||
*/ | */ | ||||
protected View createSnapshotView(View raw) | |||||
throws BuildException | |||||
{ | |||||
protected View createSnapshotView(View raw) throws BuildException { | |||||
int labelID = getLabelID(raw); | int labelID = getLabelID(raw); | ||||
// if a label has been supplied and it is a view label, use it | |||||
// if a label has been supplied and it is a view label, use it | |||||
// to configure the view | // to configure the view | ||||
if (this.isUsingViewLabel()) { | if (this.isUsingViewLabel()) { | ||||
return new View(raw, ViewConfiguration.createFromLabel(labelID)); | return new View(raw, ViewConfiguration.createFromLabel(labelID)); | ||||
} | |||||
// if a label has been supplied and it is a revision label, use the raw | |||||
} | |||||
// if a label has been supplied and it is a revision label, use the raw | |||||
// the view as the snapshot | // the view as the snapshot | ||||
else if (this.isUsingRevisionLabel()) { | else if (this.isUsingRevisionLabel()) { | ||||
return raw; | return raw; | ||||
@@ -253,37 +251,36 @@ public class StarTeamCheckout extends TreeBasedTask { | |||||
* Implements base-class abstract function to define tests for | * Implements base-class abstract function to define tests for | ||||
* any preconditons required by the task. | * any preconditons required by the task. | ||||
* | * | ||||
* @exception BuildException thrown if both rootLocalFolder | |||||
* @exception BuildException thrown if both rootLocalFolder | |||||
* and viewRootLocalFolder are defined | * and viewRootLocalFolder are defined | ||||
*/ | */ | ||||
protected void testPreconditions() throws BuildException { | protected void testPreconditions() throws BuildException { | ||||
if (this.isUsingRevisionLabel() && this.createDirs) { | if (this.isUsingRevisionLabel() && this.createDirs) { | ||||
log("Ignoring createworkingdirs while using a revision label." + | |||||
" Folders will be created only as needed.", | |||||
log("Ignoring createworkingdirs while using a revision label." | |||||
+ " Folders will be created only as needed.", | |||||
Project.MSG_WARN); | Project.MSG_WARN); | ||||
this.createDirs=false; | |||||
this.createDirs = false; | |||||
} | } | ||||
} | } | ||||
/** | /** | ||||
* extenders should emit to the log an entry describing the parameters | * extenders should emit to the log an entry describing the parameters | ||||
* that will be used by this operation. | * that will be used by this operation. | ||||
* | |||||
* | |||||
* @param starteamrootFolder | * @param starteamrootFolder | ||||
* root folder in StarTeam for the operation | * root folder in StarTeam for the operation | ||||
* @param targetrootFolder | * @param targetrootFolder | ||||
* root local folder for the operation (whether specified | |||||
* root local folder for the operation (whether specified | |||||
* by the user or not. | * by the user or not. | ||||
*/ | */ | ||||
protected void logOperationDescription( | protected void logOperationDescription( | ||||
Folder starteamrootFolder, java.io.File targetrootFolder) | |||||
{ | |||||
log((this.isRecursive() ? "Recursive" : "Non-recursive") + | |||||
" Checkout from: " + starteamrootFolder.getFolderHierarchy()); | |||||
Folder starteamrootFolder, java.io.File targetrootFolder) { | |||||
log((this.isRecursive() ? "Recursive" : "Non-recursive") | |||||
+ " Checkout from: " + starteamrootFolder.getFolderHierarchy()); | |||||
log(" Checking out to" | |||||
+ (null == getRootLocalFolder() ? "(default): " : ": ") | |||||
log(" Checking out to" | |||||
+ (null == getRootLocalFolder() ? "(default): " : ": ") | |||||
+ targetrootFolder.getAbsolutePath()); | + targetrootFolder.getAbsolutePath()); | ||||
@@ -293,32 +290,28 @@ public class StarTeamCheckout extends TreeBasedTask { | |||||
if (this.lockStatus == Item.LockType.EXCLUSIVE) { | if (this.lockStatus == Item.LockType.EXCLUSIVE) { | ||||
log(" Items will be checked out with Exclusive locks."); | log(" Items will be checked out with Exclusive locks."); | ||||
} | |||||
else if (this.lockStatus == Item.LockType.UNLOCKED) { | |||||
} else if (this.lockStatus == Item.LockType.UNLOCKED) { | |||||
log(" Items will be checked out unlocked " | log(" Items will be checked out unlocked " | ||||
+"(even if presently locked)."); | |||||
} | |||||
else { | |||||
+ "(even if presently locked)."); | |||||
} else { | |||||
log(" Items will be checked out with no change in lock status."); | log(" Items will be checked out with no change in lock status."); | ||||
} | } | ||||
log(" Items will be checked out with " + | |||||
(this.useRepositoryTimeStamp ? "repository timestamps." | |||||
log(" Items will be checked out with " | |||||
+ (this.useRepositoryTimeStamp ? "repository timestamps." | |||||
: "the current timestamp.")); | : "the current timestamp.")); | ||||
log(" Items will be checked out " + | |||||
(this.isForced() ? "regardless of" : "in accordance with") + | |||||
log(" Items will be checked out " | |||||
+ (this.isForced() ? "regardless of" : "in accordance with") + | |||||
" repository status."); | " repository status."); | ||||
if (this.deleteUncontrolled) { | if (this.deleteUncontrolled) { | ||||
log(" Local items not found in the repository will be deleted."); | log(" Local items not found in the repository will be deleted."); | ||||
} | } | ||||
log(" Items will be checked out " + | |||||
(this.convertEOL | |||||
? "using the local machine's EOL convention" | |||||
log(" Items will be checked out " | |||||
+ (this.convertEOL ? "using the local machine's EOL convention" | |||||
: "without changing the EOL convention used on the server")); | : "without changing the EOL convention used on the server")); | ||||
log(" Directories will be created"+ | |||||
(this.createDirs | |||||
? " wherever they exist in the repository, even if empty." | |||||
log(" Directories will be created" | |||||
+ (this.createDirs ? " wherever they exist in the repository, even if empty." | |||||
: " only where needed to check out files.")); | : " only where needed to check out files.")); | ||||
} | } | ||||
/** | /** | ||||
* Implements base-class abstract function to perform the checkout | * Implements base-class abstract function to perform the checkout | ||||
@@ -330,8 +323,7 @@ public class StarTeamCheckout extends TreeBasedTask { | |||||
* @exception BuildException if any error occurs | * @exception BuildException if any error occurs | ||||
*/ | */ | ||||
protected void visit(Folder starteamFolder, java.io.File targetFolder) | protected void visit(Folder starteamFolder, java.io.File targetFolder) | ||||
throws BuildException | |||||
{ | |||||
throws BuildException { | |||||
try { | try { | ||||
@@ -339,7 +331,7 @@ public class StarTeamCheckout extends TreeBasedTask { | |||||
starteamFolder.setAlternatePathFragment( | starteamFolder.setAlternatePathFragment( | ||||
targetFolder.getAbsolutePath()); | targetFolder.getAbsolutePath()); | ||||
} | } | ||||
if (!targetFolder.exists()) { | if (!targetFolder.exists()) { | ||||
if (!this.isUsingRevisionLabel()) { | if (!this.isUsingRevisionLabel()) { | ||||
if (this.createDirs) { | if (this.createDirs) { | ||||
@@ -352,8 +344,8 @@ public class StarTeamCheckout extends TreeBasedTask { | |||||
} | } | ||||
} | } | ||||
} | } | ||||
Folder[] foldersList = starteamFolder.getSubFolders(); | Folder[] foldersList = starteamFolder.getSubFolders(); | ||||
Item[] filesList = starteamFolder.getItems(getTypeNames().FILE); | Item[] filesList = starteamFolder.getItems(getTypeNames().FILE); | ||||
@@ -361,32 +353,32 @@ public class StarTeamCheckout extends TreeBasedTask { | |||||
// prune away any files not belonging to the revision label | // prune away any files not belonging to the revision label | ||||
// this is one ugly API from Starteam SDK | // this is one ugly API from Starteam SDK | ||||
Hashtable labelItems = new Hashtable(filesList.length); | Hashtable labelItems = new Hashtable(filesList.length); | ||||
int s = filesList.length; | int s = filesList.length; | ||||
int[] ids = new int[s]; | int[] ids = new int[s]; | ||||
for (int i=0; i < s; i++) { | |||||
ids[i]=filesList[i].getItemID(); | |||||
for (int i = 0; i < s; i++) { | |||||
ids[i] = filesList[i].getItemID(); | |||||
labelItems.put(new Integer(ids[i]), new Integer(i)); | labelItems.put(new Integer(ids[i]), new Integer(i)); | ||||
} | } | ||||
int[] foundIds = getLabelInUse().getLabeledItemIDs(ids); | int[] foundIds = getLabelInUse().getLabeledItemIDs(ids); | ||||
s = foundIds.length; | s = foundIds.length; | ||||
Item[] labeledFiles = new Item[s]; | Item[] labeledFiles = new Item[s]; | ||||
for (int i=0; i < s; i++) { | |||||
Integer ID = new Integer(foundIds[i]); | |||||
labeledFiles[i] = | |||||
filesList[((Integer) labelItems.get(ID)).intValue()]; | |||||
for (int i = 0; i < s; i++) { | |||||
Integer id = new Integer(foundIds[i]); | |||||
labeledFiles[i] = | |||||
filesList[((Integer) labelItems.get(id)).intValue()]; | |||||
} | } | ||||
filesList = labeledFiles; | filesList = labeledFiles; | ||||
} | } | ||||
// note, it's important to scan the items BEFORE we make the | // note, it's important to scan the items BEFORE we make the | ||||
// Unmatched file map because that creates a bunch of NEW | // Unmatched file map because that creates a bunch of NEW | ||||
// folders and files (unattached to repository) and we | // folders and files (unattached to repository) and we | ||||
// don't want to include those in our traversal. | // don't want to include those in our traversal. | ||||
UnmatchedFileMap ufm = | |||||
UnmatchedFileMap ufm = | |||||
new CheckoutMap(). | new CheckoutMap(). | ||||
init(targetFolder.getAbsoluteFile(), starteamFolder); | init(targetFolder.getAbsoluteFile(), starteamFolder); | ||||
@@ -395,7 +387,7 @@ public class StarTeamCheckout extends TreeBasedTask { | |||||
for (int i = 0; i < foldersList.length; i++) { | for (int i = 0; i < foldersList.length; i++) { | ||||
Folder stFolder = foldersList[i]; | Folder stFolder = foldersList[i]; | ||||
java.io.File subfolder = | |||||
java.io.File subfolder = | |||||
new java.io.File(targetFolder, stFolder.getName()); | new java.io.File(targetFolder, stFolder.getName()); | ||||
ufm.removeControlledItem(subfolder); | ufm.removeControlledItem(subfolder); | ||||
@@ -406,10 +398,10 @@ public class StarTeamCheckout extends TreeBasedTask { | |||||
} | } | ||||
for (int i = 0; i < filesList.length; i++) { | for (int i = 0; i < filesList.length; i++) { | ||||
com.starbase.starteam.File stFile = | |||||
com.starbase.starteam.File stFile = | |||||
(com.starbase.starteam.File) filesList[i]; | (com.starbase.starteam.File) filesList[i]; | ||||
processFile( stFile, targetFolder); | |||||
processFile(stFile, targetFolder); | |||||
ufm.removeControlledItem( | ufm.removeControlledItem( | ||||
new java.io.File(targetFolder, stFile.getName())); | new java.io.File(targetFolder, stFile.getName())); | ||||
} | } | ||||
@@ -424,14 +416,13 @@ public class StarTeamCheckout extends TreeBasedTask { | |||||
/** | /** | ||||
* provides a string showing from and to full paths for logging | * provides a string showing from and to full paths for logging | ||||
* | |||||
* | |||||
* @param remotefile the Star Team file being processed. | * @param remotefile the Star Team file being processed. | ||||
* | |||||
* | |||||
* @return a string showing from and to full paths | * @return a string showing from and to full paths | ||||
*/ | */ | ||||
private String describeCheckout(com.starbase.starteam.File remotefile, | private String describeCheckout(com.starbase.starteam.File remotefile, | ||||
java.io.File localFile) | |||||
{ | |||||
java.io.File localFile) { | |||||
StringBuffer sb = new StringBuffer(); | StringBuffer sb = new StringBuffer(); | ||||
sb.append(getFullRepositoryPath(remotefile)) | sb.append(getFullRepositoryPath(remotefile)) | ||||
.append(" --> "); | .append(" --> "); | ||||
@@ -443,7 +434,7 @@ public class StarTeamCheckout extends TreeBasedTask { | |||||
return sb.toString(); | return sb.toString(); | ||||
} | } | ||||
private String describeCheckout(com.starbase.starteam.File remotefile) { | private String describeCheckout(com.starbase.starteam.File remotefile) { | ||||
return describeCheckout(remotefile,null); | |||||
return describeCheckout(remotefile, null); | |||||
} | } | ||||
/** | /** | ||||
* Processes (checks out) <code>stFiles</code>files from StarTeam folder. | * Processes (checks out) <code>stFiles</code>files from StarTeam folder. | ||||
@@ -452,17 +443,16 @@ public class StarTeamCheckout extends TreeBasedTask { | |||||
* @param targetFolder a java.io.File (Folder) to work | * @param targetFolder a java.io.File (Folder) to work | ||||
* @throws IOException when StarTeam API fails to work with files | * @throws IOException when StarTeam API fails to work with files | ||||
*/ | */ | ||||
private void processFile(com.starbase.starteam.File eachFile, | |||||
java.io.File targetFolder ) | |||||
throws IOException | |||||
{ | |||||
private void processFile(com.starbase.starteam.File eachFile, | |||||
File targetFolder) | |||||
throws IOException { | |||||
String filename = eachFile.getName(); | String filename = eachFile.getName(); | ||||
java.io.File localFile = new java.io.File(targetFolder, filename); | java.io.File localFile = new java.io.File(targetFolder, filename); | ||||
// If the file doesn't pass the include/exclude tests, skip it. | // If the file doesn't pass the include/exclude tests, skip it. | ||||
if (!shouldProcess(filename)) { | if (!shouldProcess(filename)) { | ||||
log("Excluding " + getFullRepositoryPath(eachFile), | |||||
log("Excluding " + getFullRepositoryPath(eachFile), | |||||
Project.MSG_INFO); | Project.MSG_INFO); | ||||
return; | return; | ||||
} | } | ||||
@@ -486,8 +476,7 @@ public class StarTeamCheckout extends TreeBasedTask { | |||||
if (success) { | if (success) { | ||||
log("Checked out " + describeCheckout(eachFile, localFile)); | log("Checked out " + describeCheckout(eachFile, localFile)); | ||||
} | } | ||||
} | |||||
else { | |||||
} else { | |||||
boolean checkout = true; | boolean checkout = true; | ||||
// Just a note: StarTeam has a status for NEW which implies | // Just a note: StarTeam has a status for NEW which implies | ||||
@@ -506,15 +495,14 @@ public class StarTeamCheckout extends TreeBasedTask { | |||||
// We try to update the status once to give StarTeam | // We try to update the status once to give StarTeam | ||||
// another chance. | // another chance. | ||||
if (fileStatus == Status.MERGE || | |||||
fileStatus == Status.UNKNOWN) | |||||
{ | |||||
if (fileStatus == Status.MERGE | |||||
|| fileStatus == Status.UNKNOWN) { | |||||
eachFile.updateStatus(true, true); | eachFile.updateStatus(true, true); | ||||
fileStatus = (eachFile.getStatus()); | fileStatus = (eachFile.getStatus()); | ||||
} | } | ||||
log(eachFile.toString() + " has status of " + | |||||
Status.name(fileStatus), Project.MSG_DEBUG); | |||||
log(eachFile.toString() + " has status of " | |||||
+ Status.name(fileStatus), Project.MSG_DEBUG); | |||||
switch (fileStatus) { | switch (fileStatus) { | ||||
@@ -524,12 +512,12 @@ public class StarTeamCheckout extends TreeBasedTask { | |||||
break; | break; | ||||
default: | default: | ||||
if (isForced()) { | if (isForced()) { | ||||
log("Forced checkout of " | |||||
+ describeCheckout(eachFile) | |||||
log("Forced checkout of " | |||||
+ describeCheckout(eachFile) | |||||
+ " over status " + Status.name(fileStatus)); | + " over status " + Status.name(fileStatus)); | ||||
} else { | } else { | ||||
log("Skipping: " + getFullRepositoryPath(eachFile) + | |||||
" - status: " + Status.name(fileStatus)); | |||||
log("Skipping: " + getFullRepositoryPath(eachFile) | |||||
+ " - status: " + Status.name(fileStatus)); | |||||
checkout = false; | checkout = false; | ||||
} | } | ||||
} | } | ||||
@@ -543,7 +531,7 @@ public class StarTeamCheckout extends TreeBasedTask { | |||||
"Failed to create local folder " + targetFolder); | "Failed to create local folder " + targetFolder); | ||||
} | } | ||||
} | } | ||||
eachFile.checkout(this.lockStatus, | |||||
eachFile.checkout(this.lockStatus, | |||||
!this.useRepositoryTimeStamp, this.convertEOL, true); | !this.useRepositoryTimeStamp, this.convertEOL, true); | ||||
} | } | ||||
} | } | ||||
@@ -560,7 +548,7 @@ public class StarTeamCheckout extends TreeBasedTask { | |||||
* override of the base class init. It can be much simpler, since | * override of the base class init. It can be much simpler, since | ||||
* the action to be taken is simply to delete the local files. No | * the action to be taken is simply to delete the local files. No | ||||
* further interaction with the repository is necessary. | * further interaction with the repository is necessary. | ||||
* | |||||
* | |||||
* @param localFolder | * @param localFolder | ||||
* the local folder from which the mappings will be made. | * the local folder from which the mappings will be made. | ||||
* @param remoteFolder | * @param remoteFolder | ||||
@@ -572,18 +560,17 @@ public class StarTeamCheckout extends TreeBasedTask { | |||||
} | } | ||||
String[] localFiles = localFolder.list(); | String[] localFiles = localFolder.list(); | ||||
for (int i=0; i < localFiles.length; i++) { | |||||
java.io.File localFile = | |||||
for (int i = 0; i < localFiles.length; i++) { | |||||
java.io.File localFile = | |||||
new java.io.File(localFolder, localFiles[i]).getAbsoluteFile(); | new java.io.File(localFolder, localFiles[i]).getAbsoluteFile(); | ||||
log("adding " + localFile + " to UnmatchedFileMap", | log("adding " + localFile + " to UnmatchedFileMap", | ||||
Project.MSG_DEBUG); | Project.MSG_DEBUG); | ||||
if (localFile.isDirectory()) { | if (localFile.isDirectory()) { | ||||
this.put(localFile, ""); | this.put(localFile, ""); | ||||
} | |||||
else { | |||||
} else { | |||||
this.put(localFile, ""); | this.put(localFile, ""); | ||||
} | } | ||||
} | } | ||||
@@ -591,7 +578,7 @@ public class StarTeamCheckout extends TreeBasedTask { | |||||
} | } | ||||
/** | /** | ||||
* deletes uncontrolled items from the local tree. It is assumed | * deletes uncontrolled items from the local tree. It is assumed | ||||
* that this method will not be called until all the items in the | * that this method will not be called until all the items in the | ||||
@@ -607,23 +594,23 @@ public class StarTeamCheckout extends TreeBasedTask { | |||||
} | } | ||||
} | } | ||||
} | } | ||||
/** | /** | ||||
* deletes all files and if the file is a folder recursively deletes | * deletes all files and if the file is a folder recursively deletes | ||||
* everything in it. | * everything in it. | ||||
* | |||||
* | |||||
* @param local The local file or folder to be deleted. | * @param local The local file or folder to be deleted. | ||||
*/ | */ | ||||
void delete(java.io.File local) { | void delete(java.io.File local) { | ||||
// once we find a folder that isn't in the repository, | |||||
// once we find a folder that isn't in the repository, | |||||
// anything below it can be deleted. | // anything below it can be deleted. | ||||
if (local.isDirectory() && isRecursive()) { | if (local.isDirectory() && isRecursive()) { | ||||
String[] contents = local.list(); | String[] contents = local.list(); | ||||
for (int i=0; i< contents.length; i++) { | |||||
for (int i = 0; i < contents.length; i++) { | |||||
java.io.File file = new java.io.File(local, contents[i]); | java.io.File file = new java.io.File(local, contents[i]); | ||||
delete(file); | delete(file); | ||||
} | } | ||||
} | |||||
} | |||||
local.delete(); | local.delete(); | ||||
log("Deleted uncontrolled item " + local.getAbsolutePath()); | log("Deleted uncontrolled item " + local.getAbsolutePath()); | ||||
} | } | ||||
@@ -98,7 +98,7 @@ public class StarTeamLabel extends StarTeamTask { | |||||
* true. | * true. | ||||
*/ | */ | ||||
private boolean buildlabel = false; | private boolean buildlabel = false; | ||||
/** | /** | ||||
* If true, this will be a revision label. If false, it will be a build | * If true, this will be a revision label. If false, it will be a build | ||||
* label. The default is false. | * label. The default is false. | ||||
@@ -130,31 +130,31 @@ public class StarTeamLabel extends StarTeamTask { | |||||
} | } | ||||
/** | /** | ||||
* set the type of label based on the supplied value - if true, this | |||||
* set the type of label based on the supplied value - if true, this | |||||
* label will be a revision label, if false, a build label. | * label will be a revision label, if false, a build label. | ||||
* | |||||
* @param revision If true this will be a revision label; if false, | |||||
* | |||||
* @param buildlabel If true this will be a revision label; if false, | |||||
* a build label | * a build label | ||||
*/ | */ | ||||
public void setBuildLabel( boolean buildlabel ) { | |||||
public void setBuildLabel(boolean buildlabel) { | |||||
this.buildlabel = buildlabel; | this.buildlabel = buildlabel; | ||||
} | } | ||||
/** | /** | ||||
* set the type of label based on the supplied value - if true, this | |||||
* set the type of label based on the supplied value - if true, this | |||||
* label will be a revision label, if false, a build label. | * label will be a revision label, if false, a build label. | ||||
* | |||||
* @param revision If true this will be a revision label; if false, | |||||
* | |||||
* @param revisionlabel If true this will be a revision label; if false, | |||||
* a build label | * a build label | ||||
*/ | */ | ||||
public void setRevisionLabel( boolean revisionlabel ) { | |||||
public void setRevisionLabel(boolean revisionlabel) { | |||||
this.revisionlabel = revisionlabel; | this.revisionlabel = revisionlabel; | ||||
} | } | ||||
/** | /** | ||||
* The timestamp of the build that will be stored with the label; required. | |||||
* The timestamp of the build that will be stored with the label; required. | |||||
* Must be formatted <code>yyyyMMddHHmmss</code> | * Must be formatted <code>yyyyMMddHHmmss</code> | ||||
*/ | */ | ||||
public void setLastBuild(String lastbuild) throws BuildException { | public void setLastBuild(String lastbuild) throws BuildException { | ||||
@@ -162,8 +162,8 @@ public class StarTeamLabel extends StarTeamTask { | |||||
Date lastBuildTime = DATE_FORMAT.parse(lastbuild); | Date lastBuildTime = DATE_FORMAT.parse(lastbuild); | ||||
this.lastBuild = new OLEDate(lastBuildTime); | this.lastBuild = new OLEDate(lastBuildTime); | ||||
} catch (ParseException e) { | } catch (ParseException e) { | ||||
throw new BuildException("Unable to parse the date '" + | |||||
lastbuild + "'", e); | |||||
throw new BuildException("Unable to parse the date '" | |||||
+ lastbuild + "'", e); | |||||
} | } | ||||
} | } | ||||
@@ -175,9 +175,8 @@ public class StarTeamLabel extends StarTeamTask { | |||||
public void execute() throws BuildException { | public void execute() throws BuildException { | ||||
if (this.revisionlabel && this.buildlabel) { | if (this.revisionlabel && this.buildlabel) { | ||||
throw new BuildException( | |||||
"'revisionlabel' and 'buildlabel' both specified. " + | |||||
"A revision label cannot be a build label."); | |||||
throw new BuildException("'revisionlabel' and 'buildlabel' " | |||||
+ "both specified. A revision label cannot be a build label."); | |||||
} | } | ||||
View snapshot = openView(); | View snapshot = openView(); | ||||
@@ -187,19 +186,17 @@ public class StarTeamLabel extends StarTeamTask { | |||||
if (this.revisionlabel) { | if (this.revisionlabel) { | ||||
new Label(snapshot, this.labelName, this.description).update(); | new Label(snapshot, this.labelName, this.description).update(); | ||||
log("Created Revision Label " + this.labelName); | log("Created Revision Label " + this.labelName); | ||||
} | |||||
else if (null != lastBuild){ | |||||
new Label(snapshot, this.labelName, this.description,this.lastBuild, | |||||
} else if (null != lastBuild) { | |||||
new Label(snapshot, this.labelName, this.description, this.lastBuild, | |||||
this.buildlabel).update(); | this.buildlabel).update(); | ||||
log("Created View Label (" | |||||
+(this.buildlabel ? "" : "non-") + "build) " + this.labelName | |||||
+" as of " + this.lastBuild.toString()); | |||||
} | |||||
else { | |||||
log("Created View Label (" | |||||
+ (this.buildlabel ? "" : "non-") + "build) " + this.labelName | |||||
+ " as of " + this.lastBuild.toString()); | |||||
} else { | |||||
new Label(snapshot, this.labelName, this.description, | new Label(snapshot, this.labelName, this.description, | ||||
this.buildlabel).update(); | this.buildlabel).update(); | ||||
log("Created View Label (" | |||||
+(this.buildlabel ? "" : "non-") + "build) " + this.labelName); | |||||
log("Created View Label (" | |||||
+ (this.buildlabel ? "" : "non-") + "build) " + this.labelName); | |||||
} | } | ||||
} | } | ||||
@@ -81,7 +81,7 @@ public class StarTeamList extends TreeBasedTask { | |||||
private boolean listUncontrolled = true; | private boolean listUncontrolled = true; | ||||
/** | /** | ||||
* List files, dates, and statuses as of this label; optional. | * List files, dates, and statuses as of this label; optional. | ||||
* The label must exist in starteam or an exception will be thrown. | |||||
* The label must exist in starteam or an exception will be thrown. | |||||
* If not specified, the most recent version of each file will be listed. | * If not specified, the most recent version of each file will be listed. | ||||
* | * | ||||
* @param label the label to be listed | * @param label the label to be listed | ||||
@@ -93,7 +93,7 @@ public class StarTeamList extends TreeBasedTask { | |||||
/** | /** | ||||
* Override of base-class abstract function creates an | * Override of base-class abstract function creates an | ||||
* appropriately configured view for checkoutlists - either | * appropriately configured view for checkoutlists - either | ||||
* the current view or a view from this.label. | |||||
* the current view or a view from this.label. | |||||
* | * | ||||
* @param raw the unconfigured <code>View</code> | * @param raw the unconfigured <code>View</code> | ||||
* @return the snapshot <code>View</code> appropriately configured. | * @return the snapshot <code>View</code> appropriately configured. | ||||
@@ -130,11 +130,11 @@ public class StarTeamList extends TreeBasedTask { | |||||
* root local folder for the operation (whether specified by the user or not. | * root local folder for the operation (whether specified by the user or not. | ||||
*/ | */ | ||||
protected void logOperationDescription(Folder starteamrootFolder, java.io.File targetrootFolder) { | protected void logOperationDescription(Folder starteamrootFolder, java.io.File targetrootFolder) { | ||||
log((this.isRecursive() ? "Recursive" : "Non-recursive") + | |||||
" Listing of: " + starteamrootFolder.getFolderHierarchy()); | |||||
log((this.isRecursive() ? "Recursive" : "Non-recursive") | |||||
+ " Listing of: " + starteamrootFolder.getFolderHierarchy()); | |||||
log("Listing against local folder" | |||||
+ (null == getRootLocalFolder() ? " (default): " : ": ") | |||||
log("Listing against local folder" | |||||
+ (null == getRootLocalFolder() ? " (default): " : ": ") | |||||
+ targetrootFolder.getAbsolutePath(), | + targetrootFolder.getAbsolutePath(), | ||||
Project.MSG_INFO); | Project.MSG_INFO); | ||||
logLabel(); | logLabel(); | ||||
@@ -161,16 +161,15 @@ public class StarTeamList extends TreeBasedTask { | |||||
} | } | ||||
Folder[] subFolders = starteamFolder.getSubFolders(); | Folder[] subFolders = starteamFolder.getSubFolders(); | ||||
Item[] files = starteamFolder.getItems(getTypeNames().FILE); | Item[] files = starteamFolder.getItems(getTypeNames().FILE); | ||||
UnmatchedFileMap ufm = | |||||
UnmatchedFileMap ufm = | |||||
new UnmatchedListingMap().init( | new UnmatchedListingMap().init( | ||||
targetFolder.getAbsoluteFile(), starteamFolder); | targetFolder.getAbsoluteFile(), starteamFolder); | ||||
log(""); | log(""); | ||||
log("Listing StarTeam folder " + | |||||
starteamFolder.getFolderHierarchy()); | |||||
log(" against local folder " + | |||||
targetFolder.getAbsolutePath()); | |||||
log("Listing StarTeam folder " | |||||
+ starteamFolder.getFolderHierarchy()); | |||||
log(" against local folder " + targetFolder.getAbsolutePath()); | |||||
// For all Files in this folder, we need to check | // For all Files in this folder, we need to check | ||||
@@ -212,7 +211,7 @@ public class StarTeamList extends TreeBasedTask { | |||||
} | } | ||||
} | } | ||||
private static final SimpleDateFormat SDF = | |||||
private static final SimpleDateFormat SDF = | |||||
new SimpleDateFormat("yyyy-MM-dd hh:mm:ss zzz"); | new SimpleDateFormat("yyyy-MM-dd hh:mm:ss zzz"); | ||||
protected void list(File reposFile, java.io.File localFile) | protected void list(File reposFile, java.io.File localFile) | ||||
@@ -220,7 +219,7 @@ public class StarTeamList extends TreeBasedTask { | |||||
StringBuffer b = new StringBuffer(); | StringBuffer b = new StringBuffer(); | ||||
int status = reposFile.getStatus(); | int status = reposFile.getStatus(); | ||||
java.util.Date displayDate = null; | java.util.Date displayDate = null; | ||||
if (status==Status.NEW) { | |||||
if (status == Status.NEW) { | |||||
displayDate = new java.util.Date(localFile.lastModified()); | displayDate = new java.util.Date(localFile.lastModified()); | ||||
} else { | } else { | ||||
displayDate = reposFile.getModifiedTime().createDate(); | displayDate = reposFile.getModifiedTime().createDate(); | ||||
@@ -263,23 +262,23 @@ public class StarTeamList extends TreeBasedTask { | |||||
protected boolean isActive() { | protected boolean isActive() { | ||||
return StarTeamList.this.listUncontrolled; | return StarTeamList.this.listUncontrolled; | ||||
} | } | ||||
/** | /** | ||||
* lists uncontrolled items from the local tree. It is assumed | * lists uncontrolled items from the local tree. It is assumed | ||||
* that this method will not be called until all the items in the | * that this method will not be called until all the items in the | ||||
* corresponding folder have been processed, and that the internal map | * corresponding folder have been processed, and that the internal map | ||||
* will contain only uncontrolled items. | * will contain only uncontrolled items. | ||||
*/ | */ | ||||
void processUncontrolledItems() throws BuildException{ | |||||
void processUncontrolledItems() throws BuildException { | |||||
if (this.isActive()) { | if (this.isActive()) { | ||||
Enumeration e = this.keys(); | Enumeration e = this.keys(); | ||||
// handle the files so they appear first | // handle the files so they appear first | ||||
while (e.hasMoreElements()) { | while (e.hasMoreElements()) { | ||||
java.io.File local = (java.io.File) e.nextElement(); | java.io.File local = (java.io.File) e.nextElement(); | ||||
Item remoteItem = (Item) this.get(local); | Item remoteItem = (Item) this.get(local); | ||||
// once we find a folder that isn't in the repository, | |||||
// once we find a folder that isn't in the repository, | |||||
// we know we can add it. | // we know we can add it. | ||||
if (local.isFile()) { | if (local.isFile()) { | ||||
com.starbase.starteam.File remoteFile = | com.starbase.starteam.File remoteFile = | ||||
@@ -287,7 +286,7 @@ public class StarTeamList extends TreeBasedTask { | |||||
try { | try { | ||||
list(remoteFile, local); | list(remoteFile, local); | ||||
} catch (IOException ie) { | } catch (IOException ie) { | ||||
throw new BuildException("IOError in stlist",ie); | |||||
throw new BuildException("IOError in stlist", ie); | |||||
} | } | ||||
} | } | ||||
} | } | ||||
@@ -297,15 +296,15 @@ public class StarTeamList extends TreeBasedTask { | |||||
java.io.File local = (java.io.File) e.nextElement(); | java.io.File local = (java.io.File) e.nextElement(); | ||||
Item remoteItem = (Item) this.get(local); | Item remoteItem = (Item) this.get(local); | ||||
// once we find a folder that isn't in the repository, | |||||
// once we find a folder that isn't in the repository, | |||||
// we know we can add it. | // we know we can add it. | ||||
if (local.isDirectory()) { | if (local.isDirectory()) { | ||||
Folder folder = (Folder) remoteItem; | Folder folder = (Folder) remoteItem; | ||||
if (isRecursive()) { | if (isRecursive()) { | ||||
log("Listing uncontrolled folder " | |||||
log("Listing uncontrolled folder " | |||||
+ folder.getFolderHierarchy() | + folder.getFolderHierarchy() | ||||
+ " from " + local.getAbsoluteFile()); | + " from " + local.getAbsoluteFile()); | ||||
UnmatchedFileMap submap = | |||||
UnmatchedFileMap submap = | |||||
new UnmatchedListingMap().init(local, folder); | new UnmatchedListingMap().init(local, folder); | ||||
submap.processUncontrolledItems(); | submap.processUncontrolledItems(); | ||||
} | } | ||||
@@ -313,11 +312,7 @@ public class StarTeamList extends TreeBasedTask { | |||||
} | } | ||||
} | } | ||||
} | } | ||||
} | } | ||||
}// StarTeamList | |||||
} | |||||
@@ -116,8 +116,8 @@ public abstract class StarTeamTask extends Task { | |||||
private Server server = null; | private Server server = null; | ||||
private void logStarteamVersion() { | private void logStarteamVersion() { | ||||
log("StarTeam version: "+ | |||||
BuildNumber.getDisplayString(), Project.MSG_DEBUG); | |||||
log("StarTeam version: " | |||||
+ BuildNumber.getDisplayString(), Project.MSG_DEBUG); | |||||
} | } | ||||
@@ -191,7 +191,7 @@ public abstract class StarTeamTask extends Task { | |||||
* set the name of the StarTeam view to be acted on; | * set the name of the StarTeam view to be acted on; | ||||
* required if <tt>URL</tt> is not set. | * required if <tt>URL</tt> is not set. | ||||
* | * | ||||
* @param projectname the name of the StarTeam view to be acted on | |||||
* @param viewname the name of the StarTeam view to be acted on | |||||
* @see #setURL(String) | * @see #setURL(String) | ||||
*/ | */ | ||||
public final void setViewname(String viewname) { | public final void setViewname(String viewname) { | ||||
@@ -212,7 +212,7 @@ public abstract class StarTeamTask extends Task { | |||||
/** | /** | ||||
* Set the server name, server port, | * Set the server name, server port, | ||||
* project name and project folder in one shot; | * project name and project folder in one shot; | ||||
* optional, but the server connection must be specified somehow. | |||||
* optional, but the server connection must be specified somehow. | |||||
* | * | ||||
* @param url a <code>String</code> of the form | * @param url a <code>String</code> of the form | ||||
* "servername:portnum/project/view" | * "servername:portnum/project/view" | ||||
@@ -256,17 +256,16 @@ public abstract class StarTeamTask extends Task { | |||||
* @see #getViewname() | * @see #getViewname() | ||||
*/ | */ | ||||
public final String getURL() { | public final String getURL() { | ||||
return | |||||
this.servername + ":" + | |||||
this.serverport + "/" + | |||||
this.projectname + "/" + | |||||
((null == this.viewname) ? "" : this.viewname); | |||||
return this.servername + ":" | |||||
+ this.serverport + "/" | |||||
+ this.projectname + "/" | |||||
+ ((null == this.viewname) ? "" : this.viewname); | |||||
} | } | ||||
/** | /** | ||||
* returns an URL string useful for interacting with many StarTeamFinder | * returns an URL string useful for interacting with many StarTeamFinder | ||||
* methods. | * methods. | ||||
* | |||||
* | |||||
* @return the URL string for this task. | * @return the URL string for this task. | ||||
*/ | */ | ||||
protected final String getViewURL() { | protected final String getViewURL() { | ||||
@@ -333,7 +332,7 @@ public abstract class StarTeamTask extends Task { | |||||
* @param rawview the unconfigured <code>View</code> | * @param rawview the unconfigured <code>View</code> | ||||
* @return the snapshot <code>View</code> appropriately configured. | * @return the snapshot <code>View</code> appropriately configured. | ||||
*/ | */ | ||||
protected abstract View createSnapshotView(View rawview) | |||||
protected abstract View createSnapshotView(View rawview) | |||||
throws BuildException; | throws BuildException; | ||||
/** | /** | ||||
@@ -358,8 +357,8 @@ public abstract class StarTeamTask extends Task { | |||||
} | } | ||||
if (null == view) { | if (null == view) { | ||||
throw new BuildException("Cannot find view" + getURL() + | |||||
" in repository()"); | |||||
throw new BuildException("Cannot find view" + getURL() | |||||
+ " in repository()"); | |||||
} | } | ||||
View snapshot = createSnapshotView(view); | View snapshot = createSnapshotView(view); | ||||
@@ -164,7 +164,7 @@ public abstract class TreeBasedTask extends StarTeamTask { | |||||
/////////////////////////////////////////////////////////////// | /////////////////////////////////////////////////////////////// | ||||
/** | /** | ||||
* Set the root of the subtree in the StarTeam repository from which to | |||||
* Set the root of the subtree in the StarTeam repository from which to | |||||
* work; optional. Defaults to the root folder of the view ('/'). | * work; optional. Defaults to the root folder of the view ('/'). | ||||
* @param rootStarteamFolder the root folder | * @param rootStarteamFolder the root folder | ||||
*/ | */ | ||||
@@ -186,11 +186,11 @@ public abstract class TreeBasedTask extends StarTeamTask { | |||||
* to which files are checked out; optional. | * to which files are checked out; optional. | ||||
* If this is not supplied, then the StarTeam "default folder" | * If this is not supplied, then the StarTeam "default folder" | ||||
* associated with <tt>rootstarteamfolder</tt> is used. | * associated with <tt>rootstarteamfolder</tt> is used. | ||||
* | |||||
* | |||||
* @param rootLocalFolder | * @param rootLocalFolder | ||||
* the local folder that will mirror | * the local folder that will mirror | ||||
* this.rootStarteamFolder | * this.rootStarteamFolder | ||||
* | |||||
* | |||||
* @see rootLocalFolder | * @see rootLocalFolder | ||||
*/ | */ | ||||
public void setRootLocalFolder(String rootLocalFolder) { | public void setRootLocalFolder(String rootLocalFolder) { | ||||
@@ -203,7 +203,7 @@ public abstract class TreeBasedTask extends StarTeamTask { | |||||
* Returns the local folder specified by the user, | * Returns the local folder specified by the user, | ||||
* corresponding to the starteam folder for this operation | * corresponding to the starteam folder for this operation | ||||
* or null if not specified. | * or null if not specified. | ||||
* | |||||
* | |||||
* @return the local folder that mirrors this.rootStarteamFolder | * @return the local folder that mirrors this.rootStarteamFolder | ||||
* @see rootLocalFolder | * @see rootLocalFolder | ||||
*/ | */ | ||||
@@ -213,7 +213,7 @@ public abstract class TreeBasedTask extends StarTeamTask { | |||||
/** | /** | ||||
* Declare files to include using standard <tt>includes</tt> patterns; optional. | |||||
* Declare files to include using standard <tt>includes</tt> patterns; optional. | |||||
* @param includes A string of filter patterns to include. Separate the | * @param includes A string of filter patterns to include. Separate the | ||||
* patterns by spaces. | * patterns by spaces. | ||||
* @see #getIncludes() | * @see #getIncludes() | ||||
@@ -243,12 +243,12 @@ public abstract class TreeBasedTask extends StarTeamTask { | |||||
*/ | */ | ||||
protected void logIncludes() { | protected void logIncludes() { | ||||
if (this.DEFAULT_INCLUDESETTING != this.includes) { | if (this.DEFAULT_INCLUDESETTING != this.includes) { | ||||
log(" Includes specified: "+ this.includes); | |||||
log(" Includes specified: " + this.includes); | |||||
} | } | ||||
} | } | ||||
/** | /** | ||||
* Declare files to exclude using standard <tt>excludes</tt> patterns; optional. | |||||
* Declare files to exclude using standard <tt>excludes</tt> patterns; optional. | |||||
* When filtering files, AntStarTeamCheckOut | * When filtering files, AntStarTeamCheckOut | ||||
* uses an unmodified version of <CODE>DirectoryScanner</CODE>'s | * uses an unmodified version of <CODE>DirectoryScanner</CODE>'s | ||||
* <CODE>match</CODE> method, so here are the patterns straight from the | * <CODE>match</CODE> method, so here are the patterns straight from the | ||||
@@ -304,7 +304,7 @@ public abstract class TreeBasedTask extends StarTeamTask { | |||||
*/ | */ | ||||
protected void logExcludes() { | protected void logExcludes() { | ||||
if (this.DEFAULT_EXCLUDESETTING != this.excludes) { | if (this.DEFAULT_EXCLUDESETTING != this.excludes) { | ||||
log(" Excludes specified: "+ this.excludes); | |||||
log(" Excludes specified: " + this.excludes); | |||||
} | } | ||||
} | } | ||||
@@ -373,11 +373,11 @@ public abstract class TreeBasedTask extends StarTeamTask { | |||||
} | } | ||||
/** | /** | ||||
* Flag to force actions regardless of the status | |||||
* that StarTeam is maintaining for the file; optional, default false. | |||||
* If <tt>rootlocalfolder</tt> is set then | |||||
* this should be set "true" as otherwise the checkout will be based on statuses | |||||
* which do not relate to the target folder. | |||||
* Flag to force actions regardless of the status | |||||
* that StarTeam is maintaining for the file; optional, default false. | |||||
* If <tt>rootlocalfolder</tt> is set then | |||||
* this should be set "true" as otherwise the checkout will be based on statuses | |||||
* which do not relate to the target folder. | |||||
* @param v Value to assign to forced. | * @param v Value to assign to forced. | ||||
*/ | */ | ||||
public void setForced(boolean v) { | public void setForced(boolean v) { | ||||
@@ -386,27 +386,25 @@ public abstract class TreeBasedTask extends StarTeamTask { | |||||
/** | /** | ||||
* returns true if a label has been specified and it is a view label. | * returns true if a label has been specified and it is a view label. | ||||
* | |||||
* | |||||
* @return true if a label has been specified and it is a view label | * @return true if a label has been specified and it is a view label | ||||
*/ | */ | ||||
protected boolean isUsingViewLabel() { | protected boolean isUsingViewLabel() { | ||||
return null != this.labelInUse && | |||||
this.labelInUse.isViewLabel(); | |||||
return null != this.labelInUse && this.labelInUse.isViewLabel(); | |||||
} | } | ||||
/** | /** | ||||
* returns true if a label has been specified and it is a revision label. | * returns true if a label has been specified and it is a revision label. | ||||
* | |||||
* | |||||
* @return true if a label has been specified and it is a revision label | * @return true if a label has been specified and it is a revision label | ||||
*/ | */ | ||||
protected boolean isUsingRevisionLabel() { | protected boolean isUsingRevisionLabel() { | ||||
return null != this.labelInUse && | |||||
this.labelInUse.isRevisionLabel(); | |||||
return null != this.labelInUse && this.labelInUse.isRevisionLabel(); | |||||
} | } | ||||
/** | /** | ||||
* returns the label being used | * returns the label being used | ||||
* | |||||
* @return | |||||
* | |||||
* @return | |||||
*/ | */ | ||||
protected Label getLabelInUse() { | protected Label getLabelInUse() { | ||||
return this.labelInUse; | return this.labelInUse; | ||||
@@ -418,8 +416,7 @@ public abstract class TreeBasedTask extends StarTeamTask { | |||||
protected void logLabel() { | protected void logLabel() { | ||||
if (this.isUsingViewLabel()) { | if (this.isUsingViewLabel()) { | ||||
log(" Using view label " + getLabel()); | log(" Using view label " + getLabel()); | ||||
} | |||||
else if (this.isUsingRevisionLabel()) { | |||||
} else if (this.isUsingRevisionLabel()) { | |||||
log(" Using revision label " + getLabel()); | log(" Using revision label " + getLabel()); | ||||
} | } | ||||
} | } | ||||
@@ -435,9 +432,9 @@ public abstract class TreeBasedTask extends StarTeamTask { | |||||
* Look if the file should be processed by the task. | * Look if the file should be processed by the task. | ||||
* Don't process it if it fits no include filters or if | * Don't process it if it fits no include filters or if | ||||
* it fits an exclude filter. | * it fits an exclude filter. | ||||
* | |||||
* | |||||
* @param pName the item name to look for being included. | * @param pName the item name to look for being included. | ||||
* | |||||
* | |||||
* @return whether the file should be processed or not. | * @return whether the file should be processed or not. | ||||
*/ | */ | ||||
protected boolean shouldProcess(String pName) { | protected boolean shouldProcess(String pName) { | ||||
@@ -469,14 +466,13 @@ public abstract class TreeBasedTask extends StarTeamTask { | |||||
/** | /** | ||||
* Finds and opens the root starteam folder of the operation specified | * Finds and opens the root starteam folder of the operation specified | ||||
* by this task. This will be one of the following cases: | * by this task. This will be one of the following cases: | ||||
* | |||||
* | |||||
* @return Starteam's root folder for the operation. | * @return Starteam's root folder for the operation. | ||||
* @exception BuildException | * @exception BuildException | ||||
* if the root folder cannot be found in the repository | * if the root folder cannot be found in the repository | ||||
*/ | */ | ||||
private final Folder configureRootStarteamFolder() | |||||
throws BuildException | |||||
{ | |||||
private final Folder configureRootStarteamFolder() | |||||
throws BuildException { | |||||
Folder starteamrootfolder = null; | Folder starteamrootfolder = null; | ||||
try { | try { | ||||
// no root local mapping has been specified. | // no root local mapping has been specified. | ||||
@@ -502,37 +498,33 @@ public abstract class TreeBasedTask extends StarTeamTask { | |||||
} | } | ||||
} | |||||
catch (BuildException e) { | |||||
} catch (BuildException e) { | |||||
throw e; | throw e; | ||||
} | |||||
catch (Exception e) { | |||||
throw new BuildException( | |||||
"Unable to find root folder " + this.rootStarteamFolder + | |||||
" in repository at " + getURL(), e); | |||||
} catch (Exception e) { | |||||
throw new BuildException("Unable to find root folder " | |||||
+ this.rootStarteamFolder + " in repository at " + getURL(), e); | |||||
} | } | ||||
if (null == starteamrootfolder) { | if (null == starteamrootfolder) { | ||||
throw new BuildException( | |||||
"Unable to find root folder " + this.rootStarteamFolder + | |||||
" in repository at " + getURL()); | |||||
} | |||||
throw new BuildException("Unable to find root folder " | |||||
+ this.rootStarteamFolder + " in repository at " + getURL()); | |||||
} | |||||
return starteamrootfolder; | return starteamrootfolder; | ||||
} | } | ||||
/** | /** | ||||
* Returns the local folder mapped to the given StarTeam root folder | * Returns the local folder mapped to the given StarTeam root folder | ||||
* of the operation. There are two cases here, depending on whether | * of the operation. There are two cases here, depending on whether | ||||
* <code>rootLocalFolder</code> is defined. | |||||
* If <code>rootLocalFolder</code> is defined, it will be used to | |||||
* establish a root mapping. Otherwise, the repository's default root | |||||
* <code>rootLocalFolder</code> is defined. | |||||
* If <code>rootLocalFolder</code> is defined, it will be used to | |||||
* establish a root mapping. Otherwise, the repository's default root | |||||
* folder will be used. | * folder will be used. | ||||
* | |||||
* | |||||
* @param starteamrootfolder | * @param starteamrootfolder | ||||
* root Starteam folder initialized for the operation | * root Starteam folder initialized for the operation | ||||
* | |||||
* | |||||
* @return the local folder corresponding to the root Starteam folder. | * @return the local folder corresponding to the root Starteam folder. | ||||
* @see findRootStarteamFolder | * @see findRootStarteamFolder | ||||
*/ | */ | ||||
@@ -541,33 +533,32 @@ public abstract class TreeBasedTask extends StarTeamTask { | |||||
String localrootfolder; | String localrootfolder; | ||||
if (null != this.rootLocalFolder) { | if (null != this.rootLocalFolder) { | ||||
localrootfolder = rootLocalFolder; | localrootfolder = rootLocalFolder; | ||||
} | |||||
else { | |||||
} else { | |||||
// either use default path or root local mapping, | // either use default path or root local mapping, | ||||
// which is now embedded in the root folder | // which is now embedded in the root folder | ||||
localrootfolder = starteamrootfolder.getPathFragment(); | localrootfolder = starteamrootfolder.getPathFragment(); | ||||
} | } | ||||
return new java.io.File(localrootfolder); | return new java.io.File(localrootfolder); | ||||
} | } | ||||
/** | /** | ||||
* extenders should emit to the log an entry describing the parameters | * extenders should emit to the log an entry describing the parameters | ||||
* that will be used by this operation. | * that will be used by this operation. | ||||
* | |||||
* | |||||
* @param starteamrootFolder | * @param starteamrootFolder | ||||
* root folder in StarTeam for the operation | * root folder in StarTeam for the operation | ||||
* @param targetrootFolder | * @param targetrootFolder | ||||
* root local folder for the operation (whether specified by the user or not. | * root local folder for the operation (whether specified by the user or not. | ||||
*/ | */ | ||||
protected abstract void logOperationDescription( | |||||
protected abstract void logOperationDescription( | |||||
Folder starteamrootFolder, java.io.File targetrootFolder); | Folder starteamrootFolder, java.io.File targetrootFolder); | ||||
/** | /** | ||||
* This method does the work of opening the supplied Starteam view and | * This method does the work of opening the supplied Starteam view and | ||||
* calling the <code>visit()</code> method to perform the task. | * calling the <code>visit()</code> method to perform the task. | ||||
* Derived classes can customize the called methods | |||||
* Derived classes can customize the called methods | |||||
* <code>testPreconditions()</code> and <code>visit()</code>. | * <code>testPreconditions()</code> and <code>visit()</code>. | ||||
* | * | ||||
* @exception BuildException if any error occurs in the processing | * @exception BuildException if any error occurs in the processing | ||||
@@ -581,14 +572,14 @@ public abstract class TreeBasedTask extends StarTeamTask { | |||||
Folder starteamrootfolder = configureRootStarteamFolder(); | Folder starteamrootfolder = configureRootStarteamFolder(); | ||||
// set the local folder. | // set the local folder. | ||||
java.io.File localrootfolder = | |||||
java.io.File localrootfolder = | |||||
getLocalRootMapping(starteamrootfolder); | getLocalRootMapping(starteamrootfolder); | ||||
testPreconditions(); | testPreconditions(); | ||||
// Tell user what he is doing | // Tell user what he is doing | ||||
logOperationDescription(starteamrootfolder, localrootfolder); | logOperationDescription(starteamrootfolder, localrootfolder); | ||||
// Inspect everything in the root folder and then recursively | // Inspect everything in the root folder and then recursively | ||||
visit(starteamrootfolder, localrootfolder); | visit(starteamrootfolder, localrootfolder); | ||||
@@ -645,12 +636,12 @@ public abstract class TreeBasedTask extends StarTeamTask { | |||||
/** | /** | ||||
* Derived classes must override this class to define actual processing | * Derived classes must override this class to define actual processing | ||||
* to be performed on each folder in the tree defined for the task | * to be performed on each folder in the tree defined for the task | ||||
* | |||||
* | |||||
* @param rootStarteamFolder | * @param rootStarteamFolder | ||||
* the StarTeam folderto be visited | * the StarTeam folderto be visited | ||||
* @param rootLocalFolder | * @param rootLocalFolder | ||||
* the local mapping of rootStarteamFolder | * the local mapping of rootStarteamFolder | ||||
* | |||||
* | |||||
* @exception BuildException | * @exception BuildException | ||||
*/ | */ | ||||
protected abstract void visit(Folder rootStarteamFolder, | protected abstract void visit(Folder rootStarteamFolder, | ||||
@@ -676,14 +667,13 @@ public abstract class TreeBasedTask extends StarTeamTask { | |||||
/** | /** | ||||
* Return the full repository path name of a file. Surprisingly there's | * Return the full repository path name of a file. Surprisingly there's | ||||
* no method in com.starbase.starteam.File to provide this. | * no method in com.starbase.starteam.File to provide this. | ||||
* | |||||
* | |||||
* @param remotefile the Star Team file whose path is to be returned | * @param remotefile the Star Team file whose path is to be returned | ||||
* | |||||
* | |||||
* @return the full repository path name of a file. | * @return the full repository path name of a file. | ||||
*/ | */ | ||||
public static String getFullRepositoryPath( | public static String getFullRepositoryPath( | ||||
com.starbase.starteam.File remotefile) | |||||
{ | |||||
com.starbase.starteam.File remotefile) { | |||||
StringBuffer sb = new StringBuffer(); | StringBuffer sb = new StringBuffer(); | ||||
sb.append(remotefile.getParentFolderHierarchy()) | sb.append(remotefile.getParentFolderHierarchy()) | ||||
.append(remotefile.getName()); | .append(remotefile.getName()); | ||||
@@ -696,24 +686,24 @@ public abstract class TreeBasedTask extends StarTeamTask { | |||||
* upon recursing into a directory. Each local item is mapped to an | * upon recursing into a directory. Each local item is mapped to an | ||||
* unattached StarTeam object of the proper type, File->File and | * unattached StarTeam object of the proper type, File->File and | ||||
* Directory->Folder. | * Directory->Folder. | ||||
* | |||||
* | |||||
* As the TreeBased does its work, it deletes from the map all items | * As the TreeBased does its work, it deletes from the map all items | ||||
* it has processed. | |||||
* | |||||
* it has processed. | |||||
* | |||||
* When the TreeBased task processes all the items from the repository, | * When the TreeBased task processes all the items from the repository, | ||||
* whatever items left in the UnmatchedFileMap are uncontrolled items | * whatever items left in the UnmatchedFileMap are uncontrolled items | ||||
* and can be processed as appropriate to the task. In the case of | * and can be processed as appropriate to the task. In the case of | ||||
* Checkouts, they can be optionally deleted from the local tree. In the | |||||
* Checkouts, they can be optionally deleted from the local tree. In the | |||||
* case of Checkins they can optionally be added to the repository. | * case of Checkins they can optionally be added to the repository. | ||||
*/ | */ | ||||
protected abstract class UnmatchedFileMap extends Hashtable { | protected abstract class UnmatchedFileMap extends Hashtable { | ||||
/** | /** | ||||
* initializes the UnmatchedFileMap with entries from the local folder | * initializes the UnmatchedFileMap with entries from the local folder | ||||
* These will be mapped to the corresponding StarTeam entry even though | * These will be mapped to the corresponding StarTeam entry even though | ||||
* it will not, in fact, exist in the repository. But through it, it | |||||
* it will not, in fact, exist in the repository. But through it, it | |||||
* can be added, listed, etc. | * can be added, listed, etc. | ||||
* | |||||
* | |||||
* @param localFolder | * @param localFolder | ||||
* the local folder from which the mappings will be made. | * the local folder from which the mappings will be made. | ||||
* @param remoteFolder | * @param remoteFolder | ||||
@@ -725,20 +715,19 @@ public abstract class TreeBasedTask extends StarTeamTask { | |||||
} | } | ||||
String[] localFiles = localFolder.list(); | String[] localFiles = localFolder.list(); | ||||
for (int i=0; i < localFiles.length; i++) { | |||||
for (int i = 0; i < localFiles.length; i++) { | |||||
String fn = localFiles[i]; | String fn = localFiles[i]; | ||||
java.io.File localFile = | |||||
java.io.File localFile = | |||||
new java.io.File(localFolder, localFiles[i]).getAbsoluteFile(); | new java.io.File(localFolder, localFiles[i]).getAbsoluteFile(); | ||||
log("adding " + localFile + " to UnmatchedFileMap", | log("adding " + localFile + " to UnmatchedFileMap", | ||||
Project.MSG_DEBUG); | Project.MSG_DEBUG); | ||||
if (localFile.isDirectory()) { | if (localFile.isDirectory()) { | ||||
this.put(localFile, new Folder( remoteFolder, fn, fn)); | |||||
} | |||||
else { | |||||
com.starbase.starteam.File remoteFile = | |||||
this.put(localFile, new Folder(remoteFolder, fn, fn)); | |||||
} else { | |||||
com.starbase.starteam.File remoteFile = | |||||
new com.starbase.starteam.File(remoteFolder); | new com.starbase.starteam.File(remoteFolder); | ||||
remoteFile.setName(fn); | remoteFile.setName(fn); | ||||
this.put(localFile, remoteFile); | this.put(localFile, remoteFile); | ||||
@@ -746,37 +735,37 @@ public abstract class TreeBasedTask extends StarTeamTask { | |||||
} | } | ||||
return this; | return this; | ||||
} | } | ||||
/** | /** | ||||
* remove an item found to be controlled from the map. | * remove an item found to be controlled from the map. | ||||
* | |||||
* | |||||
* @param localFile the local item found to be controlled. | * @param localFile the local item found to be controlled. | ||||
*/ | */ | ||||
void removeControlledItem(java.io.File localFile) { | void removeControlledItem(java.io.File localFile) { | ||||
if (isActive()) { | if (isActive()) { | ||||
log("removing processed " + localFile.getAbsoluteFile() + | |||||
" from UnmatchedFileMap", Project.MSG_DEBUG); | |||||
log("removing processed " + localFile.getAbsoluteFile() | |||||
+ " from UnmatchedFileMap", Project.MSG_DEBUG); | |||||
this.remove(localFile.getAbsoluteFile()); | this.remove(localFile.getAbsoluteFile()); | ||||
} | } | ||||
} | } | ||||
/** | /** | ||||
* override will perform the action appropriate for its task to perform | * override will perform the action appropriate for its task to perform | ||||
* on items which are on the local tree but not in StarTeam. It is | |||||
* on items which are on the local tree but not in StarTeam. It is | |||||
* assumed that this method will not be called until all the items in | * assumed that this method will not be called until all the items in | ||||
* the corresponding folder have been processed, and that the internal | |||||
* the corresponding folder have been processed, and that the internal | |||||
* map * will contain only uncontrolled items. | * map * will contain only uncontrolled items. | ||||
*/ | */ | ||||
abstract void processUncontrolledItems() throws BuildException; | abstract void processUncontrolledItems() throws BuildException; | ||||
/** | /** | ||||
* overrides must define this to declare how this method knows if it | |||||
* overrides must define this to declare how this method knows if it | |||||
* is active. This presents extra clock cycles when the functionality | * is active. This presents extra clock cycles when the functionality | ||||
* is not called for. | * is not called for. | ||||
* | |||||
* | |||||
* @return True if this object is to perform its functionality. | * @return True if this object is to perform its functionality. | ||||
*/ | */ | ||||
abstract protected boolean isActive(); | |||||
protected abstract boolean isActive(); | |||||
} | } | ||||
} | } | ||||