diff --git a/src/main/java/com/cys4/sensitivediscoverer/Utils.java b/src/main/java/com/cys4/sensitivediscoverer/Utils.java index 2c879a8..5967c89 100644 --- a/src/main/java/com/cys4/sensitivediscoverer/Utils.java +++ b/src/main/java/com/cys4/sensitivediscoverer/Utils.java @@ -89,7 +89,7 @@ public static void saveToFile(String extensionName, List lines) { * * @param extensionNames the extensions to filter files * @param openFile Set to true if the file should be opened, false if it should be saved - * @return The filename, or null if there was an error + * @return The filename, or empty string if there was an error */ public static String selectFile(List extensionNames, boolean openFile) { JFrame parentFrame = new JFrame(); @@ -190,7 +190,7 @@ public static InputStream getResourceAsStream(String name) { return Utils.class.getClassLoader().getResourceAsStream(name); } - private static void writeLinesToFile(String fileName, List lines) { + public static void writeLinesToFile(String fileName, List lines) { try { PrintWriter pwt = new PrintWriter(fileName, StandardCharsets.UTF_8); lines.forEach(pwt::println); @@ -200,6 +200,15 @@ private static void writeLinesToFile(String fileName, List lines) { } } + private static List readLinesFromFile(String fileName) { + try { + return Files.readAllLines(Path.of(fileName)); + } catch (IOException e) { + e.printStackTrace(); + return null; + } + } + public static void saveListToCSV(String csvFile, List regexEntities) { List lines = new ArrayList<>(); @@ -239,13 +248,9 @@ public static void saveListToJSON(String jsonFile, List regexEntiti public static void openListFromCSV(String csvFile, RegexListContext ctx) { StringBuilder alreadyAddedMsg = new StringBuilder(); - List lines; - try { - lines = Files.readAllLines(Path.of(csvFile)); - } catch (IOException e) { - e.printStackTrace(); - return; - } + + List lines = readLinesFromFile(csvFile); + if (Objects.isNull(lines)) return; //Skip header line if present int startRow = (lines.get(0).contains("\"description\",\"regex\"")) ? 1 : 0; @@ -287,13 +292,9 @@ public static void openListFromCSV(String csvFile, RegexListContext ctx) { public static void openListFromJSON(String jsonFile, RegexListContext ctx) { Gson gson = new Gson(); StringBuilder alreadyAddedMsg = new StringBuilder(); - List lines; - try { - lines = Files.readAllLines(Path.of(jsonFile)); - } catch (IOException e) { - e.printStackTrace(); - return; - } + + List lines = readLinesFromFile(jsonFile); + if (Objects.isNull(lines)) return; Type tArrayListRegexEntity = new TypeToken>() { }.getType(); diff --git a/src/main/java/com/cys4/sensitivediscoverer/tab/LoggerTab.java b/src/main/java/com/cys4/sensitivediscoverer/tab/LoggerTab.java index 2a5a999..08b4cfb 100644 --- a/src/main/java/com/cys4/sensitivediscoverer/tab/LoggerTab.java +++ b/src/main/java/com/cys4/sensitivediscoverer/tab/LoggerTab.java @@ -319,6 +319,9 @@ private JToggleButton createExportLogsButton() { JMenuItem itemToCSV = new JMenuItem(getLocaleString("common-toCSV")); itemToCSV.addActionListener(actionEvent -> { + String csvFile = Utils.selectFile(List.of("CSV"), false); + if (csvFile.isBlank()) return; + java.util.List lines = new ArrayList<>(); lines.add(String.format("\"%s\",\"%s\"", @@ -332,12 +335,15 @@ private JToggleButton createExportLogsButton() { lines.add(String.format("\"%s\",\"%s\"", url, matchEscaped)); } - Utils.saveToFile("csv", lines); + Utils.writeLinesToFile(csvFile, lines); }); menu.add(itemToCSV); JMenuItem itemToJSON = new JMenuItem(getLocaleString("common-toJSON")); itemToJSON.addActionListener(actionEvent -> { + String jsonFile = Utils.selectFile(List.of("JSON"), false); + if (jsonFile.isBlank()) return; + java.util.List lines = new ArrayList<>(); String prop1 = logsTableModel.getColumnNameFormatted(0); @@ -355,7 +361,8 @@ private JToggleButton createExportLogsButton() { Gson gson = builder.create(); Type tListEntries = new TypeToken>() { }.getType(); - Utils.saveToFile("json", List.of(gson.toJson(lines, tListEntries))); + + Utils.writeLinesToFile(jsonFile, List.of(gson.toJson(lines, tListEntries))); }); menu.add(itemToJSON);