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