Search in sources :

Example 1 with ComparisonResultType

use of com.amazon.tools.comparisonReport.ComparisonResultType in project ion-java by amzn.

the class IonJavaCli method compareFiles.

// 
// 
// functions for comparing
// 
// 
private static void compareFiles(IonWriter ionWriterForOutput, IonWriter ionWriterForErrorReport, CommandArgs args, ComparisonType comparisonType) throws IOException {
    List<String> files = args.getInputFiles();
    CompareContext compareContext = new CompareContext(null, null);
    compareContext.setType(args.getComparisonType());
    for (String path : files) {
        for (String compareToPath : files) {
            compareContext.reset(path, compareToPath);
            try (InputStream inputFirst = new BufferedInputStream(new FileInputStream(path));
                IonReader ionReaderFirst = IonReaderBuilder.standard().build(inputFirst);
                InputStream inputSecond = new BufferedInputStream(new FileInputStream(compareToPath));
                IonReader ionReaderSecond = IonReaderBuilder.standard().build(inputSecond)) {
                if (comparisonType == ComparisonType.BASIC) {
                    if (path.equals(compareToPath)) {
                        continue;
                    }
                }
                ReadContext readContextFirst = new ReadContext(new ArrayList<>());
                ReadContext readContextSecond = new ReadContext(new ArrayList<>());
                getEventStream(ionReaderFirst, CommandType.COMPARE, readContextFirst);
                getEventStream(ionReaderSecond, CommandType.COMPARE, readContextSecond);
                compareContext.setEventStreamFirst(readContextFirst.getEventStream());
                compareContext.setEventStreamSecond(readContextSecond.getEventStream());
                if (comparisonType != ComparisonType.BASIC) {
                    if (compareEquivs(compareContext) ^ (comparisonType == ComparisonType.EQUIVS || comparisonType == ComparisonType.EQUIVS_TIMELINE)) {
                        ComparisonResultType type = comparisonType == ComparisonType.NON_EQUIVS ? ComparisonResultType.EQUAL : ComparisonResultType.NOT_EQUAL;
                        writeReport(compareContext, ionWriterForOutput, type);
                    }
                } else {
                    if (!compare(compareContext, 0, readContextFirst.getEventStream().size() - 1, 0, readContextSecond.getEventStream().size() - 1)) {
                        writeReport(compareContext, ionWriterForOutput, ComparisonResultType.NOT_EQUAL);
                    }
                }
            } catch (Exception e) {
                new ErrorDescription(ErrorType.STATE, e.getMessage(), path + ';' + compareToPath, -1).writeOutput(ionWriterForErrorReport);
                System.exit(IO_ERROR_EXIT_CODE);
            }
        }
    }
}
Also used : ErrorDescription(com.amazon.tools.errorReport.ErrorDescription) BufferedInputStream(java.io.BufferedInputStream) BufferedInputStream(java.io.BufferedInputStream) FileInputStream(java.io.FileInputStream) InputStream(java.io.InputStream) IonReader(com.amazon.ion.IonReader) FileInputStream(java.io.FileInputStream) IOException(java.io.IOException) IonException(com.amazon.ion.IonException) CmdLineException(org.kohsuke.args4j.CmdLineException) ComparisonResultType(com.amazon.tools.comparisonReport.ComparisonResultType)

Aggregations

IonException (com.amazon.ion.IonException)1 IonReader (com.amazon.ion.IonReader)1 ComparisonResultType (com.amazon.tools.comparisonReport.ComparisonResultType)1 ErrorDescription (com.amazon.tools.errorReport.ErrorDescription)1 BufferedInputStream (java.io.BufferedInputStream)1 FileInputStream (java.io.FileInputStream)1 IOException (java.io.IOException)1 InputStream (java.io.InputStream)1 CmdLineException (org.kohsuke.args4j.CmdLineException)1