From 5a7cf62d183b2817610233ac72097793c2836476 Mon Sep 17 00:00:00 2001 From: Marcin Hutek Date: Sat, 9 Dec 2023 13:26:32 +0100 Subject: [PATCH] saveToJson, saveToXml prepared and PdfConverting moved to weatherForecast class so all of the methods stay under one class --- pom.xml | 7 +++- results.json | 1 + results.pdf | Bin 982 -> 995 bytes results.xml | 5 +++ src/main/java/model/ConvertResultPdf.java | 35 ++-------------- src/main/java/model/weatherForecast.java | 46 ++++++++++++++++------ src/main/java/org/example/Main.java | 43 ++++++++++---------- temporary_file.txt | 18 +++++++++ 8 files changed, 91 insertions(+), 64 deletions(-) create mode 100644 results.json create mode 100644 results.xml diff --git a/pom.xml b/pom.xml index afd25a1..9837588 100644 --- a/pom.xml +++ b/pom.xml @@ -27,7 +27,7 @@ com.fasterxml.jackson.core jackson-databind - 2.9.8 + 2.13.1 com.itextpdf @@ -57,5 +57,10 @@ commons-io 2.11.0 + + com.fasterxml.jackson.dataformat + jackson-dataformat-xml + 2.13.1 + \ No newline at end of file diff --git a/results.json b/results.json new file mode 100644 index 0000000..57a673f --- /dev/null +++ b/results.json @@ -0,0 +1 @@ +[{"cityName":"berlin","description":"overcast clouds","temperature":277.98,"pressure":999,"humidity":91},{"cityName":"tokyo","description":"clear sky","temperature":287.08,"pressure":1018,"humidity":60},{"cityName":"warsaw","description":"light snow","temperature":272.62,"pressure":1013,"humidity":89}] \ No newline at end of file diff --git a/results.pdf b/results.pdf index fb3db0207c7d1b55d7a57227713ed6b0e1e4b499..91d31ed7317873b28e439d8640b0e9dee8d72f7c 100644 GIT binary patch delta 401 zcmcb{{+NA&QoWghzFTHaNotY4TTWt0s!M8eeoCsHU2#cKYGN)|#hkb2_i`OF5Mg~_ z>t86ou<7WMYeL3cyLM=#X!9xh&er~RTt&8~`f}h2;f{2x!{&27E4h1?i55gP=5Vym z`M5OaJWmAUCe@k8K8P*Q&AQr~{j;N^?&cc9IO{n~ea#K(W%gzb!4@jH27goLaBVjJ z`c!YhgWtZ9YA>JkeDB^IE~>hCit60C)j5w&REb_)=rPM?qROBBf46Q|_so03JY)C1 za~m(uV^p^^G&V9dG|)CMR5vhC*VOmTPjLbIMZ?9)$iT?h(8vIyVDbzm3no*O$(NYa z>`aUl3_w63Pk{@}FfcH}B4%P~jG@ld*kZC7v$<1hN}^G+g{6hDg|R`3p+$x8f|n_)Ii(7 zP~E^lT~psTKg9*;d<_>XBLgF2Ln8x-g2_vnESO9TC*NmMvoo?(FaQCCJOwT=!@$4@ ziEX + + vancouverovercast clouds275.68102692 + chicagomist285.39100192 + \ No newline at end of file diff --git a/src/main/java/model/ConvertResultPdf.java b/src/main/java/model/ConvertResultPdf.java index 29da69e..5c7b924 100644 --- a/src/main/java/model/ConvertResultPdf.java +++ b/src/main/java/model/ConvertResultPdf.java @@ -1,4 +1,5 @@ package model; +import com.fasterxml.jackson.databind.ObjectMapper; import com.itextpdf.text.Document; import com.itextpdf.text.Paragraph; import com.itextpdf.text.pdf.PdfWriter; @@ -7,11 +8,13 @@ import java.io.BufferedReader; import java.io.FileOutputStream; import java.io.FileReader; import java.io.IOException; +import java.util.List; public class ConvertResultPdf { private String inputFile; private String outputFile; + public ConvertResultPdf(String inputFile, String outputFile) { this.inputFile = inputFile; this.outputFile = outputFile; @@ -35,34 +38,4 @@ public class ConvertResultPdf { e.printStackTrace(); } } -// public void convertToJson() { -// try { -// String txtData = new String(Files.readAllBytes(Paths.get(inputFile))); -// String[] lines = txtData.split("\n"); -// -// String cityName = lines[0].substring("city: ".length()).trim(); -// String description = lines[1].substring("description: ".length()).trim(); -//// double temperature = Double.parseDouble(lines[2].substring("temperature: ".length()).trim() -//// .replace(",", ".")); -// double temperature = Double.parseDouble(lines[2].replaceAll("[^\\d.,]", "").replace(",", ".")); -// int pressure = Integer.parseInt(lines[3].substring("pressure: ".length()).trim().split(" ")[0]); -// int humidity = Integer.parseInt(lines[4].substring("humidity: ".length()).trim().split(" ")[0]); -// -// ObjectMapper objectMapper = new ObjectMapper(); -// ArrayNode jsonArray = objectMapper.createArrayNode(); -// ObjectNode cityNode = JsonNodeFactory.instance.objectNode(); -// -// cityNode.put("name", cityName); -// cityNode.put("description", description); -// cityNode.put("temperature", temperature); -// cityNode.put("pressure", pressure); -// cityNode.put("humidity", humidity); -// -// jsonArray.add(cityNode); -// -// objectMapper.writerWithDefaultPrettyPrinter().writeValue(new File(outputFile), jsonArray); -// } catch (IOException e) { -// e.printStackTrace(); -// } -// } -} +} \ No newline at end of file diff --git a/src/main/java/model/weatherForecast.java b/src/main/java/model/weatherForecast.java index 03dcfa3..7bf5eb9 100644 --- a/src/main/java/model/weatherForecast.java +++ b/src/main/java/model/weatherForecast.java @@ -1,9 +1,18 @@ package model; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.dataformat.xml.XmlMapper; +import com.itextpdf.text.Document; +import com.itextpdf.text.Paragraph; +import com.itextpdf.text.pdf.PdfWriter; + +import java.io.*; import java.util.ArrayList; import java.util.List; - +import java.io.BufferedReader; +import java.io.FileOutputStream; +import java.io.FileReader; public class weatherForecast { public static final List allEntries = new ArrayList<>(); @@ -36,18 +45,33 @@ public class weatherForecast { return weatherForecastString; } + public static void saveToJson(String outputFile) throws IOException { + ObjectMapper mapper = new ObjectMapper(); + mapper.writeValue(new File(outputFile), allEntries); + } + public static void saveToXml(String outputFile) throws IOException { + XmlMapper xmlMapper = new XmlMapper(); + xmlMapper.writeValue(new File(outputFile), allEntries); + } -// public static void saveToJson() throws IOException { -// File jsonFile = new File(generateFileName(".json")); -// ObjectMapper mapper = new ObjectMapper(); -// mapper.writeValue(jsonFile, allEntries); -// } + public static void convertToPdf(String inputFile, String outputFile) { + try (BufferedReader br = new BufferedReader(new FileReader(inputFile))) { + Document document = new Document(); + PdfWriter.getInstance(document, new FileOutputStream(outputFile)); + document.open(); -// public static void saveToXml() throws IOException { -// File xmlFile = new File(generateFileName(".xml")); -// XmlMapper mapper = new XmlMapper(); -// mapper.writeValue(xmlFile, allEntries); -// } + String line; + while ((line = br.readLine()) != null) { + document.add(new Paragraph(line)); + } + + document.close(); + } catch (IOException e) { + e.printStackTrace(); + } catch (Exception e) { + e.printStackTrace(); + } + } public static List getAllEntries() { return new ArrayList<>(allEntries); diff --git a/src/main/java/org/example/Main.java b/src/main/java/org/example/Main.java index 36a9648..b1382c1 100644 --- a/src/main/java/org/example/Main.java +++ b/src/main/java/org/example/Main.java @@ -74,33 +74,34 @@ public class Main { System.out.println(forecastString); // String forecastString = weatherString.prepareForecast(inputCity, response); // System.out.println(forecastString); -// temporaryFile.addToFile(forecastString); + temporaryFile.addToFile(forecastString); + } else { System.out.println("Podanego miasta nie ma na liscie."); } -// } else if (Objects.equals(input, "z")) { -// System.out.println("W jakim formacie chcesz zapisac wyniki?\n pdf/json/xml"); -// String whichFormat = scanner.nextLine().toLowerCase(); -// if (Objects.equals(whichFormat, "pdf")) { -// String outputFile = "results.pdf"; + } else if (Objects.equals(input, "z")) { + System.out.println("W jakim formacie chcesz zapisac wyniki?\n pdf/json/xml"); + String whichFormat = scanner.nextLine().toLowerCase(); + if (Objects.equals(whichFormat, "pdf")) { + String outputFile = "results.pdf"; // ConvertResultPdf convertResult = new ConvertResultPdf(temporaryFile.FILE_NAME, // "results.pdf"); // convertResult.convertToPdf(); -// } else if (Objects.equals(whichFormat, "json")) { -// String outputFile = "results.json"; -// ConvertResultPdf convertResult = new ConvertResultPdf(temporaryFile.FILE_NAME, -// "results.json"); -//// convertResult.convertToJson(); -// } else if (Objects.equals(whichFormat, "xml")) { -// String outputFile = "results.xml"; -// ConvertResultPdf convertResult = new ConvertResultPdf(temporaryFile.FILE_NAME, -// "results.xml"); -//// convertResult.convertToXml(); -// } else { -// System.out.println("Wprowadz poprawna opcje."); -// } -// System.out.println("Program zakonczyl dzialanie."); -// break; + + weatherForecast.convertToPdf(temporaryFile.FILE_NAME, outputFile); + + } else if (Objects.equals(whichFormat, "json")) { + String outputFile = "results.json"; + weatherForecast.saveToJson(outputFile); + } else if (Objects.equals(whichFormat, "xml")) { + String outputFile = "results.xml"; + weatherForecast.saveToXml(outputFile); + } else { + System.out.println("Wprowadz poprawna opcje."); + continue; + } + System.out.println("Program zakonczyl dzialanie."); + break; } else if (Objects.equals(input,"x")) { System.out.println("Program zakonczyl dzialanie."); break; diff --git a/temporary_file.txt b/temporary_file.txt index e69de29..8c2b575 100644 --- a/temporary_file.txt +++ b/temporary_file.txt @@ -0,0 +1,18 @@ +city: chicago +description: light rain +temperature[K]: 285,44 +pressure[hPa]: 1001 +humidity[%]: 92 +-------------------- +city: chicago +description: light rain +temperature[K]: 285,44 +pressure[hPa]: 1001 +humidity[%]: 92 +-------------------- +city: chicago +description: light rain +temperature[K]: 285,44 +pressure[hPa]: 1001 +humidity[%]: 92 +--------------------