/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package model; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.util.ArrayList; import javax.swing.table.AbstractTableModel; /** * * @author PC */ /** * * @author le */ public class AdressVerwaltungModel extends AbstractTableModel { private ArrayList> daten; private ArrayList adressEintraegeDaten; private ArrayList adressEintraegeNamen; /** *Konstruktor für AdressverwaltungModel */ public AdressVerwaltungModel() { adressEintraegeDaten = new ArrayList<>(); adressEintraegeNamen = new ArrayList<>(); daten = new ArrayList<>(); adressEintraegeNamen.add("Vorname"); adressEintraegeNamen.add("Name"); adressEintraegeNamen.add("Adresse"); adressEintraegeNamen.add("E-Mail"); adressEintraegeDaten.add(""); adressEintraegeDaten.add(""); adressEintraegeDaten.add(""); adressEintraegeDaten.add(""); // adressEintraegeNamen.add("Telefon"); // adressEintraegeDaten.add("122345"); daten.add(adressEintraegeDaten); } @Override public int getRowCount() { return daten.size(); } @Override public int getColumnCount() { return adressEintraegeDaten.size(); } @Override public Object getValueAt(int row, int col) { return daten.get(row).get(col); } @Override public void setValueAt(Object value, int row, int col) { daten.get(row).set(col, (String)value); } @Override public boolean isCellEditable(int row, int col) { return true; } @Override public String getColumnName(int col) { return adressEintraegeNamen.get(col); } public ArrayList getLastRowData() { ArrayList lastRow = new ArrayList<>(); for (int i = 0; i <= daten.get(0).size()-1; i++) { lastRow.add(daten.get(daten.size()-1).get(i)); } return lastRow; } public void eintragHinzufuegen(ArrayList letzteSpalte) { daten.add(letzteSpalte); this.fireTableDataChanged(); } public void eintragHinzufuegen() { adressEintraegeDaten = new ArrayList<>(); adressEintraegeNamen.forEach(s -> adressEintraegeDaten.add("")); daten.add(adressEintraegeDaten); this.fireTableDataChanged(); } public void eintragLoeschen(int row) { daten.remove(row); this.fireTableDataChanged(); } public void spalteHinzufuegen(String name) { adressEintraegeNamen.add(name); } public void datenSpeichern(File datei) throws FileNotFoundException, IOException { FileOutputStream fos = new FileOutputStream(datei); BufferedOutputStream bos = new BufferedOutputStream(fos); ObjectOutputStream oos = new ObjectOutputStream(bos); oos.writeObject(daten); oos.writeObject(adressEintraegeNamen); oos.flush(); oos.close(); } public void datenLesen(File datei) throws FileNotFoundException, IOException, ClassNotFoundException { FileInputStream fis = new FileInputStream(datei); BufferedInputStream bis = new BufferedInputStream(fis); ObjectInputStream ois = new ObjectInputStream(bis); daten = (ArrayList>)ois.readObject(); adressEintraegeNamen = (ArrayList)ois.readObject(); adressEintraegeDaten = daten.get(daten.size()-1); ois.close(); this.fireTableDataChanged(); } }