package smash.appointment.parse; 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 { @Override protected String parseScreeningNumber(Row row) { String number = getString(row.getCell(25)); if (number.trim().isEmpty()) { return ""; } else { if (number.length() == 1) { number = "00" + number; } else if (number.length() == 2) { number = "0" + number; } return "P-" + number; } } @Override protected String parseName(Row row) { return getString(row.getCell(1)); } @Override protected String parseSurname(Row row) { return getString(row.getCell(0)); } @Override protected String parseNdNumber(Row row) { return getString(row.getCell(22)); } @Override protected String getSheetName() { return "Feuil1"; } @Override protected int getInitRow() { return 1; } @Override protected String parseBirthDate(Row row) { return parseDateOfBirth(row.getCell(27)); } @Override protected String parsemPowerId(Row row) { return getString(row.getCell(23)); } @Override protected String parseAddDate(Row row) { return getDate(row.getCell(14), Calendar.getInstance()); } @Override protected String parseReferal(Row row) { return getString(row.getCell(13)); } @Override protected String parseDiagnosisYear(Row row) { return getString(row.getCell(11)); } @Override protected String parseMail(Row row) { return getString(row.getCell(10)); } @Override protected String parsePhone3(Row row) { return getString(row.getCell(9)); } @Override protected String parsePhone2(Row row) { return getString(row.getCell(8)); } @Override protected String parsePhone1(Row row) { return getString(row.getCell(7)); } @Override protected String parseCity(Row row) { return getString(row.getCell(5)); } @Override protected String parseCountry(Row row) { return getString(row.getCell(6)); } @Override protected String parseZipCode(Row row) { return getString(row.getCell(4)); } @Override protected String parseAddress(Row row) { return getString(row.getCell(3)); } @Override protected String parseRemarks(Row row) { String remark1 = getString(row.getCell(2)); String remark2 = getString(row.getCell(20)); String result = ""; if (!remark1.trim().isEmpty()) { result = result + remark1 + "\n"; } if (!remark2.trim().isEmpty()) { result = result + remark2 + "\n"; } return result; } @Override protected String parseDiagnosis(Row row) { return getString(row.getCell(12)); } @Override protected SubjectType parseType(Row row) { return SubjectType.PATIENT; } @Override protected List<String> parseLanguages(Row row) { return new ArrayList<>(); } @Override protected String parseToBeSeenAt(Row row) { return "P"; } @Override protected boolean parseDead(Row row) { 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; } @Override protected boolean parseResigned(Row row) { try { int colorId = row.getSheet().getWorkbook().getFontAt(row.getCell(0).getCellStyle().getFontIndex()).getColor(); // special case for black if (colorId == 32767) { return false; } IndexedColors color = IndexedColors.fromInt(colorId); switch (color) { case RED: return true; case SEA_GREEN: return false; case PINK: return false; case PLUM: return false; case BLUE: return false; case BLACK: return false; case GREEN: return false; default: logger.debug("Unknown font color: " + color); return false; } } catch (Exception e) { logger.error("Problem with parsing color for subject: " + parseName(row) + " " + parseSurname(row), e); return false; } } @Override protected boolean parsePostponed(Row row) { return false; } }