сравнение двух базовых показателей в RTC/Jazz с простой java

Я пытаюсь программно сравнить два снимка из одного потока в простой java...

Шаг 1: получение моего потока (работает)

IWorkspaceConnection stream = null;
List<IWorkspaceConnection> list = RtcAdapter.inst().getStreams(); //my library
for (IWorkspaceConnection connection: list){
    if (connection.getName().equalsIgnoreCase("myStreamName") ){
        stream = connection;
        break;
    }
}//now we have found our stream

Шаг 2: получение базовых линий (рабочий)

List<IBaselineSet> snapShotList = 
    RtcAdapter.inst().getSnapShotsFromStream(stream);

IBaselineSet snapShot0 = null;
IBaselineSet snapShot1 = null;

for (IBaselineSet snapShot: snapShotList){
    if (snapShot.getName().equalsIgnoreCase("mySnapShotName0") ){
        snapShot0 = snapShot;
    }
    if (snapShot.getName().equalsIgnoreCase("mySnapShotName1") ){
        snapShot1 = snapShot;
    }
}//now we've got also my two snapShots

Шаг 3: сравнение друг с другом (не работает)

IUpdateReport report = 
    workspaceManager.compareBaselineSetConfigurations(
        snapShot0, snapShot0, stream.getComponents(), monitor);

мой отчет пуст... --раздражает--

report=com.ibm.team.scm.common.internal.dto.impl.UpdateReportImpl@1de5a20 (stateBefore: <unset>, stateAfter: <unset>)

я также пытался получить 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: <unset>, remoteTime: <unset>, compareFlags: <unset>)

это делает мой вопрос глубже - как я могу лучше установить CompareFlags?


person Martin Frank    schedule 24.09.2014    source источник
comment
Единственный пример IChangeHistorySyncReportImpl (не ChangeHistorySyncReportImpl), который я вижу, находится по адресу jazz.net/forum/questions/91050/   -  person VonC    schedule 25.09.2014
comment
Привет @VonC, я нашел решение, оно было скрыто на китайском или индуистском веб-сайте (я потерял ссылку, извините) ... но теперь я нашел решение !! я так рад!!!   -  person Martin Frank    schedule 25.09.2014


Ответы (1)


БОГ это заняло у меня целую вечность....

но обо всем по порядку: было совершенно правильно использовать 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 []

на первый взгляд выглядел пустым, но, копнув глубже, я обнаружил, что мне просто нужно было попросить report.outgoingChangeSets(), что приводит к большому количеству (ожидаемых) изменений...

но когда я меняю базовую линию workspaceManager.compareBaselineSets(bl1, bl0, null, monitor);, тогда

  • report.outgoingChangeSets() пусто и
  • report.incomingChangeSets() дает правильные результаты!!

Обновить:

введите здесь описание изображения

Используя метод сравнения базовых показателей, я теперь могу предоставить полную разницу для нескольких компонентов !!!

person Martin Frank    schedule 25.09.2014
comment
я не знаю, почему это работает, особенно когда я использую правильный List‹IComponent› / List‹IcomponentHandle› в методе, но работает БЕЗ ... я сбит с толку и счастлив! - person Martin Frank; 25.09.2014
comment
Фантастический! +1. Отличная находка. - person VonC; 25.09.2014
comment
спасибо за вашу поддержку - даже если вы не предоставили код сегодня, я был рад, что кто-то выслушал мою проблему!!! - person Martin Frank; 25.09.2014
comment
Впечатляющее многокомпонентное сравнение. Есть ли шанс где-нибудь открыть исходный код java этого графического интерфейса? - person VonC; 07.10.2014
comment
о - я сравниваю несколько потоков, каждый из которых имеет несколько компонентов.. в общем это итог нашего обсуждения на RTC... посмотрю, что я могу предложить, щас я уже дома ^^ - person Martin Frank; 07.10.2014
comment
Хорошо (я не имел в виду возможность увидеть исходники Java прямо в эту секунду;)) - person VonC; 07.10.2014