package jhaushalt.service.factories; import java.io.IOException; import java.text.ParseException; import java.util.ArrayList; import java.util.List; import jhaushalt.domain.Register; import jhaushalt.domain.buchung.Buchung; import jhaushalt.service.factories.io.DataInputFacade; import jhaushalt.service.factories.io.DataOutputFacade; public class RegisterFactory { private BuchungFactory bookingFactory; public void setBookingFactory(BuchungFactory bookingFactory) { this.bookingFactory = bookingFactory; } public Register getInstance (DataInputFacade in, String registerName) throws IOException, UnknownBuchungTypeException, ParseException { Register register = new Register(registerName); List<Buchung> bookingList = loadBuchungen(in); register.insertBookingList(bookingList); return register; } private List<Buchung> loadBuchungen(final DataInputFacade in) throws IOException, UnknownBuchungTypeException, ParseException { final int numberOfBuchungen = in.getInt(); List<Buchung> buchungen = new ArrayList<Buchung>(); for (int i = 0; i < numberOfBuchungen; i++) { buchungen.add(bookingFactory.getInstance(in)); } return buchungen; } public void saveData(DataOutputFacade dataOutputFacade, Register register) throws IOException { List<Buchung> bookingList = register.getBookings(); dataOutputFacade.writeInt(bookingList.size()); for (Buchung booking: bookingList) { bookingFactory.saveData(dataOutputFacade, booking); } } }