From b5f158238f797a3a7c74e01b226f90f30a25844d Mon Sep 17 00:00:00 2001
From: Piotr Gawron <piotr.gawron@uni.lu>
Date: Tue, 28 Feb 2017 12:57:58 +0100
Subject: [PATCH] appointment are merged into visits and work on export of
 visits

---
 .../appointment/parse/AppointmentDao.java     |  83 ++++++++++++++++-
 .../appointment/parse/AppointmentEntry.java   |   7 ++
 .../java/smash/appointment/parse/Main.java    |  14 ++-
 .../java/smash/appointment/parse/Visit.java   |  87 ++++++++++++++++++
 .../appointment/parse/VisitSqlExporter.java   |  36 ++++++++
 .../parse/XlsxCalendarProcessor.java          |  30 +++++-
 .../smash/appointment/parse/AllTests.java     |   4 +-
 .../appointment/parse/AppointmentDaoTest.java |  69 ++++++++++++++
 .../smash/appointment/parse/VisitTest.java    |  48 ++++++++++
 .../parse/XlsxCalendarProcessorTest.java      |   3 +-
 .../testFiles/calendarExample.xlsx            | Bin 30611 -> 50421 bytes
 11 files changed, 369 insertions(+), 12 deletions(-)
 create mode 100644 appointment-import/src/main/java/smash/appointment/parse/Visit.java
 create mode 100644 appointment-import/src/main/java/smash/appointment/parse/VisitSqlExporter.java
 create mode 100644 appointment-import/src/test/java/smash/appointment/parse/AppointmentDaoTest.java
 create mode 100644 appointment-import/src/test/java/smash/appointment/parse/VisitTest.java

diff --git a/appointment-import/src/main/java/smash/appointment/parse/AppointmentDao.java b/appointment-import/src/main/java/smash/appointment/parse/AppointmentDao.java
index 4f129832..d523a6f8 100644
--- a/appointment-import/src/main/java/smash/appointment/parse/AppointmentDao.java
+++ b/appointment-import/src/main/java/smash/appointment/parse/AppointmentDao.java
@@ -1,13 +1,22 @@
 package smash.appointment.parse;
 
 import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
+
+import org.apache.log4j.Logger;
 
 public class AppointmentDao {
-	private List<AppointmentEntry> appointments = new ArrayList<>();
+	Logger												 logger				= Logger.getLogger(AppointmentDao.class);
+	private List<AppointmentEntry> appointments	= new ArrayList<>();
 
 	public void addAppointments(List<AppointmentEntry> appointmentsToAdd) {
-		appointments.addAll(appointmentsToAdd);
+		for (AppointmentEntry appointmentEntry : appointmentsToAdd) {
+			addAppointment(appointmentEntry);
+		}
 	}
 
 	/**
@@ -19,11 +28,79 @@ public class AppointmentDao {
 	}
 
 	/**
-	 * @param appointments the appointments to set
+	 * @param appointments
+	 *          the appointments to set
 	 * @see #appointments
 	 */
 	public void setAppointments(List<AppointmentEntry> appointments) {
 		this.appointments = appointments;
 	}
 
+	public List<Visit> getVisits() {
+		List<Visit> result = new ArrayList<>();
+		Map<Subject, List<AppointmentEntry>> subjectAppointments = new HashMap<>();
+		for (AppointmentEntry entry : appointments) {
+			if (subjectAppointments.get(entry.getSubject()) == null) {
+				subjectAppointments.put(entry.getSubject(), new ArrayList<AppointmentEntry>());
+			}
+			subjectAppointments.get(entry.getSubject()).add(entry);
+		}
+		for (Subject subject : subjectAppointments.keySet()) {
+			result.addAll(getVisitsForSubject(subject, subjectAppointments.get(subject)));
+		}
+		return result;
+	}
+
+	private List<Visit> getVisitsForSubject(Subject subject, List<AppointmentEntry> list) {
+		Comparator<AppointmentEntry> comparator = new Comparator<AppointmentEntry>() {
+
+			@Override
+			public int compare(AppointmentEntry o1, AppointmentEntry o2) {
+				String date1 = o1.getDay().substring(0, 10);
+				String date2 = o2.getDay().substring(0, 10);
+				if (date1.compareTo(date2) == 0) {
+					if (o1.getTypes().contains(AppointmentType.LEVEL_A) || o1.getTypes().contains(AppointmentType.LEVEL_A_TQ)) {
+						return -1;
+					} else if (o2.getTypes().contains(AppointmentType.LEVEL_A) || o2.getTypes().contains(AppointmentType.LEVEL_A_TQ)) {
+						return 1;
+					} else {
+						return 0;
+					}
+				} else {
+					return date1.compareTo(date2);
+				}
+			}
+		};
+		Collections.sort(list, comparator);
+
+		List<Visit> result = new ArrayList<>();
+		Visit currentVisit = new Visit(subject);
+		for (AppointmentEntry appointmentEntry : list) {
+			if (appointmentEntry.getTypes().contains(AppointmentType.LEVEL_A) || appointmentEntry.getTypes().contains(AppointmentType.LEVEL_A_TQ)) {
+				if (currentVisit.getAppointments().size() > 0) {
+					result.add(currentVisit);
+				}
+
+				currentVisit = new Visit(subject);
+				currentVisit.addAppointment(appointmentEntry);
+			} else {
+				String date = currentVisit.getLastAppointmentDate();
+				if (date.equals(appointmentEntry.getDay().substring(0, 10))) {
+					currentVisit.getLastAppointment().addTypes(appointmentEntry.getTypes());
+				} else {
+					currentVisit.addAppointment(appointmentEntry);
+				}
+			}
+		}
+		if (currentVisit.getAppointments().size() > 0) {
+			result.add(currentVisit);
+		}
+		return result;
+	}
+
+	public void addAppointment(AppointmentEntry appointment) {
+		appointments.add(appointment);
+
+	}
+
 }
diff --git a/appointment-import/src/main/java/smash/appointment/parse/AppointmentEntry.java b/appointment-import/src/main/java/smash/appointment/parse/AppointmentEntry.java
index b6e87286..d001600f 100644
--- a/appointment-import/src/main/java/smash/appointment/parse/AppointmentEntry.java
+++ b/appointment-import/src/main/java/smash/appointment/parse/AppointmentEntry.java
@@ -1,6 +1,7 @@
 package smash.appointment.parse;
 
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.List;
 
 public class AppointmentEntry {
@@ -124,4 +125,10 @@ public class AppointmentEntry {
 		}
 
 	}
+	public void addTypes(Collection<AppointmentType> typesToAdd) {
+		for (AppointmentType appointmentType : typesToAdd) {
+			addType(appointmentType);
+		}
+
+	}
 }
diff --git a/appointment-import/src/main/java/smash/appointment/parse/Main.java b/appointment-import/src/main/java/smash/appointment/parse/Main.java
index ab43800c..fc5c27b2 100644
--- a/appointment-import/src/main/java/smash/appointment/parse/Main.java
+++ b/appointment-import/src/main/java/smash/appointment/parse/Main.java
@@ -1,6 +1,10 @@
 package smash.appointment.parse;
 
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.HashSet;
 import java.util.List;
+import java.util.Set;
 
 import org.apache.commons.cli.CommandLine;
 import org.apache.commons.cli.CommandLineParser;
@@ -26,12 +30,14 @@ public class Main {
 		Option flyingTeam = Option.builder().required().argName("file").hasArg().desc("PRC flying-team").longOpt("flying-team").build();
 		Option lihControls = Option.builder().required().argName("file").hasArg().desc("LIH controls").longOpt("lih-controls").build();
 		Option lihMappingControls = Option.builder().required().argName("file").hasArg().desc("LIH controls mapping").longOpt("lih-mapping").build();
+		Option redCap = Option.builder().required().argName("file").hasArg().desc("RedCap appointments").longOpt("red-cap").build();
 		options.addOption(agenda);
 		options.addOption(subjects);
 		options.addOption(controls);
 		options.addOption(flyingTeam);
 		options.addOption(lihControls);
 		options.addOption(lihMappingControls);
+		options.addOption(redCap);
 
 		CommandLineParser parser = new DefaultParser();
 		try {
@@ -65,7 +71,9 @@ public class Main {
 			}
 
 			String agendaFile = line.getOptionValue("agenda");
-			appointmentDao.addAppointments(processPrcAppointments(agendaFile));
+			Calendar today = Calendar.getInstance();
+			today.set(Calendar.HOUR, 5);
+			appointmentDao.addAppointments(processPrcAppointments(agendaFile, today));
 
 			SubjectSqlExporter subjectSqlExporter = new SubjectSqlExporter();
 			// logger.debug("SUBJECTS: ");
@@ -105,10 +113,10 @@ public class Main {
 		return parser.processExcel(controlsFile);
 	}
 
-	private List<AppointmentEntry> processPrcAppointments(String agendaFile) throws Exception {
+	private List<AppointmentEntry> processPrcAppointments(String agendaFile, Calendar minDate) throws Exception {
 		XlsxCalendarProcessor processor = new XlsxCalendarProcessor();
 		processor.setSubjectDao(subjectDao);
-		List<AppointmentEntry> entries = processor.processExcel(agendaFile);
+		List<AppointmentEntry> entries = processor.processExcel(agendaFile, minDate);
 
 		return entries;
 	}
diff --git a/appointment-import/src/main/java/smash/appointment/parse/Visit.java b/appointment-import/src/main/java/smash/appointment/parse/Visit.java
new file mode 100644
index 00000000..68b0538c
--- /dev/null
+++ b/appointment-import/src/main/java/smash/appointment/parse/Visit.java
@@ -0,0 +1,87 @@
+package smash.appointment.parse;
+
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.List;
+
+public class Visit {
+
+	private Subject												 subject;
+	private List<AppointmentEntry> appointments	= new ArrayList<>();
+
+	public Visit(Subject subject) {
+		this.subject = subject;
+	}
+
+	public void addAppointment(AppointmentEntry entry) {
+		appointments.add(entry);
+	}
+
+	/**
+	 * @return the appointments
+	 * @see #appointments
+	 */
+	public List<AppointmentEntry> getAppointments() {
+		return appointments;
+	}
+
+	/**
+	 * @param appointments
+	 *          the appointments to set
+	 * @see #appointments
+	 */
+	public void setAppointments(List<AppointmentEntry> appointments) {
+		this.appointments = appointments;
+	}
+
+	public String getLastAppointmentDate() {
+		if (appointments.size() == 0) {
+			return "1900-01-01";
+		}
+		return getLastAppointment().getDay().substring(0, 10);
+	}
+
+	public AppointmentEntry getLastAppointment() {
+		if (appointments.size() > 0) {
+			return appointments.get(appointments.size() - 1);
+		} else {
+			return null;
+		}
+	}
+
+	public String getStartDate() {
+		if (appointments.size() > 0) {
+			return appointments.get(0).getDay().substring(0, 10);
+		} else {
+			return "1900-01-01";
+		}
+	}
+
+	private static final SimpleDateFormat DATE_FORMATTER = new SimpleDateFormat("yyyy-MM-dd");
+
+	public String getEndDate() throws ParseException {
+		Calendar calendar = Calendar.getInstance();
+		calendar.setTime(DATE_FORMATTER.parse(getStartDate()));
+		calendar.add(Calendar.MONTH, 3);
+		return DATE_FORMATTER.format(calendar.getTime());
+	}
+
+	/**
+	 * @return the subject
+	 * @see #subject
+	 */
+	public Subject getSubject() {
+		return subject;
+	}
+
+	/**
+	 * @param subject the subject to set
+	 * @see #subject
+	 */
+	public void setSubject(Subject subject) {
+		this.subject = subject;
+	}
+
+}
diff --git a/appointment-import/src/main/java/smash/appointment/parse/VisitSqlExporter.java b/appointment-import/src/main/java/smash/appointment/parse/VisitSqlExporter.java
new file mode 100644
index 00000000..65d38b02
--- /dev/null
+++ b/appointment-import/src/main/java/smash/appointment/parse/VisitSqlExporter.java
@@ -0,0 +1,36 @@
+package smash.appointment.parse;
+
+import java.text.ParseException;
+
+public class VisitSqlExporter {
+
+	public String toSql(Visit visit, boolean isFinished) throws ParseException {
+		StringBuilder result = new StringBuilder("");
+
+		result.append("insert into web_visit (");
+		result.append("subject_id,	 ");
+		result.append("datetime_begin, ");
+		result.append("datetime_end, ");
+		result.append("is_finsished)");
+		result.append("date_born) ");
+
+		result.append("values (");
+		result.append("SELECT id from web_subject where screening_number = "+getStringVal(visit.getSubject().getScreeningNumber()) + ",");
+		result.append(getStringVal(visit.getStartDate()) + ",");
+		result.append(getStringVal(visit.getEndDate()) + ",");
+		result.append(isFinished);
+		result.append(");");
+
+		return result.toString();
+	}
+
+	private String getStringVal(String arg) {
+		if (arg == null) {
+			return "null";
+		} else if (arg.isEmpty()) {
+			return "''";
+		} else {
+			return "'" + arg + "'";
+		}
+	}
+}
diff --git a/appointment-import/src/main/java/smash/appointment/parse/XlsxCalendarProcessor.java b/appointment-import/src/main/java/smash/appointment/parse/XlsxCalendarProcessor.java
index 7dfe846d..0c6e2a14 100644
--- a/appointment-import/src/main/java/smash/appointment/parse/XlsxCalendarProcessor.java
+++ b/appointment-import/src/main/java/smash/appointment/parse/XlsxCalendarProcessor.java
@@ -1,22 +1,21 @@
 package smash.appointment.parse;
 
 import java.io.FileInputStream;
-import java.io.IOException;
 import java.io.InputStream;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.Calendar;
 import java.util.Date;
+import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Locale;
+import java.util.Set;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
 import org.apache.log4j.Logger;
-import org.apache.poi.EncryptedDocumentException;
-import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
 import org.apache.poi.ss.usermodel.Cell;
 import org.apache.poi.ss.usermodel.CellType;
 import org.apache.poi.ss.usermodel.FormulaEvaluator;
@@ -30,7 +29,7 @@ public class XlsxCalendarProcessor {
 
 	private SubjectDao subjectDao;
 
-	public List<AppointmentEntry> processExcel(String filename) throws EncryptedDocumentException, InvalidFormatException, IOException, ParseException {
+	public List<AppointmentEntry> processExcel(String filename, Calendar minDate) throws Exception {
 		List<AppointmentEntry> result = new ArrayList<AppointmentEntry>();
 		InputStream inp = new FileInputStream(filename);
 		Workbook workbook = WorkbookFactory.create(inp);
@@ -46,9 +45,32 @@ public class XlsxCalendarProcessor {
 				logger.debug("Skipping sheet: " + name);
 			}
 		}
+		if (minDate != null) {
+			Set<AppointmentEntry> toBeRemoved = new HashSet<>();
+
+			for (AppointmentEntry entry : result) {
+				if (isBefore(entry, minDate)) {
+					toBeRemoved.add(entry);
+				}
+			}
+			result.removeAll(toBeRemoved);
+		}
+
 		return result;
 	}
 
+	private static final SimpleDateFormat DATE_FORMATTER = new SimpleDateFormat("yyyy-MM-dd");
+
+	private boolean isBefore(AppointmentEntry entry, Calendar minDate) {
+		String entryDate = entry.getDay();
+		String beforeDate = DATE_FORMATTER.format(minDate.getTime());
+		if (entryDate.compareTo(beforeDate) < 0) {
+			return true;
+		} else {
+			return false;
+		}
+	}
+
 	int[]	dayColumns						 = new int[] { 3, 4, 5, 6, 7 };
 
 	int[]	weekStartRows					 = new int[] { 5, 23, 41, 59, 77, 95 };
diff --git a/appointment-import/src/test/java/smash/appointment/parse/AllTests.java b/appointment-import/src/test/java/smash/appointment/parse/AllTests.java
index 71c7e659..df5a093d 100644
--- a/appointment-import/src/test/java/smash/appointment/parse/AllTests.java
+++ b/appointment-import/src/test/java/smash/appointment/parse/AllTests.java
@@ -5,7 +5,8 @@ import org.junit.runners.Suite;
 import org.junit.runners.Suite.SuiteClasses;
 
 @RunWith(Suite.class)
-@SuiteClasses({ CellParserTest.class, //
+@SuiteClasses({ AppointmentDaoTest.class, //
+		CellParserTest.class, //
 		LihControlMappingParserTest.class, //
 		LihControlParserTest.class, //
 		PrcFlyingParserTest.class, //
@@ -14,6 +15,7 @@ import org.junit.runners.Suite.SuiteClasses;
 
 		SubjectDaoTest.class, //
 		SubjectParserTest.class, //
+		VisitTest.class, //
 		XlsxCalendarProcessorTest.class, //
 })
 
diff --git a/appointment-import/src/test/java/smash/appointment/parse/AppointmentDaoTest.java b/appointment-import/src/test/java/smash/appointment/parse/AppointmentDaoTest.java
new file mode 100644
index 00000000..82dba7fa
--- /dev/null
+++ b/appointment-import/src/test/java/smash/appointment/parse/AppointmentDaoTest.java
@@ -0,0 +1,69 @@
+package smash.appointment.parse;
+
+import static org.junit.Assert.*;
+
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.Test;
+
+public class AppointmentDaoTest {
+
+	@AfterClass
+	public static void tearDownAfterClass() throws Exception {
+	}
+
+	@Before
+	public void setUp() throws Exception {
+	}
+
+	@After
+	public void tearDown() throws Exception {
+	}
+
+	@Test
+	public void getVisits() {
+		Subject subject1 = new Subject("a", "b", "c", "d");
+		AppointmentEntry appointment = new AppointmentEntry();
+		appointment.setSubject(subject1);
+		appointment.setDay("2016-02-02");
+		appointment.addType(AppointmentType.LEVEL_A);
+		
+		AppointmentEntry appointment2 = new AppointmentEntry();
+		appointment2.setSubject(subject1);
+		appointment2.setDay("2016-02-02");
+		appointment2.addType(AppointmentType.LEVEL_B);
+		
+		AppointmentEntry appointment3 = new AppointmentEntry();
+		appointment3.setSubject(subject1);
+		appointment3.setDay("2011-02-02");
+		appointment3.addType(AppointmentType.LEVEL_A);
+		
+		AppointmentDao appointmentDao = new AppointmentDao();
+		appointmentDao.addAppointment(appointment);
+		appointmentDao.addAppointment(appointment2);
+		appointmentDao.addAppointment(appointment3);
+		assertEquals(2, appointmentDao.getVisits().size());
+	}
+
+	@Test
+	public void getVisits2() {
+		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.addType(AppointmentType.LEVEL_A);
+		
+		AppointmentEntry appointment3 = new AppointmentEntry();
+		appointment3.setSubject(subject2);
+		appointment3.setDay("2016-02-02");
+		appointment3.addType(AppointmentType.LEVEL_B);
+		
+		AppointmentDao appointmentDao = new AppointmentDao();
+		appointmentDao.addAppointment(appointment);
+		appointmentDao.addAppointment(appointment3);
+		assertEquals(2, appointmentDao.getVisits().size());
+	}
+
+}
diff --git a/appointment-import/src/test/java/smash/appointment/parse/VisitTest.java b/appointment-import/src/test/java/smash/appointment/parse/VisitTest.java
new file mode 100644
index 00000000..fd3eb2d9
--- /dev/null
+++ b/appointment-import/src/test/java/smash/appointment/parse/VisitTest.java
@@ -0,0 +1,48 @@
+package smash.appointment.parse;
+
+import static org.junit.Assert.*;
+
+import java.text.ParseException;
+
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.Test;
+
+public class VisitTest {
+
+	@AfterClass
+	public static void tearDownAfterClass() throws Exception {
+	}
+
+	@Before
+	public void setUp() throws Exception {
+	}
+
+	@After
+	public void tearDown() throws Exception {
+	}
+
+	@Test
+	public void testGetStartDate() {
+		Subject subject = new Subject("!", "", "4", "5");
+		Visit visit = new Visit(subject);
+		AppointmentEntry entry = new AppointmentEntry();
+		entry.setSubject(subject);
+		entry.setDay("2015-02-01 8:00");
+		visit.addAppointment(entry);
+		assertEquals("2015-02-01", visit.getStartDate());
+	}
+
+	@Test
+	public void testGetEndDate() throws ParseException {
+		Subject subject = new Subject("!", "", "4", "5");
+		Visit visit = new Visit(subject);
+		AppointmentEntry entry = new AppointmentEntry();
+		entry.setSubject(subject);
+		entry.setDay("2015-02-01 8:00");
+		visit.addAppointment(entry);
+		assertEquals("2015-05-01", visit.getEndDate());
+	}
+
+}
diff --git a/appointment-import/src/test/java/smash/appointment/parse/XlsxCalendarProcessorTest.java b/appointment-import/src/test/java/smash/appointment/parse/XlsxCalendarProcessorTest.java
index 7625586d..8e23b0a9 100644
--- a/appointment-import/src/test/java/smash/appointment/parse/XlsxCalendarProcessorTest.java
+++ b/appointment-import/src/test/java/smash/appointment/parse/XlsxCalendarProcessorTest.java
@@ -4,6 +4,7 @@ import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
 
 import java.io.FileNotFoundException;
+import java.util.Calendar;
 import java.util.List;
 
 import org.apache.log4j.Logger;
@@ -33,7 +34,7 @@ public class XlsxCalendarProcessorTest extends TestBase {
 
 	@Test
 	public void testReadExcel() throws Exception {
-		List<AppointmentEntry> entries = processor.processExcel("testFiles/calendarExample.xlsx");
+		List<AppointmentEntry> entries = processor.processExcel("testFiles/calendarExample.xlsx", Calendar.getInstance());
 		assertTrue(entries.size() > 0);
 	}
 
diff --git a/appointment-import/testFiles/calendarExample.xlsx b/appointment-import/testFiles/calendarExample.xlsx
index e6ef090b5834afa3e0a9a414c96c3a37c8ae253f..b8a0e42b59245f10692d9739ade2a0e8e4cc8b03 100644
GIT binary patch
delta 18621
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
Iy1gJC006X8;{X5v

delta 10857
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
CS1j-V

-- 
GitLab