added check if letter and build Hashmap counter for existing words

pull/3/head
Daniel Fromm 2025-05-03 01:43:29 +02:00
parent 21546dd91d
commit b0cc3a5ce9
3 changed files with 138 additions and 30 deletions

View File

@ -2,40 +2,100 @@ package domain;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.text.PDFTextStripper;
import javax.swing.*;
import javax.swing.filechooser.FileNameExtensionFilter;
import java.io.File;
import java.awt.*;
import java.io.*;
import java.util.HashMap;
import java.util.Map;
public class FileManager {
File inputFile;
String originalPath;
String goalPath;
public void loadFile() {
try{
public FileManager() {
originalPath = "quelle.pdf";
goalPath = "ziel.txt";
inputFile = null;
}
public OutputStream loadFilePath() {
InputStream in;
OutputStream out = null;
try {
in = new FileInputStream(originalPath);
out = new FileOutputStream(goalPath);
byte[] buffer = new byte[1024];
int gelesen;
while ((gelesen = in.read(buffer)) > -1) {
out.write(buffer, 0, gelesen);
}
in.close();
out.close();
return out;
}
catch (IOException e) {
e.printStackTrace();
}
return out;
}
public File loadFileGUI() {
try {
JFileChooser fileChooser = new JFileChooser();
fileChooser.setFileFilter(new FileNameExtensionFilter("PDF Files", "pdf"));
int result = fileChooser.showOpenDialog(null);
if (result == JFileChooser.APPROVE_OPTION) {
File selectedFile = fileChooser.getSelectedFile();
System.out.println("Ausgewählte Datei: " + selectedFile.getAbsolutePath());
inputFile = fileChooser.getSelectedFile();
}
return inputFile;
} catch (HeadlessException e) {
throw new RuntimeException(e);
}
}
try (PDDocument document = PDDocument.load(selectedFile)) {
PDFTextStripper pdfStripper = new PDFTextStripper();
String text = pdfStripper.getText(document);
String regex = "[,\\s\\.:/]";
String[] words = text.split(regex);
for(String word : words) {
System.out.println(word);
public boolean processFile(File inputFile){
boolean success = false;
try {
PDDocument document = null;
HashMap<String, Integer> filteredWords = new HashMap<>();
if(inputFile != null) {
document = PDDocument.load(inputFile);
PDFTextStripper pdfStripper = new PDFTextStripper();
String text = pdfStripper.getText(document);
String splittedText = "[,\\s\\.:/!§$%&/()=?+*~#.;_<>^°]";
String[] textWords = text.split(splittedText);
for(String word : textWords){
// if(Character.isLetter(word.charAt(0)) && Character.isLetter((word.charAt(word.length() - 1)))) {
if (filteredWords.containsKey(word)) {
filteredWords.compute(word, (k, counter) -> counter + 1);
}
// }
else {
filteredWords.put(word, 0);
}
}
for(Map.Entry e : filteredWords.entrySet()){
System.out.println(e.getKey() + " = " + e.getValue());
}
if (document != null) {
document.close();
}
}
else {
System.out.println("Dateiauswahl abgebrochen.");
}
} catch (Exception e) {
success = true;
} catch (Exception e){
e.printStackTrace();
}
return success;
}
public void saveFile(){}

View File

@ -1,4 +1,30 @@
package facade;
import domain.FileManager;
import domain.PictureManager;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.OutputStream;
public class WordCloudManager {
FileManager fileManager;
PictureManager pictureManager;
public WordCloudManager() {
fileManager = new FileManager();
pictureManager = new PictureManager();
}
public boolean loadFileGUI() {
boolean success = false;
File inputFile = fileManager.loadFileGUI();
success = fileManager.processFile(inputFile);
return success;
}
public void loadFilePath() {
OutputStream inputFile = fileManager.loadFilePath();
// fileManager.processFile(null, inputFile);
}
}

View File

@ -1,30 +1,52 @@
package tui;
import domain.FileManager;
import facade.WordCloudManager;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Scanner;
public class TUI {
boolean isRunning;
public TUI(){
isRunning = true;
tui();
}
public void tui() {
Scanner scan = new Scanner(System.in);
int option = scan.nextInt();
while(isRunning) {
System.out.println("Welcome to Word Cloud.\nMenu:\n\n(0) Load File from main path\n(1) Load File with Gui" +
"\n(2) Save File\n(3) Show Picture\n(4) Exit");
int option = scan.nextInt();
WordCloudManager wcm = new WordCloudManager();
switch (option) {
case (0):
//Load File
FileManager fileManager = new FileManager();
fileManager.loadFile();
case (1):
//Save File
case (2):
//Show Picture
case (3):
//Exit
switch (option) {
case (0):
//Load File Path
wcm.loadFilePath();
break;
case (1):
//Load File GUI
if(wcm.loadFileGUI()) {
System.out.println("File loaded successful!\n");
}
break;
case (2):
//Save Picture
break;
case (3):
//Show Picture
break;
case (4):
//Exit
isRunning = false;
System.out.println("Close Program!");
break;
}
}
scan.close();
}
}