From 4876b5b587ba7af23a1730251d8207143b24302c Mon Sep 17 00:00:00 2001 From: denis Date: Fri, 14 Jun 2024 14:14:24 +0200 Subject: [PATCH] =?UTF-8?q?Ordner=20Struktur=20f=C3=BCr=20KUNDEN=20und=20A?= =?UTF-8?q?RTIKEL=20erstellt.=20FIRMENSTAMMDATEN(-CONTROLLER)=20Klasse=20e?= =?UTF-8?q?rstellt.=20MAINCONTROLLER=20angepasst=20und=20in=20MAIN=20einge?= =?UTF-8?q?f=C3=BCgt.=20STARTUPMENUE=20verbessert.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/controller/ArtikelController.java | 27 +- .../FirmenstammdatenController.java | 250 ++++++++++++++++++ .../src/controller/KundenController.java | 25 +- Faktura_Gruppe5/src/controller/Main.java | 2 +- .../src/controller/MainController.java | 14 + .../src/model/Firmenstammdaten.java | 74 ++++++ Faktura_Gruppe5/src/view/StartUpMenue.java | 19 +- 7 files changed, 389 insertions(+), 22 deletions(-) create mode 100644 Faktura_Gruppe5/src/controller/FirmenstammdatenController.java create mode 100644 Faktura_Gruppe5/src/model/Firmenstammdaten.java diff --git a/Faktura_Gruppe5/src/controller/ArtikelController.java b/Faktura_Gruppe5/src/controller/ArtikelController.java index 11925ef..2d236bf 100644 --- a/Faktura_Gruppe5/src/controller/ArtikelController.java +++ b/Faktura_Gruppe5/src/controller/ArtikelController.java @@ -20,9 +20,22 @@ import java.io.IOException; import java.util.Scanner; public class ArtikelController { - + + private String ordnerPfad = "artikel"; + + public ArtikelController() { + File ordner = new File(ordnerPfad); + if (!ordner.exists()) { + if (ordner.mkdir()) { + System.out.println("Der Ordner '" + ordnerPfad + "' wurde erfolgreich erstellt."); + } else { + System.err.println("Der Ordner '" + ordnerPfad + "' konnte nicht erstellt werden."); + } + } + } + // Methode zum Speichern der Artikeldaten im XML-Format - public static void speichereAlsXML(Artikel artikel) { + public void speichereAlsXML(Artikel artikel) { try { DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); @@ -62,7 +75,7 @@ public class ArtikelController { Transformer transformer = transformerFactory.newTransformer(); transformer.setOutputProperty(OutputKeys.INDENT, "yes"); DOMSource source = new DOMSource(doc); - StreamResult result = new StreamResult(new File(Integer.toString(artikel.getArtikelnummer()) + ".xml")); + StreamResult result = new StreamResult(new File(this.ordnerPfad + "/" + Integer.toString(artikel.getArtikelnummer()) + ".xml")); transformer.transform(source, result); System.out.println("Die XML-Datei wurde erfolgreich gespeichert."); @@ -73,9 +86,9 @@ public class ArtikelController { } // Methode zum Auslesen der Artikeldaten aus einer XML-Datei - public static Artikel leseAusXML(int artikelnummer) { + public Artikel leseAusXML(int artikelnummer) { try { - File xmlDatei = new File(Integer.toString(artikelnummer) + ".xml"); + File xmlDatei = new File(this.ordnerPfad + "/" + Integer.toString(artikelnummer) + ".xml"); Artikel artikel = new Artikel(artikelnummer); DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); @@ -108,13 +121,13 @@ public class ArtikelController { } // Methode zum Auslesen der Artikeldaten aus einer XML-Datei und in der Konsole ausgeben - public static void leseUndGibAusXML(Artikel artikel, String dateiPfad) { + public void leseUndGibAusXML(Artikel artikel, String dateiPfad) { leseUndGibAusXML(artikel, dateiPfad); artikel.anzeigen(); } // Methode zur Eingabe der Artikeldaten über die Konsole - public static void eingabeDaten(Artikel artikel, Scanner scanner) { + public void eingabeDaten(Artikel artikel, Scanner scanner) { System.out.print("Einheit: "); artikel.setEinheit(scanner.nextLine()); diff --git a/Faktura_Gruppe5/src/controller/FirmenstammdatenController.java b/Faktura_Gruppe5/src/controller/FirmenstammdatenController.java new file mode 100644 index 0000000..50c2551 --- /dev/null +++ b/Faktura_Gruppe5/src/controller/FirmenstammdatenController.java @@ -0,0 +1,250 @@ +package controller; + +import model.Firmenstammdaten; + +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.parsers.ParserConfigurationException; +import javax.xml.transform.OutputKeys; +import javax.xml.transform.Transformer; +import javax.xml.transform.TransformerException; +import javax.xml.transform.TransformerFactory; +import javax.xml.transform.dom.DOMSource; +import javax.xml.transform.stream.StreamResult; + +import org.w3c.dom.Document; +import org.w3c.dom.Element; +import org.w3c.dom.Node; +import org.w3c.dom.NodeList; +import org.xml.sax.SAXException; + +import java.io.File; +import java.io.IOException; +import java.util.Scanner; + +public class FirmenstammdatenController { + private final String dateiPfad = "firmenstammdaten.xml"; + + // Methode zur Eingabe der Firmendaten über die Konsole + public void eingabeDaten(Firmenstammdaten daten, Scanner scanner) { + System.out.print("Firmenname: "); + daten.setFirmenname(scanner.nextLine()); + + System.out.print("Inhaber: "); + daten.setInhaber(scanner.nextLine()); + + System.out.print("Straße: "); + daten.setStrasse(scanner.nextLine()); + + System.out.print("PLZ: "); + daten.setPlz(scanner.nextLine()); + + System.out.print("Stadt: "); + daten.setStadt(scanner.nextLine()); + + System.out.print("Land: "); + daten.setLand(scanner.nextLine()); + + System.out.print("Telefon: "); + daten.setTelefon(scanner.nextLine()); + + System.out.print("Mobilnummer: "); + daten.setMobilnummer(scanner.nextLine()); + + System.out.print("Telefax: "); + daten.setTelefax(scanner.nextLine()); + + System.out.print("Email: "); + daten.setEmail(scanner.nextLine()); + + System.out.print("Webseite: "); + daten.setWebseite(scanner.nextLine()); + + System.out.print("Umsatzsteuer-ID-Nummer: "); + daten.setUmsatzsteuerIdNummer(scanner.nextLine()); + + System.out.print("Finanzamt: "); + daten.setFinanzamt(scanner.nextLine()); + + System.out.print("Bankname: "); + daten.setBankname(scanner.nextLine()); + + System.out.print("IBAN: "); + daten.setIban(scanner.nextLine()); + + System.out.print("BIC: "); + daten.setBic(scanner.nextLine()); + + System.out.print("Gläubiger-ID: "); + daten.setGlaeubigerID(scanner.nextLine()); + + this.speichereAlsXML(daten); + } + + // Methode zum Speichern der Firmendaten im XML-Format + public void speichereAlsXML(Firmenstammdaten daten) { + try { + DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); + DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); + Document doc = dBuilder.newDocument(); + + // Root-Element + Element rootElement = doc.createElement("Firmenstammdaten"); + doc.appendChild(rootElement); + + // Firmenname-Element + Element firmennameElement = doc.createElement("Firmenname"); + firmennameElement.appendChild(doc.createTextNode(daten.getFirmenname())); + rootElement.appendChild(firmennameElement); + + // Inhaber-Element + Element inhaberElement = doc.createElement("Inhaber"); + inhaberElement.appendChild(doc.createTextNode(daten.getInhaber())); + rootElement.appendChild(inhaberElement); + + // Straße-Element + Element strasseElement = doc.createElement("Strasse"); + strasseElement.appendChild(doc.createTextNode(daten.getStrasse())); + rootElement.appendChild(strasseElement); + + // PLZ-Element + Element plzElement = doc.createElement("PLZ"); + plzElement.appendChild(doc.createTextNode(daten.getPlz())); + rootElement.appendChild(plzElement); + + // Stadt-Element + Element stadtElement = doc.createElement("Stadt"); + stadtElement.appendChild(doc.createTextNode(daten.getStadt())); + rootElement.appendChild(stadtElement); + + // Land-Element + Element landElement = doc.createElement("Land"); + landElement.appendChild(doc.createTextNode(daten.getLand())); + rootElement.appendChild(landElement); + + // Telefon-Element + Element telefonElement = doc.createElement("Telefon"); + telefonElement.appendChild(doc.createTextNode(daten.getTelefon())); + rootElement.appendChild(telefonElement); + + // Mobilnummer-Element + Element mobilnummerElement = doc.createElement("Mobilnummer"); + mobilnummerElement.appendChild(doc.createTextNode(daten.getMobilnummer())); + rootElement.appendChild(mobilnummerElement); + + // Telefax-Element + Element telefaxElement = doc.createElement("Telefax"); + telefaxElement.appendChild(doc.createTextNode(daten.getTelefax())); + rootElement.appendChild(telefaxElement); + + // Email-Element + Element emailElement = doc.createElement("Email"); + emailElement.appendChild(doc.createTextNode(daten.getEmail())); + rootElement.appendChild(emailElement); + + // Webseite-Element + Element webseiteElement = doc.createElement("Webseite"); + webseiteElement.appendChild(doc.createTextNode(daten.getWebseite())); + rootElement.appendChild(webseiteElement); + + // Umsatzsteuer-ID-Nummer-Element + Element umsatzsteuerIdNummerElement = doc.createElement("UmsatzsteuerIdNummer"); + umsatzsteuerIdNummerElement.appendChild(doc.createTextNode(daten.getUmsatzsteuerIdNummer())); + rootElement.appendChild(umsatzsteuerIdNummerElement); + + // Finanzamt-Element + Element finanzamtElement = doc.createElement("Finanzamt"); + finanzamtElement.appendChild(doc.createTextNode(daten.getFinanzamt())); + rootElement.appendChild(finanzamtElement); + + // Bankname-Element + Element banknameElement = doc.createElement("Bankname"); + banknameElement.appendChild(doc.createTextNode(daten.getBankname())); + rootElement.appendChild(banknameElement); + + // IBAN-Element + Element ibanElement = doc.createElement("IBAN"); + ibanElement.appendChild(doc.createTextNode(daten.getIban())); + rootElement.appendChild(ibanElement); + + // BIC-Element + Element bicElement = doc.createElement("BIC"); + bicElement.appendChild(doc.createTextNode(daten.getBic())); + rootElement.appendChild(bicElement); + + // Gläubiger-ID-Element + Element glaeubigerIDElement = doc.createElement("GlaeubigerID"); + glaeubigerIDElement.appendChild(doc.createTextNode(daten.getGlaeubigerID())); + rootElement.appendChild(glaeubigerIDElement); + + // Transformieren und Speichern in Datei + TransformerFactory transformerFactory = TransformerFactory.newInstance(); + Transformer transformer = transformerFactory.newTransformer(); + transformer.setOutputProperty(OutputKeys.INDENT, "yes"); + DOMSource source = new DOMSource(doc); + StreamResult result = new StreamResult(new File(dateiPfad)); + transformer.transform(source, result); + + System.out.println("Die XML-Datei wurde erfolgreich gespeichert."); + + } catch (ParserConfigurationException | TransformerException e) { + e.printStackTrace(); + } + } + + // Methode zum Auslesen der Firmendaten aus einer XML-Datei + public Firmenstammdaten leseAusXML() { + Firmenstammdaten daten = new Firmenstammdaten(); + try { + File xmlDatei = new File(dateiPfad); + DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); + DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); + Document doc = dBuilder.parse(xmlDatei); + doc.getDocumentElement().normalize(); + + NodeList nList = doc.getElementsByTagName("Firmenstammdaten"); + + for (int temp = 0; temp < nList.getLength(); temp++) { + Node nNode = nList.item(temp); + + if (nNode.getNodeType() == Node.ELEMENT_NODE) { + Element eElement = (Element) nNode; + + daten.setFirmenname(eElement.getElementsByTagName("Firmenname").item(0).getTextContent()); + daten.setInhaber(eElement.getElementsByTagName("Inhaber").item(0).getTextContent()); + daten.setStrasse(eElement.getElementsByTagName("Strasse").item(0).getTextContent()); + daten.setPlz(eElement.getElementsByTagName("PLZ").item(0).getTextContent()); + daten.setStadt(eElement.getElementsByTagName("Stadt").item(0).getTextContent()); + daten.setLand(eElement.getElementsByTagName("Land").item(0).getTextContent()); + daten.setTelefon(eElement.getElementsByTagName("Telefon").item(0).getTextContent()); + daten.setMobilnummer(eElement.getElementsByTagName("Mobilnummer").item(0).getTextContent()); + daten.setTelefax(eElement.getElementsByTagName("Telefax").item(0).getTextContent()); + daten.setEmail(eElement.getElementsByTagName("Email").item(0).getTextContent()); + daten.setWebseite(eElement.getElementsByTagName("Webseite").item(0).getTextContent()); + daten.setUmsatzsteuerIdNummer(eElement.getElementsByTagName("UmsatzsteuerIdNummer").item(0).getTextContent()); + daten.setFinanzamt(eElement.getElementsByTagName("Finanzamt").item(0).getTextContent()); + daten.setBankname(eElement.getElementsByTagName("Bankname").item(0).getTextContent()); + daten.setIban(eElement.getElementsByTagName("IBAN").item(0).getTextContent()); + daten.setBic(eElement.getElementsByTagName("BIC").item(0).getTextContent()); + daten.setGlaeubigerID(eElement.getElementsByTagName("GlaeubigerID").item(0).getTextContent()); + } + } + + System.out.println("Die XML-Datei wurde erfolgreich gelesen."); + } catch (ParserConfigurationException | SAXException | IOException e) { + e.printStackTrace(); + } + return daten; + } + + public void checkForCompanyData(Scanner scanner) { + File file = new File(this.dateiPfad); + + if (!file.exists()) { + System.out.println("Das Programm kann noch nicht gestartet werden. Bitte geben Sie zuerst Ihre Firmenstammdaten ein."); + this.eingabeDaten(new Firmenstammdaten(), scanner); + } + + } + +} \ No newline at end of file diff --git a/Faktura_Gruppe5/src/controller/KundenController.java b/Faktura_Gruppe5/src/controller/KundenController.java index c5e0a3d..f9d105d 100644 --- a/Faktura_Gruppe5/src/controller/KundenController.java +++ b/Faktura_Gruppe5/src/controller/KundenController.java @@ -20,9 +20,22 @@ import java.io.IOException; import java.util.Scanner; public class KundenController { + + private String ordnerPfad = "kunde"; + + public KundenController() { + File ordner = new File(ordnerPfad); + if (!ordner.exists()) { + if (ordner.mkdir()) { + System.out.println("Der Ordner '" + ordnerPfad + "' wurde erfolgreich erstellt."); + } else { + System.err.println("Der Ordner '" + ordnerPfad + "' konnte nicht erstellt werden."); + } + } + } // Methode zum Speichern der Kundendaten im XML-Format - public static void speichereAlsXML(Kunde kunde) { + public void speichereAlsXML(Kunde kunde) { try { DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); @@ -72,7 +85,7 @@ public class KundenController { Transformer transformer = transformerFactory.newTransformer(); transformer.setOutputProperty(OutputKeys.INDENT, "yes"); DOMSource source = new DOMSource(doc); - StreamResult result = new StreamResult(new File(Integer.toString(kunde.getKundennummer()) + ".xml")); + StreamResult result = new StreamResult(new File(ordnerPfad + "/" + Integer.toString(kunde.getKundennummer()) + ".xml")); transformer.transform(source, result); System.out.println("Die XML-Datei wurde erfolgreich gespeichert."); @@ -83,9 +96,9 @@ public class KundenController { } // Methode zum Auslesen der Kundendaten aus einer XML-Datei - public static Kunde leseAusXML(int kundennummer) { + public Kunde leseAusXML(int kundennummer) { try { - File xmlDatei = new File(Integer.toString(kundennummer) + ".xml"); + File xmlDatei = new File(ordnerPfad + "/" + Integer.toString(kundennummer) + ".xml"); Kunde kunde = new Kunde(kundennummer); DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); @@ -121,13 +134,13 @@ public class KundenController { } // Methode zum Auslesen der Kundendaten aus einer XML-Datei und in der Konsole ausgeben - public static void leseUndGibAusXML(Kunde kunde, String dateiPfad) { + public void leseUndGibAusXML(Kunde kunde, String dateiPfad) { leseUndGibAusXML(kunde, dateiPfad); kunde.anzeigen(); } // Methode zur Eingabe der Kundendaten über die Konsole - public static void eingabeDaten(Kunde kunde, Scanner scanner) { + public void eingabeDaten(Kunde kunde, Scanner scanner) { System.out.print("Name: "); kunde.setName(scanner.nextLine()); diff --git a/Faktura_Gruppe5/src/controller/Main.java b/Faktura_Gruppe5/src/controller/Main.java index fd726a2..0fd221f 100644 --- a/Faktura_Gruppe5/src/controller/Main.java +++ b/Faktura_Gruppe5/src/controller/Main.java @@ -5,7 +5,7 @@ import view.StartUpMenue; public class Main { public static void main(String[] args) { - new StartUpMenue(null); + new StartUpMenue(new MainController()); } } diff --git a/Faktura_Gruppe5/src/controller/MainController.java b/Faktura_Gruppe5/src/controller/MainController.java index 989730a..c5a315e 100644 --- a/Faktura_Gruppe5/src/controller/MainController.java +++ b/Faktura_Gruppe5/src/controller/MainController.java @@ -5,14 +5,28 @@ import model.Kunde; public class MainController { private KundenController kundenController; + private ArtikelController artikelController; + private FirmenstammdatenController firmenstammdatenController; public MainController() { this.kundenController = new KundenController(); + this.artikelController = new ArtikelController(); + this.firmenstammdatenController = new FirmenstammdatenController(); } public KundenController getKundenController() { return kundenController; } + public ArtikelController getArtikelController() { + return artikelController; + } + + public FirmenstammdatenController getFirmenstammdatenController() { + return this.firmenstammdatenController; + } + + + } diff --git a/Faktura_Gruppe5/src/model/Firmenstammdaten.java b/Faktura_Gruppe5/src/model/Firmenstammdaten.java new file mode 100644 index 0000000..0bfef33 --- /dev/null +++ b/Faktura_Gruppe5/src/model/Firmenstammdaten.java @@ -0,0 +1,74 @@ +package model; + +public class Firmenstammdaten { + private String firmenname; + private String inhaber; + private String strasse; + private String plz; + private String stadt; + private String land; + private String telefon; + private String mobilnummer; + private String telefax; + private String email; + private String webseite; + private String umsatzsteuerIdNummer; + private String finanzamt; + private String bankname; + private String iban; + private String bic; + private String glaeubigerID; + + // Getter und Setter für alle Attribute + + public String getFirmenname() { return firmenname; } + public void setFirmenname(String firmenname) { this.firmenname = firmenname; } + + public String getInhaber() { return inhaber; } + public void setInhaber(String inhaber) { this.inhaber = inhaber; } + + public String getStrasse() { return strasse; } + public void setStrasse(String strasse) { this.strasse = strasse; } + + public String getPlz() { return plz; } + public void setPlz(String plz) { this.plz = plz; } + + public String getStadt() { return stadt; } + public void setStadt(String stadt) { this.stadt = stadt; } + + public String getLand() { return land; } + public void setLand(String land) { this.land = land; } + + public String getTelefon() { return telefon; } + public void setTelefon(String telefon) { this.telefon = telefon; } + + public String getMobilnummer() { return mobilnummer; } + public void setMobilnummer(String mobilnummer) { this.mobilnummer = mobilnummer; } + + public String getTelefax() { return telefax; } + public void setTelefax(String telefax) { this.telefax = telefax; } + + public String getEmail() { return email; } + public void setEmail(String email) { this.email = email; } + + public String getWebseite() { return webseite; } + public void setWebseite(String webseite) { this.webseite = webseite; } + + public String getUmsatzsteuerIdNummer() { return umsatzsteuerIdNummer; } + public void setUmsatzsteuerIdNummer(String umsatzsteuerIdNummer) { this.umsatzsteuerIdNummer = umsatzsteuerIdNummer; } + + public String getFinanzamt() { return finanzamt; } + public void setFinanzamt(String finanzamt) { this.finanzamt = finanzamt; } + + public String getBankname() { return bankname; } + public void setBankname(String bankname) { this.bankname = bankname; } + + public String getIban() { return iban; } + public void setIban(String iban) { this.iban = iban; } + + public String getBic() { return bic; } + public void setBic(String bic) { this.bic = bic; } + + public String getGlaeubigerID() { return glaeubigerID; } + public void setGlaeubigerID(String glaeubigerID) { this.glaeubigerID = glaeubigerID; } +} diff --git a/Faktura_Gruppe5/src/view/StartUpMenue.java b/Faktura_Gruppe5/src/view/StartUpMenue.java index a3e5196..1080911 100644 --- a/Faktura_Gruppe5/src/view/StartUpMenue.java +++ b/Faktura_Gruppe5/src/view/StartUpMenue.java @@ -12,7 +12,7 @@ public class StartUpMenue { private MainController mainController; - public StartUpMenue(MainController mainController) { //selbst geschrieben + public StartUpMenue(MainController mainController) { this.mainController = mainController; this.showMenu(); @@ -20,6 +20,9 @@ public class StartUpMenue { public void showMenu() { Scanner scanner = new Scanner(System.in); + + this.mainController.getFirmenstammdatenController().checkForCompanyData(scanner); + int choice = 0; while (choice != 9) { @@ -36,27 +39,27 @@ public class StartUpMenue { switch (choice) { case 1: Kunde kunde = new Kunde(); - - KundenController.eingabeDaten(kunde, scanner); - KundenController.speichereAlsXML(kunde); + + this.mainController.getKundenController().eingabeDaten(kunde, scanner); + this.mainController.getKundenController().speichereAlsXML(kunde); break; case 2: System.out.println("Kundennummer eingeben:"); int kundenWahl = Integer.parseInt(scanner.nextLine()); - Kunde kunde1 = KundenController.leseAusXML(kundenWahl); + Kunde kunde1 = this.mainController.getKundenController().leseAusXML(kundenWahl); kunde1.anzeigen(); break; case 3: Artikel artikel = new Artikel(); - ArtikelController.eingabeDaten(artikel, scanner); - ArtikelController.speichereAlsXML(artikel); + this.mainController.getArtikelController().eingabeDaten(artikel, scanner); + this.mainController.getArtikelController().speichereAlsXML(artikel); break; case 4: System.out.println("Artikelnummer eingeben:"); int artikelWahl = Integer.parseInt(scanner.nextLine()); - Artikel artikel1 = ArtikelController.leseAusXML(artikelWahl); + Artikel artikel1 = this.mainController.getArtikelController().leseAusXML(artikelWahl); artikel1.anzeigen(); // MainController.viewArticleData(); break;