From bc5329f6c15e282b4bb706de74d674e338c8cfa6 Mon Sep 17 00:00:00 2001 From: Piotr Gawron <piotr.gawron@uni.lu> Date: Tue, 28 Feb 2017 17:49:15 +0100 Subject: [PATCH] working export to sql --- .../appointment/parse/AppointmentEntry.java | 8 +++++ .../appointment/parse/AppointmentType.java | 27 ++++++++++----- .../parse/LihControlMappingParser.java | 3 +- .../appointment/parse/LihControlParser.java | 8 +++-- .../java/smash/appointment/parse/Main.java | 3 +- .../appointment/parse/PrcControlParser.java | 3 +- .../appointment/parse/PrcFlyingParser.java | 3 +- .../appointment/parse/PrcSubjectsParser.java | 3 +- .../appointment/parse/SubjectParser.java | 15 +++++++-- .../appointment/parse/SubjectSqlExporter.java | 33 ++++++++++++++++--- .../java/smash/appointment/parse/Visit.java | 10 ++++++ .../appointment/parse/VisitSqlExporter.java | 27 ++++++++++++--- .../src/main/resources/log4j.properties | 2 +- .../parse/LihControlParserTest.java | 2 +- .../appointment/parse/SubjectParserTest.java | 4 ++- 15 files changed, 120 insertions(+), 31 deletions(-) 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 d001600f..9216820c 100644 --- a/appointment-import/src/main/java/smash/appointment/parse/AppointmentEntry.java +++ b/appointment-import/src/main/java/smash/appointment/parse/AppointmentEntry.java @@ -107,6 +107,13 @@ public class AppointmentEntry { * @see #duration */ public String getDuration() { + if (duration == null || duration.trim().isEmpty()) { + int count = 0; + for (AppointmentType type : types) { + count += type.getTime(); + } + return count+""; + } return duration; } @@ -125,6 +132,7 @@ 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/AppointmentType.java b/appointment-import/src/main/java/smash/appointment/parse/AppointmentType.java index 5f232b0a..d3727f17 100644 --- a/appointment-import/src/main/java/smash/appointment/parse/AppointmentType.java +++ b/appointment-import/src/main/java/smash/appointment/parse/AppointmentType.java @@ -1,15 +1,24 @@ package smash.appointment.parse; public enum AppointmentType { - LEVEL_BV(), // - LEVEL_BG(), // - LEVEL_SB(), // - - LEVEL_A_TQ(), // - LEVEL_A(), // - LEVEL_B(), // - LEVEL_B_M_POWER(), // - OTHER(), // + LEVEL_BV(90), // + LEVEL_BG(30), // + LEVEL_SB(30), // + + LEVEL_A_TQ(120), // + LEVEL_A(120), // + LEVEL_B(90), // + LEVEL_B_M_POWER(70), // + OTHER(60), // ; + private int time; + + private AppointmentType(int defaultTime) { + this.time=defaultTime; + } + public int getTime() { + return time; + } + } diff --git a/appointment-import/src/main/java/smash/appointment/parse/LihControlMappingParser.java b/appointment-import/src/main/java/smash/appointment/parse/LihControlMappingParser.java index 3b7aec06..10144357 100644 --- a/appointment-import/src/main/java/smash/appointment/parse/LihControlMappingParser.java +++ b/appointment-import/src/main/java/smash/appointment/parse/LihControlMappingParser.java @@ -1,6 +1,7 @@ package smash.appointment.parse; import java.util.ArrayList; +import java.util.Calendar; import java.util.List; import org.apache.poi.ss.usermodel.Row; @@ -64,7 +65,7 @@ public class LihControlMappingParser extends SubjectParser { @Override protected String parseAddDate(Row row) { - return getDate(row.getCell(1)); + return getDate(row.getCell(1), Calendar.getInstance()); } @Override diff --git a/appointment-import/src/main/java/smash/appointment/parse/LihControlParser.java b/appointment-import/src/main/java/smash/appointment/parse/LihControlParser.java index b1420a9a..eb16daa5 100644 --- a/appointment-import/src/main/java/smash/appointment/parse/LihControlParser.java +++ b/appointment-import/src/main/java/smash/appointment/parse/LihControlParser.java @@ -1,6 +1,8 @@ package smash.appointment.parse; +import java.text.SimpleDateFormat; import java.util.ArrayList; +import java.util.Calendar; import java.util.List; import org.apache.poi.ss.usermodel.Row; @@ -44,7 +46,7 @@ public class LihControlParser extends SubjectParser { @Override protected String parseBirthDate(Row row) { - return getDate(row.getCell(5)); + return getDate(row.getCell(5), null); } @Override @@ -52,9 +54,11 @@ public class LihControlParser extends SubjectParser { return ""; } + private static final SimpleDateFormat DATE_FORMATTER = new SimpleDateFormat("yyyy-MM-dd"); + @Override protected String parseAddDate(Row row) { - return ""; + return DATE_FORMATTER.format(Calendar.getInstance().getTime()); } @Override 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 060d2997..bfd13282 100644 --- a/appointment-import/src/main/java/smash/appointment/parse/Main.java +++ b/appointment-import/src/main/java/smash/appointment/parse/Main.java @@ -69,7 +69,7 @@ public class Main { subjectDao .addSubject(subject, "[" + lihControlsFile + ";" + subject.getScreeningNumber() + ";" + subject.getName() + " " + subject.getSurname() + "]"); } - + subjectDao.addSubject(Visit.UNKNOWN, ""); String agendaFile = line.getOptionValue("agenda"); @@ -77,6 +77,7 @@ public class Main { today.set(Calendar.HOUR, 5); appointmentDao.addAppointments(processPrcAppointments(agendaFile, today)); + System.out.println("delete from web_appointment ;\ndelete from web_visit;\ndelete from web_subject;\n"); SubjectSqlExporter subjectSqlExporter = new SubjectSqlExporter(); // logger.debug("SUBJECTS: "); for (Subject subject : subjectDao.getSubjects()) { diff --git a/appointment-import/src/main/java/smash/appointment/parse/PrcControlParser.java b/appointment-import/src/main/java/smash/appointment/parse/PrcControlParser.java index 1b13834d..a74ed7b3 100644 --- a/appointment-import/src/main/java/smash/appointment/parse/PrcControlParser.java +++ b/appointment-import/src/main/java/smash/appointment/parse/PrcControlParser.java @@ -1,6 +1,7 @@ package smash.appointment.parse; import java.util.ArrayList; +import java.util.Calendar; import java.util.List; import org.apache.poi.ss.usermodel.Cell; @@ -55,7 +56,7 @@ public class PrcControlParser extends SubjectParser { @Override protected String parseAddDate(Row row) { - return getDate(row.getCell(8)); + return getDate(row.getCell(8), Calendar.getInstance()); } @Override diff --git a/appointment-import/src/main/java/smash/appointment/parse/PrcFlyingParser.java b/appointment-import/src/main/java/smash/appointment/parse/PrcFlyingParser.java index 348e23bf..53821a72 100644 --- a/appointment-import/src/main/java/smash/appointment/parse/PrcFlyingParser.java +++ b/appointment-import/src/main/java/smash/appointment/parse/PrcFlyingParser.java @@ -1,6 +1,7 @@ package smash.appointment.parse; import java.util.ArrayList; +import java.util.Calendar; import java.util.List; import org.apache.poi.ss.usermodel.Cell; @@ -55,7 +56,7 @@ public class PrcFlyingParser extends SubjectParser { @Override protected String parseAddDate(Row row) { - return getDate(row.getCell(11)); + return getDate(row.getCell(11),Calendar.getInstance()); } @Override diff --git a/appointment-import/src/main/java/smash/appointment/parse/PrcSubjectsParser.java b/appointment-import/src/main/java/smash/appointment/parse/PrcSubjectsParser.java index 89434c47..5f869b4e 100644 --- a/appointment-import/src/main/java/smash/appointment/parse/PrcSubjectsParser.java +++ b/appointment-import/src/main/java/smash/appointment/parse/PrcSubjectsParser.java @@ -1,6 +1,7 @@ package smash.appointment.parse; import java.util.ArrayList; +import java.util.Calendar; import java.util.List; import org.apache.poi.ss.usermodel.IndexedColors; @@ -55,7 +56,7 @@ public class PrcSubjectsParser extends SubjectParser { @Override protected String parseAddDate(Row row) { - return getDate(row.getCell(14)); + return getDate(row.getCell(14),Calendar.getInstance()); } @Override diff --git a/appointment-import/src/main/java/smash/appointment/parse/SubjectParser.java b/appointment-import/src/main/java/smash/appointment/parse/SubjectParser.java index c61a7785..82e6808d 100644 --- a/appointment-import/src/main/java/smash/appointment/parse/SubjectParser.java +++ b/appointment-import/src/main/java/smash/appointment/parse/SubjectParser.java @@ -6,6 +6,7 @@ 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.Iterator; import java.util.List; @@ -95,6 +96,7 @@ public abstract class SubjectParser { } protected abstract boolean parseDead(Row row); + protected abstract boolean parseResigned(Row row); protected abstract String parseToBeSeenAt(Row row); @@ -167,9 +169,13 @@ public abstract class SubjectParser { return ""; } - protected String getDate(Cell cell) { + protected String getDate(Cell cell, Calendar defaultDate) { + String defaultDateString = ""; + if (defaultDate != null) { + defaultDateString = DATE_FORMATTER.format(defaultDate.getTime()); + } if (cell == null) { - return ""; + return defaultDateString; } String result = null; if (cell.getCellTypeEnum().equals(CellType.STRING)) { @@ -179,11 +185,14 @@ public abstract class SubjectParser { if (date != null) { result = DATE_FORMATTER.format(date); } else { - result = ""; + result = defaultDateString; } } else { result = getString(cell); } + if (result == null || result.trim().isEmpty()) { + result = defaultDateString; + } return result; } diff --git a/appointment-import/src/main/java/smash/appointment/parse/SubjectSqlExporter.java b/appointment-import/src/main/java/smash/appointment/parse/SubjectSqlExporter.java index d753eb60..4d7750cf 100644 --- a/appointment-import/src/main/java/smash/appointment/parse/SubjectSqlExporter.java +++ b/appointment-import/src/main/java/smash/appointment/parse/SubjectSqlExporter.java @@ -25,7 +25,10 @@ public class SubjectSqlExporter { result.append("nd_number,"); result.append("mpower_id,"); result.append("screening_number,"); - result.append("status,"); + result.append("default_appointment_location,"); + result.append("type,"); + result.append("dead,"); + result.append("resigned,"); result.append("date_born) "); result.append("values ("); @@ -41,20 +44,31 @@ public class SubjectSqlExporter { result.append(getStringVal(subject.getPhone2()) + ","); result.append(getStringVal(subject.getPhone3()) + ","); result.append(getStringVal(subject.getMail()) + ","); - result.append(getStringVal(subject.getDiagnosisYear()) + ","); + result.append(getIntVal(subject.getDiagnosisYear()) + ","); result.append(getStringVal(subject.getDiagnosis()) + ","); result.append(getStringVal(subject.getReferal()) + ","); - result.append(getStringVal(subject.getAddDate()) + ","); + result.append(getDateVal(subject.getAddDate()) + ","); result.append(getStringVal(subject.getNdNumber()) + ","); result.append(getStringVal(subject.getmPowerId()) + ","); result.append(getStringVal(subject.getScreeningNumber()) + ","); - result.append("'',"); - result.append(getStringVal(subject.getBirthDate())); + result.append(getStringVal(subject.getToBeSeenAt()) + ","); + result.append(getStringVal(subject.getType().toString().substring(0, 1)) + ","); + result.append(subject.isDead() + ","); + result.append(subject.isResigned() + ","); + result.append(getDateVal(subject.getBirthDate())); result.append(");"); return result.toString(); } + private String getIntVal(String diagnosisYear) { + if (diagnosisYear == null || diagnosisYear.trim().isEmpty()) { + return "0"; + } else { + return diagnosisYear; + } + } + private String getStringVal(String arg) { if (arg == null) { return "null"; @@ -64,4 +78,13 @@ public class SubjectSqlExporter { return "'" + arg + "'"; } } + private String getDateVal(String arg) { + if (arg == null) { + return "null"; + } else if (arg.isEmpty()) { + return "null"; + } else { + return "'" + arg + "'"; + } + } } diff --git a/appointment-import/src/main/java/smash/appointment/parse/Visit.java b/appointment-import/src/main/java/smash/appointment/parse/Visit.java index 28dbaf24..2762806a 100644 --- a/appointment-import/src/main/java/smash/appointment/parse/Visit.java +++ b/appointment-import/src/main/java/smash/appointment/parse/Visit.java @@ -13,6 +13,16 @@ public class Visit { static { UNKNOWN = new Subject("NOBODY","","","---"); UNKNOWN.setType(SubjectType.CONTROL); + UNKNOWN.setAddDate("1900-01-01"); + UNKNOWN.setAddress(""); + UNKNOWN.setZipCode(""); + UNKNOWN.setCity(""); + UNKNOWN.setCountry(""); + UNKNOWN.setmPowerId(""); + UNKNOWN.setReferal(""); + UNKNOWN.setRemarks(""); + UNKNOWN.setDiagnosis(""); + UNKNOWN.setToBeSeenAt("P"); } Logger logger = Logger.getLogger(Visit.class); diff --git a/appointment-import/src/main/java/smash/appointment/parse/VisitSqlExporter.java b/appointment-import/src/main/java/smash/appointment/parse/VisitSqlExporter.java index 65d38b02..6bd9dbe3 100644 --- a/appointment-import/src/main/java/smash/appointment/parse/VisitSqlExporter.java +++ b/appointment-import/src/main/java/smash/appointment/parse/VisitSqlExporter.java @@ -1,8 +1,12 @@ package smash.appointment.parse; import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Calendar; public class VisitSqlExporter { + AppointmentSqlExporter appointmentSqlExporter = new AppointmentSqlExporter(); + private static final SimpleDateFormat DATE_FORMATTER = new SimpleDateFormat("yyyy-MM-dd"); public String toSql(Visit visit, boolean isFinished) throws ParseException { StringBuilder result = new StringBuilder(""); @@ -11,18 +15,33 @@ public class VisitSqlExporter { result.append("subject_id, "); result.append("datetime_begin, "); result.append("datetime_end, "); - result.append("is_finsished)"); - result.append("date_born) "); + result.append("is_finished)"); result.append("values ("); - result.append("SELECT id from web_subject where screening_number = "+getStringVal(visit.getSubject().getScreeningNumber()) + ","); + 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(");"); + result.append(");\n"); + for (AppointmentEntry entry: visit.getAppointments()) { + boolean entryFinished= isFinished; + if (isBefore(entry, Calendar.getInstance())) + entryFinished=true; + result.append(appointmentSqlExporter.toSql(entry, entryFinished)+"\n"); + } return result.toString(); } + + 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; + } + } private String getStringVal(String arg) { if (arg == null) { diff --git a/appointment-import/src/main/resources/log4j.properties b/appointment-import/src/main/resources/log4j.properties index e108a78c..c3a78a92 100644 --- a/appointment-import/src/main/resources/log4j.properties +++ b/appointment-import/src/main/resources/log4j.properties @@ -1,5 +1,5 @@ #Set root logger 's level and its appender to an appender called CONSOLE which is defined below. -log4j.rootLogger=debug, CONSOLE +log4j.rootLogger=fatal, CONSOLE #Set the behavior of the CONSOLE appender log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender diff --git a/appointment-import/src/test/java/smash/appointment/parse/LihControlParserTest.java b/appointment-import/src/test/java/smash/appointment/parse/LihControlParserTest.java index b610128e..589da171 100644 --- a/appointment-import/src/test/java/smash/appointment/parse/LihControlParserTest.java +++ b/appointment-import/src/test/java/smash/appointment/parse/LihControlParserTest.java @@ -51,7 +51,7 @@ public class LihControlParserTest extends TestBase { assertEquals("", subject.getDiagnosisYear()); assertEquals("", subject.getDiagnosis()); assertEquals("", subject.getReferal()); - assertEquals("", subject.getAddDate()); + assertNotNull(subject.getAddDate()); assertEquals("", subject.getNdNumber()); assertEquals("1937-01-03", subject.getBirthDate()); assertTrue(subject.getRemarks().contains("some other remark")); diff --git a/appointment-import/src/test/java/smash/appointment/parse/SubjectParserTest.java b/appointment-import/src/test/java/smash/appointment/parse/SubjectParserTest.java index fffb1641..a9efafaf 100644 --- a/appointment-import/src/test/java/smash/appointment/parse/SubjectParserTest.java +++ b/appointment-import/src/test/java/smash/appointment/parse/SubjectParserTest.java @@ -2,6 +2,8 @@ package smash.appointment.parse; import static org.junit.Assert.*; +import java.util.Calendar; + import org.junit.After; import org.junit.AfterClass; import org.junit.Before; @@ -24,7 +26,7 @@ public class SubjectParserTest { @Test public void testParseDate() { SubjectParser parser = new PrcControlParser(); - assertEquals("", parser.getDate(null)); + assertEquals("", parser.getDate(null, null)); } } -- GitLab