Package jp.co.future.uroborosql.store
Class SqlResourceManagerImpl
- java.lang.Object
-
- jp.co.future.uroborosql.store.SqlResourceManagerImpl
-
- All Implemented Interfaces:
LoggerBase
,ServiceLoggingSupport
,SqlResourceManager
public class SqlResourceManagerImpl extends Object implements SqlResourceManager
SQLリソース管理実装クラス- Author:
- H.Sugimoto
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected static class
SqlResourceManagerImpl.SqlInfo
SQLファイルの情報を保持するオブジェクト
-
Field Summary
Fields Modifier and Type Field Description protected ConcurrentHashMap<String,SqlResourceManagerImpl.SqlInfo>
sqlInfos
sqlNameとそれに対するSqlInfoの紐付きを持つMap-
Fields inherited from interface jp.co.future.uroborosql.log.support.LoggerBase
SUPPRESS_LOG_OUTPUT, SUPPRESS_PARAMETER_LOG_OUTPUT
-
Fields inherited from interface jp.co.future.uroborosql.log.support.ServiceLoggingSupport
LOG
-
Fields inherited from interface jp.co.future.uroborosql.store.SqlResourceManager
DEFAULT_LOAD_PATH
-
-
Constructor Summary
Constructors Constructor Description SqlResourceManagerImpl()
コンストラクタSqlResourceManagerImpl(String loadPath)
コンストラクタSqlResourceManagerImpl(String loadPath, String fileExtension)
コンストラクタSqlResourceManagerImpl(String loadPath, String fileExtension, Charset charset)
コンストラクタSqlResourceManagerImpl(String loadPath, String fileExtension, Charset charset, ClassLoader classLoader)
コンストラクタSqlResourceManagerImpl(List<String> loadPaths)
コンストラクタSqlResourceManagerImpl(List<String> loadPaths, String fileExtension)
コンストラクタSqlResourceManagerImpl(List<String> loadPaths, String fileExtension, Charset charset, ClassLoader classLoader)
コンストラクタ
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
clearCache()
キャッシュクリア処理boolean
existSql(String sqlName)
SQLが存在するかどうかを判定するprotected String
formatSqlBody(String sqlBody)
SQL文の不要な文字削除と末尾の改行文字付与を行う.protected boolean
generateSqlInfo(String sqlName)
sqlNameに対するSqlInfoを生成する.Charset
getCharset()
charset を取得します。protected Path
getDefaultSqlPath(Path loadPath, String sqlName)
sqlNameに対するDialectフォルダを含まないファイルのパスを取得するDialect
getDialect()
Dialectの取得protected Path
getDialectSqlPath(Path loadPath, String sqlName)
sqlNameに対するDialectフォルダを含むファイルのパスを取得するprotected URL
getResource(Path path)
クラスローダーからリソースのURLを取得するString
getSql(String sqlName)
SQL文取得String
getSqlName(Path path)
SqlNameを与えられたPathから生成するList<String>
getSqlPathList()
ロードしたSQLのパス一覧を取得するURL
getSqlUrl(String sqlName)
SQL名に対して現在有効なURLを取得するvoid
initialize()
初期化protected String
loadSql(URL url)
指定したURLのSQLファイルのSQL本文をロードする.boolean
reloadSql(String sqlName)
指定したSQL名のSQLをロードし直します.void
setDialect(Dialect dialect)
Dialectの設定-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface jp.co.future.uroborosql.log.support.LoggerBase
debugWith, errorWith, infoWith, isSuppressLogging, isSuppressParameterLogging, releaseLogging, releaseParameterLogging, suppressLogging, suppressParameterLogging, traceWith, warnWith
-
-
-
-
Field Detail
-
sqlInfos
protected final ConcurrentHashMap<String,SqlResourceManagerImpl.SqlInfo> sqlInfos
sqlNameとそれに対するSqlInfoの紐付きを持つMap
-
-
Constructor Detail
-
SqlResourceManagerImpl
public SqlResourceManagerImpl()
コンストラクタ
-
SqlResourceManagerImpl
public SqlResourceManagerImpl(String loadPath)
コンストラクタ- Parameters:
loadPath
- SQLファイルをロードするルートパス
-
SqlResourceManagerImpl
public SqlResourceManagerImpl(String loadPath, String fileExtension)
コンストラクタ- Parameters:
loadPath
- SQLファイルをロードするルートパスfileExtension
- SQLファイル拡張子
-
SqlResourceManagerImpl
public SqlResourceManagerImpl(String loadPath, String fileExtension, Charset charset)
コンストラクタ- Parameters:
loadPath
- SQLファイルをロードするルートパスfileExtension
- SQLファイル拡張子charset
- SQLファイルエンコーディング
-
SqlResourceManagerImpl
public SqlResourceManagerImpl(String loadPath, String fileExtension, Charset charset, ClassLoader classLoader)
コンストラクタ- Parameters:
loadPath
- SQLファイルをロードするルートパスfileExtension
- SQLファイル拡張子charset
- SQLファイルエンコーディングclassLoader
- SQLをロードするために利用するクラスローダー
-
SqlResourceManagerImpl
public SqlResourceManagerImpl(List<String> loadPaths)
コンストラクタ- Parameters:
loadPaths
- SQLファイルをロードするルートパスのリスト
-
SqlResourceManagerImpl
public SqlResourceManagerImpl(List<String> loadPaths, String fileExtension)
コンストラクタ- Parameters:
loadPaths
- SQLファイルをロードするルートパスのリストfileExtension
- SQLファイル拡張子
-
SqlResourceManagerImpl
public SqlResourceManagerImpl(List<String> loadPaths, String fileExtension, Charset charset, ClassLoader classLoader)
コンストラクタ- Parameters:
loadPaths
- SQLファイルをロードするルートパスのリストfileExtension
- SQLファイル拡張子charset
- SQLファイルエンコーディングclassLoader
- SQLをロードするために利用するクラスローダー- Throws:
IllegalArgumentException
- loadPathsにnull
が含まれる場合
-
-
Method Detail
-
initialize
public void initialize()
初期化- Specified by:
initialize
in interfaceSqlResourceManager
- See Also:
SqlResourceManager.initialize()
-
clearCache
public void clearCache()
キャッシュクリア処理- Specified by:
clearCache
in interfaceSqlResourceManager
- See Also:
SqlResourceManager.clearCache()
-
getCharset
public Charset getCharset()
charset を取得します。- Returns:
- charset
-
getDialect
public Dialect getDialect()
Dialectの取得- Specified by:
getDialect
in interfaceSqlResourceManager
- Returns:
- Dialect
- See Also:
SqlResourceManager.getDialect()
-
setDialect
public void setDialect(Dialect dialect)
Dialectの設定- Specified by:
setDialect
in interfaceSqlResourceManager
- Parameters:
dialect
- Dialect- See Also:
SqlResourceManager.setDialect(jp.co.future.uroborosql.dialect.Dialect)
-
getSqlPathList
public List<String> getSqlPathList()
ロードしたSQLのパス一覧を取得する- Specified by:
getSqlPathList
in interfaceSqlResourceManager
- Returns:
- ロードしたSQLパス一覧
- See Also:
SqlResourceManager.getSqlPathList()
-
existSql
public boolean existSql(String sqlName)
SQLが存在するかどうかを判定する- Specified by:
existSql
in interfaceSqlResourceManager
- Parameters:
sqlName
- SQL名- Returns:
- 存在する場合は
true
- See Also:
SqlResourceManager.existSql(java.lang.String)
-
reloadSql
public boolean reloadSql(String sqlName)
指定したSQL名のSQLをロードし直します.- Specified by:
reloadSql
in interfaceSqlResourceManager
- Parameters:
sqlName
- SQL名- Returns:
- sqlNameに対するSQLが存在する場合は
true
- See Also:
SqlResourceManager.reloadSql(java.lang.String)
-
getSql
public String getSql(String sqlName)
SQL文取得- Specified by:
getSql
in interfaceSqlResourceManager
- Parameters:
sqlName
- SQL名- Returns:
- SQL文
- See Also:
SqlResourceManager.getSql(java.lang.String)
-
generateSqlInfo
protected boolean generateSqlInfo(String sqlName) throws IOException
sqlNameに対するSqlInfoを生成する.- Parameters:
sqlName
- SQL名- Returns:
- 生成に成功した場合
true
- Throws:
IOException
- SQLの読み込みに失敗した場合
-
getDefaultSqlPath
protected Path getDefaultSqlPath(Path loadPath, String sqlName)
sqlNameに対するDialectフォルダを含まないファイルのパスを取得する- Parameters:
loadPath
- SQLファイルをロードするルートパスsqlName
- SQL名- Returns:
- ルートパスからDialectフォルダを含まないSQLのパス
-
getDialectSqlPath
protected Path getDialectSqlPath(Path loadPath, String sqlName)
sqlNameに対するDialectフォルダを含むファイルのパスを取得する- Parameters:
loadPath
- SQLファイルをロードするルートパスsqlName
- SQL名- Returns:
- ルートパスからDialectフォルダを含むSQLのパス
-
getSqlName
public String getSqlName(Path path)
SqlNameを与えられたPathから生成する
SqlNameは以下のルールで生成する 1. loadPathで指定されたフォルダの下のフォルダ名とファイル名を"/"でつなげた文字列とする 2. loadPathの直下にdialectと一致するフォルダがある場合は、dialectフォルダの下のフォルダとファイル名を"/"でつなげた文字列とする 3. loadPathが複数指定されていて、同名のsqlNameがある場合、loadPathの並び順で先になるものを優先する ex) sql/ example/ test1.sql test2.sql test3.sql oracle/ example/ test1.sql postgresql/ example/ test2.sql secondary_sql/ example/ test3.sql test4.sql 上記のフォルダ構成で - loadPath=sql, dialect=oracleの場合は以下のSqlNameが生成される example/test1 ( 実際はoracle/example/test1 ) example/test2 - loadPath=sql, dialect=postgresqlの場合は以下のSqlNameが生成される example/test1 example/test2 ( 実際はpostgresql/example/test2 ) - loadPath=[sql, secondary_sql], dialect=postgresqlの場合は以下のSqlNameが生成される example/test1 example/test2 ( 実際はpostgresql/example/test2 ) example/test3 example/test4 - loadPath=[secondary_sql, sql], dialect=postgresqlの場合は以下のSqlNameが生成される example/test1 example/test2 ( 実際はpostgresql/example/test2 ) example/test3 ( 実際はsecondary_sql/example/test3 ) example/test4
- Specified by:
getSqlName
in interfaceSqlResourceManager
- Parameters:
path
- Path ファイルパス- Returns:
- SqlName SqlName
- See Also:
SqlResourceManager.getSqlName(java.nio.file.Path)
-
getSqlUrl
public URL getSqlUrl(String sqlName)
SQL名に対して現在有効なURLを取得する- Specified by:
getSqlUrl
in interfaceSqlResourceManager
- Parameters:
sqlName
- SQL名- Returns:
- 現在有効なURL。存在しないSQL名の場合はUroborosqlRuntimeExceptionがスローされる
- See Also:
SqlResourceManager.getSqlUrl(java.lang.String)
-
getResource
protected URL getResource(Path path) throws IOException
クラスローダーからリソースのURLを取得する- Parameters:
path
- リソースのパス- Returns:
- リソースのURL. リソースが存在しない場合は
null
- Throws:
IOException
- リソースの取得に失敗した場合
-
loadSql
protected String loadSql(URL url) throws IOException
指定したURLのSQLファイルのSQL本文をロードする.- Parameters:
url
- SQLファイルのURL- Returns:
- SQL本文
- Throws:
IOException
- ファイルの読み込みに失敗した場合
-
-