From d18d907127f28bbce216bc005d3f3d1614820c0f Mon Sep 17 00:00:00 2001 From: simonsymhoven Date: Sun, 11 Sep 2022 11:05:19 +0200 Subject: [PATCH 1/2] add `csv` file support --- etc/result.csv | 3 ++ pom.xml | 7 +++- .../plugins/reporter/model/Result.java | 14 ++++--- .../plugins/reporter/model/ResultParser.java | 41 ++++++++++++++++--- 4 files changed, 53 insertions(+), 12 deletions(-) create mode 100644 etc/result.csv diff --git a/etc/result.csv b/etc/result.csv new file mode 100644 index 0000000..81b325f --- /dev/null +++ b/etc/result.csv @@ -0,0 +1,3 @@ +id,name,incorrect,manually,accurate +aktie,Aktie,3441,348,5199 +derivat,Derivat,593,9028,1008 \ No newline at end of file diff --git a/pom.xml b/pom.xml index 6119fc8..cfc5511 100644 --- a/pom.xml +++ b/pom.xml @@ -53,7 +53,7 @@ 5.2.0-3 1.28.0-2 1.14.1 - 2.13.3 + 2.13.4 @@ -109,6 +109,11 @@ everit-json-schema ${everit-json-schema.version} + + com.fasterxml.jackson.dataformat + jackson-dataformat-csv + ${jackson-dataformat.version} + diff --git a/src/main/java/io/jenkins/plugins/reporter/model/Result.java b/src/main/java/io/jenkins/plugins/reporter/model/Result.java index 97e5c29..da78632 100644 --- a/src/main/java/io/jenkins/plugins/reporter/model/Result.java +++ b/src/main/java/io/jenkins/plugins/reporter/model/Result.java @@ -1,6 +1,7 @@ package io.jenkins.plugins.reporter.model; import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; @@ -17,15 +18,12 @@ * * @author Simon Symhoven */ +@JsonIgnoreProperties(ignoreUnknown = true) public class Result implements Serializable { private static final long serialVersionUID = 7878818807240640969L; private static final String DEFAULT_COLOR = "#9E9E9E"; - public void setName(String name) { - this.name = name; - } - @JsonProperty(value = "id", required = true) private String id = String.valueOf(hashCode()); @@ -36,7 +34,7 @@ public void setName(String name) { @JsonInclude(JsonInclude.Include.NON_NULL) private List items; - @JsonProperty(value = "colors", required = true) + @JsonProperty(value = "colors") @JsonInclude(JsonInclude.Include.NON_NULL) private Map colors; @@ -51,7 +49,11 @@ public void setId(String id) { public String getName() { return name; } - + + public void setName(String name) { + this.name = name; + } + public List getItems() { return items; } diff --git a/src/main/java/io/jenkins/plugins/reporter/model/ResultParser.java b/src/main/java/io/jenkins/plugins/reporter/model/ResultParser.java index 33ea4d5..9d72c60 100644 --- a/src/main/java/io/jenkins/plugins/reporter/model/ResultParser.java +++ b/src/main/java/io/jenkins/plugins/reporter/model/ResultParser.java @@ -1,6 +1,10 @@ package io.jenkins.plugins.reporter.model; +import com.fasterxml.jackson.databind.MappingIterator; import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.dataformat.csv.CsvFactory; +import com.fasterxml.jackson.dataformat.csv.CsvMapper; +import com.fasterxml.jackson.dataformat.csv.CsvSchema; import com.fasterxml.jackson.dataformat.xml.XmlFactory; import com.fasterxml.jackson.dataformat.yaml.YAMLFactory; import edu.hm.hafner.echarts.JacksonFacade; @@ -13,11 +17,8 @@ import org.json.JSONObject; import org.json.JSONTokener; -import java.io.File; -import java.io.IOException; -import java.io.InputStream; -import java.util.Locale; -import java.util.Optional; +import java.io.*; +import java.util.*; public class ResultParser { @@ -42,6 +43,36 @@ public Optional parseResult(File file) throws IOException { case "json": json = FileUtils.readFileToString(file, "UTF-8"); break; + case "csv": + CsvMapper mapper = new CsvMapper(); + CsvSchema csvSchema = mapper.typedSchemaFor(Map.class).withHeader(); + + MappingIterator> it = mapper.readerFor(Map.class) + .with(csvSchema.withColumnSeparator(',')) + .readValues(file); + + Result result = new Result(); + result.setId(String.valueOf(file.getName().hashCode())); + result.setName(FilenameUtils.removeExtension(file.getName())); + List items = new ArrayList<>(); + + while (it.hasNextValue()) { + Map row = it.nextValue(); + Item item = new Item(); + item.setId(row.get("id")); + item.setName(row.get("name")); + LinkedHashMap res = row.keySet() + .stream().filter(key -> !key.equals("id") && !key.equals("name")) + .collect( + LinkedHashMap::new, + (map, key) -> map.put(key, Integer.parseInt(row.get(key))), + Map::putAll); + item.setResult(res); + items.add(item); + } + + result.setItems(items); + json = jsonWriter.writeValueAsString(result); default: return Optional.empty(); } From 39c6f16fdaf38ab0d816eae68bd8f7c8995f2786 Mon Sep 17 00:00:00 2001 From: simonsymhoven Date: Sun, 11 Sep 2022 11:18:37 +0200 Subject: [PATCH 2/2] finsihed --- src/main/java/io/jenkins/plugins/reporter/model/Result.java | 1 - .../java/io/jenkins/plugins/reporter/model/ResultParser.java | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/io/jenkins/plugins/reporter/model/Result.java b/src/main/java/io/jenkins/plugins/reporter/model/Result.java index da78632..eb6ed46 100644 --- a/src/main/java/io/jenkins/plugins/reporter/model/Result.java +++ b/src/main/java/io/jenkins/plugins/reporter/model/Result.java @@ -18,7 +18,6 @@ * * @author Simon Symhoven */ -@JsonIgnoreProperties(ignoreUnknown = true) public class Result implements Serializable { private static final long serialVersionUID = 7878818807240640969L; diff --git a/src/main/java/io/jenkins/plugins/reporter/model/ResultParser.java b/src/main/java/io/jenkins/plugins/reporter/model/ResultParser.java index 9d72c60..87cde18 100644 --- a/src/main/java/io/jenkins/plugins/reporter/model/ResultParser.java +++ b/src/main/java/io/jenkins/plugins/reporter/model/ResultParser.java @@ -73,6 +73,7 @@ public Optional parseResult(File file) throws IOException { result.setItems(items); json = jsonWriter.writeValueAsString(result); + break; default: return Optional.empty(); }