diff --git a/pdb-ui/src/main/java/org/lucares/pdbui/CsvReaderSettings.java b/pdb-ui/src/main/java/org/lucares/pdbui/CsvReaderSettings.java index 29587f9..cdd101a 100644 --- a/pdb-ui/src/main/java/org/lucares/pdbui/CsvReaderSettings.java +++ b/pdb-ui/src/main/java/org/lucares/pdbui/CsvReaderSettings.java @@ -1,6 +1,7 @@ package org.lucares.pdbui; import java.util.Collection; +import java.util.Collections; import java.util.HashMap; import java.util.HashSet; import java.util.List; @@ -18,9 +19,10 @@ public class CsvReaderSettings { private String timeColumn; + private byte comment = '#'; + public CsvReaderSettings() { - separator = ','; - timeColumn = "@timestamp"; + this("@timestamp", (byte) ',', Collections.emptyList()); } private CsvReaderSettings(final String timeColumn, final byte separator, final Collection ignoreColumns) { @@ -65,6 +67,14 @@ public class CsvReaderSettings { this.separator = separator; } + public byte getComment() { + return comment; + } + + public void setComment(final byte comment) { + this.comment = comment; + } + public Set getIgnoreColumnNames() { return ignoreColumnNames; } diff --git a/pdb-ui/src/main/java/org/lucares/pdbui/CsvToEntryTransformer.java b/pdb-ui/src/main/java/org/lucares/pdbui/CsvToEntryTransformer.java index 2d2bf3a..07df387 100644 --- a/pdb-ui/src/main/java/org/lucares/pdbui/CsvToEntryTransformer.java +++ b/pdb-ui/src/main/java/org/lucares/pdbui/CsvToEntryTransformer.java @@ -38,6 +38,7 @@ class CsvToEntryTransformer { final byte newline = '\n'; final byte separator = settings.getSeparator(); + final byte comment = settings.getComment(); final byte[] line = new byte[64 * 1024]; // max line length int offsetInLine = 0; int offsetInBuffer = 0; @@ -64,7 +65,9 @@ class CsvToEntryTransformer { bytesInLine = offsetInLine + length; separatorPositions.add(offsetInLine + i - offsetInBuffer); - if (columns != null) { + if (line[0] == comment) { + // ignore + } else if (columns != null) { final Entry entry = handleCsvLine(columns, line, bytesInLine, separatorPositions, keyTimestamp, keyDuration, dateParser, additionalTags); diff --git a/pdb-ui/src/test/java/org/lucares/pdbui/PdbControllerTest.java b/pdb-ui/src/test/java/org/lucares/pdbui/PdbControllerTest.java index 27c99fb..e9f1c9e 100644 --- a/pdb-ui/src/test/java/org/lucares/pdbui/PdbControllerTest.java +++ b/pdb-ui/src/test/java/org/lucares/pdbui/PdbControllerTest.java @@ -54,7 +54,8 @@ public class PdbControllerTest { final OffsetDateTime dateA = OffsetDateTime.now(); final OffsetDateTime dateB = OffsetDateTime.now(); - final String csv = timeColumn + ",duration,tag," + ignoredColumn + "\n"// + final String csv = "# first line is a comment\n"// + + timeColumn + ",duration,tag," + ignoredColumn + "\n"// + dateA.format(DateTimeFormatter.ISO_ZONED_DATE_TIME) + ",1,tagValue,ignoredValue\n"// + dateB.format(DateTimeFormatter.ISO_ZONED_DATE_TIME) + ",2,tagValue,ignoredValue\n";