Bezüglich Design meines Codes

disconnectus

Aktives Mitglied
Hallo Zusammen,

ich habe eine Frage bezüglich design meines Kodes.

Ich lese aus einer MySQL Datenbank verarbeite die Daten danach gebe ich sie in Excel-format aus. Dafür benutze ich Apache POI-XSSF.
Poi hat eine Workbook Objekt:
XSSFWorkbook workBook = new XSSFWorkbook();
Diese XSSFWorkbook Classe hat static methoden. Wenn ich einen neuen Excell tabelle erstellen muss soll ich wie folgt vorgehen:
XSSFSheet sheetwrite = workBook.createSheet("time");
Ich habe mehr als 25 Tabs in meinem Excel-Output und jede excel-sheet ist sehr komplex. Wie soll ich meinen Programm strukturieren.
Ich habe wie folgt vorgegangen:
Java:
public XSSFWorkbook workBook = new XSSFWorkbook(); 
	public ExcelOutput(ArrayList<Plant> carList, ArrayList<OptionPlant> carOptionsList) {		
		TimeTabs timeTabs = new TimeTabs(workBook);
		Hierarchy hierarchy = new Hierarchy(carList, carOptionsList, workBook);

		Usw. mehrere Objects für jede gettrennte tabelle Und 

		String outputFile = "C:/***/filename.xlsx"; 
		try {
			InputOutput.writeExcel(workBook, outputFile);
		} catch (IOException e) {
    	        JFrame IOframe = new JFrame();
    		JOptionPane.showMessageDialog(IOframe, "Input, Output Error"); 
			e.printStackTrace();
		}
Java:
public class TimeTabs {
	public TimeTabs(XSSFWorkbook workBook) {
		
		XSSFRow rowwrite; 
		XSSFCell cellwrite;	 	
		XSSFSheet sheetwrite = workBook.createSheet("time");

	    for (int i = 0; i < TimeGen.nameoftimeslots.size(); i++) {       						
	       	rowwrite = sheetwrite.createRow(i);
			cellwrite = rowwrite.createCell(0);
			//arraytime[i] = "TIME_"; 
			//arraytime[i] += Integer.toString(i+1); 
			cellwrite.setCellValue(TimeGen.nameoftimeslots.get(i));
	    }
	Usw.

Das finde ich jetzt aber unlogisch weil ich die Objekte erstelle und danach sie nicht mehr benutze. Eclipse sagt mir sogar dass ich die Objecte löschen soll weil ich sie nirgendswo benutze.
Wie könnte mann alles besser strukturieren?

Wenn ich für jede Tabelle eine andere Methode implementiere, wird meine Klasse zu lang und zu komplex. Soll ich trotzdem für jede Tab eine getrennte methode implementieren?

Oder

Ich kann wie folgt neue Classen jeweils mit einer statik Method erstellen.
Java:
public XSSFWorkbook workBook = new XSSFWorkbook(); 
	public ExcelOutput(ArrayList<Plant> carList, ArrayList<OptionPlant> carOptionsList) {		
		TimeTabs.generateTimeTabs (workBook);
		Hierarchy.generateHierarchy (carList, carOptionsList, workBook);

		Usw. mehrere Static Methoden für jede getrennte tabelle Und 

		String outputFile = "C:/***/filename.xlsx"; 
		try {
			InputOutput.writeExcel(workBook, outputFile);
		} catch (IOException e) {
    	        JFrame IOframe = new JFrame();
    		JOptionPane.showMessageDialog(IOframe, "Input, Output Error"); 
			e.printStackTrace();
		}

Java:
public class TimeTabs {
	public static void generateTimeTabs (XSSFWorkbook workbook)
		
		XSSFRow rowwrite; 
		XSSFCell cellwrite;	 	
		XSSFSheet sheetwrite = workBook.createSheet("time");

	    for (int i = 0; i < TimeGen.nameoftimeslots.size(); i++) {       						
	       	rowwrite = sheetwrite.createRow(i);
			cellwrite = rowwrite.createCell(0);
			//arraytime[i] = "TIME_"; 
			//arraytime[i] += Integer.toString(i+1); 
			cellwrite.setCellValue(TimeGen.nameoftimeslots.get(i));
	    }
	Usw.

Was wäre eine bessere Struktur? Könntet ihr mir was besseres Vorschlagen?

Danke im Voraus
 
Zuletzt bearbeitet von einem Moderator:

Joose

Top Contributor
Ich würde für jedes einzelne Blatt der Excel Datei eine eigene Klasse ableiten.
Alle diese Klassen können natürlich von gleichen/ähnlichen Interfaces oder Basisklasse ableiten. (Dadurch kannst du auch alle diese Objekte in eine Liste geben)

Von Klassen mit statischen Methoden würde ich abraten: Solltest du mal Threading einbauen wollen kann es passieren das du dir damit selber ein Bein stellst ;)

Dann kannst du einfach für jedes Blatt welches du erstellen willst, die entsprechende Klasse erstellen und dir die Seite generieren lassen.

Vorteil: Es ist einfacher Blätter auszulassen, es erhöht die Übersicht da du pro Klasse nur die Generierung von max einem Blatt hast
Nachteil: Es können dadurch natürlich sehr viele Klassen entstehen, aber das sollte das geringere Problem sein als eine Klasse mit X Methoden


Java:
public abstract class BaseSheetGenerator {
    ....

    public abstract void generateSheet(XSSFWorkbook workbook);
}

public class TimeSheetGenerator extends BaseSheetGenerator {

    public void generateSheet(XSSFWorkbook workbook) {
        // dein Code für die TimeSheet(s)
    }
}

-----------

public void static main(String[] args) {
    // Workbook erstellen, usw.
    
    ArrayList<BaseSheetGenerator> generators = new ArrayList<>();
    // hier könntest du noch eine Konfiguration einbauen um per config File zu steuern welche Sheets generiert werden sollen
    generators.add( ......);
    generators.add( ......);
    generators.add( ......);
    generators.add( ......);

    for(BaseSheetGenerator generator : generators) {
        generator.generateSheet(workbook);
    }
}
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
V gutes Lernmaterial bezüglich formatierte Ausgaben in Java Allgemeine Java-Themen 2
J NetBeans Frage bezüglich der Scanner-Klasse Allgemeine Java-Themen 6
E Wahrscheinlichkeit bezüglich der Auswahl eines farbigen Balls Allgemeine Java-Themen 8
S Stilfrage bezüglich Beans mit Collection-Properties Allgemeine Java-Themen 2
M Verständnisfragen bezüglich Liste Allgemeine Java-Themen 3
E Verständnisfrage bezüglich Threads Allgemeine Java-Themen 4
J Diverse Fragen bezüglich Jasper Allgemeine Java-Themen 3
W Frage bezüglich Codedesigns Allgemeine Java-Themen 4
S Strukturierungsfrage bezüglich Listeners Allgemeine Java-Themen 6
J Meinung zum verwendeten Design Pattern Allgemeine Java-Themen 4
S Noch eine Design-Frage zu Setter Allgemeine Java-Themen 6
S ArrayList Design Allgemeine Java-Themen 4
S Interface Design von HookUp oder Callback Methoden für eigenes Framework Allgemeine Java-Themen 9
Kirby.exe Framework für Game Design Allgemeine Java-Themen 8
C WindowBuilder Design funktioniert nicht Allgemeine Java-Themen 0
M Diverse Design-Fragen Allgemeine Java-Themen 6
rentasad Design-Frage - Interfaces, Klassen, statische Methoden Allgemeine Java-Themen 3
M OOP Design Pattern - "extends Observable implements Observer" Allgemeine Java-Themen 0
T OOP Fehler im Design Allgemeine Java-Themen 9
perlenfischer1984 Welches Design Pattern ist geegneit. Allgemeine Java-Themen 7
perlenfischer1984 Hilfe bei Design (Pattern) Allgemeine Java-Themen 5
N Vererbung Design-Problem mit vorhandenen, von der Klasse unabhängigen Methoden Allgemeine Java-Themen 12
R Parameter Adapter - Design Allgemeine Java-Themen 1
D OOP Design Pattern für GUI - Datenbank Anwendung Allgemeine Java-Themen 1
S Java Design Frage Allgemeine Java-Themen 10
L OOP Klassen-Design (static oder nicht?) Allgemeine Java-Themen 3
P Auf die Anzahl der Joins achten beim WS design Allgemeine Java-Themen 1
M OOP Design Frage Allgemeine Java-Themen 2
J Domain Driven Design - Modellierungsfrage Allgemeine Java-Themen 3
F Welches Design Pattern? Allgemeine Java-Themen 3
H MVC Design Allgemeine Java-Themen 9
J Swing Eigenes Button-design Allgemeine Java-Themen 2
Q Kapselung Allgemeine Design- Frage Allgemeine Java-Themen 8
Z Design um boolsche ausdrücke zu speichern & auszuwerten Allgemeine Java-Themen 3
A Sinnvolles Software Design bei Eigenschaftsänderungen von Objekten Allgemeine Java-Themen 7
C Gutes Code Design (3 Schichten Modell) Allgemeine Java-Themen 19
D Design Stations-Gitter Allgemeine Java-Themen 4
M Public Static importRunning -> Bad Design oder ok ? Allgemeine Java-Themen 5
L Software-Design: Kommunikation mit SerialPort (RXTX) Allgemeine Java-Themen 2
D [Drag&Drop] Design-Pattern-Frage Allgemeine Java-Themen 4
G Design Patterns für Programm Allgemeine Java-Themen 3
I Wie populär ist Design by Contract in Java und was haltet ihr davon? Allgemeine Java-Themen 5
Landei Design-Problem Formel-Parser Allgemeine Java-Themen 10
J Aktionen im State-Design-Modell Allgemeine Java-Themen 3
S Design Oberfläche Allgemeine Java-Themen 2
L Design-Frage: Platzierung der Save-Methode Allgemeine Java-Themen 3
G Domain Driven Design Model Allgemeine Java-Themen 14
G konkretes Domain Driven Design Aggregate Allgemeine Java-Themen 2
ruutaiokwu welches design pattern? frage an die oo-experten unter euch... Allgemeine Java-Themen 3
G Accordion Design Pattern Frage Allgemeine Java-Themen 2
hdi Hilfe beim Design (Stichwort OO, Pattern, ...) Allgemeine Java-Themen 11
B Design Problem Allgemeine Java-Themen 8
faulelotte Verständnisproblem Domain Driven Design Allgemeine Java-Themen 3
S Frage zum Design der Datenstruktur Allgemeine Java-Themen 10
D design gesucht - Angabe von zu ersetzenden substrings Allgemeine Java-Themen 2
D Design ohne Getter und Setter Allgemeine Java-Themen 8
D Design: on-the-fly-Parsing + Datenstrukturen Allgemeine Java-Themen 5
N Welches design pattern? Allgemeine Java-Themen 8
D design client server Allgemeine Java-Themen 10
T Design-Frage Allgemeine Java-Themen 14
S XML-Parsing / public-Member-Variablen / Design-Frage Allgemeine Java-Themen 8
S JToolBar Design Allgemeine Java-Themen 3
M Bildersyncronisierung - Design Patterns? Allgemeine Java-Themen 2
T Design - Exception in Thread Allgemeine Java-Themen 3
G Composite, Design Pattern, printTree Allgemeine Java-Themen 42
N Design-Frage: persistent machen per Reflection Allgemeine Java-Themen 3
M Frage zum Design :: allgemein Allgemeine Java-Themen 6
M MVC Design Pattern - Verständniss Fragen Allgemeine Java-Themen 3
U Frage zu DB Design Allgemeine Java-Themen 3
K Design / Implementierung Allgemeine Java-Themen 5
N Checkstyle - Design for Extension Allgemeine Java-Themen 4
F Design Pattern zur Realisierung von Mehrfachvererbung? Allgemeine Java-Themen 8
E Was ist ein gutes Design fuer meine Programm? Allgemeine Java-Themen 3
F Paket und Software Design Fragen. Allgemeine Java-Themen 5
P Apple Design Allgemeine Java-Themen 5
S design frage Allgemeine Java-Themen 10
T Design-Tipp gesucht Allgemeine Java-Themen 2
M Design von Java Klassen Allgemeine Java-Themen 2
G java design von klassen und projekten Allgemeine Java-Themen 6
K Design: Klassen in Pakete aufteilen - Eure Meinung Allgemeine Java-Themen 8
S Programmierstil / design Allgemeine Java-Themen 9
S Exception design Allgemeine Java-Themen 2
m@nu Exception-Design Allgemeine Java-Themen 4
R Design-Frage Allgemeine Java-Themen 9
N Hilfe beim Design Allgemeine Java-Themen 13
D Design Pattern: Singleton Allgemeine Java-Themen 4
Torres Design-Problem mit Jakarta Struts Allgemeine Java-Themen 2
A Anwendungs-Design (Plugin-Architektur) Allgemeine Java-Themen 4
Scream_ilias passwort meines pc per brute force methode knacken Allgemeine Java-Themen 4
F Was ist der Dateityp meines Parameters für die Main Methode. Allgemeine Java-Themen 6
K Eclipse Fehler beim Ausführen meines Programms in Eclipse Allgemeine Java-Themen 11
P Fehler beim Export meines Lernbeispiel von Ralf Ebert Allgemeine Java-Themen 3
G Versionierung meines Programmes Allgemeine Java-Themen 9
V Eclipse braucht ewig zum Starten meines Codes Allgemeine Java-Themen 21
S Aufruf meines Programms Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben