class IndividualLoanAssembler implements LoanAssembler {

    @Override
    public IndividualLoan assembleFrom(IndividualLoanRequest individualLoan) {

        LoanOfferingBO loanProduct = this.loanProductDao.findBySystemId(individualLoan.getLoanProductId().globalIdentity());
        ClientBO client = this.customerDao.findClientBySystemId(individualLoan.getClientId().globalIdentity());

        int occurences = 12;
        DateTime lastScheduledDate = new DateTime();

        ScheduledEvent scheduledEvent = scheduledEventFactory.createScheduledEventFrom(loanProduct.getLoanOfferingMeetingValue());
        List<DateTime> loanScheduleDates = scheduledDateGeneration.generateScheduledDates(occurences, lastScheduledDate, scheduledEvent, false);

        // FIXME - assemble loanAmount from dto
        Money loanAmount = null;
        Double interestRate = Double.valueOf("10.0");
        Integer interestDays = Integer.valueOf(AccountingRules.getNumberOfInterestDays());
//        IndividualLoanSchedule loanSchedule = loanScheduleFactory.create(loanScheduleDates, loanProduct, loanAmount, interestRate, interestDays);

        return new IndividualLoanImpl();
    }

    public  IndividualLoanAssembler(LoanProductDao loanProductDao, CustomerDao customerDao, LoanScheduleFactory loanScheduleFactory,
            ScheduledDateGeneration scheduledDateGeneration, RecurringScheduledEventFactory scheduledEventFactory);

}