package org.simantics.district.network.ui.table; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.util.Map; import javax.inject.Inject; import javax.inject.Named; import org.eclipse.e4.core.di.annotations.Execute; import org.eclipse.e4.ui.services.IServiceConstants; import org.eclipse.e4.ui.workbench.modeling.EPartService; import org.eclipse.swt.widgets.FileDialog; import org.eclipse.swt.widgets.Shell; import org.simantics.district.imports.DistrictImportUtils; import org.simantics.district.network.ui.techtype.table.TechTypeTableView; import org.simantics.utils.ui.ExceptionUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class ImportTechTypeCSVHandler { private static final Logger LOGGER = LoggerFactory.getLogger(ImportTechTypeCSVHandler.class); @Inject EPartService partService; @Execute public void execute(@Named(IServiceConstants.ACTIVE_SHELL) Shell s) { // here we can import based on the current CSV table data FileDialog dialog = new FileDialog(s); String path = dialog.open(); try { if (path != null) { Path p = Paths.get(path); if (Files.exists(p)) { Map readCSVHeader = DistrictImportUtils.readCSVHeader(p, ';', true); TechTypeTableView.table.setTechTypePath(path); } else { LOGGER.warn("Path does not exist even though path != null: {}", p); } } else { LOGGER.error("Invalid file path given {}", path); } } catch (Exception e) { LOGGER.error("Could not read file {}", path, e); ExceptionUtils.logAndShowError("Could not read file " + path + " : " + e.getMessage(), e); } } }