jesse 2003/04/20 18:08:18
Modified: src/main/org/apache/tools/ant/taskdefs/optional/starteam
TreeBasedTask.java
docs/manual/OptionalTasks starteam.html
Log:
StarTeam performance enhancement
PR: 15730
Submitted by: Steve Cohen
Revision Changes Path
1.18 +42 -3
ant/src/main/org/apache/tools/ant/taskdefs/optional/starteam/TreeBasedTask.java
Index: TreeBasedTask.java
===================================================================
RCS file:
/home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/optional/starteam/TreeBasedTask.java,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -r1.17 -r1.18
--- TreeBasedTask.java 18 Apr 2003 23:40:28 -0000 1.17
+++ TreeBasedTask.java 21 Apr 2003 01:08:17 -0000 1.18
@@ -55,6 +55,7 @@
import com.starbase.starteam.Folder;
import com.starbase.starteam.Label;
+import com.starbase.starteam.PropertyNames;
import com.starbase.starteam.StarTeamFinder;
import com.starbase.starteam.View;
import java.util.Hashtable;
@@ -64,7 +65,7 @@
import org.apache.tools.ant.Project;
/**
- * FileBasedTask.java
+ * TreeBasedTask.java
* This abstract class is the base for any tasks that are tree-based, that
* is, for tasks which iterate over a tree of folders in StarTeam which
* is reflected in a tree of folder the local machine.
@@ -76,7 +77,7 @@
*
* Created: Sat Dec 15 16:55:19 2001
*
- * @author <a href="mailto:[EMAIL PROTECTED]">Steve Cohen</a>
+ * @author <a href="mailto:[EMAIL PROTECTED]">Steve Cohen</a>
* @version 1.0
* @see <A HREF="http://www.starbase.com/">StarBase Web Site</A>
*/
@@ -141,6 +142,12 @@
private boolean recursive = true;
/**
+ * Set preloadFileInformation to true to load all file information from
the server
+ * at once. Increases performance significantly for projects with many
files and/or folders.
+ */
+ private boolean preloadFileInformation = true;
+
+ /**
* If forced set to true, files in the target directory will
* be processed regardless of status in the repository.
* Usually this should be true if rootlocalfolder is set
@@ -339,6 +346,25 @@
}
/**
+ * Get the value of preloadFileInformation.
+ * @return value of preloadFileInformation.
+ */
+ public boolean isPreloadFileInformation() {
+ return this.preloadFileInformation;
+ }
+
+ /**
+ * Flag to set to preload file information from the server; optional,
+ * default true.
+ * Increases performance significantly for projects with many files
+ * and/or folders.
+ * @param v Value to assign to preloadFileInformation.
+ */
+ public void setPreloadFileInformation(boolean v) {
+ this.preloadFileInformation = v;
+ }
+
+ /**
* Get the value of forced.
* @return value of forced.
*/
@@ -463,6 +489,19 @@
StarTeamFinder.findFolder(snapshot.getRootFolder(),
this.rootStarteamFolder);
+ if (this.isPreloadFileInformation()) {
+ PropertyNames pn = getServer().getPropertyNames();
+ String[] props = new String[] {pn.FILE_NAME, pn.FILE_PATH,
+ pn.FILE_STATUS,
pn.MODIFIED_TIME,
+ pn.FILE_FILE_TIME_AT_CHECKIN,
+ pn.MODIFIED_USER_ID,
pn.FILE_SIZE};
+
+ int depth = this.isRecursive() ? -1 : 0;
+
starteamrootfolder.populateNow(getServer().getTypeNames().FILE,
+ props, depth);
+ }
+
+
}
catch (BuildException e) {
throw e;
@@ -665,7 +704,7 @@
* whatever items left in the UnmatchedFileMap are uncontrolled items
* 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
- * case of Checkins they can optionally be added to the resository.
+ * case of Checkins they can optionally be added to the repository.
*/
protected abstract class UnmatchedFileMap extends Hashtable {
1.17 +31 -4 ant/docs/manual/OptionalTasks/starteam.html
Index: starteam.html
===================================================================
RCS file: /home/cvs/ant/docs/manual/OptionalTasks/starteam.html,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -r1.16 -r1.17
--- starteam.html 6 Nov 2002 11:07:09 -0000 1.16
+++ starteam.html 21 Apr 2003 01:08:18 -0000 1.17
@@ -14,11 +14,12 @@
</ul>
<p>
-These tasks make use of functions from the StarTeam API. As a result
-they are only available to licensed users of StarTeam. You must have
+The StarTeam revision control system was recently acquired by Borland.
+These tasks make use of functions from the StarTeam API to work with that
system.
+As a result they are only available to licensed users of StarTeam. You must
have
<CODE>starteam-sdk.jar</CODE> in your classpath to run these tasks.
For more information about the StarTeam API and how to license it, see
-the <a href="http://www.starbase.com">StarBase</a> web site.</p>
+the <a href="http://www.borland.com/starteam/">Borland</a> web site.</p>
<hr></hr>
@@ -166,6 +167,14 @@
of checkout.</td> <td align="center" valign="top">no</td>
</tr>
+ <tr>
+ <td valign="top">preloadfileinformation</td>
+ <td valign="top">The StarTeam server has the ability to preload file
metadata for an
+ entire tree prior to beginning action on that tree. Doing so can in
some instances
+ lead to substantially faster actions, particularly over large trees.
Setting this
+ to "yes" (default) engages this functionality, setting it to "no" turns
it off.</td>
+ <td align="center" valign="top">yes</td>
+ </tr>
</table>
@@ -348,7 +357,16 @@
<td valign="top">If true, file will be unlocked so that other users may
change it. If false (default) lock status will not change.
<td align="center" valign="top">no</td>
- </tr></table>
+ </tr>
+ <tr>
+ <td valign="top">preloadfileinformation</td>
+ <td valign="top">The StarTeam server has the ability to preload file
metadata for an
+ entire tree prior to beginning action on that tree. Doing so can in
some instances
+ lead to substantially faster actions, particularly over large trees.
Setting this
+ to "yes" (default) engages this functionality, setting it to "no" turns
it off.</td>
+ <td align="center" valign="top">yes</td>
+ </tr>
+ </table>
<h3>Examples</h3>
@@ -635,6 +653,15 @@
If false, they won't. Defaults to "true".</td>
<td align="center" valign="top">no</td>
</tr>
+
+ <tr>
+ <td valign="top">preloadfileinformation</td>
+ <td valign="top">The StarTeam server has the ability to preload file
metadata for an
+ entire tree prior to beginning action on that tree. Doing so can in
some instances
+ lead to substantially faster actions, particularly over large trees.
Setting this
+ to "yes" (default) engages this functionality, setting it to "no" turns
it off.</td>
+ <td align="center" valign="top">yes</td>
+ </tr>
</table>
<h3>Examples</h3>