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

future-architect / uroborosql / #786

25 Sep 2024 03:41PM UTC coverage: 90.073% (-0.5%) from 90.525%
#786

push

web-flow
revise log level. (#337)

25 of 36 new or added lines in 6 files covered. (69.44%)

36 existing lines in 8 files now uncovered.

8683 of 9640 relevant lines covered (90.07%)

0.9 hits per line

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

75.0
/src/main/java/jp/co/future/uroborosql/node/IfNode.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.node;
8

9
import jp.co.future.uroborosql.coverage.PassedRoute;
10
import jp.co.future.uroborosql.exception.IllegalBoolExpressionRuntimeException;
11
import jp.co.future.uroborosql.expr.ExpressionParser;
12
import jp.co.future.uroborosql.parser.TransformContext;
13

14
/**
15
 * IF句を表すノード
16
 *
17
 * @author H.Sugimoto
18
 */
19
public class IfNode extends BranchNode {
20
        private final ExpressionParser expressionParser;
21
        /** 評価式 */
22
        private final String expression;
23

24
        /** ELSE句 */
25
        private ElseNode elseNode;
26

27
        /** ELSEIF句 */
28
        private IfNode elseIfNode;
29

30
        /**
31
         * コンストラクタ
32
         *
33
         * @param expressionParser ExpressionParser
34
         * @param position 開始位置
35
         * @param expression 評価式
36
         */
37
        public IfNode(final ExpressionParser expressionParser, final int position, final String expression) {
38
                super(position, expression.length() + 6);
1✔
39
                this.expressionParser = expressionParser;
1✔
40
                this.expression = expression.trim();
1✔
41
        }
1✔
42

43
        /**
44
         * 評価式の取得
45
         *
46
         * @return 評価式
47
         */
48
        public String getExpression() {
49
                return expression;
1✔
50
        }
51

52
        /**
53
         * ELSE句の取得
54
         *
55
         * @return ELSE句
56
         */
57
        public ElseNode getElseNode() {
58
                return elseNode;
1✔
59
        }
60

61
        /**
62
         * ELSE句の設定
63
         *
64
         * @param elseNode ELSE句
65
         */
66
        public void setElseNode(final ElseNode elseNode) {
67
                this.elseNode = elseNode;
1✔
68
        }
1✔
69

70
        /**
71
         * ELSEIF句の取得
72
         *
73
         * @return ELSEIF句
74
         */
75
        public IfNode getElseIfNode() {
76
                return elseIfNode;
1✔
77
        }
78

79
        /**
80
         * ELSEIF句の設定
81
         *
82
         * @param elseIfNode ELSEIF句
83
         */
84
        public void setElseIfNode(final IfNode elseIfNode) {
85
                this.elseIfNode = elseIfNode;
1✔
86
        }
1✔
87

88
        @Override
89
        public void accept(final TransformContext transformContext) {
90
                var expr = expressionParser.parse(expression);
1✔
91
                var result = expr.getValue(transformContext);
1✔
92

93
                if (result instanceof Boolean) {
1✔
94
                        var resultValue = (Boolean) result;
1✔
95
                        if (PARSER_LOG.isDebugEnabled()) {
1✔
UNCOV
96
                                if (Boolean.TRUE.toString().equalsIgnoreCase(expression)
×
UNCOV
97
                                                || Boolean.FALSE.toString().equalsIgnoreCase(expression)) {
×
98
                                        // 単純なBoolean評価の場合はログを出力しない
99
                                } else {
NEW
100
                                        debugWith(PARSER_LOG)
×
UNCOV
101
                                                        .setMessage("Evaluation Expression:[{}], Result:[{}], Parameter:[{}]")
×
UNCOV
102
                                                        .addArgument(expression)
×
UNCOV
103
                                                        .addArgument(resultValue)
×
UNCOV
104
                                                        .addArgument(() -> {
×
UNCOV
105
                                                                var builder = expr.dumpNode(transformContext);
×
UNCOV
106
                                                                return builder.length() == 0 ? "" : builder.substring(0, builder.length() - 1);
×
107
                                                        })
UNCOV
108
                                                        .log();
×
109
                                }
110
                        }
111
                        passState(resultValue);
1✔
112
                        if (resultValue) {
1✔
113
                                transformContext.setEnabled(true);
1✔
114
                                super.accept(transformContext);
1✔
115
                        } else if (elseIfNode != null) {
1✔
116
                                elseIfNode.accept(transformContext);
1✔
117
                        } else if (elseNode != null) {
1✔
118
                                elseNode.accept(transformContext);
1✔
119
                        }
120
                } else {
1✔
121
                        throw new IllegalBoolExpressionRuntimeException(expression);
×
122
                }
123
        }
1✔
124

125
        /**
126
         * {@inheritDoc}
127
         *
128
         * @see jp.co.future.uroborosql.node.ContainerNode#passed(PassedRoute)
129
         */
130
        @Override
131
        public void passed(final PassedRoute passed) {
132
                passed.appendBranchState(getPosition(), getPosition() + getLength() - 1, getState());
1✔
133
                super.passed(passed);
1✔
134
                if (elseIfNode != null) {
1✔
135
                        elseIfNode.passed(passed);
1✔
136
                }
137
                if (elseNode != null) {
1✔
138
                        elseNode.passed(passed);
1✔
139
                }
140
        }
1✔
141
}
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