From f50aa92a55d93efcf80932a28779d3516a68dff0 Mon Sep 17 00:00:00 2001 From: Tim Lee Date: Mon, 20 Feb 2023 23:41:18 -0500 Subject: [PATCH] Add prefix to more clearly identify mismatched data and update sample output --- SampleData/output.csv | Bin 27268 -> 27286 bytes SampleData/output.tsv | Bin 27268 -> 27286 bytes build.gradle | 2 +- .../ltimothy/fclab/data/QualtricsSurvey.java | 22 ++++++++++-------- 4 files changed, 13 insertions(+), 11 deletions(-) diff --git a/SampleData/output.csv b/SampleData/output.csv index f94210e9abd0f3ae63f7e7916d062f1402fdaee7..4fe46962350e235bb5db07697d3ffe98379aae9f 100644 GIT binary patch delta 62 zcmZp<$~f&R7&S delta 34 scmV+-0NwwV)d7Un0kEhOv#t}~L6hDo3bUM5VhRB>ld%#Tvmju03Jq@!(EtDd diff --git a/SampleData/output.tsv b/SampleData/output.tsv index f597be24f15e27bd306bf02f66cbf29c8291e851..007470aa01c771e7120ee6d7c85c705c8a2dc935 100644 GIT binary patch delta 62 zcmZp<$~f&R7&S delta 34 scmV+-0NwwV)d7Un0kEhOv#t}~L6hDo3bUM5VhRB>ld%#Tvmju03Jq@!(EtDd diff --git a/build.gradle b/build.gradle index 9ffd2d6..8b53f9e 100644 --- a/build.gradle +++ b/build.gradle @@ -7,7 +7,7 @@ plugins { } group 'org.ltimothy.fclab' -version '1.0-SNAPSHOT' +version '0.52-SNAPSHOT' mainClassName = 'org.ltimothy.fclab.DoubleEntry' diff --git a/src/main/java/org/ltimothy/fclab/data/QualtricsSurvey.java b/src/main/java/org/ltimothy/fclab/data/QualtricsSurvey.java index fcfc52c..a16705e 100644 --- a/src/main/java/org/ltimothy/fclab/data/QualtricsSurvey.java +++ b/src/main/java/org/ltimothy/fclab/data/QualtricsSurvey.java @@ -4,19 +4,15 @@ import com.opencsv.CSVReader; import com.opencsv.CSVReaderBuilder; import com.opencsv.ICSVParser; -import com.opencsv.bean.CsvToBeanBuilder; -import com.opencsv.exceptions.CsvException; import com.opencsv.exceptions.CsvValidationException; import lombok.NonNull; import lombok.extern.slf4j.Slf4j; import org.ltimothy.fclab.gui.DefaultGUI; -import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; import java.nio.charset.Charset; -import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; @@ -28,6 +24,7 @@ public class QualtricsSurvey { private static final int QUALTRICS_PRIMARY_HEADER_INDEX = 0; private static final int QUALTRICS_HEADERS_TOTAL_LENGTH = 3; private static final String NO_MISMATCH_TEXT = "OK"; + private static final String MISMATCH_PREFIX = "!= "; private final int participantIdColumn; private final int firstRelevantColumn; @@ -66,24 +63,29 @@ private void processFile(@NonNull File file) throws IllegalStateException { final String originalEntryParticipantId = participantId.substring(doubleEntryIdPrefix.length()); if (!participantId.startsWith(doubleEntryIdPrefix)) { if (participantIdToRawData.containsKey(doubleEntryParticipantId)){ - final String[] originalEntryRawData = participantIdToRawData.get(participantId); + final int rawDataLength = rawDataHeaders.get(QUALTRICS_PRIMARY_HEADER_INDEX).length; + final String[] originalEntryData = + Arrays.copyOf(participantIdToRawData.get(participantId), rawDataLength); final String[] doubleEntryData = - Arrays.copyOf(participantIdToRawData.get(doubleEntryParticipantId), - originalEntryRawData.length); + Arrays.copyOf(participantIdToRawData.get(doubleEntryParticipantId), rawDataLength); printAnalysisHeader(participantId); - for (int i = firstRelevantColumn; i < originalEntryRawData.length; i++) { - final String originalValue = originalEntryRawData[i]; + for (int i = firstRelevantColumn; i < originalEntryData.length; i++) { + if (i == participantIdColumn) { + continue; + } + final String originalValue = originalEntryData[i]; final String doubleEntryValue = doubleEntryData[i]; if (!originalValue.trim().equalsIgnoreCase(doubleEntryValue.trim())) { printMismatch(rawDataHeaders.get(QUALTRICS_PRIMARY_HEADER_INDEX)[i], originalValue, doubleEntryValue); + doubleEntryData[i] = MISMATCH_PREFIX.concat(doubleEntryData[i]); } else { doubleEntryData[i] = NO_MISMATCH_TEXT; } } - processedData.add(originalEntryRawData); + processedData.add(originalEntryData); processedData.add(doubleEntryData); } else { processedData.add(participantIdToRawData.get(participantId));