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; package smash.appointment.parse;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collections; import java.util.Collections;
import java.util.Comparator; import java.util.Comparator;
import java.util.HashMap; import java.util.HashMap;
...@@ -36,7 +39,7 @@ public class AppointmentDao { ...@@ -36,7 +39,7 @@ public class AppointmentDao {
this.appointments = appointments; this.appointments = appointments;
} }
public List<Visit> getVisits() { public List<Visit> getVisits() throws ParseException {
List<Visit> result = new ArrayList<>(); List<Visit> result = new ArrayList<>();
Map<Subject, List<AppointmentEntry>> subjectAppointments = new HashMap<>(); Map<Subject, List<AppointmentEntry>> subjectAppointments = new HashMap<>();
for (AppointmentEntry entry : appointments) { for (AppointmentEntry entry : appointments) {
...@@ -51,7 +54,7 @@ public class AppointmentDao { ...@@ -51,7 +54,7 @@ public class AppointmentDao {
return result; 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>() { Comparator<AppointmentEntry> comparator = new Comparator<AppointmentEntry>() {
@Override @Override
...@@ -87,7 +90,7 @@ public class AppointmentDao { ...@@ -87,7 +90,7 @@ public class AppointmentDao {
String date = currentVisit.getLastAppointmentDate(); String date = currentVisit.getLastAppointmentDate();
if (date.equals(appointmentEntry.getDay().substring(0, 10))) { if (date.equals(appointmentEntry.getDay().substring(0, 10))) {
currentVisit.getLastAppointment().addTypes(appointmentEntry.getTypes()); 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); currentVisit.getLastAppointment().setSource(source);
} else { } else {
currentVisit.addAppointment(appointmentEntry); currentVisit.addAppointment(appointmentEntry);
...@@ -97,9 +100,34 @@ public class AppointmentDao { ...@@ -97,9 +100,34 @@ public class AppointmentDao {
if (currentVisit.getAppointments().size() > 0) { if (currentVisit.getAppointments().size() > 0) {
result.add(currentVisit); result.add(currentVisit);
} }
if (shouldBeFinished(currentVisit.getEndDate())) {
result.add(createNextVisit(currentVisit));
}
return result; 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) { public void addAppointment(AppointmentEntry appointment) {
appointments.add(appointment); appointments.add(appointment);
......
...@@ -28,6 +28,8 @@ public class Visit { ...@@ -28,6 +28,8 @@ public class Visit {
private Subject subject; private Subject subject;
private List<AppointmentEntry> appointments = new ArrayList<>(); private List<AppointmentEntry> appointments = new ArrayList<>();
private String startDate;
public Visit(Subject subject) { public Visit(Subject subject) {
if (subject==null) { if (subject==null) {
...@@ -75,8 +77,10 @@ public class Visit { ...@@ -75,8 +77,10 @@ public class Visit {
public String getStartDate() { public String getStartDate() {
if (appointments.size() > 0) { if (appointments.size() > 0) {
return appointments.get(0).getDay().substring(0, 10); return appointments.get(0).getDay().substring(0, 10);
} else { } else if (startDate==null){
return "1900-01-01"; return "1900-01-01";
} else {
return startDate;
} }
} }
...@@ -106,4 +110,8 @@ public class Visit { ...@@ -106,4 +110,8 @@ public class Visit {
this.subject = subject; this.subject = subject;
} }
public void setStartDate(String newDate) {
this.startDate = newDate;
}
} }
package smash.appointment.parse; 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.After;
import org.junit.AfterClass; import org.junit.AfterClass;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
public class AppointmentDaoTest { public class AppointmentDaoTest {
Logger logger = Logger.getLogger(AppointmentDaoTest.class);
@AfterClass @AfterClass
public static void tearDownAfterClass() throws Exception { public static void tearDownAfterClass() throws Exception {
...@@ -22,23 +29,23 @@ public class AppointmentDaoTest { ...@@ -22,23 +29,23 @@ public class AppointmentDaoTest {
} }
@Test @Test
public void getVisits() { public void getVisits() throws ParseException {
Subject subject1 = new Subject("a", "b", "c", "d"); Subject subject1 = new Subject("a", "b", "c", "d");
AppointmentEntry appointment = new AppointmentEntry(); AppointmentEntry appointment = new AppointmentEntry();
appointment.setSubject(subject1); appointment.setSubject(subject1);
appointment.setDay("2016-02-02"); appointment.setDay("2026-02-02");
appointment.addType(AppointmentType.LEVEL_A); appointment.addType(AppointmentType.LEVEL_A);
AppointmentEntry appointment2 = new AppointmentEntry(); AppointmentEntry appointment2 = new AppointmentEntry();
appointment2.setSubject(subject1); appointment2.setSubject(subject1);
appointment2.setDay("2016-02-02"); appointment2.setDay("2026-02-02");
appointment2.addType(AppointmentType.LEVEL_B); appointment2.addType(AppointmentType.LEVEL_B);
AppointmentEntry appointment3 = new AppointmentEntry(); AppointmentEntry appointment3 = new AppointmentEntry();
appointment3.setSubject(subject1); appointment3.setSubject(subject1);
appointment3.setDay("2011-02-02"); appointment3.setDay("2021-02-02");
appointment3.addType(AppointmentType.LEVEL_A); appointment3.addType(AppointmentType.LEVEL_A);
AppointmentDao appointmentDao = new AppointmentDao(); AppointmentDao appointmentDao = new AppointmentDao();
appointmentDao.addAppointment(appointment); appointmentDao.addAppointment(appointment);
appointmentDao.addAppointment(appointment2); appointmentDao.addAppointment(appointment2);
...@@ -47,23 +54,67 @@ public class AppointmentDaoTest { ...@@ -47,23 +54,67 @@ public class AppointmentDaoTest {
} }
@Test @Test
public void getVisits2() { public void getVisits2() throws ParseException {
Subject subject1 = new Subject("a", "b", "c", "d"); Subject subject1 = new Subject("a", "b", "c", "d");
Subject subject2 = new Subject("a1", "b1", "c1", "d1"); Subject subject2 = new Subject("a1", "b1", "c1", "d1");
AppointmentEntry appointment = new AppointmentEntry(); AppointmentEntry appointment = new AppointmentEntry();
appointment.setSubject(subject1); appointment.setSubject(subject1);
appointment.setDay("2016-02-02"); appointment.setDay("2026-02-02");
appointment.addType(AppointmentType.LEVEL_A); appointment.addType(AppointmentType.LEVEL_A);
AppointmentEntry appointment3 = new AppointmentEntry(); AppointmentEntry appointment3 = new AppointmentEntry();
appointment3.setSubject(subject2); appointment3.setSubject(subject2);
appointment3.setDay("2016-02-02"); appointment3.setDay("2026-02-02");
appointment3.addType(AppointmentType.LEVEL_B); appointment3.addType(AppointmentType.LEVEL_B);
AppointmentDao appointmentDao = new AppointmentDao(); AppointmentDao appointmentDao = new AppointmentDao();
appointmentDao.addAppointment(appointment); appointmentDao.addAppointment(appointment);
appointmentDao.addAppointment(appointment3); appointmentDao.addAppointment(appointment3);
assertEquals(2, appointmentDao.getVisits().size()); 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