Skip to content

Commit

Permalink
Fixed to use Optional#orElseThrow() instead of Optional#get()
Browse files Browse the repository at this point in the history
  • Loading branch information
HidekiSugimoto189 committed Aug 11, 2024
1 parent fb3798f commit e552db8
Show file tree
Hide file tree
Showing 15 changed files with 362 additions and 254 deletions.
13 changes: 7 additions & 6 deletions src/main/java/jp/co/future/uroborosql/SqlAgentImpl.java
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,10 @@
import jp.co.future.uroborosql.event.AfterEntityInsertEvent;
import jp.co.future.uroborosql.event.AfterEntityQueryEvent;
import jp.co.future.uroborosql.event.AfterEntityUpdateEvent;
import jp.co.future.uroborosql.event.AfterProcedureEvent;
import jp.co.future.uroborosql.event.AfterSqlBatchEvent;
import jp.co.future.uroborosql.event.AfterSqlQueryEvent;
import jp.co.future.uroborosql.event.AfterSqlUpdateEvent;
import jp.co.future.uroborosql.event.BeforeEntityBatchInsertEvent;
import jp.co.future.uroborosql.event.BeforeEntityBatchUpdateEvent;
import jp.co.future.uroborosql.event.BeforeEntityBulkInsertEvent;
Expand All @@ -67,10 +71,6 @@
import jp.co.future.uroborosql.event.BeforeEntityQueryEvent;
import jp.co.future.uroborosql.event.BeforeEntityUpdateEvent;
import jp.co.future.uroborosql.event.BeforeParseSqlEvent;
import jp.co.future.uroborosql.event.AfterProcedureEvent;
import jp.co.future.uroborosql.event.AfterSqlBatchEvent;
import jp.co.future.uroborosql.event.AfterSqlQueryEvent;
import jp.co.future.uroborosql.event.AfterSqlUpdateEvent;
import jp.co.future.uroborosql.event.BeforeTransformSqlEvent;
import jp.co.future.uroborosql.exception.EntitySqlRuntimeException;
import jp.co.future.uroborosql.exception.OptimisticLockException;
Expand Down Expand Up @@ -1269,7 +1269,7 @@ private <E> int batchUpdate(final Class<E> entityType, final Stream<E> entities,
: 0);

if (updatedEntities != null && versionColumn.isPresent()) {
var vColumn = versionColumn.get();
var vColumn = versionColumn.orElseThrow();
var keyColumns = metadata.getColumns().stream()
.filter(TableMetadata.Column::isKey)
.sorted(Comparator.comparingInt(TableMetadata.Column::getKeySeq))
Expand Down Expand Up @@ -1816,7 +1816,8 @@ public Map<String, Object> procedure(final ExecutionContext executionContext) th
var result = callableStatement.execute();
// Procedure実行後イベント発行
if (getSqlConfig().getEventListenerHolder().hasAfterProcedureListener()) {
var eventObj = new AfterProcedureEvent(executionContext, result, callableStatement.getConnection(),
var eventObj = new AfterProcedureEvent(executionContext, result,
callableStatement.getConnection(),
callableStatement);
for (var listener : getSqlConfig().getEventListenerHolder().getAfterProcedureListeners()) {
listener.accept(eventObj);
Expand Down
12 changes: 9 additions & 3 deletions src/main/java/jp/co/future/uroborosql/SqlEntityQueryImpl.java
Original file line number Diff line number Diff line change
Expand Up @@ -318,7 +318,9 @@ public <T> T sum(final String col) {
context().setSql(sql.toString());
try {
return (T) mappingColumn
.getValue(this.entityHandler.doSelect(agent(), context(), this.entityType).findFirst().get());
.getValue(this.entityHandler.doSelect(agent(), context(), this.entityType)
.findFirst()
.orElseThrow());
} catch (final SQLException ex) {
throw new EntitySqlRuntimeException(context().getSqlKind(), ex);
}
Expand All @@ -344,7 +346,9 @@ public <T> T min(final String col) {
context().setSql(sql.toString());
try {
return (T) mappingColumn
.getValue(this.entityHandler.doSelect(agent(), context(), this.entityType).findFirst().get());
.getValue(this.entityHandler.doSelect(agent(), context(), this.entityType)
.findFirst()
.orElseThrow());
} catch (SQLException ex) {
throw new EntitySqlRuntimeException(context().getSqlKind(), ex);
}
Expand All @@ -370,7 +374,9 @@ public <T> T max(final String col) {
context().setSql(sql.toString());
try {
return (T) mappingColumn
.getValue(this.entityHandler.doSelect(agent(), context(), this.entityType).findFirst().get());
.getValue(this.entityHandler.doSelect(agent(), context(), this.entityType)
.findFirst()
.orElseThrow());
} catch (SQLException ex) {
throw new EntitySqlRuntimeException(context().getSqlKind(), ex);
}
Expand Down
15 changes: 8 additions & 7 deletions src/main/java/jp/co/future/uroborosql/client/SqlREPL.java
Original file line number Diff line number Diff line change
Expand Up @@ -333,13 +333,14 @@ private boolean executeCommand(final LineReader reader) throws Exception {
}

var parts = SqlParamUtils.parseLine(line);
var command = commands.stream().filter(c -> c.is(parts[0])).findFirst();
if (command.isPresent()) {
return command.get().execute(reader, parts, sqlConfig, props);
} else {
showHelp(reader.getTerminal());
return true;
}
return commands.stream()
.filter(c -> c.is(parts[0]))
.findFirst()
.map(cmd -> cmd.execute(reader, parts, sqlConfig, props))
.orElseGet(() -> {
showHelp(reader.getTerminal());
return true;
});
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,7 @@
import jp.co.future.uroborosql.client.completer.SqlKeywordCompleter.SqlKeyword;
import jp.co.future.uroborosql.client.completer.TableNameCompleter;
import jp.co.future.uroborosql.config.SqlConfig;
import jp.co.future.uroborosql.context.ExecutionContext;
import jp.co.future.uroborosql.mapping.MetaTable;
import jp.co.future.uroborosql.mapping.Table;
import jp.co.future.uroborosql.mapping.TableMetadata;

/**
Expand Down Expand Up @@ -63,33 +61,22 @@ public boolean execute(final LineReader reader, final String[] parts, final SqlC
.getProperty("sql.optimisticLockSupplier",
"jp.co.future.uroborosql.mapping.LockVersionOptimisticLockSupplier");

Table table = new MetaTable(tableName, null, versionColumnName, optimisticLockSupplier);
var table = new MetaTable(tableName, null, versionColumnName, optimisticLockSupplier);
var metadata = TableMetadata.createTableEntityMetadata(agent, table);
metadata.setSchema(null);

ExecutionContext ctx = null;
if (sqlKeyword.isPresent()) {
var keyword = sqlKeyword.get();
var ctx = sqlKeyword.map(keyword -> {
switch (keyword) {
case INSERT:
ctx = sqlConfig.getEntityHandler().createInsertContext(agent, metadata, null);
break;

return sqlConfig.getEntityHandler().createInsertContext(agent, metadata, null);
case UPDATE:
ctx = sqlConfig.getEntityHandler().createUpdateContext(agent, metadata, null, true);
break;

return sqlConfig.getEntityHandler().createUpdateContext(agent, metadata, null, true);
case DELETE:
ctx = sqlConfig.getEntityHandler().createDeleteContext(agent, metadata, null, true);
break;

return sqlConfig.getEntityHandler().createDeleteContext(agent, metadata, null, true);
default:
ctx = sqlConfig.getEntityHandler().createSelectContext(agent, metadata, null, true);
break;
return sqlConfig.getEntityHandler().createSelectContext(agent, metadata, null, true);
}
} else {
ctx = sqlConfig.getEntityHandler().createSelectContext(agent, metadata, null, true);
}
}).orElseGet(() -> sqlConfig.getEntityHandler().createSelectContext(agent, metadata, null, true));
writer.println(ctx.getSql());
} catch (SQLException ex) {
REPL_LOG.error(ex.getMessage(), ex);
Expand Down
106 changes: 53 additions & 53 deletions src/main/java/jp/co/future/uroborosql/client/command/ParseCommand.java
Original file line number Diff line number Diff line change
Expand Up @@ -53,60 +53,60 @@ public boolean execute(final LineReader reader, final String[] parts, final SqlC
writer.println("PARSE:");

if (parts.length > 1) {
var path = sqlConfig.getSqlResourceManager().getSqlPathList().stream()
sqlConfig.getSqlResourceManager().getSqlPathList().stream()
.filter(p -> p.equalsIgnoreCase(parts[1]))
.findFirst();
if (path.isPresent()) {
var sql = sqlConfig.getSqlResourceManager().getSql(path.get());

// 対象SQLの出力
writer.println("");
writer.println("SQL :");
var sqlLines = sql.split("\\r\\n|\\r|\\n");
for (var sqlLine : sqlLines) {
writer.println(sqlLine);
}

// IF分岐の出力
writer.println("");
writer.println("BRANCHES :");
var parser = new SqlParserImpl(sql, sqlConfig.getExpressionParser(),
sqlConfig.getDialect().isRemoveTerminator(), true);
var transformer = parser.parse();
var rootNode = transformer.getRoot();
Set<String> bindParams = new LinkedHashSet<>();
traverseNode(writer, 0, sqlConfig.getExpressionParser(), rootNode, bindParams);

// 利用されているバインドパラメータの出力
writer.println("");
var constPrefix = sqlConfig.getExecutionContextProvider().getConstParamPrefix();
var ctx = sqlConfig.getExecutionContextProvider().createExecutionContext();
writer.println("BIND_PARAMS :");
// 定数以外のバインドパラメータ
bindParams.stream().filter(param -> !param.startsWith(constPrefix))
.sorted()
.forEach(param -> write(writer, 1, null, param, null));
// 定数バインドパラメータ
bindParams.stream().filter(param -> param.startsWith(constPrefix))
.sorted().forEach(param -> {
// 定数についてはバインド値が取得できるので、実際の値を追加で表示
var parameter = ctx.getParam(param);
if (parameter != null) {
var value = parameter.getValue();
String suffix = null;
if (value instanceof String) {
suffix = String.format(" ('%s')", value);
} else {
suffix = String.format(" (%s)", value);
}
write(writer, 1, null, param, suffix);
} else {
write(writer, 1, null, param, " (not found)");
}
});
} else {
writer.println("sqlName : " + parts[1] + " not found.");
}
.findFirst()
.ifPresentOrElse(path -> {
var sql = sqlConfig.getSqlResourceManager().getSql(path);

// 対象SQLの出力
writer.println("");
writer.println("SQL :");
var sqlLines = sql.split("\\r\\n|\\r|\\n");
for (var sqlLine : sqlLines) {
writer.println(sqlLine);
}

// IF分岐の出力
writer.println("");
writer.println("BRANCHES :");
var parser = new SqlParserImpl(sql, sqlConfig.getExpressionParser(),
sqlConfig.getDialect().isRemoveTerminator(), true);
var transformer = parser.parse();
var rootNode = transformer.getRoot();
Set<String> bindParams = new LinkedHashSet<>();
traverseNode(writer, 0, sqlConfig.getExpressionParser(), rootNode, bindParams);

// 利用されているバインドパラメータの出力
writer.println("");
var constPrefix = sqlConfig.getExecutionContextProvider().getConstParamPrefix();
var ctx = sqlConfig.getExecutionContextProvider().createExecutionContext();
writer.println("BIND_PARAMS :");
// 定数以外のバインドパラメータ
bindParams.stream().filter(param -> !param.startsWith(constPrefix))
.sorted()
.forEach(param -> write(writer, 1, null, param, null));
// 定数バインドパラメータ
bindParams.stream().filter(param -> param.startsWith(constPrefix))
.sorted().forEach(param -> {
// 定数についてはバインド値が取得できるので、実際の値を追加で表示
var parameter = ctx.getParam(param);
if (parameter != null) {
var value = parameter.getValue();
String suffix = null;
if (value instanceof String) {
suffix = String.format(" ('%s')", value);
} else {
suffix = String.format(" (%s)", value);
}
write(writer, 1, null, param, suffix);
} else {
write(writer, 1, null, param, " (not found)");
}
});
}, () -> {
writer.println("sqlName : " + parts[1] + " not found.");
});
} else {
writer.println("sqlName must be specified.");
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ public Class<Optional<?>> targetType() {
@Override
public Object toJdbc(final Optional<?> original, final Connection connection,
final BindParameterMapperManager parameterMapperManager) {
return original.isPresent() ? parameterMapperManager.toJdbc(original.get(), connection) : null;
return original.map(obj -> parameterMapperManager.toJdbc(obj, connection))
.orElse(null);
}
}
Loading

0 comments on commit e552db8

Please sign in to comment.