diff --git a/appointment-import/pom.xml b/appointment-import/pom.xml index d1022957a5e69e7f4f44fd69f5d63c9751999fcf..a2244ee9c27fc393f0190108de420b7cb272a67c 100644 --- a/appointment-import/pom.xml +++ b/appointment-import/pom.xml @@ -30,6 +30,11 @@ <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.15</version> +</dependency> +<dependency> + <groupId>commons-cli</groupId> + <artifactId>commons-cli</artifactId> + <version>1.3.1</version> </dependency> </dependencies> diff --git a/appointment-import/src/main/java/smash/appointment/parse/AppointmentDao.java b/appointment-import/src/main/java/smash/appointment/parse/AppointmentDao.java new file mode 100644 index 0000000000000000000000000000000000000000..4f129832054eefadc935163d11100d35cbf9e3e5 --- /dev/null +++ b/appointment-import/src/main/java/smash/appointment/parse/AppointmentDao.java @@ -0,0 +1,29 @@ +package smash.appointment.parse; + +import java.util.ArrayList; +import java.util.List; + +public class AppointmentDao { + private List<AppointmentEntry> appointments = new ArrayList<>(); + + public void addAppointments(List<AppointmentEntry> appointmentsToAdd) { + appointments.addAll(appointmentsToAdd); + } + + /** + * @return the appointments + * @see #appointments + */ + public List<AppointmentEntry> getAppointments() { + return appointments; + } + + /** + * @param appointments the appointments to set + * @see #appointments + */ + public void setAppointments(List<AppointmentEntry> appointments) { + this.appointments = appointments; + } + +} diff --git a/appointment-import/src/main/java/smash/appointment/parse/Main.java b/appointment-import/src/main/java/smash/appointment/parse/Main.java index 051de5b0c3a5f0019c10fa02654ccf525a684f75..18cbe74c96ac30c6d27724c98ec29dde8f4d43f1 100644 --- a/appointment-import/src/main/java/smash/appointment/parse/Main.java +++ b/appointment-import/src/main/java/smash/appointment/parse/Main.java @@ -2,26 +2,63 @@ package smash.appointment.parse; 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); + private static Logger logger = Logger.getLogger(Main.class); - public static void main(String[] args) throws Exception { - if (args.length < 2) { - System.out.println("Usage: command <agenda.xlsx> <subjects.txt>"); - } else { - SubjectDao subjectDao = new SubjectDao(); - subjectDao.readFile(args[1]); - - XlsxCalendarProcessor processor = new XlsxCalendarProcessor(); - processor.setSubjectDao(subjectDao); - - List<AppointmentEntry> entries = processor.processExcel(args[0]); - for (AppointmentEntry appointmentEntry : entries) { - logger.debug(appointmentEntry); - } + 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(); + options.addOption(agenda); + options.addOption(subjects); + + CommandLineParser parser = new DefaultParser(); + try { + CommandLine line = parser.parse(options, args); + + String subjectsFile = line.getOptionValue("subjects"); + subjectDao.addSubjects(processPrcSubjects(subjectsFile)); + + String agendaFile = line.getOptionValue("agenda"); + appointmentDao.addAppointments(processPrcAppointments(agendaFile)); + + } catch (ParseException exp) { + HelpFormatter formatter = new HelpFormatter(); + formatter.printHelp( "java -jar file.jar", options ); + } + } + + private List<AppointmentEntry> processPrcAppointments(String agendaFile) throws Exception { + XlsxCalendarProcessor processor = new XlsxCalendarProcessor(); + processor.setSubjectDao(subjectDao); + List<AppointmentEntry> entries = processor.processExcel(agendaFile); + + for (AppointmentEntry appointmentEntry : entries) { + logger.debug(appointmentEntry); } + 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); } } diff --git a/appointment-import/src/main/java/smash/appointment/parse/SubjectDao.java b/appointment-import/src/main/java/smash/appointment/parse/SubjectDao.java index 682133cacd3c7af0a39d4baecb8cc25b9edcb6be..4aa696d6bf468d185ef89d8dd9bc0513a64896be 100644 --- a/appointment-import/src/main/java/smash/appointment/parse/SubjectDao.java +++ b/appointment-import/src/main/java/smash/appointment/parse/SubjectDao.java @@ -49,4 +49,10 @@ public class SubjectDao { return null; } + public void addSubjects(List<Subject> processPrcSubjects) { + for (Subject subject : processPrcSubjects) { + addSubject(subject); + } + } + }