System.out.println("== Preparation ==");
if (modeOptions instanceof InteractiveOptions) {
InteractiveOptions options = (InteractiveOptions) modeOptions;
InteractiveController interactiveController = new InteractiveController();
//Provide implementations for the controller
interactiveController.setFeatureExtractionImpl(factory.constructFeatureExtraction());
interactiveController.setMappingImpl(factory.constructLabelMapping());
FeatureSpecification spec = this.loadFeatureSpecification(options.inputFeatureSpecFile);
Model model = this.loadModel(options.inputModelFile);
interactiveController.setModel(model);
interactiveController.setFeatureSpecification(spec);
interactiveController.run();
System.out.println();
System.out.println("== Saving Output ==");
MessageSet messages = interactiveController.getMessageSet();
messages.setDateFormat(factory.constructDateFormat());
saveMessages(messages, options.outputCSVFile);
} else {
throw new IllegalArgumentException("Options must be for Interactive");
}