用普通java比较RTC/Jazz中的两个基线

用普通java比较RTC/Jazz中的两个基线,java,rtc,jazz,Java,Rtc,Jazz,我试图用纯java编程比较一个流中的两个快照 步骤1:获取我的流(工作) 我的报告是空的--烦人的-- report=com.ibm.team.scm.common.internal.dto.impl。UpdateReportImpl@1de5a20(状态前:,状态后:) 我还尝试获取ChangeHistorySyncReport IChangeHistorySyncReport report = workspaceManager.compareBaselineSets(

我试图用纯java编程比较一个流中的两个快照

步骤1:获取我的流(工作)

我的报告是空的--烦人的--

report=com.ibm.team.scm.common.internal.dto.impl。UpdateReportImpl@1de5a20(状态前:,状态后:)

我还尝试获取ChangeHistorySyncReport

IChangeHistorySyncReport report = 
    workspaceManager.compareBaselineSets(
        snapShot0, snapShot1, componentList(stream), monitor);
报告也是空的

那么如何创建一个合适的报告呢?或者我如何比较两个基线?(我做错了什么

report.getAffectedComponents()
返回空数组,以及
report.getModifiedComponents()

更新 据我所知,现在我必须检查ChangeHistorySyncReport…当我打印报告时,它会说:

com.ibm.team.scm.common.internal.dto.impl。ChangeHistorySyncReportImpl@150f091(localTime:,remoteTime:,compareFlags:)


这让我的问题更深刻了——我怎样才能设置更好的比较级?

上帝我花了好长时间

但首先要做的是:使用
IChangeHistorySyncReport
而不是
IUpdateReport

那怎么了

IWorkspaceConnection stream; //is not null, already instantiated somewhere else
IBaselineSet bl0 = (IBaselineSet) 
    itemManager.fetchCompleteItem(baseLineHandle0, IItemManager.DEFAULT, monitor);
IBaselineSet bl1 = (IBaselineSet)
    itemManager.fetchCompleteItem(baseLineHandle1, IItemManager.DEFAULT, monitor);
IChangeHistorySyncReport report = 
    workspaceManager.compareBaselineSets(bl0, bl1, getComponentHandles(stream), monitor);
一个简单的代码更改就可以解决这个问题

//have a close look: 3.rd param is now null!!
IChangeHistorySyncReport report = 
    workspaceManager.compareBaselineSets(bl0, bl1, null, monitor); 
顺便说一下,当我浏览报告时,还有一个棘手的部分:

System.out.println("report: "+report );    
System.out.println("incoming: "+report.incomingChangeSets() );

output:
report = com.ibm.team.scm.common.internal.dto.impl.ChangeHistorySyncReportImpl@127c1ae (localTime: <unset>, remoteTime: <unset>, compareFlags: <unset>)
incoming []
System.out.println(“报告:+report”);
System.out.println(“传入:“+report.incomingChangeSets());
输出:
report=com.ibm.team.scm.common.internal.dto.impl。ChangeHistorySyncReportImpl@127c1ae(localTime:,remoteTime:,compareFlags:)
传入[]
乍一看是空的-但深入挖掘后,我发现我只需要请求
report.outgoingChangeSets()
,这带来了大量(预期的)变化

但是当我交换基线
workspaceManager.compareBaselineSets(bl1,bl0,null,monitor);

  • report.outgoingChangeSets()
    为空且
  • report.incomingChangeSets()
    带来正确的结果
更新:


使用比较基线方法,我现在可以提供几个组件的完整差异!!!

唯一的例子是
IChangeHistorySyncReportImpl
(不是
ChangeHistorySyncReportImpl
)我看到的是在Hello@VonC我找到了解决方案,它隐藏在一个中文或类似印度教的网站中(对不起,我丢失了链接)…但我现在找到了一个解决方案!!我很高兴!!!我不知道为什么这样做有效-尤其是当我在方法上使用正确的列表时,但是没有…我感到困惑和高兴!太棒了!+1.非常好的发现。感谢您的支持-即使您今天没有提供一些代码,我也很高兴有人听到我的问题!!!令人印象深刻的多组件nt比较。有没有可能在某个地方打开该GUI的java源代码?好的(我不是说“有机会马上看到java源代码”;)
IWorkspaceConnection stream; //is not null, already instantiated somewhere else
IBaselineSet bl0 = (IBaselineSet) 
    itemManager.fetchCompleteItem(baseLineHandle0, IItemManager.DEFAULT, monitor);
IBaselineSet bl1 = (IBaselineSet)
    itemManager.fetchCompleteItem(baseLineHandle1, IItemManager.DEFAULT, monitor);
IChangeHistorySyncReport report = 
    workspaceManager.compareBaselineSets(bl0, bl1, getComponentHandles(stream), monitor);
//have a close look: 3.rd param is now null!!
IChangeHistorySyncReport report = 
    workspaceManager.compareBaselineSets(bl0, bl1, null, monitor); 
System.out.println("report: "+report );    
System.out.println("incoming: "+report.incomingChangeSets() );

output:
report = com.ibm.team.scm.common.internal.dto.impl.ChangeHistorySyncReportImpl@127c1ae (localTime: <unset>, remoteTime: <unset>, compareFlags: <unset>)
incoming []