package org.jpos.jposext.isomsgaction.testing.service.support; import java.util.Arrays; import java.util.Comparator; import org.jpos.iso.ISOField; import org.jpos.jposext.isomsgaction.testing.model.ComparisonContext; public class ISOFieldComparator implements Comparator<ISOField> { private String path; private ComparisonContext comparisonContext; public ISOFieldComparator(ComparisonContext comparisonContext, String path) { super(); this.comparisonContext = comparisonContext; this.path = path; } /* (non-Javadoc) * @see java.util.Comparator#compare(java.lang.Object, java.lang.Object) */ public int compare(ISOField field0, ISOField field1) { if (null != field0) { if (null == field1) { comparisonContext.addDiff(path, String.format( "Field %s : Expected=%s, Current=NULL", path, new String(field0.getBytes()))); return -1; } } else { if (null == field1) { return 0; } else { comparisonContext.addDiff(path, String.format( "Field %s : Expected=NULL, Current=%s", path, new String(field1.getBytes()))); return -1; } } boolean same = Arrays.equals(field0.getBytes(), field1.getBytes()); if (!same) { comparisonContext.addDiff(path, String.format( "Field %s : Expected=%s, Current=%s", path, new String( field0.getBytes()), new String(field1.getBytes()))); } return same ? 0 : -1; } }