/** * Metoda s³u¿y do obliczania iloœci dni, w których pracowa³ ankieter od pewnej ustalonej daty * * @param interviewer * @param from * @return */ private float numberOfDaysInWork(Interviewer interviewer, GregorianCalendar from) { float days = 0; List<Pair<GregorianCalendar, GregorianCalendar>> outOfWork = interviewer.getOutOfWorkTime(); if (interviewer.isActive()) { Date now = new Date(); days += daysBetween(from.getTime(), now); for (Pair<GregorianCalendar, GregorianCalendar> entr : outOfWork) { if (from.compareTo(entr.getFirst()) <= 0) { days -= daysBetween(entr.getFirst().getTime(), entr.getSecond().getTime()); } if (from.compareTo(entr.getFirst()) >= 0 && from.compareTo(entr.getSecond()) <= 0) { days -= daysBetween(from.getTime(), entr.getSecond().getTime()); } } } else { days += daysBetween(interviewer.getHiredDay().getTime(), interviewer.getRelieveDay().getTime()); for (Pair<GregorianCalendar, GregorianCalendar> entr : outOfWork) { if (from.compareTo(entr.getFirst()) <= 0) { days -= daysBetween(entr.getFirst().getTime(), entr.getSecond().getTime()); } if (from.compareTo(entr.getFirst()) >= 0 && from.compareTo(entr.getSecond()) <= 0) { days -= daysBetween(from.getTime(), entr.getSecond().getTime()); } } } return days; }