Skip to content
项目
群组
代码片段
帮助
正在加载...
帮助
为 GitLab 提交贡献
登录/注册
切换导航
H
h2database
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分枝图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
计划
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
分枝图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
Administrator
h2database
Commits
61a0fcf6
提交
61a0fcf6
authored
7 年前
作者:
Evgenij Ryazanov
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add support for more strings to Utils.parseBoolean() and use it in more places
上级
657758aa
master
version-1.4.198
version-1.4.197
无相关合并请求
显示空白字符变更
内嵌
并排
正在显示
4 个修改的文件
包含
106 行增加
和
18 行删除
+106
-18
SimpleResultSet.java
h2/src/main/org/h2/tools/SimpleResultSet.java
+2
-1
Utils.java
h2/src/main/org/h2/util/Utils.java
+33
-4
Value.java
h2/src/main/org/h2/value/Value.java
+5
-13
TestUtils.java
h2/src/test/org/h2/test/unit/TestUtils.java
+66
-0
没有找到文件。
h2/src/main/org/h2/tools/SimpleResultSet.java
浏览文件 @
61a0fcf6
...
...
@@ -38,6 +38,7 @@ import org.h2.util.Bits;
import
org.h2.util.JdbcUtils
;
import
org.h2.util.MathUtils
;
import
org.h2.util.New
;
import
org.h2.util.Utils
;
import
org.h2.value.DataType
;
/**
...
...
@@ -498,7 +499,7 @@ public class SimpleResultSet implements ResultSet, ResultSetMetaData,
}
return
n
.
longValue
()
!=
0
;
}
return
Boolean
.
parseBoolean
(
o
.
toString
()
);
return
Utils
.
parseBoolean
(
o
.
toString
(),
false
,
true
);
}
/**
...
...
This diff is collapsed.
Click to expand it.
h2/src/main/org/h2/util/Utils.java
浏览文件 @
61a0fcf6
...
...
@@ -14,6 +14,7 @@ import java.lang.management.OperatingSystemMXBean;
import
java.lang.reflect.Constructor
;
import
java.lang.reflect.Method
;
import
java.lang.reflect.Modifier
;
import
java.math.BigDecimal
;
import
java.util.Arrays
;
import
java.util.Comparator
;
import
java.util.HashMap
;
...
...
@@ -659,12 +660,40 @@ public class Utils {
if
(
value
==
null
)
{
return
defaultValue
;
}
if
(
value
.
equalsIgnoreCase
(
"true"
)
||
value
.
equals
(
"1"
))
{
switch
(
value
.
length
())
{
case
1
:
if
(
value
.
equals
(
"1"
)
||
value
.
equalsIgnoreCase
(
"t"
)
||
value
.
equalsIgnoreCase
(
"y"
))
{
return
true
;
}
if
(
value
.
equalsIgnoreCase
(
"false"
)
||
value
.
equals
(
"0
"
))
{
if
(
value
.
equals
(
"0"
)
||
value
.
equalsIgnoreCase
(
"f"
)
||
value
.
equalsIgnoreCase
(
"n
"
))
{
return
false
;
}
break
;
case
2
:
if
(
value
.
equalsIgnoreCase
(
"no"
))
{
return
false
;
}
break
;
case
3
:
if
(
value
.
equalsIgnoreCase
(
"yes"
))
{
return
true
;
}
break
;
case
4
:
if
(
value
.
equalsIgnoreCase
(
"true"
))
{
return
true
;
}
break
;
case
5
:
if
(
value
.
equalsIgnoreCase
(
"false"
))
{
return
false
;
}
}
try
{
return
new
BigDecimal
(
value
).
signum
()
!=
0
;
}
catch
(
NumberFormatException
e
)
{
// Nothing to do
}
if
(
throwException
)
{
throw
new
IllegalArgumentException
(
value
);
}
...
...
This diff is collapsed.
Click to expand it.
h2/src/main/org/h2/value/Value.java
浏览文件 @
61a0fcf6
...
...
@@ -31,6 +31,7 @@ import org.h2.util.DateTimeUtils;
import
org.h2.util.JdbcUtils
;
import
org.h2.util.MathUtils
;
import
org.h2.util.StringUtils
;
import
org.h2.util.Utils
;
/**
* This is the base class for all value classes.
...
...
@@ -1011,19 +1012,10 @@ public abstract class Value {
case
NULL:
return
ValueNull
.
INSTANCE
;
case
BOOLEAN:
{
if
(
s
.
equalsIgnoreCase
(
"true"
)
||
s
.
equalsIgnoreCase
(
"t"
)
||
s
.
equalsIgnoreCase
(
"yes"
)
||
s
.
equalsIgnoreCase
(
"y"
))
{
return
ValueBoolean
.
get
(
true
);
}
else
if
(
s
.
equalsIgnoreCase
(
"false"
)
||
s
.
equalsIgnoreCase
(
"f"
)
||
s
.
equalsIgnoreCase
(
"no"
)
||
s
.
equalsIgnoreCase
(
"n"
))
{
return
ValueBoolean
.
get
(
false
);
}
else
{
// convert to a number, and if it is not 0 then it is true
return
ValueBoolean
.
get
(
new
BigDecimal
(
s
).
signum
()
!=
0
);
try
{
return
ValueBoolean
.
get
(
Utils
.
parseBoolean
(
s
,
false
,
true
));
}
catch
(
IllegalArgumentException
e
)
{
throw
DbException
.
get
(
ErrorCode
.
DATA_CONVERSION_ERROR_1
,
s
);
}
}
case
BYTE:
...
...
This diff is collapsed.
Click to expand it.
h2/src/test/org/h2/test/unit/TestUtils.java
浏览文件 @
61a0fcf6
...
...
@@ -52,6 +52,7 @@ public class TestUtils extends TestBase {
testGetNonPrimitiveClass
();
testGetNonPrimitiveClass
();
testReflectionUtils
();
testParseBoolean
();
}
private
void
testIOUtils
()
throws
IOException
{
...
...
@@ -221,4 +222,69 @@ public class TestUtils extends TestBase {
ArrayList
.
class
));
}
private
void
testParseBooleanCheckFalse
(
String
value
)
{
assertFalse
(
Utils
.
parseBoolean
(
value
,
false
,
false
));
assertFalse
(
Utils
.
parseBoolean
(
value
,
false
,
true
));
assertFalse
(
Utils
.
parseBoolean
(
value
,
true
,
false
));
assertFalse
(
Utils
.
parseBoolean
(
value
,
true
,
true
));
}
private
void
testParseBooleanCheckTrue
(
String
value
)
{
assertTrue
(
Utils
.
parseBoolean
(
value
,
false
,
false
));
assertTrue
(
Utils
.
parseBoolean
(
value
,
false
,
true
));
assertTrue
(
Utils
.
parseBoolean
(
value
,
true
,
false
));
assertTrue
(
Utils
.
parseBoolean
(
value
,
true
,
true
));
}
private
void
testParseBoolean
()
{
// Test for default value in case of null
assertFalse
(
Utils
.
parseBoolean
(
null
,
false
,
false
));
assertFalse
(
Utils
.
parseBoolean
(
null
,
false
,
true
));
assertTrue
(
Utils
.
parseBoolean
(
null
,
true
,
false
));
assertTrue
(
Utils
.
parseBoolean
(
null
,
true
,
true
));
// Test assorted valid strings
testParseBooleanCheckFalse
(
"0"
);
testParseBooleanCheckFalse
(
"f"
);
testParseBooleanCheckFalse
(
"F"
);
testParseBooleanCheckFalse
(
"n"
);
testParseBooleanCheckFalse
(
"N"
);
testParseBooleanCheckFalse
(
"no"
);
testParseBooleanCheckFalse
(
"No"
);
testParseBooleanCheckFalse
(
"NO"
);
testParseBooleanCheckFalse
(
"false"
);
testParseBooleanCheckFalse
(
"False"
);
testParseBooleanCheckFalse
(
"FALSE"
);
testParseBooleanCheckTrue
(
"1"
);
testParseBooleanCheckTrue
(
"t"
);
testParseBooleanCheckTrue
(
"T"
);
testParseBooleanCheckTrue
(
"y"
);
testParseBooleanCheckTrue
(
"Y"
);
testParseBooleanCheckTrue
(
"yes"
);
testParseBooleanCheckTrue
(
"Yes"
);
testParseBooleanCheckTrue
(
"YES"
);
testParseBooleanCheckTrue
(
"true"
);
testParseBooleanCheckTrue
(
"True"
);
testParseBooleanCheckTrue
(
"TRUE"
);
// Test numbers
testParseBooleanCheckFalse
(
"0.0"
);
testParseBooleanCheckFalse
(
"-0.0"
);
testParseBooleanCheckTrue
(
"0.1"
);
testParseBooleanCheckTrue
(
"-0.1"
);
// Test other values
assertFalse
(
Utils
.
parseBoolean
(
"BAD"
,
false
,
false
));
assertTrue
(
Utils
.
parseBoolean
(
"BAD"
,
true
,
false
));
try
{
Utils
.
parseBoolean
(
"BAD"
,
false
,
true
);
fail
();
}
catch
(
IllegalArgumentException
e
)
{
// OK
}
try
{
Utils
.
parseBoolean
(
"BAD"
,
true
,
true
);
fail
();
}
catch
(
IllegalArgumentException
e
)
{
// OK
}
}
}
This diff is collapsed.
Click to expand it.
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论