From 6e5841a718ae96537d8c990b7d10c78e49582196 Mon Sep 17 00:00:00 2001 From: Marc Halperin Date: Wed, 17 Jun 2015 12:02:39 -0700 Subject: [PATCH] Fixes bug that caused crash from loading target schema's This fixes a bug that caused the program to crash when trying to run outside of eclipse. Also renames the cdmv4 and cdmv5 csv's so the schema name does not include the word model. --- src/org/ohdsi/rabbitInAHat/DetailsPanel.java | 1 - .../ohdsi/rabbitInAHat/RabbitInAHatMain.java | 24 +++++++++++++++---- .../dataModel/{CDMV4Model.csv => CDMV4.csv} | 0 .../dataModel/{CDMv5Model.csv => CDMV5.csv} | 0 .../rabbitInAHat/dataModel/Database.java | 23 ++++++++---------- 5 files changed, 30 insertions(+), 18 deletions(-) rename src/org/ohdsi/rabbitInAHat/dataModel/{CDMV4Model.csv => CDMV4.csv} (100%) rename src/org/ohdsi/rabbitInAHat/dataModel/{CDMv5Model.csv => CDMV5.csv} (100%) 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]); } + }