package hudson.plugins.tfs.commands;
import com.microsoft.tfs.core.TFSTeamProjectCollection;
import com.microsoft.tfs.core.clients.versioncontrol.soapextensions.Workspace;
import hudson.model.TaskListener;
import hudson.plugins.tfs.model.MockableVersionControlClient;
import hudson.plugins.tfs.model.Server;
import hudson.remoting.Callable;
import java.io.PrintStream;
public class GetWorkspaceMappingCommand extends AbstractCallableCommand<String, Exception> {
private static final String CheckingMappingTemplate = "Checking if there exists a mapping for %s...";
private static final String FoundResultTemplate = "yes, in workspace '%s'.";
private final String localPath;
public GetWorkspaceMappingCommand(final ServerConfigurationProvider serverConfig, final String localPath) {
super(serverConfig);
this.localPath = localPath;
}
@Override
public Callable<String, Exception> getCallable() {
return this;
}
@Override
public String call() throws Exception {
final Server server = createServer();
final MockableVersionControlClient vcc = server.getVersionControlClient();
final TFSTeamProjectCollection connection = vcc.getConnection();
updateCache(connection);
final TaskListener listener = server.getListener();
final PrintStream logger = listener.getLogger();
final String checkingMessage = String.format(CheckingMappingTemplate, localPath);
logger.print(checkingMessage);
final Workspace workspace = vcc.tryGetWorkspace(localPath);
final boolean existsMapping = workspace != null;
final String result = existsMapping ? workspace.getName() : null;
final String resultMessage = existsMapping ? String.format(FoundResultTemplate, result) : "no.";
logger.println(resultMessage);
return result;
}
}