From ba945e402e640835e4a77a8e4a69598461aff386 Mon Sep 17 00:00:00 2001
From: Piotr Gawron <piotr.gawron@uni.lu>
Date: Thu, 2 Mar 2017 13:33:59 +0100
Subject: [PATCH] parsing of dead subjects is handled properly for old xls
 files

---
 .../appointment/parse/PrcSubjectsParser.java  |  21 +++++++++++++++---
 .../parse/PrcSubjectsParserTest.java          |   7 +++++-
 .../testFiles/prcSubjectsExample.xlsx         | Bin 9790 -> 9972 bytes
 3 files changed, 24 insertions(+), 4 deletions(-)

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 b24a61be..a06e0883 100644
--- a/appointment-import/src/main/java/smash/appointment/parse/PrcSubjectsParser.java
+++ b/appointment-import/src/main/java/smash/appointment/parse/PrcSubjectsParser.java
@@ -4,8 +4,11 @@ import java.util.ArrayList;
 import java.util.Calendar;
 import java.util.List;
 
+import org.apache.poi.hssf.util.HSSFColor;
+import org.apache.poi.ss.usermodel.Color;
 import org.apache.poi.ss.usermodel.IndexedColors;
 import org.apache.poi.ss.usermodel.Row;
+import org.apache.poi.xssf.usermodel.XSSFColor;
 
 public class PrcSubjectsParser extends SubjectParser {
 
@@ -151,9 +154,21 @@ public class PrcSubjectsParser extends SubjectParser {
 
 	@Override
 	protected boolean parseDead(Row row) {
-		if (row.getCell(0).getCellStyle().getFillBackgroundColorColor() != null) {
+		Color color = row.getCell(0).getCellStyle().getFillForegroundColorColor();
+		if (color == null) {
+			return false;
+		}
+		if (color instanceof XSSFColor) {
 			return true;
 		}
+		if (color instanceof HSSFColor) {
+			HSSFColor hssfColor = (HSSFColor) color;
+			if (hssfColor.getHexString().equalsIgnoreCase("0:0:0")) {
+				return false;
+			} else {
+				return true;
+			}
+		}
 		return false;
 	}
 
@@ -161,7 +176,7 @@ public class PrcSubjectsParser extends SubjectParser {
 	protected boolean parseResigned(Row row) {
 		try {
 			int colorId = row.getSheet().getWorkbook().getFontAt(row.getCell(0).getCellStyle().getFontIndex()).getColor();
-			//special case for black
+			// special case for black
 			if (colorId == 32767) {
 				return false;
 			}
@@ -186,7 +201,7 @@ public class PrcSubjectsParser extends SubjectParser {
 					return false;
 			}
 		} catch (Exception e) {
-			logger.error("Problem with parsing color for subject: " + parseName(row)+" "+parseSurname(row), e);
+			logger.error("Problem with parsing color for subject: " + parseName(row) + " " + parseSurname(row), e);
 			return false;
 		}
 	}
diff --git a/appointment-import/src/test/java/smash/appointment/parse/PrcSubjectsParserTest.java b/appointment-import/src/test/java/smash/appointment/parse/PrcSubjectsParserTest.java
index b5281b38..2c3a28ce 100644
--- a/appointment-import/src/test/java/smash/appointment/parse/PrcSubjectsParserTest.java
+++ b/appointment-import/src/test/java/smash/appointment/parse/PrcSubjectsParserTest.java
@@ -75,6 +75,11 @@ public class PrcSubjectsParserTest extends TestBase {
 		assertFalse(subject.isDead());
 		assertTrue(subject.isResigned());
 
-	}
 
+		subject = entries.get(5);
+		assertFalse(subject.isDead());
+
+		subject = entries.get(6);
+		assertFalse(subject.isDead());
+	}
 }
diff --git a/appointment-import/testFiles/prcSubjectsExample.xlsx b/appointment-import/testFiles/prcSubjectsExample.xlsx
index b728be7a0083e5574a6fc513934de0535fb19065..986303d98419537e3952a2d557457cb85f468693 100644
GIT binary patch
delta 3363
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

delta 3171
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
FzW_vM*gpUO

-- 
GitLab