您的位置:首页 > 编程语言 > Java开发

java实现Starteam检索本地未上传到服务器的目录

2013-10-23 09:32 357 查看
1、所属jar包:starteam-sdk-5.2.jar

2、样例代码

package com.comtop.qcms.base.starteam;

import java.io.File;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.Iterator;

import java.util.List;

import java.util.Map;

import java.util.Set;

import com.starbase.starteam.Folder;

import com.starbase.starteam.Project;

import com.starbase.starteam.Server;

import com.starbase.starteam.StarTeamFinder;

import com.starbase.starteam.View;

/**

* 对比服务器与本地的差异

*

*/

public class CompareServerAndLocalDirectory {

/** 文件所在磁盘目录 */

private static final String DISK_DIRECTORY = "D:/";

/** 项目名称 */

private static final String PROJECT_NAME = "PROJECTNAME";

/** 检索文件根目录 */

private static final String URL = "/src/main";

/** 服务器上的文件集合 */

private static Map<String, String> serverDirectory = new HashMap<String, String>();

/** 本地有而服务器没有的文件列表 */

private static List<String> singleLocalDirectory = new ArrayList<String>();

public static void main(String[] args) {

compareFile();

// printServerFolder();

compareLocalFolder();

printLocalFolder();

}

public static void compareFile() {

// 连接服务器,服务器地址及端口号

Server server = new Server("10.10.10.1", 11111);

server.connect();

// 登录服务器,用户名及密码

server.logOn("userName", "password");

// 获取要CheckOut的项目

Project[] projects = server.getProjects();

Project project = null;

for (int i = 0; i < projects.length; i++) {

Project next = projects[i];

if (next.getName().equals(PROJECT_NAME)) {

project = next;

break;

}

}

// 获取要CheckOut的视图

View[] views = project.getViews();

View view = null;

for (int i = 0; i < views.length; i++) {

View next = views[i];

if (next.getName().equals(PROJECT_NAME)) {

view = next;

break;

}

}

// 获取文件要CheckOut的文件列表

Folder folder = StarTeamFinder.findFolder(view.getRootFolder(), URL);

serverDirectory.put(folder.getFilePath(""), folder.getFilePath(""));

getSubFolder(server, folder);

server.disconnect();

}

/**

* 获取服务器上的文件目录

*

* @param server

* @param folder

*/

private static void getSubFolder(Server server, Folder folder) {

serverDirectory.put(folder.getFilePath(""), folder.getFilePath(""));

Folder[] subFolders = folder.getSubFolders();

for (Folder subFolder : subFolders) {

getSubFolder(server, subFolder);

}

}

/**

* 循环组装服务器上的目录

*/

private static void compareLocalFolder() {

File file = new File(DISK_DIRECTORY + PROJECT_NAME + URL);

checkSubFolder(file);

}

/**

* 检查服务器上没有而本地有的目录

*

* @param file

*/

private static void checkSubFolder(File file) {

// 如果服务器上不存在而本地存在的目录放入到结果集中

if (serverDirectory.get(file.getPath() + "\\") == null) {

singleLocalDirectory.add(file.getPath());

}

File[] files = file.listFiles();

for (File subFile : files) {

if (subFile.isDirectory()) {

checkSubFolder(subFile);

}

}

}

/**

* 打印本地目录

*/

private static void printLocalFolder() {

for (String directory : singleLocalDirectory) {

System.out.println(directory);

}

}

/**

* 打印服务器目录

*/

private static void printServerFolder() {

Set<Map.Entry<String, String>> set = serverDirectory.entrySet();

for (Iterator<Map.Entry<String, String>> it = set.iterator(); it.hasNext();) {

Map.Entry<String, String> entry = (Map.Entry<String, String>) it.next();

System.out.println(entry.getKey());

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐