Skip to content
项目
群组
代码片段
帮助
正在加载...
帮助
为 GitLab 提交贡献
登录/注册
切换导航
H
h2database
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分枝图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
计划
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
分枝图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
Administrator
h2database
Commits
5ea97cd3
提交
5ea97cd3
authored
6 年前
作者:
Evgenij Ryazanov
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add DateTimeUtils.validateInterval()
上级
ca01805e
显示空白字符变更
内嵌
并排
正在显示
3 个修改的文件
包含
66 行增加
和
14 行删除
+66
-14
Interval.java
h2/src/main/org/h2/api/Interval.java
+1
-9
DateTimeUtils.java
h2/src/main/org/h2/util/DateTimeUtils.java
+64
-0
ValueInterval.java
h2/src/main/org/h2/value/ValueInterval.java
+1
-5
没有找到文件。
h2/src/main/org/h2/api/Interval.java
浏览文件 @
5ea97cd3
...
@@ -106,16 +106,8 @@ public final class Interval {
...
@@ -106,16 +106,8 @@ public final class Interval {
* values of all remaining fields
* values of all remaining fields
*/
*/
public
Interval
(
IntervalQualifier
qualifier
,
boolean
negative
,
long
leading
,
long
remaining
)
{
public
Interval
(
IntervalQualifier
qualifier
,
boolean
negative
,
long
leading
,
long
remaining
)
{
if
(
qualifier
==
null
)
{
throw
new
NullPointerException
();
}
if
(
leading
==
0L
&&
remaining
==
0L
)
{
negative
=
false
;
}
else
if
(
leading
<
0L
||
remaining
<
0L
)
{
throw
new
RuntimeException
();
}
this
.
qualifier
=
qualifier
;
this
.
qualifier
=
qualifier
;
this
.
negative
=
negative
;
this
.
negative
=
DateTimeUtils
.
validateInterval
(
qualifier
,
negative
,
leading
,
remaining
)
;
this
.
leading
=
leading
;
this
.
leading
=
leading
;
this
.
remaining
=
remaining
;
this
.
remaining
=
remaining
;
}
}
...
...
This diff is collapsed.
Click to expand it.
h2/src/main/org/h2/util/DateTimeUtils.java
浏览文件 @
5ea97cd3
...
@@ -2054,6 +2054,70 @@ public class DateTimeUtils {
...
@@ -2054,6 +2054,70 @@ public class DateTimeUtils {
return
Math
.
abs
(
absolute
.
longValue
());
return
Math
.
abs
(
absolute
.
longValue
());
}
}
/**
* Ensures that all fields in interval are valid.
*
* @param qualifier
* qualifier
* @param negative
* whether interval is negative
* @param leading
* value of leading field
* @param remaining
* values of all remaining fields
* @return fixed value of negative field
*/
public
static
boolean
validateInterval
(
IntervalQualifier
qualifier
,
boolean
negative
,
long
leading
,
long
remaining
)
{
if
(
qualifier
==
null
)
{
throw
new
NullPointerException
();
}
if
(
leading
==
0L
&&
remaining
==
0L
)
{
return
false
;
}
// Upper bound for remaining value (exclusive)
long
bound
;
switch
(
qualifier
)
{
case
YEAR:
case
MONTH:
case
DAY:
case
HOUR:
case
MINUTE:
bound
=
1
;
break
;
case
SECOND:
bound
=
NANOS_PER_SECOND
;
break
;
case
YEAR_TO_MONTH:
bound
=
12
;
break
;
case
DAY_TO_HOUR:
bound
=
24
;
break
;
case
DAY_TO_MINUTE:
bound
=
24
*
60
;
break
;
case
DAY_TO_SECOND:
bound
=
NANOS_PER_DAY
;
break
;
case
HOUR_TO_MINUTE:
bound
=
60
;
break
;
case
HOUR_TO_SECOND:
bound
=
NANOS_PER_HOUR
;
break
;
case
MINUTE_TO_SECOND:
bound
=
NANOS_PER_MINUTE
;
break
;
default
:
throw
DbException
.
getInvalidValueException
(
"interval"
,
qualifier
);
}
if
(
leading
<
0L
||
leading
>=
1_000_000_000_000_000_000L
||
remaining
<
0L
||
remaining
>=
bound
)
{
throw
DbException
.
getInvalidValueException
(
"interval"
,
Long
.
toString
(
leading
));
}
return
negative
;
}
/**
/**
* @param qualifier
* @param qualifier
* qualifier
* qualifier
...
...
This diff is collapsed.
Click to expand it.
h2/src/main/org/h2/value/ValueInterval.java
浏览文件 @
5ea97cd3
...
@@ -58,11 +58,7 @@ public class ValueInterval extends Value {
...
@@ -58,11 +58,7 @@ public class ValueInterval extends Value {
* @return interval value
* @return interval value
*/
*/
public
static
ValueInterval
from
(
IntervalQualifier
qualifier
,
boolean
negative
,
long
leading
,
long
remaining
)
{
public
static
ValueInterval
from
(
IntervalQualifier
qualifier
,
boolean
negative
,
long
leading
,
long
remaining
)
{
if
(
leading
==
0L
&&
remaining
==
0L
)
{
negative
=
DateTimeUtils
.
validateInterval
(
qualifier
,
negative
,
leading
,
remaining
);
negative
=
false
;
}
else
if
(
leading
<
0L
||
remaining
<
0L
)
{
throw
new
RuntimeException
();
}
return
(
ValueInterval
)
Value
.
cache
(
return
(
ValueInterval
)
Value
.
cache
(
new
ValueInterval
(
qualifier
.
ordinal
()
+
INTERVAL_YEAR
,
negative
,
leading
,
remaining
));
new
ValueInterval
(
qualifier
.
ordinal
()
+
INTERVAL_YEAR
,
negative
,
leading
,
remaining
));
}
}
...
...
This diff is collapsed.
Click to expand it.
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论