package org.korsakow.domain.k3.importer; import java.io.File; import java.util.ArrayList; import java.util.List; import org.korsakow.domain.interf.IProject; import org.korsakow.domain.k3.K3Interface; import org.korsakow.domain.k3.K3Project; import org.korsakow.domain.k3.importer.task.K3ConvertProjectTask; import org.korsakow.domain.k3.importer.task.K3ParseTask; import org.korsakow.ide.task.AbstractTask; import org.korsakow.ide.task.Task; import org.korsakow.ide.task.TaskException; import org.korsakow.ide.util.StrongReference; /** * Imports a K3 project to K5 * @author d * */ public class K3Importer { public static final String DATABASE_DIR = "database"; public static final String VIDEO_DIR = "movies"; public static final String IMAGE_DIR = "pictures"; public static final String SOUND_DIR = "sounds"; private final StrongReference<IProject> project = new StrongReference<IProject>(); private final K3ImportReport report = new K3ImportReport(); private K3Project k3Project; private final File dataDir; private final File databaseDir; private final File databaseFile; private final File interfaceFile; public K3Importer(File dataDir) { this.dataDir = dataDir; databaseDir = new File(dataDir, K3Importer.DATABASE_DIR); databaseFile = new File(databaseDir, "database.txt"); interfaceFile = new File(databaseDir, "interface.txt"); } public File getDatabaseDir() { return databaseDir; } public File getDatabaseFile() { return databaseFile; } /** * may not exist * @return */ public File getInterfaceFile() { return interfaceFile; } public List<Task> createImportTasks() { List<Task> importTasks = new ArrayList<Task>(); final StrongReference<K3Project> k3ProjectRef = new StrongReference<K3Project>(); StrongReference<K3Interface> k3InterfaceRef = new StrongReference<K3Interface>(); importTasks.add(new K3ParseTask(dataDir, databaseFile, interfaceFile, report, k3ProjectRef, k3InterfaceRef)); importTasks.add(new K3ConvertProjectTask(dataDir, databaseFile, interfaceFile, k3ProjectRef, report, project, k3InterfaceRef)); importTasks.add(new AbstractTask() { @Override public void runTask() throws TaskException { k3Project = k3ProjectRef.get(); } }); return importTasks; } public K3Project getK3Project() { return k3Project; } public IProject getProject() { return project.get(); } public K3ImportReport getReport() { return report; } }