Skip to content
Snippets Groups Projects
LihControlParser.java 6.18 KiB
Newer Older
Piotr Gawron's avatar
Piotr Gawron committed
package smash.appointment.parse;

Piotr Gawron's avatar
Piotr Gawron committed
import java.text.SimpleDateFormat;
Piotr Gawron's avatar
Piotr Gawron committed
import java.util.ArrayList;
Piotr Gawron's avatar
Piotr Gawron committed
import java.util.Calendar;
Piotr Gawron's avatar
Piotr Gawron committed
import java.util.List;

import org.apache.poi.ss.usermodel.Color;
Piotr Gawron's avatar
Piotr Gawron committed
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFColor;
Piotr Gawron's avatar
Piotr Gawron committed

public class LihControlParser extends SubjectParser {

	@Override
	protected String parseScreeningNumber(Row row) {
		String number = getString(row.getCell(0));
		if (number.trim().isEmpty()) {
			return "";
		} else {
			return "L-" + number;
		}
	}

	@Override
	protected String parseName(Row row) {
		return getString(row.getCell(2));
	}

	@Override
	protected String parseSurname(Row row) {
		return getString(row.getCell(1));
	}

	@Override
	protected String parseNdNumber(Row row) {
		return "";
	}

	@Override
	protected String getSheetName() {
		return "Screening log";
	}

	@Override
	protected int getInitRow() {
		return 1;
	}

	@Override
	protected String parseBirthDate(Row row) {
Piotr Gawron's avatar
Piotr Gawron committed
		return getDate(row.getCell(5), null);
Piotr Gawron's avatar
Piotr Gawron committed
	}

	@Override
	protected String parsemPowerId(Row row) {
		return "";
	}

	private static final SimpleDateFormat DATE_FORMATTER = new SimpleDateFormat("yyyy-MM-dd");
Piotr Gawron's avatar
Piotr Gawron committed
	@Override
	protected String parseAddDate(Row row) {
Piotr Gawron's avatar
Piotr Gawron committed
		return DATE_FORMATTER.format(Calendar.getInstance().getTime());
Piotr Gawron's avatar
Piotr Gawron committed
	}

	@Override
	protected String parseReferal(Row row) {
		return "";
	}

	@Override
	protected String parseDiagnosisYear(Row row) {
		return "";
	}

	@Override
	protected String parseMail(Row row) {
		return getString(row.getCell(8));
	}

	@Override
	protected String parsePhone3(Row row) {
		return "";
	}

	@Override
	protected String parsePhone2(Row row) {
		return getString(row.getCell(7));
	}

	@Override
	protected String parsePhone1(Row row) {
		return getString(row.getCell(6));
	}

	@Override
	protected String parseCity(Row row) {
		return getString(row.getCell(12));

	}

	@Override
	protected String parseCountry(Row row) {
		String zipCode = parseZipCode(row);
		if (zipCode!=null) {
			if (zipCode.startsWith("L")) {
				return "Luxembourg";
			} else if (zipCode.startsWith("D")){
Piotr Gawron's avatar
Piotr Gawron committed
				return "Deutschland";
			} else if (zipCode.startsWith("F")){
				return "France";
			} else if (zipCode.startsWith("B")){
				return "Belgium";
			}
		}
Piotr Gawron's avatar
Piotr Gawron committed
		return "";
	}

	@Override
	protected String parseZipCode(Row row) {
		return getString(row.getCell(11));
	}

	@Override
	protected String parseAddress(Row row) {
		return getString(row.getCell(9)) + ", " + getString(row.getCell(10));
	}

	@Override
	protected String parseRemarks(Row row) {
		List<String> remarks = new ArrayList<>();
		String info = getString(row.getCell(4));
		if (!info.trim().isEmpty()) {
			remarks.add("PD family relation=" + info);
		}
		remarks.add(getString(row.getCell(13)));
		remarks.add(getComments(row.getCell(14)));
		remarks.add(getComments(row.getCell(15)));
		remarks.add(getComments(row.getCell(16)));
		remarks.add("Inclusion="+getString(row.getCell(17)));
Piotr Gawron's avatar
Piotr Gawron committed
		remarks.add(getString(row.getCell(18)));
		remarks.add(getString(row.getCell(19)));
		String result = "";
		for (String string : remarks) {
			if (!string.trim().isEmpty()) {
				result += string.trim() + "\n";
			}
		}
		return result;
	}

	@Override
	protected String parseDiagnosis(Row row) {
		return "";
	}

	@Override
	protected SubjectType parseType(Row row) {
		return SubjectType.CONTROL;
	}

	@Override
	protected List<String> parseLanguages(Row row) {
		List<String> result = new ArrayList<>();

		String languages = getString(row.getCell(3));
		String langAbbreviations[] = new String[] {};
		if (languages.indexOf(",") >= 0) {
			langAbbreviations = languages.split(",");
		} else if (languages.indexOf("+") >= 0) {
Piotr Gawron's avatar
Piotr Gawron committed
			langAbbreviations = languages.split("\\+");
Piotr Gawron's avatar
Piotr Gawron committed
		} else {
			langAbbreviations = languages.split("/");
		}
		for (String string : langAbbreviations) {
			if (!string.trim().isEmpty()) {
				result.add(getMappedLanguage(string.trim()));
			}
		}
		return result;
	}

	protected String getMappedLanguage(String abbreviation) {
Piotr Gawron's avatar
Piotr Gawron committed
		switch (abbreviation.toUpperCase()) {
			case ("F"):
				return "French";
			case ("D"):
				return "German";
			case ("A"):
				return "German";
			case ("E"):
				return "Spanish";
			case ("ALL"):
				return "German";
Piotr Gawron's avatar
Piotr Gawron committed
			case ("GB"):
				return "English";
			case ("P"):
				return "Portuguese";
			case ("PT"):
				return "Portuguese";
Piotr Gawron's avatar
Piotr Gawron committed
			case ("ENG"):
				return "English";
			case ("EN"):
				return "English";
			case ("FR"):
				return "French";
			case ("L"):
				return "Luxembourgish";
			case ("LUX"):
				return "Luxembourgish";
Piotr Gawron's avatar
Piotr Gawron committed
		}
		logger.warn("Unknown language abbreviation: " + abbreviation);
		return "";
	}

	@Override
	protected String parseToBeSeenAt(Row row) {
		return "L";
	}

	@Override
	protected boolean parseDead(Row row) {
		return false;
	}

	@Override
	protected boolean parsePostponed(Row row) {
		Color color = row.getCell(0).getCellStyle().getFillForegroundColorColor();
		if (color == null) {
			return false;
		}

		XSSFColor c = (XSSFColor) color;
		String colorString = c.getARGBHex().substring(2);
		switch (colorString) {
			case ("FFC000"):// orange
				return false;
			case ("FFFF00"):// yellow
				return false;
			case ("FF0000"):// red
				return false;
			case ("FF3399"):// pink
				return true;
			case ("00B050"):// green
				return false;
		}
		throw new RuntimeException(parseName(row) + " " + parseSurname(row) + ": Unknown color: " + colorString);
	}

	@Override
	protected boolean parseResigned(Row row) {
		Color color = row.getCell(0).getCellStyle().getFillForegroundColorColor();
		if (color == null) {
			return false;
		}

		XSSFColor c = (XSSFColor) color;
		String colorString = c.getARGBHex().substring(2);
		switch (colorString) {
			case ("FFC000"):// orange
				return false;
			case ("FFFF00"):// yellow
				return false;
			case ("FF0000"):// red
				return true;
			case ("FF3399"):// pink
				return false;
			case ("00B050"):// green
				return false;
		}
		throw new RuntimeException(parseName(row) + " " + parseSurname(row) + ": Unknown color: " + colorString);
Piotr Gawron's avatar
Piotr Gawron committed
}