diff --git a/src/org/ohdsi/rabbitInAHat/DetailsPanel.java b/src/org/ohdsi/rabbitInAHat/DetailsPanel.java index aa57df4a..0f012c11 100644 --- a/src/org/ohdsi/rabbitInAHat/DetailsPanel.java +++ b/src/org/ohdsi/rabbitInAHat/DetailsPanel.java @@ -25,7 +25,6 @@ import java.awt.GridLayout; import java.awt.Toolkit; import java.awt.event.ActionEvent; -import java.awt.event.InputEvent; import java.awt.event.KeyEvent; import java.text.DecimalFormat; import java.util.ArrayList; diff --git a/src/org/ohdsi/rabbitInAHat/RabbitInAHatMain.java b/src/org/ohdsi/rabbitInAHat/RabbitInAHatMain.java index c5f227db..a7f763da 100644 --- a/src/org/ohdsi/rabbitInAHat/RabbitInAHatMain.java +++ b/src/org/ohdsi/rabbitInAHat/RabbitInAHatMain.java @@ -28,8 +28,13 @@ import java.awt.event.KeyEvent; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStream; import java.util.ArrayList; import java.util.List; + import javax.swing.*; import javax.swing.border.TitledBorder; import javax.swing.filechooser.FileFilter; @@ -376,11 +381,22 @@ public void actionPerformed(ActionEvent event) { } private void doSetTargetCustom(String fileName) { - ETL etl = new ETL(ObjectExchange.etl.getSourceDatabase(),Database.generateModelFromCSV(fileName)); - etl.copyETLMappings(ObjectExchange.etl); - tableMappingPanel.setMapping(etl.getTableToTableMapping()); - ObjectExchange.etl = etl; + if( fileName != null ){ + File file = new File(fileName); + InputStream stream; + + try{ + stream = new FileInputStream(file); + ETL etl = new ETL(ObjectExchange.etl.getSourceDatabase(),Database.generateModelFromCSV(stream, file.getName())); + + etl.copyETLMappings(ObjectExchange.etl); + tableMappingPanel.setMapping(etl.getTableToTableMapping()); + ObjectExchange.etl = etl; + }catch (IOException e) { + //Do nothing if error + } + } } diff --git a/src/org/ohdsi/rabbitInAHat/dataModel/CDMV4Model.csv b/src/org/ohdsi/rabbitInAHat/dataModel/CDMV4.csv similarity index 100% rename from src/org/ohdsi/rabbitInAHat/dataModel/CDMV4Model.csv rename to src/org/ohdsi/rabbitInAHat/dataModel/CDMV4.csv diff --git a/src/org/ohdsi/rabbitInAHat/dataModel/CDMv5Model.csv b/src/org/ohdsi/rabbitInAHat/dataModel/CDMV5.csv similarity index 100% rename from src/org/ohdsi/rabbitInAHat/dataModel/CDMv5Model.csv rename to src/org/ohdsi/rabbitInAHat/dataModel/CDMV5.csv diff --git a/src/org/ohdsi/rabbitInAHat/dataModel/Database.java b/src/org/ohdsi/rabbitInAHat/dataModel/Database.java index f49662ca..dfa0845a 100644 --- a/src/org/ohdsi/rabbitInAHat/dataModel/Database.java +++ b/src/org/ohdsi/rabbitInAHat/dataModel/Database.java @@ -17,7 +17,7 @@ ******************************************************************************/ package org.ohdsi.rabbitInAHat.dataModel; -import java.io.File; +import java.io.InputStream; import java.io.Serializable; import java.util.ArrayList; import java.util.HashMap; @@ -33,15 +33,13 @@ public class Database implements Serializable { public enum CDMVersion { - CDMV4 ("CDMV4Model.csv", "CDMv4"), - CDMV5 ("CDMv5Model.csv", "CDMv5"); + CDMV4 ("CDMV4.csv"), + CDMV5 ("CDMV5.csv"); private final String fileName; - private final String dbName; - CDMVersion(String fileName, String dbName){ + CDMVersion(String fileName){ this.fileName = fileName; - this.dbName = dbName; } } @@ -62,18 +60,16 @@ public String getDbName(){ } public static Database generateCDMModel(CDMVersion cdmVersion) { - String path = Database.class.getResource(cdmVersion.fileName).getFile(); - return Database.generateModelFromCSV(path); + return Database.generateModelFromCSV(Database.class.getResourceAsStream(cdmVersion.fileName), cdmVersion.fileName); } - public static Database generateModelFromCSV(String fileName) { + public static Database generateModelFromCSV(InputStream stream, String dbName) { Database database = new Database(); - String dbname = new File(fileName).getName(); - database.dbName = dbname.substring(0,dbname.lastIndexOf(".")); - + database.dbName = dbName.substring(0, dbName.lastIndexOf(".")); + Map nameToTable = new HashMap(); - for (Row row : new ReadCSVFileWithHeader(fileName)) { + for (Row row : new ReadCSVFileWithHeader(stream)) { Table table = nameToTable.get(row.get("TABLE_NAME").toLowerCase()); @@ -171,4 +167,5 @@ private static String[][] getValueCounts(QuickAndDirtyXlsxReader workbook, Strin } return list.toArray(new String[list.size()][2]); } + }