From dbaa673121ddb247e4ae511d539b9ddc548ecabe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Novotn=C3=BD?= Date: Mon, 30 Nov 2015 10:57:13 +0100 Subject: [PATCH] added result with possibility to output both different lines from new and old files --- .gitignore | 1 + compare.sh | 2 +- pom.xml | 2 +- .../jboss/windup/utils/CsvCompareOptions.java | 24 +++++++++++++++ .../org/jboss/windup/utils/MainClass.java | 10 +++++-- .../windup/utils/WindupReportComparison.java | 30 +++++++++++++++++++ .../utils/test/CsvCompareOptionsTest.java | 3 +- .../test/WindupReportComparisonTest.java | 14 +++++++++ 8 files changed, 81 insertions(+), 5 deletions(-) diff --git a/.gitignore b/.gitignore index 5831832..138ff24 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,4 @@ /export1.csv /export2.csv /diff.csv +/resultDiffedLines.csv diff --git a/compare.sh b/compare.sh index ad0cc41..c6f1e14 100755 --- a/compare.sh +++ b/compare.sh @@ -5,4 +5,4 @@ # $2 - new file # -java -jar target/csvcompare-0.0.1-SNAPSHOT.jar -o $1 -n $2 -d , +java -jar target/csvcompare-0.0.1-SNAPSHOT.jar -o $1 -n $2 -b -d , diff --git a/pom.xml b/pom.xml index 7cfd4b6..19df221 100644 --- a/pom.xml +++ b/pom.xml @@ -8,7 +8,7 @@ org.jboss.windup.utils csvcompare - 0.0.1-SNAPSHOT + 0.0.2-SNAPSHOT csvcompare Compare util for CSV files diff --git a/src/main/java/org/jboss/windup/utils/CsvCompareOptions.java b/src/main/java/org/jboss/windup/utils/CsvCompareOptions.java index a8d2690..1d0e9e2 100644 --- a/src/main/java/org/jboss/windup/utils/CsvCompareOptions.java +++ b/src/main/java/org/jboss/windup/utils/CsvCompareOptions.java @@ -27,8 +27,25 @@ public class CsvCompareOptions private String oldFile; private String newFile; private char delimiter = DEFAULT_CSV_DELIMITER; + private boolean exportedBothDifferences; + /** + * @return the exportedBothDifferences + */ + public boolean isExportedBothDifferences() + { + return exportedBothDifferences; + } + + /** + * @param exportedBothDifferences the exportedBothDifferences to set + */ + public void setExportedBothDifferences(boolean exportedBothDifferences) + { + this.exportedBothDifferences = exportedBothDifferences; + } + public void parse (String[] args) throws Exception { CommandLineParser parser = new DefaultParser(); if (args.length <=1){ @@ -62,6 +79,12 @@ public void parse (String[] args) throws Exception { logger.debug("CSV delimiter is " + getDelimiter()); } + if (line.hasOption('b')) { + this.setExportedBothDifferences(true); + logger.debug("Diffed export will have both different lines"); + } + + //validations } @@ -107,6 +130,7 @@ private static Options getCMdOptions() { options.addOption( Option.builder("o").required(true).hasArg(true).argName("URL of CSV file").longOpt("old-file").build()); options.addOption( Option.builder("n").required(true).hasArg(true).argName("URL of CSV file").longOpt("new-file").build()); options.addOption( Option.builder("d").hasArg(true).argName("delimiter in CSV file").longOpt("csv-delimiter").build()); + options.addOption( Option.builder("b").argName("both differences output in CSV file").longOpt("output-both-diff").build()); return options; } diff --git a/src/main/java/org/jboss/windup/utils/MainClass.java b/src/main/java/org/jboss/windup/utils/MainClass.java index 45c724d..588cf0f 100644 --- a/src/main/java/org/jboss/windup/utils/MainClass.java +++ b/src/main/java/org/jboss/windup/utils/MainClass.java @@ -41,8 +41,14 @@ public static void main(String[] args) CsvWindupExportLoader loader1 = new CsvWindupExportLoader(new URL(csvCompareOptions.getOldFile()), csvCompareOptions.getDelimiter()); CsvWindupExportLoader loader2 = new CsvWindupExportLoader(new URL(csvCompareOptions.getNewFile()), csvCompareOptions.getDelimiter()); WindupReportComparison reportCmp = new WindupReportComparison(loader1.parseCSV(), loader2.parseCSV()); - List listDiff = reportCmp.compareNewAndOldReports(); - if (listDiff.size()> 0) { + List listDiff = null; + if ( csvCompareOptions.isExportedBothDifferences() ) { + listDiff =reportCmp.compareNewAndOldReportsWithDiffLines(); + } else { + listDiff = reportCmp.compareNewAndOldReports(); + } + + if (listDiff != null && listDiff.size()> 0) { logger.debug(listDiff); (new ExportReportModelToCSV(listDiff)).export(new File("diff.csv")); System.exit(1); diff --git a/src/main/java/org/jboss/windup/utils/WindupReportComparison.java b/src/main/java/org/jboss/windup/utils/WindupReportComparison.java index c2509d2..0851234 100644 --- a/src/main/java/org/jboss/windup/utils/WindupReportComparison.java +++ b/src/main/java/org/jboss/windup/utils/WindupReportComparison.java @@ -44,6 +44,36 @@ public List compareNewAndOldReports() { return result; } + + public List compareNewAndOldReportsWithDiffLines() { + List newReportDiff = new ArrayList<>(); + List oldReportDiff = new ArrayList<>(); + + if (originalReport == null || newReport == null) { + logger.debug("One of the reports is empty"); + return null; + } + + Set intersect = new HashSet<>(originalReport); + intersect.retainAll(newReport); + logger.trace("Intersection has got " + intersect.size()); + + newReportDiff.addAll(newReport); + logger.trace("Result has got " + newReportDiff.size()); + newReportDiff.removeAll(intersect); + logger.trace("Result has got " + newReportDiff.size()); + + oldReportDiff.addAll(originalReport); + logger.trace("Result has got " + oldReportDiff.size()); + oldReportDiff.removeAll(intersect); + logger.trace("Result has got " + oldReportDiff.size()); + + List diffedResult = new ArrayList<>(); + diffedResult.addAll(oldReportDiff); + diffedResult.addAll(newReportDiff); + + return diffedResult; + } public WindupReportComparison(List oldList, List newList) { this.newReport = newList; diff --git a/src/test/java/org/jboss/windup/utils/test/CsvCompareOptionsTest.java b/src/test/java/org/jboss/windup/utils/test/CsvCompareOptionsTest.java index a57fada..700deb1 100644 --- a/src/test/java/org/jboss/windup/utils/test/CsvCompareOptionsTest.java +++ b/src/test/java/org/jboss/windup/utils/test/CsvCompareOptionsTest.java @@ -27,7 +27,7 @@ public class CsvCompareOptionsTest @Test public void testAllArgsParse() { - String[] testArgs = new String[] {"-o","file1.txt","-n","file2.txt", "-d",";"}; + String[] testArgs = new String[] {"-o","file1.txt","-n","file2.txt", "-d",";", "-b"}; CsvCompareOptions ccOptions = new CsvCompareOptions(); try { @@ -43,6 +43,7 @@ public void testAllArgsParse() assertEquals("Delimiter is not set correctly", ';', ccOptions.getDelimiter()); assertEquals("new-file is not set correctly", "file2.txt", ccOptions.getNewFile()); assertEquals("old-file is not set correctly", "file1.txt", ccOptions.getOldFile()); + assertTrue(ccOptions.isExportedBothDifferences()); } diff --git a/src/test/java/org/jboss/windup/utils/test/WindupReportComparisonTest.java b/src/test/java/org/jboss/windup/utils/test/WindupReportComparisonTest.java index 697583d..1c4feaf 100644 --- a/src/test/java/org/jboss/windup/utils/test/WindupReportComparisonTest.java +++ b/src/test/java/org/jboss/windup/utils/test/WindupReportComparisonTest.java @@ -26,10 +26,24 @@ public void testCompareNewAndOldReports() throws Exception List result = cmp.compareNewAndOldReports(); assertNotNull(result); assertEquals(1, result.size()); + assertEquals(new Integer(0),( (ReportModel) result.get(0)).getStoryPoints()); //System.out.println(result); //(new ExportReportModelToCSV(result)).export(new File("result.csv")); } + @Test + public void testCompareNewAndOldReportsWithDiffLines() throws Exception + { + WindupReportComparison cmp = new WindupReportComparison(createList1(), createList2()); + List result = cmp.compareNewAndOldReportsWithDiffLines(); + assertNotNull(result); + assertEquals(2, result.size()); + assertEquals(new Integer(3),( (ReportModel) result.get(0)).getStoryPoints()); + assertEquals(new Integer(0),( (ReportModel) result.get(1)).getStoryPoints()); + //System.out.println(result); + (new ExportReportModelToCSV(result)).export(new File("resultDiffedLines.csv")); + } + @Test public void testLoadAndCompareNewAndOldReports() throws Exception {