From 6a162e8043a9132006e431f31fbc9b49e8e40d6c Mon Sep 17 00:00:00 2001
From: Piotr Gawron <piotr.gawron@uni.lu>
Date: Thu, 9 Mar 2017 17:31:47 +0100
Subject: [PATCH] finishing visits for dead and resigned people added

---
 .../appointment/parse/AppointmentDao.java     | 12 ++++++---
 .../java/smash/appointment/parse/Main.java    |  8 +-----
 .../java/smash/appointment/parse/Visit.java   | 27 +++++++++++++++----
 .../appointment/parse/VisitSqlExporter.java   |  4 +--
 4 files changed, 34 insertions(+), 17 deletions(-)

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 6f627c83..ab587150 100644
--- a/appointment-import/src/main/java/smash/appointment/parse/AppointmentDao.java
+++ b/appointment-import/src/main/java/smash/appointment/parse/AppointmentDao.java
@@ -81,6 +81,9 @@ public class AppointmentDao {
 		for (AppointmentEntry appointmentEntry : list) {
 			if (appointmentEntry.getTypes().contains(AppointmentType.LEVEL_AQUEST) || appointmentEntry.getTypes().contains(AppointmentType.LEVEL_A_TQ)) {
 				if (currentVisit.getAppointments().size() > 0) {
+					if (shouldBeFinished(currentVisit.getEndDate())) {
+						currentVisit.setFinished(true);
+					}
 					result.add(currentVisit);
 				}
 
@@ -100,8 +103,11 @@ public class AppointmentDao {
 		if (currentVisit.getAppointments().size() > 0) {
 			result.add(currentVisit);
 		}
-		if (shouldBeFinished(currentVisit.getEndDate()) && !subject.isDead() && !subject.isResigned()) {
-			result.add(createNextVisit(currentVisit));
+		if (shouldBeFinished(currentVisit.getEndDate())) {
+			currentVisit.setFinished(true);
+			if (!subject.isDead() && !subject.isResigned()) {
+				result.add(createNextVisit(currentVisit));
+			}
 		}
 		return result;
 	}
@@ -109,7 +115,7 @@ public class AppointmentDao {
 	protected Visit createNextVisit(Visit currentVisit) throws ParseException {
 		Visit visit = new Visit(currentVisit.getSubject());
 		Calendar date = Calendar.getInstance();
-		String dateStr =currentVisit.getStartDate(); 
+		String dateStr = currentVisit.getStartDate();
 		date.setTime(DATE_FORMATTER.parse(dateStr));
 		if (currentVisit.getSubject().getType().equals(SubjectType.CONTROL)) {
 			date.add(Calendar.YEAR, 4);
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 8f99f9ef..0d7c3423 100644
--- a/appointment-import/src/main/java/smash/appointment/parse/Main.java
+++ b/appointment-import/src/main/java/smash/appointment/parse/Main.java
@@ -97,13 +97,7 @@ public class Main {
 			List<Visit> visits = appointmentDao.getVisits();
 			for (int i = 0; i < visits.size(); i++) {
 				Visit visit = visits.get(i);
-				boolean finished = false;
-				if (i < visits.size() - 1) {
-					if (visit.getSubject().equals(visits.get(i + 1).getSubject())) {
-						finished = true;
-					}
-				}
-				System.out.println(visitSqlExporter.toSql(visit, finished));
+				System.out.println(visitSqlExporter.toSql(visit));
 			}
 
 		} catch (ParseException exp) {
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 b585c524..98b2a896 100644
--- a/appointment-import/src/main/java/smash/appointment/parse/Visit.java
+++ b/appointment-import/src/main/java/smash/appointment/parse/Visit.java
@@ -11,7 +11,7 @@ import org.apache.log4j.Logger;
 public class Visit {
 	static Subject UNKNOWN;
 	static {
-		UNKNOWN = new Subject("NOBODY","","","---");
+		UNKNOWN = new Subject("NOBODY", "", "", "---");
 		UNKNOWN.setType(SubjectType.CONTROL);
 		UNKNOWN.setAddDate("1900-01-01");
 		UNKNOWN.setAddress("");
@@ -28,11 +28,12 @@ public class Visit {
 
 	private Subject								 subject;
 	private List<AppointmentEntry> appointments	= new ArrayList<>();
-	
-	private String startDate;
+
+	private String								 startDate;
+	private boolean								 finished			= false;
 
 	public Visit(Subject subject) {
-		if (subject==null) {
+		if (subject == null) {
 			subject = UNKNOWN;
 		}
 		this.subject = subject;
@@ -77,7 +78,7 @@ public class Visit {
 	public String getStartDate() {
 		if (appointments.size() > 0) {
 			return appointments.get(0).getDay().substring(0, 10);
-		} else if (startDate==null){
+		} else if (startDate == null) {
 			return "1900-01-01";
 		} else {
 			return startDate;
@@ -114,4 +115,20 @@ public class Visit {
 		this.startDate = newDate;
 	}
 
+	/**
+	 * @return the finished
+	 * @see #finished
+	 */
+	public boolean isFinished() {
+		return finished;
+	}
+
+	/**
+	 * @param finished the finished to set
+	 * @see #finished
+	 */
+	public void setFinished(boolean finished) {
+		this.finished = finished;
+	}
+
 }
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 9cd7dff0..6ffef703 100644
--- a/appointment-import/src/main/java/smash/appointment/parse/VisitSqlExporter.java
+++ b/appointment-import/src/main/java/smash/appointment/parse/VisitSqlExporter.java
@@ -5,7 +5,7 @@ import java.util.Calendar;
 
 public class VisitSqlExporter extends SqlExporter {
 	AppointmentSqlExporter appointmentSqlExporter = new AppointmentSqlExporter(); 
-	public String toSql(Visit visit, boolean isFinished) throws ParseException {
+	public String toSql(Visit visit) throws ParseException {
 		StringBuilder result = new StringBuilder("");
 
 		result.append("insert into web_visit (");
@@ -18,7 +18,7 @@ public class VisitSqlExporter extends SqlExporter {
 		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(visit.isFinished());
 		result.append(");\n");
 		for (AppointmentEntry entry: visit.getAppointments()) {
 			result.append(appointmentSqlExporter.toSql(entry)+"\n");
-- 
GitLab