You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ctakes.apache.org by se...@apache.org on 2015/01/20 19:31:22 UTC
svn commit: r1653329 -
/ctakes/trunk/ctakes-dictionary-lookup-fast/src/main/java/org/apache/ctakes/dictionary/lookup2/util/JdbcConnectionFactory.java
Author: seanfinan
Date: Tue Jan 20 18:31:22 2015
New Revision: 1653329
URL: http://svn.apache.org/r1653329
Log:
CTAKES-345 enhancement to use $CTAKES_HOME in finding dictionary database when cwd is not associated with the ctakes installation
Modified:
ctakes/trunk/ctakes-dictionary-lookup-fast/src/main/java/org/apache/ctakes/dictionary/lookup2/util/JdbcConnectionFactory.java
Modified: ctakes/trunk/ctakes-dictionary-lookup-fast/src/main/java/org/apache/ctakes/dictionary/lookup2/util/JdbcConnectionFactory.java
URL: http://svn.apache.org/viewvc/ctakes/trunk/ctakes-dictionary-lookup-fast/src/main/java/org/apache/ctakes/dictionary/lookup2/util/JdbcConnectionFactory.java?rev=1653329&r1=1653328&r2=1653329&view=diff
==============================================================================
--- ctakes/trunk/ctakes-dictionary-lookup-fast/src/main/java/org/apache/ctakes/dictionary/lookup2/util/JdbcConnectionFactory.java (original)
+++ ctakes/trunk/ctakes-dictionary-lookup-fast/src/main/java/org/apache/ctakes/dictionary/lookup2/util/JdbcConnectionFactory.java Tue Jan 20 18:31:22 2015
@@ -20,6 +20,8 @@ import java.util.*;
public enum JdbcConnectionFactory {
INSTANCE;
+ static private final String CTAKES_HOME = "CTAKES_HOME";
+
static final private Logger LOGGER = Logger.getLogger( "JdbcConnectionFactory" );
static final private Logger DOT_LOGGER = Logger.getLogger( "ProgressAppender" );
static final private Logger EOL_LOGGER = Logger.getLogger( "ProgressDone" );
@@ -54,25 +56,7 @@ public enum JdbcConnectionFactory {
String trueJdbcUrl = jdbcUrl;
if ( jdbcUrl.startsWith( HSQL_FILE_PREFIX ) ) {
// Hack for hsqldb file needing to be absolute or relative to current working directory
- final String urlDbPath = jdbcUrl.substring( HSQL_FILE_PREFIX.length() );
- final String urlFilePath = urlDbPath + HSQL_DB_EXT;
- File file = new File( urlFilePath );
- if ( !file.exists() ) {
- // file url is not absolute, check for relative directly under current working directory
- final String cwd = System.getProperty( "user.dir" );
- file = new File( cwd, urlFilePath );
- if ( !file.exists() ) {
- // Users running projects out of an ide may have the module directory as cwd
- final String cwdParent = new File( cwd ).getParent();
- file = new File( cwdParent, urlFilePath );
- if ( file.exists() ) {
- trueJdbcUrl = HSQL_FILE_PREFIX + "../" + urlDbPath;
- } else {
- LOGGER.error( "Could not find " + urlFilePath + " as absolute or in " + cwd + " or in " + cwdParent );
- throw new SQLException( "No HsqlDB script file exists at Url" );
- }
- }
- }
+ trueJdbcUrl = getConnectionUrl( jdbcUrl );
}
try {
// DO NOT use try with resources here.
@@ -107,6 +91,37 @@ public enum JdbcConnectionFactory {
return connection;
}
+ static private String getConnectionUrl( final String jdbcUrl ) throws SQLException {
+ final String urlDbPath = jdbcUrl.substring( HSQL_FILE_PREFIX.length() );
+ final String urlFilePath = urlDbPath + HSQL_DB_EXT;
+ File file = new File( urlFilePath );
+ if ( file.exists() ) {
+ return file.getPath();
+ }
+ // file url is not absolute, check for relative directly under current working directory
+ final String cwd = System.getProperty( "user.dir" );
+ file = new File( cwd, urlFilePath );
+ if ( file.exists() ) {
+ return file.getPath();
+ }
+ // Users running projects out of an ide may have the module directory as cwd
+ final String cwdParent = new File( cwd ).getParent();
+ file = new File( cwdParent, urlFilePath );
+ if ( file.exists() ) {
+ return file.getPath();
+ }
+ final String cTakesHome = System.getenv( CTAKES_HOME );
+ if ( cTakesHome != null && !cTakesHome.isEmpty() ) {
+ file = new File( cTakesHome, urlFilePath );
+ if ( file.exists() ) {
+ return file.getPath();
+ }
+ }
+ LOGGER.error( "Could not find " + urlFilePath + " as absolute or in \n" + cwd + " or in \n"
+ + cwdParent + " or in \n" + cTakesHome );
+ throw new SQLException( "No HsqlDB script file exists at Url" );
+ }
+
static private class DotPlotter extends TimerTask {
private int _count = 0;