Skip to content
Snippets Groups Projects
Main.java 6.92 KiB
Newer Older
package smash.appointment.parse;

import java.io.IOException;
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();
Piotr Gawron's avatar
Piotr Gawron committed
		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);
Piotr Gawron's avatar
Piotr Gawron committed
		options.addOption(lihControls);
		options.addOption(lihMappingControls);
		options.addOption(duplicates);

		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() + "]");
			}

Piotr Gawron's avatar
Piotr Gawron committed
			String lihMappingControlsFile = line.getOptionValue("lih-mapping");
			for (Subject subject : processLihMappingControls(lihMappingControlsFile)) {
				subjectDao.addSubject(
						subject, "[" + lihMappingControlsFile + ";" + subject.getScreeningNumber() + ";" + subject.getName() + " " + subject.getSurname() + "]");
Piotr Gawron's avatar
Piotr Gawron committed
			}

			String lihControlsFile = line.getOptionValue("lih-controls");
			for (Subject subject : processLihControls(lihControlsFile)) {
				subjectDao
						.addSubject(subject, "[" + lihControlsFile + ";" + subject.getScreeningNumber() + ";" + subject.getName() + " " + subject.getSurname() + "]");
Piotr Gawron's avatar
Piotr Gawron committed
			}
			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;");
Piotr Gawron's avatar
Piotr Gawron committed
			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();
Piotr Gawron's avatar
Piotr Gawron committed
		parser.setSubjectDao(subjectDao);
		return parser.parse(agendaFile);
	}

	private List<Subject> processLihMappingControls(String lihMappingControlsFile) throws Exception {
Piotr Gawron's avatar
Piotr Gawron committed
		LihControlMappingParser parser = new LihControlMappingParser();
		return parser.processExcel(lihMappingControlsFile);
	}

	private List<Subject> processLihControls(String lihControlsFile) throws Exception {
Piotr Gawron's avatar
Piotr Gawron committed
		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);