Hallo,
ich habe wieder ein Problem
, diesmal mit Serialisierung. Ich gehe so vor:
Ich habe eine Klasse Stock mit Attributen wie z.B. WKN, Name, Preis, zudem befindet sich noch eine HashMap für die Speicherung von Preisen der Aktie in der Vergangenheit:
In einer weiteren Klasse StocksModel (Namensvergabe wahrscheinlich nicht optimal
), wird das Singletone-Pattern definiert und dort liegen meine Serialisierungs-Methoden:
Ich habe nun folgendes Phänomen:
Ich habe ein Demoset im csv-Format, welches ich importiere und ordnungsgemäß in meiner Table angezeigt wird. Dann speichere ich die Objekte mit writeSer-Methode ab und beende mein Programm.
Wenn ich dann das Program neu öffne, und mit per readSer-Methode die zuvor serialisierte Datei lade, dann wird nichts in meiner Table angezeigt, was vorher immer passierte... (die TableUpdate-Methode findet ihr weiter unten). Das komische ist aber, dass die geladenen Dateien integriert wurden, das sehe ich, wenn ich den aktuellen Zustand dann per CSV exportiere, es erscheint genau das, was ich auch vorher importiert habe.
Daraus schließe ich, dass die Serialisierung vollständig funktioniert, mein Table jedoch nicht "klar" kommt.
Beim Aufruf der readSer-Methode führe ich ein Update durch.
Wo könnte ich noch schauen?
Ist meine Lösung für die Serialisierung grundsätzlich korrekt?
Danke im Voraus und viele Grüße.
ich habe wieder ein Problem
Ich habe eine Klasse Stock mit Attributen wie z.B. WKN, Name, Preis, zudem befindet sich noch eine HashMap für die Speicherung von Preisen der Aktie in der Vergangenheit:
Java:
public class Stock implements Serializable {
private static StocksModel instance = StocksModel.getInstance();
private static ArrayList<Stock> list = StocksModel.getInstance().getStocksList();
private static int counter = 0;
private static HashMap<String, Double> depotValueHistory = new HashMap<String, Double>();
private int id = 0;
private String wkn;
private String name;
private int quantity = 0;
private Boolean sold = false;
private String b_date;
private String s_date;
private double b_rate = 0.0;
private double s_rate = 0.0;
private double cur_rate = 0.0;
private HashMap<String, Double> stockValueHistory = new HashMap<String, Double>();
...
}
In einer weiteren Klasse StocksModel (Namensvergabe wahrscheinlich nicht optimal
Java:
public class StocksModel {
private String[] header = null;
private ArrayList<Stock> MyStocks = null;
private static StocksModel instance = null;
private StocksModel() {
MyStocks = new ArrayList<Stock>();
}
public static StocksModel getInstance() {
if(instance==null)
instance = new StocksModel();
return instance;
}
public ArrayList<Stock> getStocksList() {
return this.MyStocks;
}
...
}
Java:
public static void writeSer(String path) {
ArrayList alMyStocks = StocksModel.getInstance().MyStocks;
HashMap hmDepotHistory = Stock.getDepotValueHistory();
OutputStream fos = null;
try {
fos = new FileOutputStream(path);
ObjectOutputStream o = new ObjectOutputStream(fos);
o.writeObject(alMyStocks);
o.writeObject(hmDepotHistory);
} catch (IOException e) {
System.err.println(e);
} finally {
try {
fos.close();
} catch (Exception e) {
}
}
}
Java:
public static void readSer(String path) {
HashMap hmNew = null;
ArrayList alNew = null;
InputStream fis = null;
try {
fis = new FileInputStream(path);
ObjectInputStream o = new ObjectInputStream(fis);
alNew = (ArrayList) o.readObject();
hmNew = (HashMap) o.readObject();
} catch (IOException e) {
System.err.println(e);
} catch (ClassNotFoundException e) {
System.err.println(e);
} finally {
try {
fis.close();
} catch (Exception e) {
}
}
StocksModel.getInstance().MyStocks = alNew;
Stock.setDepotValueHistory(hmNew);
}
Ich habe nun folgendes Phänomen:
Ich habe ein Demoset im csv-Format, welches ich importiere und ordnungsgemäß in meiner Table angezeigt wird. Dann speichere ich die Objekte mit writeSer-Methode ab und beende mein Programm.
Wenn ich dann das Program neu öffne, und mit per readSer-Methode die zuvor serialisierte Datei lade, dann wird nichts in meiner Table angezeigt, was vorher immer passierte... (die TableUpdate-Methode findet ihr weiter unten). Das komische ist aber, dass die geladenen Dateien integriert wurden, das sehe ich, wenn ich den aktuellen Zustand dann per CSV exportiere, es erscheint genau das, was ich auch vorher importiert habe.
Daraus schließe ich, dass die Serialisierung vollständig funktioniert, mein Table jedoch nicht "klar" kommt.
Beim Aufruf der readSer-Methode führe ich ein Update durch.
Java:
public static void fireTableDataChanged() {
tableModel.fireTableDataChanged();
tableModel.fireTableStructureChanged();
table.repaint();
table.updateUI();
}
Wo könnte ich noch schauen?
Ist meine Lösung für die Serialisierung grundsätzlich korrekt?
Danke im Voraus und viele Grüße.