package ir.ac.iust.nlp.dependencyparser.utility.parsing;
import java.io.File;
import java.io.IOException;
import java.util.Calendar;
/**
*
* @author Mojtaba Khallash
*/
public class MaltSettings extends Settings {
private String currentTempFolder = "";
private String absoluteOutput;
private String absoluteModel;
public String OptionsFile;
public String GuidesFile;
public String WorkingDirectory;
public MaltSettings() {}
public MaltSettings(MaltSettings settings) {
super(settings);
this.absoluteModel = Model;
this.OptionsFile = settings.OptionsFile;
this.GuidesFile = settings.GuidesFile;
this.WorkingDirectory = settings.WorkingDirectory;
}
@Override
protected String[] getTrainParameters() {
return null;
}
public String getTrainParameters1() {
StringBuilder pars = new StringBuilder();
// flowchart: Flow chart
// -learn [Learn a Single MaltParser configuration]
pars.append("-m ");
pars.append("learn");
// name: Configuration name
pars.append(" -c ");
pars.append(Model);
// workingdir: Working directory
pars.append(" -w ");
pars.append(WorkingDirectory);
// infile: Path to input file
pars.append(" -i ");
pars.append(WorkingDirectory).append(Input);
pars.append(" -f ");
pars.append(WorkingDirectory).append(OptionsFile);
pars.append(" -F ");
pars.append(WorkingDirectory).append(GuidesFile);
return pars.toString();
}
@Override
protected String[] getTestParameters() {
return null;
}
public String getTestParameters1() {
StringBuilder pars = new StringBuilder();
// flowchart: Flow chart
// -parse [Parse with a Single MaltParser configuration]
pars.append("-m ");
pars.append("parse");
// name: Configuration name
pars.append(" -c ");
pars.append(Model);
// workingdir: Working directory
pars.append(" -w ");
pars.append(WorkingDirectory);
// infile: Path to input file
pars.append(" -i ");
pars.append(WorkingDirectory).append(Input);
// outfile: Path to output file
pars.append(" -o ");
pars.append(WorkingDirectory).append(Output);
return pars.toString();
}
public void preProcess() throws IOException {
if (WorkingDirectory.charAt(WorkingDirectory.length() - 1) != File.separatorChar) {
WorkingDirectory += File.separator;
}
currentTempFolder = String.valueOf(
Calendar.getInstance().getTimeInMillis()) + File.separator;
WorkingDirectory = WorkingDirectory + currentTempFolder;
switch(Chart) {
case Train:
//** Options **//
OptionsFile = copyToWorkingDirectory(OptionsFile);
//** Guide **//
GuidesFile = copyToWorkingDirectory(GuidesFile);
//** Input **//
// Ensure have an absolute path
Input = copyToWorkingDirectory(Input);
//** Model **//
this.absoluteModel = Model;
// Ensure have an absolute path
Model = new File(Model).getName();
break;
case Parse:
//** Input **//
Input = copyToWorkingDirectory(Input);
//** Model **//
// Ensure have an absolute path
this.absoluteOutput = Output;
Output = new File(Output).getName();
//** Model **//
// Ensure have an absolute path
this.absoluteModel = Model;
Model = copyToWorkingDirectory(Model);
break;
}
}
public void postProcess() throws IOException {
switch (Chart) {
case Train:
//** Model **//
copyToDestination(WorkingDirectory + Model, absoluteModel);
break;
case Parse:
//** Output **//
copyToDestination(WorkingDirectory + Output, absoluteOutput);
break;
}
}
protected String copyToWorkingDirectory(String source) {
File from = new File(source).getAbsoluteFile();
String name = from.getName();
copyToDestination(source, WorkingDirectory + name);
return name;
}
}