package at.medevit.elexis.loinc.ui.importer; import java.io.File; import java.io.FileInputStream; import java.util.HashMap; import java.util.Map; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.FileDialog; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Text; import at.medevit.elexis.loinc.model.LoincCode; import at.medevit.elexis.loinc.ui.Activator; import at.medevit.elexis.loinc.ui.LoincServiceComponent; import ch.elexis.core.data.events.ElexisEventDispatcher; import ch.elexis.core.data.status.ElexisStatus; import ch.elexis.core.ui.util.ImporterPage; import ch.elexis.core.ui.util.Messages; import ch.elexis.core.ui.util.SWTHelper; public class LoincCodeCsvImporter extends ImporterPage { public LoincCodeCsvImporter(){ results = new String[2]; } @Override public IStatus doImport(IProgressMonitor monitor) throws Exception{ FileInputStream fis = null; if (results[0] != null && !results[0].isEmpty()) { File csv = new File(results[0]); try { fis = new FileInputStream(csv); LoincServiceComponent.getService().importFromCsv(fis, getFieldMapping()); } catch (RuntimeException e) { return new ElexisStatus(ElexisStatus.ERROR, Activator.PLUGIN_ID, ElexisStatus.CODE_NOFEEDBACK, "Import failed", e); } finally { if (fis != null) { fis.close(); } } ElexisEventDispatcher.reload(LoincCode.class); } // if (results[1] != null && !results[1].isEmpty()) { // File csv = new File(results[1]); // // try { // fis = new FileInputStream(csv); // LoincServiceComponent.getService().importMappingFromCsv(fis); // } catch (RuntimeException e) { // return new ElexisStatus(ElexisStatus.ERROR, Activator.PLUGIN_ID, // ElexisStatus.CODE_NOFEEDBACK, "Mapping Import failed", e); // } finally { // if (fis != null) { // fis.close(); // } // } // } return Status.OK_STATUS; } @Override public String getTitle(){ return "LOINC Code CSV Importer"; //$NON-NLS-1$ } @Override public String getDescription(){ return "LOIN Code Import aus einer CSV Datei. Format CODE,LONGNAME,SHORTNAME,CLASS,UNIT"; } @Override public Composite createPage(Composite parent){ Composite area = new Composite(parent, SWT.NONE); area.setLayout(new GridLayout(1, true)); area.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false, 1, 1)); LoincFileBasedImporter fis = new LoincFileBasedImporter(area, this, "Loinc Code CSV Datei:", 0); fis.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1)); return area; } private static Map<Integer, String> getFieldMapping(){ HashMap<Integer, String> ret = new HashMap<Integer, String>(); ret.put(0, LoincCode.FLD_CODE); ret.put(1, LoincCode.FLD_LONGNAME); ret.put(2, LoincCode.FLD_SHORTNAME); ret.put(3, LoincCode.FLD_CLASS); ret.put(4, LoincCode.FLD_UNIT); return ret; } private static class LoincFileBasedImporter extends Composite { public Text tFname; private String[] filterExts = { "*.csv" }; private String[] filterNames = { Messages.ImporterPage_allFiles }; public LoincFileBasedImporter(final Composite parent, final ImporterPage home, final String message, final int resultIdx){ super(parent, SWT.BORDER); setLayout(new GridLayout(1, false)); final Label lFile = new Label(this, SWT.NONE); tFname = new Text(this, SWT.BORDER); home.results[resultIdx] = tFname.getText(); lFile.setText(message); //$NON-NLS-1$ lFile.setLayoutData(SWTHelper.getFillGridData(1, true, 1, false)); tFname.setLayoutData(SWTHelper.getFillGridData(1, true, 1, false)); Button bFile = new Button(this, SWT.PUSH); bFile.setText(Messages.ImporterPage_browse); //$NON-NLS-1$ // bFile.setLayoutData(SWTHelper.getFillGridData(2,true,1,false)); bFile.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(final SelectionEvent e){ FileDialog fdl = new FileDialog(parent.getShell(), SWT.OPEN); fdl.setFilterExtensions(filterExts); fdl.setFilterNames(filterNames); String filename = fdl.open(); if (filename != null) { tFname.setText(filename); home.results[resultIdx] = filename; } } }); } } }