From 1ca534bbddc6279728d16117a632990f79e27b5c Mon Sep 17 00:00:00 2001
From: Piotr Gawron <piotr.gawron@uni.lu>
Date: Tue, 28 Feb 2017 18:07:07 +0100
Subject: [PATCH] export to sql improved (\' character issue)

---
 .../parse/AppointmentSqlExporter.java         | 11 +---
 .../smash/appointment/parse/SqlExporter.java  | 52 +++++++++++++++++++
 .../appointment/parse/SubjectSqlExporter.java | 28 +---------
 .../appointment/parse/VisitSqlExporter.java   | 25 +--------
 4 files changed, 55 insertions(+), 61 deletions(-)
 create mode 100644 appointment-import/src/main/java/smash/appointment/parse/SqlExporter.java

diff --git a/appointment-import/src/main/java/smash/appointment/parse/AppointmentSqlExporter.java b/appointment-import/src/main/java/smash/appointment/parse/AppointmentSqlExporter.java
index 2e1b93ea..821649a5 100644
--- a/appointment-import/src/main/java/smash/appointment/parse/AppointmentSqlExporter.java
+++ b/appointment-import/src/main/java/smash/appointment/parse/AppointmentSqlExporter.java
@@ -1,6 +1,6 @@
 package smash.appointment.parse;
 
-public class AppointmentSqlExporter {
+public class AppointmentSqlExporter extends SqlExporter{
 
 	public String toSql(AppointmentEntry appointment, boolean isFinished) {
 		StringBuilder result = new StringBuilder("");
@@ -21,13 +21,4 @@ public class AppointmentSqlExporter {
 		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/SqlExporter.java b/appointment-import/src/main/java/smash/appointment/parse/SqlExporter.java
new file mode 100644
index 00000000..a5c19bb2
--- /dev/null
+++ b/appointment-import/src/main/java/smash/appointment/parse/SqlExporter.java
@@ -0,0 +1,52 @@
+package smash.appointment.parse;
+
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+
+public class SqlExporter {
+
+	private static final SimpleDateFormat DATE_FORMATTER = new SimpleDateFormat("yyyy-MM-dd");
+
+	public SqlExporter() {
+		super();
+	}
+
+	protected 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;
+		}
+	}
+
+	protected String getStringVal(String arg) {
+		if (arg == null) {
+			return "null";
+		} else if (arg.isEmpty()) {
+			return "''";
+		} else {
+			return "'" + arg.replace("'", "''") + "'";
+		}
+	}
+
+	protected String getIntVal(String diagnosisYear) {
+		if (diagnosisYear == null || diagnosisYear.trim().isEmpty()) {
+			return "0";
+		} else {
+			return diagnosisYear;
+		}
+	}
+
+	protected String getDateVal(String arg) {
+		if (arg == null) {
+			return "null";
+		} else if (arg.isEmpty()) {
+			return "null";
+		} else {
+			return "'" + arg + "'";
+		}
+	}
+
+}
\ No newline at end of file
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 4d7750cf..19266843 100644
--- a/appointment-import/src/main/java/smash/appointment/parse/SubjectSqlExporter.java
+++ b/appointment-import/src/main/java/smash/appointment/parse/SubjectSqlExporter.java
@@ -1,6 +1,6 @@
 package smash.appointment.parse;
 
-public class SubjectSqlExporter {
+public class SubjectSqlExporter extends SqlExporter{
 
 	public String toSql(Subject subject) {
 		StringBuilder result = new StringBuilder("");
@@ -61,30 +61,4 @@ public class SubjectSqlExporter {
 		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";
-		} else if (arg.isEmpty()) {
-			return "''";
-		} else {
-			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/VisitSqlExporter.java b/appointment-import/src/main/java/smash/appointment/parse/VisitSqlExporter.java
index 6bd9dbe3..16077d37 100644
--- a/appointment-import/src/main/java/smash/appointment/parse/VisitSqlExporter.java
+++ b/appointment-import/src/main/java/smash/appointment/parse/VisitSqlExporter.java
@@ -1,13 +1,10 @@
 package smash.appointment.parse;
 
 import java.text.ParseException;
-import java.text.SimpleDateFormat;
 import java.util.Calendar;
 
-public class VisitSqlExporter {
+public class VisitSqlExporter extends SqlExporter {
 	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("");
 
@@ -32,24 +29,4 @@ public class VisitSqlExporter {
 
 		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) {
-			return "null";
-		} else if (arg.isEmpty()) {
-			return "''";
-		} else {
-			return "'" + arg + "'";
-		}
-	}
 }
-- 
GitLab