Class SqlResourceManagerImpl

    • 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

      • getCharset

        public Charset getCharset()
        charset を取得します。
        Returns:
        charset
      • 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 interface SqlResourceManager
        Parameters:
        path - Path ファイルパス
        Returns:
        SqlName SqlName
        See Also:
        SqlResourceManager.getSqlName(java.nio.file.Path)
      • 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 - ファイルの読み込みに失敗した場合
      • formatSqlBody

        protected String formatSqlBody​(String sqlBody)
        SQL文の不要な文字削除と末尾の改行文字付与を行う.
        Parameters:
        sqlBody - 元となるSQL文
        Returns:
        整形後のSQL文