package jhaushalt.service;
import haushalt.daten.AbstractBuchung;
import haushalt.daten.Register;
import haushalt.daten.UmbuchungKategorie;
import java.io.IOException;
import java.text.ParseException;
import jhaushalt.domain.Datenbasis;
import jhaushalt.service.factories.DatenbasisFactory;
import jhaushalt.service.factories.UnknownBuchungTypeException;
import jhaushalt.service.factories.io.DataInputFacade;
import jhaushalt.service.factories.io.DataOutputFacade;
public class DatenbasisServiceImpl implements DatenbasisService {
private Datenbasis datenbasis = new Datenbasis();
private DatenbasisFactory datenbasisFactory;
public void setDatenbasisFactory(DatenbasisFactory datenbasisFactory) {
this.datenbasisFactory = datenbasisFactory;
}
public synchronized Datenbasis getDatenbasis() {
return datenbasis;
}
public synchronized void loadDatabase(DataInputFacade holder) throws CouldNotLoadDatabaseException {
try {
datenbasis = datenbasisFactory.getInstance(holder);
} catch (IOException e) {
throw new CouldNotLoadDatabaseException("Unexpected file operation problem:" + e.getMessage());
} catch (UnknownBuchungTypeException e) {
throw new CouldNotLoadDatabaseException("Unexpected Booking Type:" + e.getMessage());
} catch (ParseException e) {
throw new CouldNotLoadDatabaseException("Unexpected parsing problem:" + e.getMessage());
}
}
public synchronized void saveDatabase(DataOutputFacade holder) {
// TODO Auto-generated method stub
// // 1. Versionsinfo:
// out.writeUTF("jHaushalt" + VERSION_DATENBASIS);
//
// // 2. Buchungen (Kategorien werden NICHT gespeichert)
// out.writeInt(this.registerListe.size());
// for (int i = 0; i < this.registerListe.size(); i++) {
// final Register register = this.registerListe.get(i);
// register.speichern(out);
// }
//
// // 3. automatische Buchungen
// out.writeInt(this.autoStandardBuchungen.size() + this.autoUmbuchungen.size());
//
// // 3a. automatische Standard-Buchungen
// for (int i = 0; i < this.autoStandardBuchungen.size(); i++) {
// final AbstractBuchung buchung = this.autoStandardBuchungen.get(i);
// buchung.speichern(out);
// out.writeUTF("" + this.autoStandardBuchungRegister.get(i));
// out.writeUTF(LEGACY_INTERVALL_NAMEN[this.autoStandardBuchungIntervalle.get(i)]);
// }
//
// // 3b. automatische Umbuchungen
// for (int i = 0; i < this.autoUmbuchungen.size(); i++) {
// final AbstractBuchung buchung = this.autoUmbuchungen.get(i);
// buchung.speichern(out);
// final UmbuchungKategorie registerPaar = this.autoUmbuchungRegister.get(i);
// out.writeUTF("" + registerPaar.getQuelle());
// out.writeUTF("" + registerPaar.getZiel());
// out.writeUTF(LEGACY_INTERVALL_NAMEN[this.autoUmbuchungIntervalle.get(i)]);
// }
//
// out.flush();
// this.geaendert = false;
}
}