Skip to content
Snippets Groups Projects
Commit 1db23aa9 authored by Piotr Gawron's avatar Piotr Gawron
Browse files

finishing past visits added

parent 4030c852
No related branches found
No related tags found
1 merge request!2Appointments dev
package smash.appointment.parse;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
......@@ -36,7 +39,7 @@ public class AppointmentDao {
this.appointments = appointments;
}
public List<Visit> getVisits() {
public List<Visit> getVisits() throws ParseException {
List<Visit> result = new ArrayList<>();
Map<Subject, List<AppointmentEntry>> subjectAppointments = new HashMap<>();
for (AppointmentEntry entry : appointments) {
......@@ -51,7 +54,7 @@ public class AppointmentDao {
return result;
}
private List<Visit> getVisitsForSubject(Subject subject, List<AppointmentEntry> list) {
private List<Visit> getVisitsForSubject(Subject subject, List<AppointmentEntry> list) throws ParseException {
Comparator<AppointmentEntry> comparator = new Comparator<AppointmentEntry>() {
@Override
......@@ -87,7 +90,7 @@ public class AppointmentDao {
String date = currentVisit.getLastAppointmentDate();
if (date.equals(appointmentEntry.getDay().substring(0, 10))) {
currentVisit.getLastAppointment().addTypes(appointmentEntry.getTypes());
String source = appointmentEntry.getSource() + "\n"+currentVisit.getLastAppointment().getSource();
String source = appointmentEntry.getSource() + "\n" + currentVisit.getLastAppointment().getSource();
currentVisit.getLastAppointment().setSource(source);
} else {
currentVisit.addAppointment(appointmentEntry);
......@@ -97,9 +100,34 @@ public class AppointmentDao {
if (currentVisit.getAppointments().size() > 0) {
result.add(currentVisit);
}
if (shouldBeFinished(currentVisit.getEndDate())) {
result.add(createNextVisit(currentVisit));
}
return result;
}
protected Visit createNextVisit(Visit currentVisit) throws ParseException {
Visit visit = new Visit(currentVisit.getSubject());
Calendar date = Calendar.getInstance();
String dateStr =currentVisit.getStartDate();
date.setTime(DATE_FORMATTER.parse(dateStr));
if (currentVisit.getSubject().getType().equals(SubjectType.CONTROL)) {
date.add(Calendar.YEAR, 4);
} else {
date.add(Calendar.YEAR, 1);
}
visit.setStartDate(DATE_FORMATTER.format(date.getTime()));
return visit;
}
private static final SimpleDateFormat DATE_FORMATTER = new SimpleDateFormat("yyyy-MM-dd");
protected boolean shouldBeFinished(String endDate) {
Calendar today_minus_two_months = Calendar.getInstance();
today_minus_two_months.add(Calendar.MONTH, -2);
return DATE_FORMATTER.format(today_minus_two_months.getTime()).compareTo(endDate) > 0;
}
public void addAppointment(AppointmentEntry appointment) {
appointments.add(appointment);
......
......@@ -28,6 +28,8 @@ public class Visit {
private Subject subject;
private List<AppointmentEntry> appointments = new ArrayList<>();
private String startDate;
public Visit(Subject subject) {
if (subject==null) {
......@@ -75,8 +77,10 @@ public class Visit {
public String getStartDate() {
if (appointments.size() > 0) {
return appointments.get(0).getDay().substring(0, 10);
} else {
} else if (startDate==null){
return "1900-01-01";
} else {
return startDate;
}
}
......@@ -106,4 +110,8 @@ public class Visit {
this.subject = subject;
}
public void setStartDate(String newDate) {
this.startDate = newDate;
}
}
package smash.appointment.parse;
import static org.junit.Assert.*;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import java.text.ParseException;
import org.apache.log4j.Logger;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.Test;
public class AppointmentDaoTest {
Logger logger = Logger.getLogger(AppointmentDaoTest.class);
@AfterClass
public static void tearDownAfterClass() throws Exception {
......@@ -22,23 +29,23 @@ public class AppointmentDaoTest {
}
@Test
public void getVisits() {
public void getVisits() throws ParseException {
Subject subject1 = new Subject("a", "b", "c", "d");
AppointmentEntry appointment = new AppointmentEntry();
appointment.setSubject(subject1);
appointment.setDay("2016-02-02");
appointment.setDay("2026-02-02");
appointment.addType(AppointmentType.LEVEL_A);
AppointmentEntry appointment2 = new AppointmentEntry();
appointment2.setSubject(subject1);
appointment2.setDay("2016-02-02");
appointment2.setDay("2026-02-02");
appointment2.addType(AppointmentType.LEVEL_B);
AppointmentEntry appointment3 = new AppointmentEntry();
appointment3.setSubject(subject1);
appointment3.setDay("2011-02-02");
appointment3.setDay("2021-02-02");
appointment3.addType(AppointmentType.LEVEL_A);
AppointmentDao appointmentDao = new AppointmentDao();
appointmentDao.addAppointment(appointment);
appointmentDao.addAppointment(appointment2);
......@@ -47,23 +54,67 @@ public class AppointmentDaoTest {
}
@Test
public void getVisits2() {
public void getVisits2() throws ParseException {
Subject subject1 = new Subject("a", "b", "c", "d");
Subject subject2 = new Subject("a1", "b1", "c1", "d1");
AppointmentEntry appointment = new AppointmentEntry();
appointment.setSubject(subject1);
appointment.setDay("2016-02-02");
appointment.setDay("2026-02-02");
appointment.addType(AppointmentType.LEVEL_A);
AppointmentEntry appointment3 = new AppointmentEntry();
appointment3.setSubject(subject2);
appointment3.setDay("2016-02-02");
appointment3.setDay("2026-02-02");
appointment3.addType(AppointmentType.LEVEL_B);
AppointmentDao appointmentDao = new AppointmentDao();
appointmentDao.addAppointment(appointment);
appointmentDao.addAppointment(appointment3);
assertEquals(2, appointmentDao.getVisits().size());
}
@Test
public void getShouldBeFinished() {
AppointmentDao appointmentDao = new AppointmentDao();
assertTrue(appointmentDao.shouldBeFinished("2014-01-01"));
assertTrue(appointmentDao.shouldBeFinished("2017-01-01"));
assertFalse(appointmentDao.shouldBeFinished("2018-01-01"));
}
@Test
public void createNextVisitForControl() throws ParseException {
Subject subject = new Subject("a", "b", "c", "d");
subject.setType(SubjectType.CONTROL);
AppointmentEntry appointment3 = new AppointmentEntry();
appointment3.setSubject(subject);
appointment3.setDay("2016-02-02");
appointment3.addType(AppointmentType.LEVEL_B);
Visit visit = new Visit(subject);
visit.addAppointment(appointment3);
AppointmentDao appointmentDao = new AppointmentDao();
Visit nextVisit = appointmentDao.createNextVisit(visit);
assertNotNull(nextVisit);
assertTrue(nextVisit.getStartDate().startsWith("2020"));
}
@Test
public void createNextVisitForPatient() throws ParseException {
Subject subject = new Subject("a", "b", "c", "d");
subject.setType(SubjectType.PATIENT);
AppointmentEntry appointment3 = new AppointmentEntry();
appointment3.setSubject(subject);
appointment3.setDay("2016-02-02");
appointment3.addType(AppointmentType.LEVEL_B);
Visit visit = new Visit(subject);
visit.addAppointment(appointment3);
AppointmentDao appointmentDao = new AppointmentDao();
Visit nextVisit = appointmentDao.createNextVisit(visit);
assertNotNull(nextVisit);
assertTrue(nextVisit.getStartDate().startsWith("2017"));
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment