获取与文件修订相关联的日期和说明-Java API Performance
我正在尝试编写一个方法,该方法将文件路径和修订号作为参数,并返回与修订相关联的日期。我的代码工作正常(虽然很慢),但是,当我把一个大于51的修订号放进去时,输出会被弄乱 输入获取与文件修订相关联的日期和说明-Java API Performance,api,perforce,java,Api,Perforce,Java,我正在尝试编写一个方法,该方法将文件路径和修订号作为参数,并返回与修订相关联的日期。我的代码工作正常(虽然很慢),但是,当我把一个大于51的修订号放进去时,输出会被弄乱 输入 String [] filePaths= {"//file/x/y/strings/somefile.csv"}; p4Client.getDateAssociatedWithFileRevision(filePaths, 52); public List<IFileSpec> getIFileSpecLis
String [] filePaths= {"//file/x/y/strings/somefile.csv"};
p4Client.getDateAssociatedWithFileRevision(filePaths, 52);
public List<IFileSpec> getIFileSpecList(String file) {
List<IFileSpec> fileList = null;
try {
fileList = iServer.getDepotFiles(
FileSpecBuilder.makeFileSpecList(new String[] {file}), false); //Get list of file(s) in path
}
catch(Exception e){e.printStackTrace();}
return fileList;
}
输出-这应该只有一行…
Rev number: 2 :: Revision Date: Wed Aug 24 23:48:42 BST 2005
Rev number: 52 :: Revision Date: Wed Aug 24 23:52:53 BST 2005
Rev number: 51 :: Revision Date: Sat Aug 20 02:01:59 BST 2005
getDateAssociatedWithFileRevision
public Date getDateAssociatedWithFileRevision(String [] filePath, int revisionNumber) {
List<IFileSpec> fileList = null;
Map<IFileSpec,List<IFileRevisionData>> fileRevisionData = null;
String currentFile = null;
Date revisionDate = null;
try
{
String file = filePath[0] + "#" + revisionNumber;
currentFile = file;
fileList = getIFileSpecList(file); //Get list of file(s) in path
for(IFileSpec fileSpec: fileList)
{
if(file.toString() == null)
{
System.out.println("\"" + currentFile +"\"" + " does not exist...");
break;
}
fileRevisionData = fileSpec.getRevisionHistory(0, true,false,true,false);
int i = 0;
for(List<IFileRevisionData> revisionData : fileRevisionData.values()) {
revisionDate = revisionData.get(0).getDate();
int revision = revisionData.get(0).getRevision();
System.out.println("Rev number: " +revision +" :: " + "Revision Date: " + revisionDate);
System.out.println(i);
i++;
}
}
}
catch(Exception e){e.printStackTrace();}
return revisionDate;
}
public Date getDateAssociatedWithFileRevision(String [] filePath, int revisionNumber) {
List<IFileSpec> fileList = null;
Map<IFileSpec,List<IFileRevisionData>> fileRevisionData = null;
String currentFile = null;
Date revisionDate = null;
try
{
String file = filePath[0] + "#" + revisionNumber;
currentFile = file;
fileList = getIFileSpecList(file); //Get list of file(s) in path
for(IFileSpec fileSpec: fileList)
{
if(file.toString() == null)
{
System.out.println("\"" + currentFile +"\"" + " does not exist...");
break;
}
fileRevisionData = fileSpec.getRevisionHistory(0, true,false,true,false);
for(List<IFileRevisionData> revisionData : fileRevisionData.values()) {
int revision = revisionData.get(0).getRevision();
-------------> if(revision.equals(revisionNumber))
{
revisionDate = revisionData.get(0).getDate();
System.out.println("Rev number: " +revision +" :: " + "Revision Date: " + revisionDate);
break;
}
}
}
}
catch(Exception e){e.printStackTrace();}
return revisionDate;
}
public Date getdateassociated with filerevision(字符串[]filePath,int-revisionNumber){
List fileList=null;
Map fileRevisionData=null;
字符串currentFile=null;
日期修订日期=空;
尝试
{
字符串文件=文件路径[0]+“#”+修订号;
currentFile=文件;
fileList=getIFileSpecList(file);//获取路径中的文件列表
用于(IFileSpec文件规范:文件列表)
{
if(file.toString()==null)
{
System.out.println(“\”“+currentFile+”\”“+”不存在…);
打破
}
fileRevisionData=fileSpec.getRevisionHistory(0,真,假,真,假);
int i=0;
对于(列出修订数据:fileRevisionData.values()){
revisionDate=revisionData.get(0.getDate();
int revision=revisionData.get(0.getRevision();
System.out.println(“版本号:“+修订+”:“+”修订日期:“+修订日期”);
系统输出打印LN(i);
i++;
}
}
}
catch(异常e){e.printStackTrace();}
返回修订日期;
}
GetIFileSpecList
String [] filePaths= {"//file/x/y/strings/somefile.csv"};
p4Client.getDateAssociatedWithFileRevision(filePaths, 52);
public List<IFileSpec> getIFileSpecList(String file) {
List<IFileSpec> fileList = null;
try {
fileList = iServer.getDepotFiles(
FileSpecBuilder.makeFileSpecList(new String[] {file}), false); //Get list of file(s) in path
}
catch(Exception e){e.printStackTrace();}
return fileList;
}
public List getIFileSpecList(字符串文件){
List fileList=null;
试一试{
fileList=iServer.getDepotFiles(
FileSpecBuilder.makeFileSpecList(新字符串[]{file}),false);//获取路径中的文件列表
}
catch(异常e){e.printStackTrace();}
返回文件列表;
}
编辑
String [] filePaths= {"//file/x/y/strings/somefile.csv"};
p4Client.getDateAssociatedWithFileRevision(filePaths, 52);
public List<IFileSpec> getIFileSpecList(String file) {
List<IFileSpec> fileList = null;
try {
fileList = iServer.getDepotFiles(
FileSpecBuilder.makeFileSpecList(new String[] {file}), false); //Get list of file(s) in path
}
catch(Exception e){e.printStackTrace();}
return fileList;
}
刚刚发现集成后输出变得一团糟,现在只需要找到一种方法来处理它们。我通过添加一个if语句(标记在下面)只返回了我想要的日期。我不知道这个解决方案有多优雅。。。欢迎提出任何意见 getDateAssociatedWithFileRevision
public Date getDateAssociatedWithFileRevision(String [] filePath, int revisionNumber) {
List<IFileSpec> fileList = null;
Map<IFileSpec,List<IFileRevisionData>> fileRevisionData = null;
String currentFile = null;
Date revisionDate = null;
try
{
String file = filePath[0] + "#" + revisionNumber;
currentFile = file;
fileList = getIFileSpecList(file); //Get list of file(s) in path
for(IFileSpec fileSpec: fileList)
{
if(file.toString() == null)
{
System.out.println("\"" + currentFile +"\"" + " does not exist...");
break;
}
fileRevisionData = fileSpec.getRevisionHistory(0, true,false,true,false);
int i = 0;
for(List<IFileRevisionData> revisionData : fileRevisionData.values()) {
revisionDate = revisionData.get(0).getDate();
int revision = revisionData.get(0).getRevision();
System.out.println("Rev number: " +revision +" :: " + "Revision Date: " + revisionDate);
System.out.println(i);
i++;
}
}
}
catch(Exception e){e.printStackTrace();}
return revisionDate;
}
public Date getDateAssociatedWithFileRevision(String [] filePath, int revisionNumber) {
List<IFileSpec> fileList = null;
Map<IFileSpec,List<IFileRevisionData>> fileRevisionData = null;
String currentFile = null;
Date revisionDate = null;
try
{
String file = filePath[0] + "#" + revisionNumber;
currentFile = file;
fileList = getIFileSpecList(file); //Get list of file(s) in path
for(IFileSpec fileSpec: fileList)
{
if(file.toString() == null)
{
System.out.println("\"" + currentFile +"\"" + " does not exist...");
break;
}
fileRevisionData = fileSpec.getRevisionHistory(0, true,false,true,false);
for(List<IFileRevisionData> revisionData : fileRevisionData.values()) {
int revision = revisionData.get(0).getRevision();
-------------> if(revision.equals(revisionNumber))
{
revisionDate = revisionData.get(0).getDate();
System.out.println("Rev number: " +revision +" :: " + "Revision Date: " + revisionDate);
break;
}
}
}
}
catch(Exception e){e.printStackTrace();}
return revisionDate;
}
public Date getdateassociated with filerevision(字符串[]filePath,int-revisionNumber){
List fileList=null;
Map fileRevisionData=null;
字符串currentFile=null;
日期修订日期=空;
尝试
{
字符串文件=文件路径[0]+“#”+修订号;
currentFile=文件;
fileList=getIFileSpecList(file);//获取路径中的文件列表
用于(IFileSpec文件规范:文件列表)
{
if(file.toString()==null)
{
System.out.println(“\”“+currentFile+”\”“+”不存在…);
打破
}
fileRevisionData=fileSpec.getRevisionHistory(0,真,假,真,假);
对于(列出修订数据:fileRevisionData.values()){
int revision=revisionData.get(0.getRevision();
------------->if(修订号等于(修订号))
{
revisionDate=revisionData.get(0.getDate();
System.out.println(“版本号:“+修订+”:“+”修订日期:“+修订日期”);
打破
}
}
}
}
catch(异常e){e.printStackTrace();}
返回修订日期;
}
工作太多。采用这个命令行思想(“p4文件将为您获取该信息,并进行解析”),让Performce为您完成数据的连接。然后用Java实现它
% p4 -Ztag files //guest/jeff_bowles/scripts/0228devbranch.html
... depotFile //guest/jeff_bowles/scripts/0228devbranch.html
... rev 2
... change 4421
... action edit
... type ktext
... time 1093044566
% p4 -Ztag files //guest/jeff_bowles/scripts/0228devbranch.html#1
... depotFile //guest/jeff_bowles/scripts/0228devbranch.html
... rev 1
... change 4420
... action add
... type ktext
... time 1093042787