Newer
Older
package smash.appointment.parse;
import java.util.Calendar;
import java.util.List;
import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.CommandLineParser;
import org.apache.commons.cli.DefaultParser;
import org.apache.commons.cli.HelpFormatter;
import org.apache.commons.cli.Option;
import org.apache.commons.cli.Options;
import org.apache.commons.cli.ParseException;
import org.apache.log4j.Logger;
public class Main {
private static Logger logger = Logger.getLogger(Main.class);
SubjectDao subjectDao = new SubjectDao();
AppointmentDao appointmentDao = new AppointmentDao();
public void run(String[] args) throws Exception {
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();
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();
Option redCap = Option.builder().required().argName("file").hasArg().desc("RedCap appointments").longOpt("red-cap").build();
Option duplicates = Option.builder().required().argName("file").hasArg().desc("duplicates").longOpt("duplicates").build();
options.addOption(agenda);
options.addOption(subjects);
options.addOption(controls);
options.addOption(flyingTeam);
options.addOption(lihControls);
options.addOption(lihMappingControls);
options.addOption(redCap);
CommandLineParser parser = new DefaultParser();
try {
CommandLine line = parser.parse(options, args);
String subjectsFile = line.getOptionValue("subjects");
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() + "]");
}
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() + "]");
String duplicatesFile = line.getOptionValue("duplicates");
removeDuplicates(duplicatesFile);
subjectDao.addSubject(Visit.UNKNOWN, "");
String agendaFile = line.getOptionValue("agenda");
Calendar today = Calendar.getInstance();
today.set(Calendar.HOUR, 5);
appointmentDao.addAppointments(processPrcAppointments(agendaFile, today));
String redCapFile = line.getOptionValue("red-cap");
appointmentDao.addAppointments(processRedCapAppointments(redCapFile));
System.out.println("delete from web_visit_appointment_types;");
System.out.println("delete from web_appointment_appointment_types;");
System.out.println("delete from web_subject_languages;");
System.out.println("delete from web_appointment;");
System.out.println("delete from web_visit;");
System.out.println("delete from web_subject;");
SubjectSqlExporter subjectSqlExporter = new SubjectSqlExporter();
// logger.debug("SUBJECTS: ");
for (Subject subject : subjectDao.getSubjects()) {
System.out.println(subjectSqlExporter.toSql(subject));
VisitSqlExporter visitSqlExporter = new VisitSqlExporter();
List<Visit> visits = appointmentDao.getVisits();
for (int i = 0; i < visits.size(); i++) {
Visit visit = visits.get(i);
System.out.println(visitSqlExporter.toSql(visit));
} catch (ParseException exp) {
System.out.println(exp.getMessage());
HelpFormatter formatter = new HelpFormatter();
formatter.printHelp("java -jar file.jar", options);
private void removeDuplicates(String duplicatesFile) throws IOException {
DuplicateRemoveParser parser = new DuplicateRemoveParser();
parser.setSubjectDao(subjectDao);
parser.removeDuplicates(duplicatesFile);
}
private List<AppointmentEntry> processRedCapAppointments(String agendaFile) throws Exception {
RedcapParser parser = new RedcapParser();
return parser.parse(agendaFile);
}
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);
}
private List<Subject> processPrcControls(String controlsFile) throws Exception {
PrcControlParser parser = new PrcControlParser();
return parser.processExcel(controlsFile);
}
private List<AppointmentEntry> processPrcAppointments(String agendaFile, Calendar minDate) throws Exception {
XlsxCalendarProcessor processor = new XlsxCalendarProcessor();
processor.setSubjectDao(subjectDao);
List<AppointmentEntry> entries = processor.processExcel(agendaFile, minDate);
return entries;
}
public static void main(String[] args) throws Exception {
new Main().run(args);
}
private List<Subject> processPrcSubjects(String subjectsFile) throws Exception {
PrcSubjectsParser parser = new PrcSubjectsParser();
return parser.processExcel(subjectsFile);