• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

future-architect / uroborosql / #743

28 Jun 2024 04:17PM UTC coverage: 90.988% (+0.5%) from 90.484%
#743

push

web-flow
add paramIfNotEmpty method (#318)

* v0.x to master merge

* fix nanoseconds diff (java8 to java11)

* eclipse cleanup and  optimize import

* eclipse format

* optimize Imports

* remove unused annotation

* library version up

* migrate v0.x to master
- update java version 8 to 11
- update junit4 to junit5
- library version update

* fix test failed

* remove unused annotation

* fixed bug

* use var

* fix java8 coding style

* Refactoring TransactionContextManager

* Refactoring SqlAgent

* 途中コミット

* fix testcase

* fix review

* fix javadoc comments

* merge v0.x PR

* cleanup code

* cleanup test code

* change build status badge

* - agent.query, update, proc, batch にそれぞれSupplierを引数にとるメソッドを追加
- SqlQuery.paramとSqlEntityUpdate.setにFunctionを受け取るメソッドを追加

* testcaseの整形

* - SqlFluent と ExtractionCondition の分離
- Arrays.asList -> List.of への変更
- テストの整形

* - v0.x系の不具合対応の追いつき
- ログ出力の整理

* - SqlKindの整理(ENTITY_XXXの追加)
- REPL_LOGの追加
- Deprecatedメソッドの削除(SqlAgent)
- SqlAgent, ExecutionContextでsetterをfluent APIに変更

* DB接続URLの修正

* add and fix testcases.

* add event testcases.

* fix typo

* add paramIfNotEmpty method and StringUtils rename ObjectUtils

* fix review comments.

* remove unused import

1695 of 1958 new or added lines in 97 files covered. (86.57%)

26 existing lines in 10 files now uncovered.

8249 of 9066 relevant lines covered (90.99%)

0.91 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

90.91
/src/main/java/jp/co/future/uroborosql/client/command/ReplCommand.java
1
/**
2
 * Copyright (c) 2017-present, Future Corporation
3
 *
4
 * This source code is licensed under the MIT license found in the
5
 * LICENSE file in the root directory of this source tree.
6
 */
7
package jp.co.future.uroborosql.client.command;
8

9
import java.io.BufferedReader;
10
import java.io.IOException;
11
import java.io.InputStreamReader;
12
import java.nio.charset.Charset;
13
import java.util.List;
14
import java.util.Properties;
15

16
import org.jline.reader.Completer;
17
import org.jline.reader.LineReader;
18
import org.jline.terminal.Terminal;
19

20
import jp.co.future.uroborosql.client.SqlREPL;
21
import jp.co.future.uroborosql.config.SqlConfig;
22

23
/**
24
 * REPLで実行するコマンドの抽象親クラス
25
 *
26
 * @author H.Sugimoto
27
 */
28
public abstract class ReplCommand {
29
        /** 利用する入力補完の並び */
30
        private final List<Class<? extends Completer>> completers;
31
        /** HELPコマンドで非表示 */
32
        private final boolean hidden;
33

34
        /**
35
         * 入力コマンド
36
         *
37
         * @param hidden HELPコマンドで表示しない場合に<code>true</code>
38
         * @param completers 補完器名
39
         */
40
        @SuppressWarnings("unchecked")
41
        protected ReplCommand(final boolean hidden, final Class<? extends Completer>... completers) {
1✔
42
                this.hidden = hidden;
1✔
43
                this.completers = List.of(completers);
1✔
44
        }
1✔
45

46
        /**
47
         * 指定されたコード補完の対象とする引数の開始位置を返却する
48
         *
49
         * @param completer 対象とするコード補完名
50
         * @return 引数の位置。該当するコード補完がない場合は<code>-1</code>を返す
51
         */
52
        public int getStartArgNo(final Class<? extends Completer> completer) {
53
                var idx = this.completers.indexOf(completer);
1✔
54
                return idx >= 0 ? idx + 1 : -1;
1✔
55
        }
56

57
        /**
58
         * 非表示コマンドかどうか
59
         * @return 非表示コマンドの場合<code>true</code>
60
         */
61
        public boolean isHidden() {
62
                return hidden;
1✔
63
        }
64

65
        /**
66
         * 指定された入力がコマンドにマッチするかどうかを判定する
67
         * @param input 入力文字列
68
         * @return コマンドにマッチする場合<code>true</code>
69
         */
70
        public boolean match(final String input) {
71
                return !isHidden() && toString().startsWith(input.toLowerCase());
1✔
72
        }
73

74
        /**
75
         * {@inheritDoc}
76
         *
77
         * @see java.lang.Enum#toString()
78
         */
79
        @Override
80
        public String toString() {
81
                return this.getClass().getSimpleName().replace("Command", "").toLowerCase();
1✔
82
        }
83

84
        /**
85
         * 引数で指定したコマンド名にこのコマンドが一致するかどうか
86
         * @param commandName コマンド名文字列
87
         * @return コマンドが一致する場合<code>true</code>
88
         */
89
        public boolean is(final String commandName) {
90
                return toString().equalsIgnoreCase(commandName);
1✔
91
        }
92

93
        /**
94
         * コマンドの実行
95
         *
96
         * @param reader LineReader
97
         * @param parts Command line parts
98
         * @param sqlConfig SqlConfig
99
         * @param props properties
100
         * @return REPLを継続する場合<code>true</code>
101
         */
102
        public abstract boolean execute(final LineReader reader, final String[] parts, final SqlConfig sqlConfig,
103
                        final Properties props);
104

105
        /**
106
         * コマンドのヘルプメッセージをターミナルに出力する
107
         *
108
         * @param terminal Terminal
109
         */
110
        public abstract void showHelp(Terminal terminal);
111

112
        /**
113
         * メッセージの表示
114
         *
115
         * @param terminal Terminal
116
         * @param path show file path
117
         */
118
        protected void showMessage(final Terminal terminal, final String path) {
119
                var messageFilePath = SqlREPL.class.getPackage().getName().replace(".", "/") + path;
1✔
120
                try (var reader = new BufferedReader(new InputStreamReader(Thread.currentThread()
1✔
121
                                .getContextClassLoader().getResourceAsStream(messageFilePath), Charset.forName("UTF-8")))) {
1✔
122
                        reader.lines().forEach(s -> {
1✔
123
                                try {
124
                                        terminal.writer().println(s);
1✔
125
                                } catch (Exception ex) {
×
126
                                        // ここで例外が出てもメッセージ表示が正しく出ないだけなので、エラーを握りつぶす
127
                                }
1✔
128
                        });
1✔
NEW
129
                } catch (IOException ex) {
×
130
                        // ここで例外が出てもメッセージ表示が正しく出ないだけなので、エラーを握りつぶす
131
                }
1✔
132
                terminal.flush();
1✔
133
        }
1✔
134

135
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc