У меня есть два быстрых файла для сравнения, содержащих разные быстрые сообщения. Есть ли какая-нибудь библиотека, чтобы сравнить быстрое сообщение именно с разницей между ними.Как сравнить два сообщения 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))), затем сравните значения как в мультимадре, так и распечатайте значения, которые отличаются от мультимапа.
Я использовал ядро WIFE Provide. Можете ли вы мне помочь в сценарии мультимапов. или вы также можете проверить это здесь: http://stackoverflow.com/q/37025495/5599600 – rockersdeal
до сих пор я не пробовал с помощью multimap, но я хотел бы предложить вам из SwiftMessage, что вы должны создавать конкретные объекты объекта, используя java отражения, передав имя метода. Но сначала проверьте, что блок должен быть не нулевым. –
Я пробовал свою логику, и она работает хорошо. спасибо – rockersdeal