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