Hallo,
ich hoffe ich bin hier im Forum richtig.
Ich komme bei meinem Programm zur Zeit nicht weiter und hoffe, dass mir hier geholfen wird.
Zunächst hole ich Daten aus einer MySQL Datenbank über "Haushalte" (s. LoadHaushalte), diese werden in einer ArrayList/Vector mit dem generischen Typ <HaushaltsData> (wobei ich hier überhaupt nicht weißt, ob dies überhaupt notwendig ist) gespeichert. Eins der Elemente ist selbst wieder eine Arraylist/Vector, nämlich "tonnen" mit dem generischen Typ <TonnenData> (s. LoadHaushalte & HaushaltsData).
Nun möchte ich in meinem Fenster "Haushalte" darauf zugreifen. Zunächst wähle ich über einen Index einer JList den entsprechenden Haushalt aus, dann greife ich über die Methode "getTonnen()" auf die zweite innere ArrayList zu und würde jetzt normalerweise erwarten, dass ich auf die Methoden der Klasse "TonnenData" zugreifen kann (bspw.: getRfidnr()), was allerdings nicht möglich ist und an dieser Stelle bin ich überfragt.
Wie realisiere ich dies? Die innere zweite ArrayList ist wichtig, da ein Haushalt natürlich mehrere Tonnen haben kann.
Danke und Grüße,
MacMo
Klasse "HaushaltsData"
Klasse "TonnenData"
Klasse "LoadHaushalte"
ich hoffe ich bin hier im Forum richtig.
Ich komme bei meinem Programm zur Zeit nicht weiter und hoffe, dass mir hier geholfen wird.
Zunächst hole ich Daten aus einer MySQL Datenbank über "Haushalte" (s. LoadHaushalte), diese werden in einer ArrayList/Vector mit dem generischen Typ <HaushaltsData> (wobei ich hier überhaupt nicht weißt, ob dies überhaupt notwendig ist) gespeichert. Eins der Elemente ist selbst wieder eine Arraylist/Vector, nämlich "tonnen" mit dem generischen Typ <TonnenData> (s. LoadHaushalte & HaushaltsData).
Nun möchte ich in meinem Fenster "Haushalte" darauf zugreifen. Zunächst wähle ich über einen Index einer JList den entsprechenden Haushalt aus, dann greife ich über die Methode "getTonnen()" auf die zweite innere ArrayList zu und würde jetzt normalerweise erwarten, dass ich auf die Methoden der Klasse "TonnenData" zugreifen kann (bspw.: getRfidnr()), was allerdings nicht möglich ist und an dieser Stelle bin ich überfragt.
Wie realisiere ich dies? Die innere zweite ArrayList ist wichtig, da ein Haushalt natürlich mehrere Tonnen haben kann.
Danke und Grüße,
MacMo
Klasse "HaushaltsData"
Java:
package mvs.controller;
import java.util.ArrayList;
/**
* @author Moritz Rupp
* @version 1.0
*/
public class HaushaltsData {
[…]
private ArrayList<TonnenData> tonnen = new ArrayList<TonnenData>();
public HaushaltsData([…] ArrayList<TonnenData> t) {
[…]
this.tonnen = t;
/**
* @return the tonnen
*/
public ArrayList getTonnen() {
return tonnen;
}
Klasse "TonnenData"
Java:
package mvs.controller;
import java.util.Vector;
/**
* @author Moritz Rupp
* @version 1.0
*/
public class TonnenData {
/**
* #### VARIABLEN ####
*/
[…]
private int rfidnr;
public TonnenData([…] int rfidnr) {
[…]
this.rfidnr = rfidnr;
}
/**
* @return the rfidnr
*/
public int getRfidnr() {
return rfidnr;
}
Klasse "LoadHaushalte"
Java:
package mvs.model;
import java.sql.*;
import java.util.ArrayList;
import java.util.Vector;
import javax.swing.DefaultListModel;
import mvs.controller.*;
/**
* @author Moritz Rupp
* @version 1.0
*/
public class LoadHaushalte {
/**
* #### VARIABLEN ####
*/
[…]
private Vector<HaushaltsData> data = new Vector<HaushaltsData>();
private boolean loadData() {
try {
String s = "";
ResultSet liste = DBMS.select("SELECT haushaltID, Ort, PLZ, Strasse, Hausnummer, Stockwerk, Telefon, Firma, Name, Vorname, Geschlecht, Zahlungsart FROM mvs_Haushalt ORDER BY Ort, Name ASC");
while(liste.next()) {
ArrayList<TonnenData> tonne = new ArrayList<TonnenData>();
ResultSet t = DBMS.select("SELECT mb.muellbehaelterID, RFIDNr, Art, Preis, Farbe, Leerungsintervall FROM mvs_gebuchteTonne t JOIN mvs_Muellbehaelter mb USING (muellbehaelterID) RIGHT JOIN mvs_Haushalt h USING (haushaltID) WHERE haushaltID = " + liste.getInt("haushaltID") + " ORDER BY Ort, Name ASC");
while(t.next()) {
tonne.add(new TonnenData(
liste.getInt("haushaltID"),
t.getInt("mb.muellbehaelterID"),
t.getInt("RFIDNr"),
t.getInt("Leerungsintervall"),
t.getDouble("Preis"),
t.getString("Art"),
t.getString("Farbe")
));
}
data.add(new HaushaltsData(
liste.getInt("haushaltID"),
liste.getString("Ort"),
liste.getInt("PLZ"),
liste.getString("Strasse"),
liste.getInt("Hausnummer"),
liste.getInt("Stockwerk"),
liste.getString("Telefon"),
liste.getString("Firma"),
liste.getString("Name"),
liste.getString("Vorname"),
liste.getString("Geschlecht"),
liste.getString("Zahlungsart"),
tonne
));
}
} catch(Exception e) {
System.out.println("SQLException @LoadHaushalte loadData(): " + e.getMessage());
}
return false;
}
/**
* @return elemente
*/
public Vector getData() {
return data;
}
Zuletzt bearbeitet: