private void compare()

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);
			}
		}
	}