Skip to content

Commit

Permalink
Remove change detection from SqlResourceManager and Add SqlResourceLo…
Browse files Browse the repository at this point in the history
…ader
  • Loading branch information
HidekiSugimoto189 committed Sep 23, 2024
1 parent 11da69c commit 35f6ef3
Show file tree
Hide file tree
Showing 16 changed files with 738 additions and 1,106 deletions.
1 change: 0 additions & 1 deletion REPL/repl.properties
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ sql.versionColumnName=lock_no
sql.optimisticLockSupplier=jp.co.future.uroborosql.mapping.FieldIncrementOptimisticLockSupplier
#sql.loadPath=sql
#sql.fileExtension=.sql
#sql.detectChanges=true

executionContextProvider.constantClassNames=jp.co.future.uroborosql.context.test.TestConsts
executionContextProvider.enumConstantPackageNames=jp.co.future.uroborosql.context.test
3 changes: 1 addition & 2 deletions src/main/java/jp/co/future/uroborosql/client/SqlREPL.java
Original file line number Diff line number Diff line change
Expand Up @@ -228,11 +228,10 @@ private void initialize(final Terminal terminal) throws Exception {
var loadPath = p("sql.loadPath", "sql");
var fileExtension = p("sql.fileExtension", ".sql");
var charset = Charset.forName(p("sql.encoding", "UTF-8"));
var detectChanges = Boolean.parseBoolean(p("sql.detectChanges", "true"));

// config
sqlConfig = UroboroSQL.builder(url, user, password, schema)
.setSqlResourceManager(new SqlResourceManagerImpl(loadPath, fileExtension, charset, detectChanges))
.setSqlResourceManager(new SqlResourceManagerImpl(loadPath, fileExtension, charset, true))
.build();
sqlConfig.getEventListenerHolder().addEventSubscriber(new DumpResultEventSubscriber());

Expand Down
79 changes: 79 additions & 0 deletions src/main/java/jp/co/future/uroborosql/store/SqlInfo.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
/**
* Copyright (c) 2017-present, Future Corporation
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
package jp.co.future.uroborosql.store;

import java.nio.file.Path;

/**
* SQLファイルの情報を保持するオブジェクト
*/
public class SqlInfo {
/** zip, jar内のファイルのscheme */
public static final String SCHEME_JAR = "jar";

/** ファイルシステム上のファイルのscheme */
public static final String SCHEME_FILE = "file";

/** sqlNameに対応するPath. */
private final Path path;

/** 読み込みを行ったSQLルートパス */
private final Path rootPath;

/** 読み込んだファイルのscheme */
private final String scheme;

/** SQLファイルの内容.*/
private final String sqlBody;

/**
* コンストラクタ
* @param path Path
* @param rootPath 読み込みを行ったSQLルートパス
* @param scheme 読み込んだファイルのscheme
* @param sqlBody SqlBody
*/
public SqlInfo(final Path path, final Path rootPath, final String scheme, final String sqlBody) {
this.path = path;
this.rootPath = rootPath;
this.scheme = scheme;
this.sqlBody = sqlBody;
}

/**
* sqlNameに対応するPath.を取得します.
* @return sqlNameに対応するPath.
*/
public Path getPath() {
return path;
}

/**
* 読み込みを行ったSQLルートパスを取得します.
* @return 読み込みを行ったSQLルートパス
*/
public Path getRootPath() {
return rootPath;
}

/**
* 読み込んだファイルのschemeを取得します.
* @return 読み込んだファイルのscheme
*/
public String getScheme() {
return scheme;
}

/**
* SQLファイルの内容.を取得します.
* @return SQLファイルの内容.
*/
public String getSqlBody() {
return sqlBody;
}

}
90 changes: 90 additions & 0 deletions src/main/java/jp/co/future/uroborosql/store/SqlResourceLoader.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
/**
* Copyright (c) 2017-present, Future Corporation
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
package jp.co.future.uroborosql.store;

import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.nio.charset.Charset;
import java.nio.file.Path;
import java.util.List;

/**
* SQLリソースローダー インタフェース.
*
* @author H.Sugimoto
* @since v1.0.0
*/
public interface SqlResourceLoader {
/**
* ファイル拡張子を取得します.
* @return ファイル拡張子
*/
String getFileExtension();

/**
* ファイル拡張子を設定します.
* @param fileExtension ファイル拡張子
*/
void setFileExtension(final String fileExtension);

/**
* Charsetを取得します.
* @return Charset
*/
Charset getCharset();

/**
* Charsetを設定します.
* @param charset Charset
*/
void setCharset(final Charset charset);

/**
* クラスローダーを取得します.
* @return クラスローダー
*/
ClassLoader getClassLoader();

/**
* 指定した名前に対するリソースのURLを取得します.
* @param name リソース名
* @return リソースに対するURL
*/
URL getResource(String name);

/**
* 指定した名前に対するリソースのURLを取得します.
* @param path リソースパス
* @return リソースに対するURL
*/
URL getResource(Path path);

/**
* 指定したパス配下のSQLリソースをすべて取得します.
* @param rootPath SQLリソースのルートパス
* @return 取得したSQL情報のリスト
*/
List<SqlInfo> loadAllSql(final Path rootPath);

/**
* 指定されたInputStreamからSQL本文を取得します. 引数のInputStreamは読み込み後クローズされます.
* @param is 対象のInputStream
* @return SQL本文
* @throws IOException SQLの読み込みに失敗した場合
*/
String loadSql(final InputStream is) throws IOException;

/**
* 指定されたURLからSQL本文を取得します. 引数のURLから取得したInputStreamは読み込み後クローズされます.
* @param url 対象のURL
* @return SQL本文
* @throws IOException SQLの読み込みに失敗した場合
*/
String loadSql(final URL url) throws IOException;

}
Loading

0 comments on commit 35f6ef3

Please sign in to comment.