/**
*
*/
package org.korsakow.domain.k3.importer.task;
import java.io.File;
import java.io.IOException;
import org.korsakow.domain.k3.K3Interface;
import org.korsakow.domain.k3.K3Project;
import org.korsakow.domain.k3.importer.K3ImportException;
import org.korsakow.domain.k3.importer.K3ImportReport;
import org.korsakow.domain.k3.parser.K3DatabaseParser;
import org.korsakow.domain.k3.parser.K3InterfaceParser;
import org.korsakow.domain.k3.parser.K3ParserException;
import org.korsakow.ide.lang.LanguageBundle;
import org.korsakow.ide.task.TaskException;
import org.korsakow.ide.util.StrongReference;
public class K3ParseTask extends K3ImportTask
{
private final K3ImportReport report;
private final StrongReference<K3Project> project;
private final StrongReference<K3Interface> interf;
public K3ParseTask(File dataDir, File databaseFile, File interfaceFile, K3ImportReport report, StrongReference<K3Project> project, StrongReference<K3Interface> interf)
{
super(dataDir, databaseFile, interfaceFile);
this.report = report;
this.project = project;
this.interf = interf;
}
@Override
public String getTitleString()
{
return LanguageBundle.getString("import.task.parse");
}
@Override
public void runTask() throws TaskException
{
String basedir = getDataDir().getPath();
K3DatabaseParser dbParser = new K3DatabaseParser();
K3Project k3Project = null;
try {
k3Project = dbParser.parse(getDatabaseFile());
} catch (IOException e) {
throw new TaskException(new K3ImportException(e, getDatabaseFile(), null));
} catch (K3ParserException e) {
throw new TaskException(new K3ImportException(e, getDatabaseFile(), null));
}
if (k3Project.settings.useNewInterface)
{
if (getInterfaceFile().exists()) {
K3InterfaceParser ifParser = new K3InterfaceParser();
K3Interface k3Interface = null;
try {
k3Interface = ifParser.parse(getInterfaceFile());
} catch (IOException e) {
throw new TaskException(new K3ImportException(e, getDatabaseFile(), getInterfaceFile()));
} catch (K3ParserException e) {
throw new TaskException(new K3ImportException(e, getDatabaseFile(), getInterfaceFile()));
}
interf.set(k3Interface);
} else
report.addWarning("Missing interface.txt", "File System");
}
project.set(k3Project);
}
}