|
Ant example source code file (StarTeamTask.java)
The StarTeamTask.java source code/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.tools.ant.taskdefs.optional.starteam; import com.starbase.starteam.BuildNumber; import com.starbase.starteam.Server; import com.starbase.starteam.StarTeamFinder; import com.starbase.starteam.TypeNames; import com.starbase.starteam.User; import com.starbase.starteam.View; import java.util.StringTokenizer; import org.apache.tools.ant.BuildException; import org.apache.tools.ant.Project; import org.apache.tools.ant.Task; /** * Common super class for all StarTeam tasks. * At this level of the hierarchy we are concerned only with obtaining a * connection to the StarTeam server. The subclass <code>TreeBasedTask, * also abstract defines the tree-walking behavior common to many subtasks. * * @see TreeBasedTask * @version 1.1 */ public abstract class StarTeamTask extends Task { // ATTRIBUTES /** * The username of the connection */ private String userName; /** * The username of the connection */ private String password; /** * name of Starteam server to connect to */ private String servername; /** * port of Starteam server to connect to */ private String serverport; /** * name of Starteam project to connect to */ private String projectname; /** * name of Starteam view to connect to */ private String viewname; /** *The starteam server through which all activities will be done. */ private Server server = null; private void logStarteamVersion() { log("StarTeam version: " + BuildNumber.getDisplayString(), Project.MSG_VERBOSE); } ///////////////////////////////////////////////////////// // GET/SET methods. // Setters, of course are where ant user passes in values. ///////////////////////////////////////////////////////// /** * Set the name of StarTeamServer; * required if <tt>URL is not set. * @param servername a <code>String value * @see #setURL(String) */ public final void setServername(String servername) { this.servername = servername; } /** * returns the name of the StarTeamServer * * @return the name of the StarTeam server * @see #getURL() */ public final String getServername() { return this.servername; } /** * set the port number of the StarTeam connection; * required if <tt>URL is not set. * @param serverport port number to be set * @see #setURL(String) */ public final void setServerport(String serverport) { this.serverport = serverport; } /** * returns the port number of the StarTeam connection * * @return the port number of the StarTeam connection * @see #getURL() */ public final String getServerport() { return this.serverport; } /** * set the name of the StarTeam project to be acted on; * required if <tt>URL is not set. * * @param projectname the name of the StarTeam project to be acted on * @see #setURL(String) */ public final void setProjectname(String projectname) { this.projectname = projectname; } /** * returns the name of the StarTeam project to be acted on * * @return the name of the StarTeam project to be acted on * @see #getURL() */ public final String getProjectname() { return this.projectname; } /** * set the name of the StarTeam view to be acted on; * required if <tt>URL is not set. * * @param viewname the name of the StarTeam view to be acted on * @see #setURL(String) */ public final void setViewname(String viewname) { this.viewname = viewname; } /** * returns the name of the StarTeam view to be acted on * * @return the name of the StarTeam view to be acted on * @see #getURL() */ public final String getViewname() { return this.viewname; } /** * Set the server name, server port, * project name and project folder in one shot; * optional, but the server connection must be specified somehow. * * @param url a <code>String of the form * "servername:portnum/project/view" * @see #setServername(String) * @see #setServerport(String) * @see #setProjectname(String) * @see #setViewname(String) */ public final void setURL(String url) { StringTokenizer t = new StringTokenizer(url, "/"); if (t.hasMoreTokens()) { String unpw = t.nextToken(); int pos = unpw.indexOf(":"); if (pos > 0) { this.servername = unpw.substring(0, pos); this.serverport = unpw.substring(pos + 1); if (t.hasMoreTokens()) { this.projectname = t.nextToken(); if (t.hasMoreTokens()) { this.viewname = t.nextToken(); } } } } } /** * convenience method returns whole URL at once * returns * as a single string */ /** * a convenience method which returns the whole StarTeam * connection information as a single URL string of * * @return a <code>String of the form * "servername:portnum/project/view" * @see #getServername() * @see #getServerport() * @see #getProjectname() * @see #getViewname() */ public final String getURL() { return this.servername + ":" + this.serverport + "/" + this.projectname + "/" + ((null == this.viewname) ? "" : this.viewname); } /** * returns an URL string useful for interacting with many StarTeamFinder * methods. * * @return the URL string for this task. */ protected final String getViewURL() { return getUserName() + ":" + getPassword() + "@" + getURL(); } /** * set the name of the StarTeam user, needed for the connection * * @param userName name of the user to be logged in */ public final void setUserName(String userName) { this.userName = userName; } /** * returns the name of the StarTeam user * * @return the name of the StarTeam user */ public final String getUserName() { return this.userName; } /** * set the password to be used for login; required. * * @param password the password to be used for login */ public final void setPassword(String password) { this.password = password; } /** * returns the password used for login * * @return the password used for login */ public final String getPassword() { return this.password; } /** * returns a reference to the server which may be used for informational * purposes by subclasses. * * @return a reference to the server */ protected final Server getServer() { return this.server; } /** * disconnects from the StarTeam server. Should be called from the * finally clause of every StarTeamTask-based execute method. */ protected final void disconnectFromServer() { if (null != this.server) { this.server.disconnect(); log("successful disconnect from StarTeam Server " + servername, Project.MSG_VERBOSE); } } /** * returns a list of TypeNames known to the server. * * @return a reference to the server's TypeNames */ protected final TypeNames getTypeNames() { return this.server.getTypeNames(); } /** * Derived classes must override <code>createSnapshotView * defining the kind of configured view appropriate to its task. * * @param rawview the unconfigured <code>View * @return the snapshot <code>View appropriately configured. * @throws BuildException on error */ protected abstract View createSnapshotView(View rawview) throws BuildException; /** * All subclasses will call on this method to open the view needed for * processing. This method also saves a reference to the * <code>Server that may be accessed for information at various * points in the process. * * @return the <code>View that will be used for processing. * @see #createSnapshotView(View) * @see #getServer() * @throws BuildException on error */ protected View openView() throws BuildException { logStarteamVersion(); View view = null; try { view = StarTeamFinder.openView(getViewURL()); } catch (Exception e) { throw new BuildException( "Failed to connect to " + getURL(), e); } if (null == view) { throw new BuildException("Cannot find view" + getURL() + " in repository()"); } View snapshot = createSnapshotView(view); log("Connected to StarTeam view " + getURL(), Project.MSG_VERBOSE); this.server = snapshot.getServer(); return snapshot; } /** * Returns the name of the user with the supplied ID or a blank string * if user not found. * * @param userID a user's ID * @return the name of the user with ID userID */ protected final String getUserName(int userID) { User u = this.server.getUser(userID); if (null == u) { return ""; } return u.getName(); } } Other Ant examples (source code examples)Here is a short list of links related to this Ant StarTeamTask.java source code file: |
... 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.