Skip to content
Snippets Groups Projects
Commit 0b436ed7 authored by Piotr Gawron's avatar Piotr Gawron
Browse files

lih data parser added

parent fd4e1135
No related branches found
No related tags found
1 merge request!1Appointments dev
Showing
with 512 additions and 3 deletions
package smash.appointment.parse;
import java.util.ArrayList;
import java.util.List;
import org.apache.poi.ss.usermodel.Row;
public class LihControlMappingParser extends SubjectParser {
@Override
protected String parseScreeningNumber(Row row) {
String number = getString(row.getCell(0));
if (number.trim().isEmpty()) {
return "";
} else {
if (number.length() == 1) {
number = "00" + number;
} else if (number.length() == 2) {
number = "0" + number;
}
return "L-" + number;
}
}
@Override
protected String parseName(Row row) {
return getString(row.getCell(8));
}
@Override
protected String parseSurname(Row row) {
return getString(row.getCell(9));
}
@Override
protected String parseNdNumber(Row row) {
return getString(row.getCell(7));
}
@Override
protected String getSheetName() {
return "Sheet1";
}
@Override
protected int getInitRow() {
return 1;
}
@Override
protected String parseBirthDate(Row row) {
return "";
}
@Override
protected String parsemPowerId(Row row) {
return "";
}
@Override
protected String parseAddDate(Row row) {
return getDate(row.getCell(1));
}
@Override
protected String parseReferal(Row row) {
return "";
}
@Override
protected String parseDiagnosisYear(Row row) {
return "";
}
@Override
protected String parseMail(Row row) {
return "";
}
@Override
protected String parsePhone3(Row row) {
return "";
}
@Override
protected String parsePhone2(Row row) {
return "";
}
@Override
protected String parsePhone1(Row row) {
return getString(row.getCell(10));
}
@Override
protected String parseCity(Row row) {
return "";
}
@Override
protected String parseCountry(Row row) {
return "";
}
@Override
protected String parseZipCode(Row row) {
return "";
}
@Override
protected String parseAddress(Row row) {
return "";
}
@Override
protected String parseRemarks(Row row) {
return "";
}
@Override
protected String parseDiagnosis(Row row) {
return "";
}
@Override
protected SubjectType parseType(Row row) {
return SubjectType.CONTROL;
}
@Override
protected List<String> parseLanguages(Row row) {
return new ArrayList<>();
}
}
package smash.appointment.parse;
import java.util.ArrayList;
import java.util.List;
import org.apache.poi.ss.usermodel.Row;
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) {
return getDate(row.getCell(5));
}
@Override
protected String parsemPowerId(Row row) {
return "";
}
@Override
protected String parseAddDate(Row row) {
return "";
}
@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) {
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(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 {
langAbbreviations = languages.split("/");
}
for (String string : langAbbreviations) {
if (!string.trim().isEmpty()) {
result.add(getMappedLanguage(string.trim()));
}
}
return result;
}
private String getMappedLanguage(String abbreviation) {
switch (abbreviation.toUpperCase()) {
case ("F"):
return "French";
case ("D"):
return "German";
case ("GB"):
return "English";
case ("P"):
return "Portuguese";
case ("ENG"):
return "English";
}
logger.warn("Unknown language abbreviation: " + abbreviation);
return "";
}
}
......@@ -27,10 +27,14 @@ public class Main {
Option subjects = Option.builder().required().argName("file").hasArg().desc("PRC subjects").longOpt("subjects").build();
Option controls = Option.builder().required().argName("file").hasArg().desc("PRC controls").longOpt("controls").build();
Option flyingTeam = Option.builder().required().argName("file").hasArg().desc("PRC flying-team").longOpt("flying-team").build();
Option lihControls = Option.builder().required().argName("file").hasArg().desc("LIH controls").longOpt("lih-controls").build();
Option lihMappingControls = Option.builder().required().argName("file").hasArg().desc("LIH controls mapping").longOpt("lih-mapping").build();
options.addOption(agenda);
options.addOption(subjects);
options.addOption(controls);
options.addOption(flyingTeam);
options.addOption(lihControls);
options.addOption(lihMappingControls);
CommandLineParser parser = new DefaultParser();
try {
......@@ -51,6 +55,16 @@ public class Main {
subjectDao.addSubject(subject, "[" + flyingTeamFile + ";" + subject.getScreeningNumber() + ";" + subject.getName() + " " + subject.getSurname() + "]");
}
String lihMappingControlsFile = line.getOptionValue("lih-mapping");
for (Subject subject : processLihMappingControls(lihMappingControlsFile)) {
subjectDao.addSubject(subject, "[" + lihMappingControlsFile + ";" + subject.getScreeningNumber() + ";" + subject.getName() + " " + subject.getSurname() + "]");
}
String lihControlsFile = line.getOptionValue("lih-controls");
for (Subject subject : processLihControls(lihControlsFile)) {
subjectDao.addSubject(subject, "[" + lihControlsFile + ";" + subject.getScreeningNumber() + ";" + subject.getName() + " " + subject.getSurname() + "]");
}
logger.debug("SUBJECTS: ");
for (Subject subject : subjectDao.getSubjects()) {
logger.debug(subject);
......@@ -66,6 +80,16 @@ public class Main {
}
}
private List<Subject> processLihMappingControls(String lihMappingControlsFile) throws Exception{
LihControlMappingParser parser = new LihControlMappingParser();
return parser.processExcel(lihMappingControlsFile);
}
private List<Subject> processLihControls(String lihControlsFile) throws Exception{
LihControlParser parser = new LihControlParser();
return parser.processExcel(lihControlsFile);
}
private List<Subject> processFlyingTeamControls(String flyingTeamFile) throws Exception {
PrcFlyingParser parser = new PrcFlyingParser();
return parser.processExcel(flyingTeamFile);
......
package smash.appointment.parse;
import java.util.ArrayList;
import java.util.List;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
......@@ -8,7 +11,7 @@ public class PrcControlParser extends SubjectParser {
@Override
protected String parseScreeningNumber(Row row) {
String number = getString(row.getCell(16));
if (number.isEmpty()) {
if (number.trim().isEmpty()) {
return "";
} else {
return "P-" + number;
......@@ -153,4 +156,9 @@ public class PrcControlParser extends SubjectParser {
return SubjectType.CONTROL;
}
@Override
protected List<String> parseLanguages(Row row) {
return new ArrayList<>();
}
}
package smash.appointment.parse;
import java.util.ArrayList;
import java.util.List;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
......@@ -8,7 +11,7 @@ public class PrcFlyingParser extends SubjectParser {
@Override
protected String parseScreeningNumber(Row row) {
String number = getString(row.getCell(25));
if (number.isEmpty()) {
if (number.trim().isEmpty()) {
return "";
} else {
return "P-" + number;
......@@ -142,5 +145,9 @@ public class PrcFlyingParser extends SubjectParser {
protected SubjectType parseType(Row row) {
return null;
}
@Override
protected List<String> parseLanguages(Row row) {
return new ArrayList<>();
}
}
package smash.appointment.parse;
import java.util.ArrayList;
import java.util.List;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
......@@ -7,7 +10,12 @@ public class PrcSubjectsParser extends SubjectParser {
@Override
protected String parseScreeningNumber(Row row) {
return "P-" + getString(row.getCell(25));
String number = getString(row.getCell(25));
if (number.trim().isEmpty()) {
return "";
} else {
return "P-" + number;
}
}
@Override
......@@ -125,4 +133,9 @@ public class PrcSubjectsParser extends SubjectParser {
return SubjectType.SUBJECT;
}
@Override
protected List<String> parseLanguages(Row row) {
return new ArrayList<>();
}
}
......@@ -16,7 +16,9 @@ import org.apache.poi.hssf.usermodel.HSSFDateUtil;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellType;
import org.apache.poi.ss.usermodel.Comment;
import org.apache.poi.ss.usermodel.DataFormatter;
import org.apache.poi.ss.usermodel.RichTextString;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
......@@ -84,10 +86,13 @@ public abstract class SubjectParser {
result.setmPowerId(parsemPowerId(row));
result.setBirthDate(parseBirthDate(row));
result.setType(parseType(row));
result.setLanguages(parseLanguages(row));
return result;
}
protected abstract List<String> parseLanguages(Row row);
protected abstract SubjectType parseType(Row row);
protected abstract String parseBirthDate(Row row);
......@@ -142,6 +147,18 @@ public abstract class SubjectParser {
return df.formatCellValue(cell).trim();
}
protected String getComments(Cell cell) {
Comment comment = cell.getCellComment();
if (comment != null) {
RichTextString richTextString = comment.getString();
if (richTextString != null) {
return richTextString.getString();
}
}
return "";
}
protected String getDate(Cell cell) {
if (cell == null) {
return "";
......
......@@ -6,6 +6,8 @@ import org.junit.runners.Suite.SuiteClasses;
@RunWith(Suite.class)
@SuiteClasses({ CellParserTest.class, //
LihControlMappingParserTest.class, //
LihControlParserTest.class, //
PrcFlyingParserTest.class, //
PrcSubjectsParserTest.class, //
RedcapParserTest.class, //
......@@ -14,6 +16,7 @@ import org.junit.runners.Suite.SuiteClasses;
SubjectParserTest.class, //
XlsxCalendarProcessorTest.class, //
})
public class AllTests {
}
package smash.appointment.parse;
import static org.junit.Assert.*;
import java.util.List;
import org.apache.log4j.Logger;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.Test;
public class LihControlMappingParserTest extends TestBase {
Logger logger = Logger.getLogger(LihControlMappingParserTest.class);
LihControlMappingParser processor = new LihControlMappingParser();
@AfterClass
public static void tearDownAfterClass() throws Exception {
}
@Before
public void setUp() {
super.setUp();
}
@After
public void tearDown() throws Exception {
}
@Test
public void test() throws Exception {
List<Subject> entries = processor.processExcel("testFiles/lihControlMappingExample.xlsx");
assertTrue(entries.size() > 0);
Subject subject = entries.get(0);
assertEquals("L-001", subject.getScreeningNumber());
assertEquals("Piotrek", subject.getName());
assertEquals("Gawron", subject.getSurname());
assertEquals("", subject.getAddress());
assertEquals("", subject.getZipCode());
assertEquals("", subject.getCity());
assertEquals("", subject.getCountry());
assertEquals("343", subject.getPhone1());
assertEquals("", subject.getPhone2());
assertEquals("", subject.getPhone3());
assertEquals("", subject.getMail());
assertEquals("", subject.getDiagnosisYear());
assertEquals("", subject.getDiagnosis());
assertEquals("", subject.getReferal());
assertEquals("2015-08-03", subject.getAddDate());
assertEquals("ND3333", subject.getNdNumber());
assertEquals("", subject.getBirthDate());
}
}
package smash.appointment.parse;
import static org.junit.Assert.*;
import java.util.List;
import org.apache.log4j.Logger;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.Test;
public class LihControlParserTest extends TestBase {
Logger logger = Logger.getLogger(LihControlParserTest.class);
LihControlParser processor = new LihControlParser();
@AfterClass
public static void tearDownAfterClass() throws Exception {
}
@Before
public void setUp() {
super.setUp();
}
@After
public void tearDown() throws Exception {
}
@Test
public void test() throws Exception {
List<Subject> entries = processor.processExcel("testFiles/lihControlExample.xlsx");
assertTrue(entries.size() > 0);
Subject subject = entries.get(0);
assertEquals("L-001", subject.getScreeningNumber());
assertEquals("Name", subject.getName());
assertEquals("Surname", subject.getSurname());
assertTrue(subject.getRemarks().contains("001 rdv 01/09/2015 9h jyf"));
assertTrue(subject.getRemarks().contains("PD family relation=pd info"));
assertEquals("11, Rue blabla", subject.getAddress());
assertEquals("L-3322", subject.getZipCode());
assertEquals("Luxembourg", subject.getCity());
assertEquals("", subject.getCountry());
assertEquals("123456789", subject.getPhone1());
assertEquals("321654", subject.getPhone2());
assertEquals("", subject.getPhone3());
assertEquals("email@pt.lu", subject.getMail());
assertEquals("", subject.getDiagnosisYear());
assertEquals("", subject.getDiagnosis());
assertEquals("", subject.getReferal());
assertEquals("", subject.getAddDate());
assertEquals("", subject.getNdNumber());
assertEquals("1937-01-03", subject.getBirthDate());
assertTrue(subject.getRemarks().contains("some other remark"));
assertTrue(subject.getRemarks().contains("at home: NMS + RFQ 1 + RFQ 2 + REM + PDSS: manque une page ds RFQ => Linda pr level b 09/09/15"));
assertTrue(subject.getLanguages().contains("French"));
assertTrue(subject.getLanguages().contains("German"));
}
}
File added
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment