in src/main/java/com/datacompare/service/CompareData.java [163:220]
private void compare(Map<String, String> data, Map<String, String> dataToCompare, List<String> failTuple,
Map<String, String> failedEntry) {
for (Map.Entry<String, String> entry : data.entrySet()) {
this.tempRowNumber++;
String key = entry.getKey();
try {
if (key != null) {
String content = entry.getValue();
String dataToCompareContent = dataToCompare.get(key);
//if it is mismatch
if (!(content != null && dataToCompareContent != null && content.equals(dataToCompareContent))) {
// if target has the data
if(dataToCompare.containsValue(content))
{
int sourceCount = Collections.frequency(data.values(), content);
int targetCount = Collections.frequency(dataToCompare.values(), content);
if(sourceCount>targetCount){
if(Collections.frequency(failedEntry.values(), content)<(sourceCount-targetCount)){
String failedContent = (content != null) ? content : "";
this.result = "Failed";
//failTuple.add(failedContent);
this.failedRowNumber = this.tempRowNumber;
failedEntry.put(key, failedContent);
}
}
}
else {
String failedContent = (content != null) ? content : "";
this.result = "Failed";
//failTuple.add(failedContent);
this.failedRowNumber = this.tempRowNumber;
failedEntry.put(key, failedContent);
}
}
}
} catch (Exception e) {
logger.error(e.getMessage(), e);
}
}
}