From bfc9a1e43ce2329e00ef2e597aa8dc5c9c020494 Mon Sep 17 00:00:00 2001 From: Daniel Fromm <3015351@stud.hs-mannheim.de> Date: Sun, 11 May 2025 21:01:44 +0200 Subject: [PATCH 1/2] implemented html create and save functioning --- src/main/java/domain/WordCloudCreator.java | 59 ++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 src/main/java/domain/WordCloudCreator.java diff --git a/src/main/java/domain/WordCloudCreator.java b/src/main/java/domain/WordCloudCreator.java new file mode 100644 index 0000000..87cf955 --- /dev/null +++ b/src/main/java/domain/WordCloudCreator.java @@ -0,0 +1,59 @@ +package domain; + +import java.io.*; +import java.util.Map; + +public class WordCloudCreator { + + //Ki erstellte Methode aus Zeitgründen und Krankheitsgründen + public void insertWordsIntoTemplate(Map wordMap) { + File templateFile = new File("wordcloud.html"); // Template in project directory + File outputFile = new File("output.html"); // Output in project directory + + if (!templateFile.exists()) { + throw new RuntimeException("Template file 'wordcloud.html' not found in project directory."); + } + + try (BufferedReader reader = new BufferedReader(new FileReader(templateFile)); + BufferedWriter writer = new BufferedWriter(new FileWriter(outputFile))) { + + StringBuilder htmlContent = new StringBuilder(); + String line; + + // Read the HTML template + while ((line = reader.readLine()) != null) { + htmlContent.append(line).append("\n"); + } + + // Generate clickable word entries with font size based on frequency + StringBuilder wordEntries = new StringBuilder(); + int id = 1; + for (Map.Entry entry : wordMap.entrySet()) { + String word = entry.getKey(); + int frequency = entry.getValue(); + int fontSize = (int) ((float) 12 + frequency * 1.5); // Example: Base size 10px, increase by 2px per frequency + wordEntries.append(String.format( + "" + + "%s" + + "\n", + id++, fontSize, word, word + )); + } + + // Replace placeholder inside the div + String updatedHtml = htmlContent.toString(); + if (updatedHtml.contains("")) { + updatedHtml = updatedHtml.replace("", wordEntries); + } else { + throw new RuntimeException("Placeholder for tags not found in the template."); + } + + // Write the updated HTML to the output file + writer.write(updatedHtml); + System.out.println("Output file 'output.html' created successfully!"); + + } catch (IOException e) { + throw new RuntimeException("Error processing HTML template", e); + } + } +} \ No newline at end of file -- 2.43.0 From 8aab5ca9930c7fa4daa25b9b9b23bd901afff46c Mon Sep 17 00:00:00 2001 From: Daniel Fromm <3015351@stud.hs-mannheim.de> Date: Sun, 11 May 2025 21:19:00 +0200 Subject: [PATCH 2/2] added comments --- src/main/java/domain/FileLoader.java | 3 ++- src/main/java/domain/TextProcessing.java | 25 +++++++++++----------- src/main/java/domain/WordCloudCreator.java | 2 +- src/main/java/facade/WordCloudManager.java | 16 ++++++-------- src/main/java/tui/Main.java | 1 + src/main/java/tui/TUI.java | 6 ++---- 6 files changed, 25 insertions(+), 28 deletions(-) diff --git a/src/main/java/domain/FileLoader.java b/src/main/java/domain/FileLoader.java index fbde739..4f6f7ac 100644 --- a/src/main/java/domain/FileLoader.java +++ b/src/main/java/domain/FileLoader.java @@ -11,7 +11,7 @@ public class FileLoader { public FileLoader() { this.inputFile = null; } - //KI erstellte Methode + //KI erstellte Methode mit anpassungen public File loadFileGUI() { try { JFileChooser fileChooser = new JFileChooser(); @@ -30,6 +30,7 @@ public class FileLoader { } } + //Methode sucht das Datei Format für spätere Verwendung public String getFileFormat(File file) { String fileName = file.getName(); String fileFormat = fileName.contains(".") ? fileName.substring(fileName.lastIndexOf(".") + 1) : ""; diff --git a/src/main/java/domain/TextProcessing.java b/src/main/java/domain/TextProcessing.java index 133b145..d17e91c 100644 --- a/src/main/java/domain/TextProcessing.java +++ b/src/main/java/domain/TextProcessing.java @@ -23,18 +23,19 @@ public class TextProcessing { private boolean stemming; private int maxWords; - public boolean isStemming() { - return stemming; - } - - public int getMaxWords() { - return maxWords; - } - - public void setStemming(boolean stemming) { - this.stemming = stemming; - } - +// für spätere verwendung mit umfangreichen anpassungen +// public boolean isStemming() { +// return stemming; +// } +// +// public int getMaxWords() { +// return maxWords; +// } +// +// public void setStemming(boolean stemming) { +// this.stemming = stemming; +// } +// public void setMaxWords(int maxWords) { this.maxWords = maxWords; } diff --git a/src/main/java/domain/WordCloudCreator.java b/src/main/java/domain/WordCloudCreator.java index 87cf955..a81336a 100644 --- a/src/main/java/domain/WordCloudCreator.java +++ b/src/main/java/domain/WordCloudCreator.java @@ -5,7 +5,7 @@ import java.util.Map; public class WordCloudCreator { - //Ki erstellte Methode aus Zeitgründen und Krankheitsgründen + //Ki erstellte Methode wegen Zeitgründen und Krankheitsgründen, dennoch anpassungen in großen Maße waren notwendig public void insertWordsIntoTemplate(Map wordMap) { File templateFile = new File("wordcloud.html"); // Template in project directory File outputFile = new File("output.html"); // Output in project directory diff --git a/src/main/java/facade/WordCloudManager.java b/src/main/java/facade/WordCloudManager.java index 540f7a6..aa62d3d 100644 --- a/src/main/java/facade/WordCloudManager.java +++ b/src/main/java/facade/WordCloudManager.java @@ -60,19 +60,17 @@ public class WordCloudManager { System.out.println(stopwordList); } - - public void stemming(String approval) { - if(approval.equals("yes")) { - processing.setStemming(true); - } - } +// für spätere Verwendung mit umfangreichen Änderungen im Code +// public void stemming(String approval) { +// if(approval.equals("yes")) { +// processing.setStemming(true); +// } +// } public void maxWordsInList(int number) { processing.setMaxWords(number); } - - // ab hier noch nicht fertig. public void tokenizingText() { wordMap = (HashMap) processing.tokenizingFile(processing.fileToTextString(filePath, fileFormat) , !stopwordList.isEmpty() ? stopwordList : null); @@ -80,8 +78,6 @@ public class WordCloudManager { } public void cutWordsList() { - - wordMap = (HashMap) processing.maxShowWords(processing.sortList(wordMap)); processing.sortList(wordMap); System.out.println(wordMap.keySet() + "\n" + wordMap.values()); diff --git a/src/main/java/tui/Main.java b/src/main/java/tui/Main.java index 45ee85c..53c6465 100644 --- a/src/main/java/tui/Main.java +++ b/src/main/java/tui/Main.java @@ -1,6 +1,7 @@ package tui; public class Main { + //startet die GUI public static void main(String[]args){ new TUI(); } diff --git a/src/main/java/tui/TUI.java b/src/main/java/tui/TUI.java index d23d052..6f7fa69 100644 --- a/src/main/java/tui/TUI.java +++ b/src/main/java/tui/TUI.java @@ -21,8 +21,6 @@ public class TUI { } public void tui() { - - while(isRunning) { System.out.println("Welcome to Word Cloud.\nType number in the following Menu to access your targeted Option.\nMenu:\n\n(0) Load File\n(1) URL Path" + "\n(2) Exit"); @@ -80,8 +78,8 @@ public class TUI { case(3): // Set Stemming System.out.println("Set Stemming: Input 'yes' or 'no'"); - String stemmingOption = scan.nextLine(); - wcm.stemming(stemmingOption); +// String stemmingOption = scan.nextLine(); +// wcm.stemming(stemmingOption); break; case(4): //Create WordCloud -- 2.43.0