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

main parser process all the input prc files

parent e204dc3c
No related branches found
No related tags found
1 merge request!1Appointments dev
package smash.appointment.parse;
import java.io.IOException;
import java.util.List;
import org.apache.commons.cli.CommandLine;
......@@ -10,6 +11,8 @@ import org.apache.commons.cli.Option;
import org.apache.commons.cli.Options;
import org.apache.commons.cli.ParseException;
import org.apache.log4j.Logger;
import org.apache.poi.EncryptedDocumentException;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
public class Main {
private static Logger logger = Logger.getLogger(Main.class);
......@@ -22,30 +25,63 @@ public class Main {
Options options = new Options();
Option agenda = Option.builder().required().argName("file").hasArg().desc("PRC agenda").longOpt("agenda").build();
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();
options.addOption(agenda);
options.addOption(subjects);
options.addOption(controls);
options.addOption(flyingTeam);
CommandLineParser parser = new DefaultParser();
try {
CommandLine line = parser.parse(options, args);
String subjectsFile = line.getOptionValue("subjects");
subjectDao.addSubjects(processPrcSubjects(subjectsFile));
for (Subject subject : processPrcSubjects(subjectsFile)) {
subjectDao.addSubject(subject, "[" + subjectsFile + ";" + subject.getScreeningNumber() + ";" + subject.getName() + " " + subject.getSurname() + "]");
}
String controlsFile = line.getOptionValue("controls");
for (Subject subject : processPrcControls(controlsFile)) {
subjectDao.addSubject(subject, "[" + controlsFile + ";" + subject.getScreeningNumber() + ";" + subject.getName() + " " + subject.getSurname() + "]");
}
String flyingTeamFile = line.getOptionValue("flying-team");
for (Subject subject : processFlyingTeamControls(flyingTeamFile)) {
subjectDao.addSubject(subject, "[" + flyingTeamFile + ";" + subject.getScreeningNumber() + ";" + subject.getName() + " " + subject.getSurname() + "]");
}
logger.debug("SUBJECTS: ");
for (Subject subject : subjectDao.getSubjects()) {
logger.debug(subject);
}
String agendaFile = line.getOptionValue("agenda");
appointmentDao.addAppointments(processPrcAppointments(agendaFile));
} catch (ParseException exp) {
System.out.println(exp.getMessage());
HelpFormatter formatter = new HelpFormatter();
formatter.printHelp( "java -jar file.jar", options );
formatter.printHelp("java -jar file.jar", options);
}
}
private List<Subject> processFlyingTeamControls(String flyingTeamFile) throws Exception {
PrcFlyingParser parser = new PrcFlyingParser();
return parser.processExcel(flyingTeamFile);
}
private List<Subject> processPrcControls(String controlsFile) throws Exception {
PrcControlParser parser = new PrcControlParser();
return parser.processExcel(controlsFile);
}
private List<AppointmentEntry> processPrcAppointments(String agendaFile) throws Exception {
XlsxCalendarProcessor processor = new XlsxCalendarProcessor();
processor.setSubjectDao(subjectDao);
List<AppointmentEntry> entries = processor.processExcel(agendaFile);
logger.debug("APPOINTMENTS: ");
for (AppointmentEntry appointmentEntry : entries) {
logger.debug(appointmentEntry);
}
......
......@@ -416,11 +416,62 @@ public class Subject {
}
/**
* @param type the type to set
* @param type
* the type to set
* @see #type
*/
public void setType(SubjectType type) {
this.type = type;
}
public void update(Subject subject, String errorPrefix) {
setName(getMergedValue("name", this.getName(), subject.getName(), errorPrefix));
setSurname(getMergedValue("surname", this.getSurname(), subject.getSurname(), errorPrefix));
setNdNumber(getMergedValue("ndNumber", this.getNdNumber(), subject.getNdNumber(), errorPrefix));
setScreeningNumber(getMergedValue("screeningNumber", this.getScreeningNumber(), subject.getScreeningNumber(), errorPrefix));
setSex(getMergedValue("sex", this.getSex(), subject.getSex(), errorPrefix));
setRemarks(getMergedValue("remarks", this.getRemarks(), subject.getRemarks(), errorPrefix));
setBirthDate(getMergedValue("birthDate", this.getBirthDate(), subject.getBirthDate(), errorPrefix));
setAddress(getMergedValue("address", this.getAddress(), subject.getAddress(), errorPrefix));
setZipCode(getMergedValue("zipCode", this.getZipCode(), subject.getZipCode(), errorPrefix));
setCountry(getMergedValue("country", this.getCountry(), subject.getCountry(), errorPrefix));
setCity(getMergedValue("city", this.getCity(), subject.getCity(), errorPrefix));
setPhone1(getMergedValue("phone1", this.getPhone1(), subject.getPhone1(), errorPrefix));
setPhone2(getMergedValue("phone2", this.getPhone2(), subject.getPhone2(), errorPrefix));
setPhone3(getMergedValue("phone3", this.getPhone3(), subject.getPhone3(), errorPrefix));
setMail(getMergedValue("mail", this.getMail(), subject.getMail(), errorPrefix));
setDiagnosisYear(getMergedValue("diagnosisYear", this.getDiagnosisYear(), subject.getDiagnosisYear(), errorPrefix));
setDiagnosis(getMergedValue("diagnosis", this.getDiagnosis(), subject.getDiagnosis(), errorPrefix));
setReferal(getMergedValue("referal", this.getReferal(), subject.getReferal(), errorPrefix));
setAddDate(getMergedValue("addDate", this.getAddDate(), subject.getAddDate(), errorPrefix));
setmPowerId(getMergedValue("mPowerId", this.getmPowerId(), subject.getmPowerId(), errorPrefix));
setType(getMergedValue("type", this.getType(), subject.getType(), errorPrefix));
}
private SubjectType getMergedValue(String string, SubjectType existingValue, SubjectType newValue, String errorPrefix) {
if (existingValue == null) {
return newValue;
} else if (newValue == null) {
return existingValue;
} else if (existingValue.equals(newValue)) {
return existingValue;
} else {
logger.warn(errorPrefix + "New " + string + " differs from old one. (new: " + newValue + ", " + existingValue + "). Skipping");
return existingValue;
}
}
private String getMergedValue(String string, String existingValue, String newValue, String errorPrefix) {
if (existingValue == null || existingValue.trim().isEmpty()) {
return newValue;
} else if (newValue == null || newValue.trim().isEmpty()) {
return existingValue;
} else if (existingValue.trim().equalsIgnoreCase(newValue.trim())) {
return existingValue;
} else {
logger.warn(errorPrefix + "New " + string + " differs from old one. (new: " + newValue + ", " + existingValue + "). Skipping");
return existingValue;
}
}
}
......@@ -6,19 +6,47 @@ import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.apache.log4j.Logger;
public class SubjectDao {
private List<Subject> subjects = new ArrayList<Subject>();
Logger logger = Logger.getLogger(SubjectDao.class);
private List<Subject> subjects = new ArrayList<>();
public void addSubject(Subject subject, String errorPrefix) {
if (subject.getNdNumber() != null && !subject.getNdNumber().trim().isEmpty()) {
Subject existing = getByNdNumber(subject.getNdNumber());
if (existing != null) {
if (!existing.getScreeningNumber().equals(subject.getScreeningNumber())) {
logger.error(errorPrefix + " Nd number taken by subject: " + existing.getScreeningNumber());
return;
}
}
}
Subject existing = getByScreeningNumber(subject.getScreeningNumber());
if (existing != null) {
existing.update(subject, errorPrefix);
} else {
subjects.add(subject);
}
}
public void addSubject(Subject subject) {
subjects.add(subject);
private Subject getByScreeningNumber(String screeningNumber) {
for (Subject s : subjects) {
if (screeningNumber.equals(s.getScreeningNumber())) {
return s;
}
}
return null;
}
public void readFile(String filename) throws IOException {
try (BufferedReader br = new BufferedReader(new FileReader(filename))) {
String line;
int lineCount = 1;
while ((line = br.readLine()) != null) {
String tmp[] = line.split("\t");
addSubject(new Subject(tmp[0], tmp[1], tmp[2], tmp[3]));
addSubject(new Subject(tmp[0], tmp[1], tmp[2], tmp[3]), "[" + filename + ":" + lineCount + "]");
lineCount++;
}
}
}
......@@ -49,9 +77,9 @@ public class SubjectDao {
return null;
}
public void addSubjects(List<Subject> processPrcSubjects) {
public void addSubjects(List<Subject> processPrcSubjects, String errorPrefix) {
for (Subject subject : processPrcSubjects) {
addSubject(subject);
addSubject(subject, errorPrefix);
}
}
......
......@@ -13,13 +13,13 @@ public class TestBase {
public void setUp() {
subjectDao = new SubjectDao();
subjectDao.addSubject(new Subject("Piotr Marcin", "Gawron", "ND1005", "1005"));
subjectDao.addSubject(piotrGawron);
subjectDao.addSubject(janKowalskiNowak);
subjectDao.addSubject(johnDoe);
subjectDao.addSubject(cateKowalsky);
subjectDao.addSubject(andrewDude);
subjectDao.addSubject(unknownDude);
subjectDao.addSubject(new Subject("Piotr Marcin", "Gawron", "ND1005", "1005"), null);
subjectDao.addSubject(piotrGawron, null);
subjectDao.addSubject(janKowalskiNowak, null);
subjectDao.addSubject(johnDoe, null);
subjectDao.addSubject(cateKowalsky, null);
subjectDao.addSubject(andrewDude, null);
subjectDao.addSubject(unknownDude, null);
}
}
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