private static DRDiffReport doDiffOperationToReport(List<String> bdbLogFileContents, List<String> hadoopLogFileContents, IDiffStrategy diffStrategy) {
        int bdbLogFileIndex = 0;
        int hadoopLogFileIndex = 0;
        int bdbLogFileLength = bdbLogFileContents.size();
        int hadoopLogFileLength = hadoopLogFileContents.size();
        DRDiffReport result = new DRDiffReport();
        result.setTotalLine(bdbLogFileLength);
        StringBuilder resultOutputString = new StringBuilder();
        while (bdbLogFileIndex < bdbLogFileLength && hadoopLogFileIndex < hadoopLogFileLength) {
            String bdbLogFileLine = bdbLogFileContents.get(bdbLogFileIndex);
            String hadoopLogFileLine = hadoopLogFileContents.get(hadoopLogFileIndex);
            String[] bdbSplitContents = bdbLogFileLine.split(AnalyseConstants.KEY_VALUE_SPLITTER);
            String[] hadoopSplitContents = hadoopLogFileLine.split(AnalyseConstants.KEY_VALUE_SPLITTER);
            int compareResult = bdbSplitContents[0].compareTo(hadoopSplitContents[0]);
            if (compareResult == 0) {
                if (diffStrategy.needCompare(bdbSplitContents[0])) {
                    String valueCompareOutput = diffStrategy.doCompareOperation(bdbSplitContents[0], bdbSplitContents[1], hadoopSplitContents[1]);
                    if (valueCompareOutput == null) {
                        result.sameLinePlus();
                    } else {
                        result.differentLinePlus();
                        resultOutputString.append(valueCompareOutput);
                    }
                } else {
                    result.ignoreLinePlus();
                }
                bdbLogFileIndex++;
                hadoopLogFileIndex++;
            } else if (compareResult > 0) {
                hadoopLogFileIndex++;
            } else {
//                resultOutputString.append(String.format("bdb file not found: %s%s", bdbSplitContents[0], AnalyseConstants.MULTI_LINE_SPLITTER));
                bdbLogFileIndex++;
                result.noFoundLinePlus();
            }
        }
        if (bdbLogFileIndex != bdbLogFileLength) {
            resultOutputString.append("The following content is not processed...").append(AnalyseConstants.MULTI_LINE_SPLITTER);
            for (int i = bdbLogFileIndex; i < bdbLogFileLength; i++) {
                resultOutputString.append(bdbLogFileContents.get(i)).append(AnalyseConstants.MULTI_LINE_SPLITTER);
            }
            result.noFoundLinePlus(bdbLogFileLength - bdbLogFileIndex);
        }
        result.setResultOutputString(resultOutputString.toString());
        return result;
    }