2016-04-19 3 views
0

У меня есть два быстрых файла для сравнения, содержащих разные быстрые сообщения. Есть ли какая-нибудь библиотека, чтобы сравнить быстрое сообщение именно с разницей между ними.Как сравнить два сообщения Swift-MT?

У меня есть два быстрое сообщение следующим образом:

{1: ABC} {2: DEF} {3: {108: действительный}} {4 :: 16R: GENL: 20C :: CORP // 0000000519765434: 20C :: SEME // 525200100000002: 16S-} {1: ABC} {2: DEF} {3: {108: valid}} {4 :: 16R: GENL: 20C :: CORP // 0000000519765434: 20C: : SEME // 528200100000009: 16S-}

и

{1: ABC} {2: DEF} {3: {108: действителен}} {4 :: 16R: GENL: 20C :: CORP// 0000000519765434: 20C :: SEME // 610300100000001: 16S-} {1: ABC} {2: DEF} {3: {108: valid}} {4 :: 16R: GENL: 20C :: CORP // 0000000519765434: 20C :: SEME // 528200100000009: 16S-}

Как сравнить эти два быстрых сообщения?

EDITED: Я использовал следующую процедуру, чтобы сравнить записи, но застрял в сравнении значений:

IConversionService ics = new ConversionService(); 
     SwiftMessage sm1 = ics.getMessageFromFIN(source); 
     SwiftMessage sm2 = ics.getMessageFromFIN(target); 

     SwiftBlock4 source_block4 = sm1.getBlock4(); 
     SwiftBlock4 target_block4 = sm2.getBlock4(); 

     List<SwiftTagListBlock> source_tagListBlock = source_block4.getSubBlocks("16R", "16S"); 
     List<SwiftTagListBlock> target_tagListBlock = target_block4.getSubBlocks("16R", "16S"); 

     //SetMultimap<String, String> source_multimap1 = HashMultimap.create(); 

     ListMultimap<String, String> source_multimap = ArrayListMultimap.create(); 
     ListMultimap<String, String> target_multimap = ArrayListMultimap.create(); 

     for (SwiftTagListBlock s : source_tagListBlock) { 
      Iterator<Tag> sourcetag_iterator = s.tagIterator(); 

      while (sourcetag_iterator.hasNext()) { 
       Tag tag = (Tag) sourcetag_iterator.next(); 
       source_multimap.put(tag.getName(), tag.getValue()); 
      } 
     } 
     for (SwiftTagListBlock t : target_tagListBlock) { 
      Iterator<Tag> targettag_iterator = t.tagIterator(); 

      while (targettag_iterator.hasNext()) { 
       Tag tag = (Tag) targettag_iterator.next(); 
       target_multimap.put(tag.getName(), tag.getValue()); 
      } 
     } 

Теперь MultiMap имеет пары ключ-значение одинарные кнопочная несколько значений. Я хочу показать запись как:

if (source_multimap.get (key) .equals (target_multimap.get (key))), затем сравните значения как в мультимадре, так и распечатайте значения, которые отличаются от мультимапа.

ответ

-1

вы можете использовать prowidesoftware для зависимости от парсера жены, и с помощью этого вы можете прочитать весь блок сообщения mt и каждое поле в каждом блоке. Вы можете сравнить все вещи.

+0

Я использовал ядро ​​WIFE Provide. Можете ли вы мне помочь в сценарии мультимапов. или вы также можете проверить это здесь: http://stackoverflow.com/q/37025495/5599600 – rockersdeal

+0

до сих пор я не пробовал с помощью multimap, но я хотел бы предложить вам из SwiftMessage, что вы должны создавать конкретные объекты объекта, используя java отражения, передав имя метода. Но сначала проверьте, что блок должен быть не нулевым. –

+0

Я пробовал свою логику, и она работает хорошо. спасибо – rockersdeal