package context.ui.control.csvparser; import context.app.ProjectManager; import context.core.entity.*; import context.core.task.csvparser.CsvParserTask; import context.core.task.csvparser.CsvParserTaskInstance; import context.ui.control.csvparser.CsvParserConfigurationController; import context.ui.control.csvparser.CsvParserController; import context.ui.control.csvparser.CsvParserNextStepsController; import context.ui.control.workflow.basic.BasicWorkflowController; import context.ui.misc.NamingPolicy; import context.ui.misc.FileHandler; import java.io.IOException; import javafx.beans.property.StringProperty; import javafx.concurrent.WorkerStateEvent; import javafx.event.ActionEvent; import javafx.event.EventHandler; import javafx.fxml.FXMLLoader; import javafx.scene.Parent; import org.openide.util.Exceptions; /** * * @author Aale */ public class CsvParserController extends BasicWorkflowController { /** * */ public CsvParserController(){ super(); try{ setTaskname(NamingPolicy.generateTaskName(CsvParserTaskInstance.class)); setTaskInstance(new CsvParserTaskInstance(getTaskname())); FXMLLoader loader2 = new FXMLLoader(getClass().getResource(CsvParserConfigurationController.path)); Parent s2Content=(Parent)loader2.load(); configurationController=(CsvParserConfigurationController) loader2.getController(); setStep2Content(s2Content); super.postInitialize(); }catch (IOException ex){ Exceptions.printStackTrace(ex); } } /** * * @param taskInstance */ public CsvParserController(CsvParserTaskInstance taskInstance){ this(); initializeTaskToGUIControls(taskInstance); } /** * * @param event */ public void handleStep1NextButton(ActionEvent event){ super.handleStep1NextButton(event); //Set Input Folder for ConfigurationController CsvParserConfigurationController confController = (CsvParserConfigurationController) configurationController; StringProperty inputPath = basicInputViewController.getSelectedItemLabel().textProperty(); //StringProperty inputname=basicInputViewController.getSelectedCorpusName(); confController.setInputPath(inputPath.getValue()); /*CsvParserTaskInstance instance = (CsvParserTaskInstance) getTaskInstance(); CsvParserConfigurationController confController = (CsvParserConfigurationController) configurationController; StringProperty inputPath = basicInputViewController.getSelectedItemLabel().textProperty(); StringProperty inputname = basicInputViewController.getSelectedCorpusName(); CorpusData input = new CorpusData(inputname, inputPath); input.setId(basicInputViewController.getSelectedInput().getId()); instance.setInput(input);*/ } /** * * @param event */ @Override public void handleStep3RunButton(ActionEvent event){ if(!this.validateInputOutput()){ return; } CsvParserTaskInstance instance = (CsvParserTaskInstance) getTaskInstance(); CsvParserConfigurationController confController = (CsvParserConfigurationController) configurationController; StringProperty inputPath = basicInputViewController.getSelectedItemLabel().textProperty(); StringProperty inputname = basicInputViewController.getSelectedCorpusName(); CorpusData input = new CorpusData(inputname, inputPath); input.setId(basicInputViewController.getSelectedInput().getId()); instance.setInput(input); instance.setCsvSeparatorIndex(confController.getCsvSeparatorIndex()); instance.setCsvSeparatorCustomText(confController.getCsvSeparatorCustomText()); instance.setCsvSeparatorChar(confController.getCsvSeparatorChar()); instance.setCsvColumnList(confController.getCsvColumnList()); instance.setGroupByColumnIndex(confController.getGroupByColumnIndex()); instance.setTextColumnIndex(confController.getTextColumnIndex()); instance.setCsvQuoteChar(confController.getCsvQuoteChar()); instance.setGroupThreshold(confController.getGroupThreshold()); final StringProperty outputPath=basicOutputViewController.getOutputDirTextField().textProperty(); instance.setOutputDir(outputPath.get()); final String subdirectory=outputPath.get()+"/PC-Results/"; FileHandler.createDirectory(subdirectory); System.out.println("Created sub dir: "+subdirectory); FileList output = new FileList(NamingPolicy.generateOutputName(inputname.get(), outputPath.get(), instance),subdirectory); instance.setTextOutput(output); CTask task = new CsvParserTask(this.getProgress(), this.getProgressMessage()); task.setTaskInstance(instance); task.setOnSucceeded(new EventHandler<WorkerStateEvent>() { @Override public void handle(WorkerStateEvent t) { activeAllControls(); nextStepsViewController = new CsvParserNextStepsController(NamingPolicy.generateTaskName(CsvParserTaskInstance.class).get()); nextStepsViewController.setParent(CsvParserController.this); nextStepsViewController.setOutputDir(outputPath.get()); nextStepsViewController.setFilelist((FileList) getTaskInstance().getTextOutput()); nextStepsViewController.init(); ProjectManager.getThisProject().addResult(getTaskInstance().getTabularOutput(0)); ProjectManager.getThisProject().addData(getTaskInstance().getTextOutput()); if (isNew()) { ProjectManager.getThisProject().addTask(getTaskInstance()); setNew(false); } showNextStepPane(nextStepsViewController); } }); getProgressBar().setVisible(true); deactiveAllControls(); task.start(); setTaskInstance(task.getTaskInstance()); } }