Skip to content
项目
群组
代码片段
帮助
正在加载...
帮助
为 GitLab 提交贡献
登录/注册
切换导航
H
h2database
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分枝图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
计划
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
分枝图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
Administrator
h2database
Commits
e8d00a2c
提交
e8d00a2c
authored
8 年前
作者:
Max Englander
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
enum-support: use toUpperCase(ENGLISH) instead of toLowerCase()
上级
2c903f83
显示空白字符变更
内嵌
并排
正在显示
5 个修改的文件
包含
61 行增加
和
94 行删除
+61
-94
Parser.java
h2/src/main/org/h2/command/Parser.java
+5
-7
Column.java
h2/src/main/org/h2/table/Column.java
+1
-1
DataType.java
h2/src/main/org/h2/value/DataType.java
+1
-1
ValueEnum.java
h2/src/main/org/h2/value/ValueEnum.java
+52
-83
ValueEnumBase.java
h2/src/main/org/h2/value/ValueEnumBase.java
+2
-2
没有找到文件。
h2/src/main/org/h2/command/Parser.java
浏览文件 @
e8d00a2c
...
...
@@ -4128,7 +4128,6 @@ public class Parser {
}
long
precision
=
-
1
;
int
displaySize
=
-
1
;
java
.
util
.
List
<
String
>
enumeratorList
=
null
;
String
[]
enumerators
=
null
;
int
scale
=
-
1
;
String
comment
=
null
;
...
...
@@ -4205,22 +4204,21 @@ public class Parser {
}
}
else
if
(
dataType
.
enumerated
)
{
if
(
readIf
(
"("
))
{
enumeratorList
=
new
ArrayList
<
String
>();
java
.
util
.
List
<
String
>
enumeratorList
=
new
ArrayList
<
String
>();
original
+=
'('
;
String
enumerator0
=
readString
();
enumeratorList
.
add
(
enumerator0
.
toLowerCase
().
trim
()
);
enumeratorList
.
add
(
enumerator0
);
original
+=
"'"
+
enumerator0
+
"'"
;
while
(
readIf
(
","
))
{
original
+=
','
;
String
enumeratorN
=
readString
();
original
+=
"'"
+
enumeratorN
+
"'"
;
enumeratorList
.
add
(
enumeratorN
.
toLowerCase
().
trim
()
);
enumeratorList
.
add
(
enumeratorN
);
}
read
(
")"
);
original
+=
')'
;
enumerators
=
enumeratorList
.
toArray
(
new
String
[
enumeratorList
.
size
()]);
}
enumerators
=
enumeratorList
.
toArray
(
new
String
[
enumeratorList
.
size
()]);
try
{
ValueEnum
.
check
(
enumerators
);
}
catch
(
DbException
e
)
{
...
...
@@ -4249,7 +4247,7 @@ public class Parser {
Column
column
=
new
Column
(
columnName
,
type
,
precision
,
scale
,
displaySize
,
enumerators
==
null
?
null
:
enumerators
);
displaySize
,
enumerators
);
if
(
templateColumn
!=
null
)
{
column
.
setNullable
(
templateColumn
.
isNullable
());
column
.
setDefaultExpression
(
session
,
...
...
This diff is collapsed.
Click to expand it.
h2/src/main/org/h2/table/Column.java
浏览文件 @
e8d00a2c
...
...
@@ -147,7 +147,7 @@ public class Column {
}
public
boolean
isEnumerated
()
{
return
enumerators
!=
null
&&
enumerators
.
length
>
0
;
return
type
==
Value
.
ENUM
;
}
public
Column
getClone
()
{
...
...
This diff is collapsed.
Click to expand it.
h2/src/main/org/h2/value/DataType.java
浏览文件 @
e8d00a2c
...
...
@@ -141,7 +141,7 @@ public class DataType {
public
boolean
caseSensitive
;
/**
* If
permitted values are supports
.
* If
enumerated values are supported
.
*/
public
boolean
enumerated
;
...
...
This diff is collapsed.
Click to expand it.
h2/src/main/org/h2/value/ValueEnum.java
浏览文件 @
e8d00a2c
package
org
.
h2
.
value
;
import
java.util.Locale
;
import
org.h2.api.ErrorCode
;
import
org.h2.message.DbException
;
import
org.h2.util.MathUtils
;
...
...
@@ -35,30 +37,6 @@ public class ValueEnum extends ValueEnumBase {
}
}
private
static
final
void
check
(
final
String
[]
enumerators
,
final
String
label
)
{
check
(
enumerators
);
switch
(
validate
(
enumerators
,
label
))
{
case
VALID:
return
;
default
:
throw
DbException
.
get
(
ErrorCode
.
ENUM_VALUE_NOT_PERMITTED_2
,
toString
(
enumerators
),
"'"
+
label
+
"'"
);
}
}
private
static
final
void
check
(
final
String
[]
enumerators
,
final
int
ordinal
)
{
check
(
enumerators
);
switch
(
validate
(
enumerators
,
ordinal
))
{
case
VALID:
return
;
default
:
throw
DbException
.
get
(
ErrorCode
.
ENUM_VALUE_NOT_PERMITTED_2
,
toString
(
enumerators
),
Integer
.
toString
(
ordinal
));
}
}
private
static
final
void
check
(
final
String
[]
enumerators
,
final
Value
value
)
{
check
(
enumerators
);
...
...
@@ -77,29 +55,20 @@ public class ValueEnum extends ValueEnumBase {
return
MathUtils
.
compareInt
(
ordinal
(),
ev
.
ordinal
());
}
public
static
ValueEnum
get
(
final
String
[]
enumerators
,
final
String
label
)
{
check
(
enumerators
,
label
);
public
static
ValueEnum
get
(
final
String
[]
enumerators
,
final
Value
value
)
{
check
(
enumerators
,
value
);
if
(
DataType
.
isStringType
(
value
.
getType
()))
{
final
String
cleanLabel
=
sanitize
(
value
.
getString
());
for
(
int
i
=
0
;
i
<
enumerators
.
length
;
i
++)
{
if
(
label
.
equals
(
enumerators
[
i
]
))
if
(
cleanLabel
.
equals
(
sanitize
(
enumerators
[
i
])
))
return
new
ValueEnum
(
enumerators
,
i
);
}
throw
DbException
.
get
(
ErrorCode
.
GENERAL_ERROR_1
,
"Unexpected error"
);
}
public
static
ValueEnum
get
(
final
String
[]
enumerators
,
final
int
ordinal
)
{
check
(
enumerators
,
ordinal
);
return
new
ValueEnum
(
enumerators
,
ordinal
);
}
public
static
ValueEnum
get
(
final
String
[]
enumerators
,
final
Value
value
)
{
check
(
enumerators
,
value
);
if
(
DataType
.
isStringType
(
value
.
getType
()))
{
return
get
(
enumerators
,
value
.
getString
());
}
else
{
return
get
(
enumerators
,
value
.
getInt
());
return
new
ValueEnum
(
enumerators
,
value
.
getInt
());
}
}
...
...
@@ -107,21 +76,24 @@ public class ValueEnum extends ValueEnumBase {
return
enumerators
;
}
@Override
public
int
hashCode
()
{
return
enumerators
.
hashCode
()
+
ordinal
();
public
static
boolean
isValid
(
final
String
enumerators
[],
final
Value
value
)
{
return
validate
(
enumerators
,
value
).
equals
(
Validation
.
VALID
);
}
p
ublic
static
boolean
isValid
(
final
String
enumerators
[],
final
String
label
)
{
return
validate
(
enumerators
,
label
).
equals
(
Validation
.
VALID
);
p
rivate
static
String
sanitize
(
final
String
label
)
{
return
label
==
null
?
null
:
label
.
trim
().
toUpperCase
(
Locale
.
ENGLISH
);
}
public
static
boolean
isValid
(
final
String
enumerators
[],
final
int
ordinal
)
{
return
validate
(
enumerators
,
ordinal
).
equals
(
Validation
.
VALID
);
public
static
String
[]
sanitize
(
final
String
[]
enumerators
)
{
if
(
enumerators
==
null
||
enumerators
.
length
==
0
)
return
null
;
final
String
[]
clean
=
new
String
[
enumerators
.
length
];
for
(
int
i
=
0
;
i
<
enumerators
.
length
;
i
++)
{
clean
[
i
]
=
sanitize
(
enumerators
[
i
]);
}
public
static
boolean
isValid
(
final
String
enumerators
[],
final
Value
value
)
{
return
validate
(
enumerators
,
value
).
equals
(
Validation
.
VALID
);
return
clean
;
}
private
static
String
toString
(
final
String
[]
enumerators
)
{
...
...
@@ -136,33 +108,21 @@ public class ValueEnum extends ValueEnumBase {
return
result
;
}
private
static
Validation
validate
(
final
String
[]
enumerators
,
final
String
label
)
{
check
(
enumerators
);
final
String
cleanLabel
=
label
.
trim
().
toLowerCase
();
for
(
int
i
=
0
;
i
<
enumerators
.
length
;
i
++)
{
if
(
cleanLabel
.
equals
(
enumerators
[
i
]))
{
return
Validation
.
VALID
;
}
}
return
Validation
.
INVALID
;
}
private
static
Validation
validate
(
final
String
[]
enumerators
)
{
if
(
enumerators
==
null
||
enumerators
.
length
==
0
)
{
final
String
[]
cleaned
=
sanitize
(
enumerators
);
if
(
cleaned
==
null
||
cleaned
.
length
==
0
)
{
return
Validation
.
EMPTY
;
}
for
(
int
i
=
0
;
i
<
enumerators
.
length
;
i
++)
{
if
(
enumerators
[
i
]
==
null
||
enumerators
[
i
].
trim
()
.
equals
(
""
))
{
for
(
int
i
=
0
;
i
<
cleaned
.
length
;
i
++)
{
if
(
cleaned
[
i
]
==
null
||
cleaned
[
i
]
.
equals
(
""
))
{
return
Validation
.
EMPTY
;
}
if
(
i
<
enumerators
.
length
-
1
)
{
for
(
int
j
=
i
+
1
;
j
<
enumerators
.
length
;
j
++)
{
if
(
enumerators
[
i
].
equals
(
enumerators
[
j
]))
{
if
(
i
<
cleaned
.
length
-
1
)
{
for
(
int
j
=
i
+
1
;
j
<
cleaned
.
length
;
j
++)
{
if
(
cleaned
[
i
].
equals
(
cleaned
[
j
]))
{
return
Validation
.
DUPLICATE
;
}
}
...
...
@@ -172,21 +132,30 @@ public class ValueEnum extends ValueEnumBase {
return
Validation
.
VALID
;
}
private
static
Validation
validate
(
final
String
[]
enumerators
,
final
int
ordinal
)
{
check
(
enumerators
);
if
(
ordinal
<
0
||
ordinal
>=
enumerators
.
length
)
{
return
Validation
.
INVALID
;
private
static
Validation
validate
(
final
String
[]
enumerators
,
final
Value
value
)
{
final
Validation
validation
=
validate
(
enumerators
);
if
(!
validation
.
equals
(
Validation
.
VALID
))
{
return
validation
;
}
if
(
DataType
.
isStringType
(
value
.
getType
()))
{
final
String
cleanLabel
=
sanitize
(
value
.
getString
());
for
(
int
i
=
0
;
i
<
enumerators
.
length
;
i
++)
{
if
(
cleanLabel
.
equals
(
sanitize
(
enumerators
[
i
])))
{
return
Validation
.
VALID
;
}
}
private
static
Validation
validate
(
final
String
[]
enumerators
,
final
Value
value
)
{
if
(
DataType
.
isStringType
(
value
.
getType
()))
{
return
validate
(
enumerators
,
value
.
getString
());
return
Validation
.
INVALID
;
}
else
{
return
validate
(
enumerators
,
value
.
getInt
());
final
int
ordinal
=
value
.
getInt
();
if
(
ordinal
<
0
||
ordinal
>=
enumerators
.
length
)
{
return
Validation
.
INVALID
;
}
return
Validation
.
VALID
;
}
}
}
This diff is collapsed.
Click to expand it.
h2/src/main/org/h2/value/ValueEnumBase.java
浏览文件 @
e8d00a2c
...
...
@@ -2,6 +2,7 @@ package org.h2.value;
import
java.sql.PreparedStatement
;
import
java.sql.SQLException
;
import
java.util.Locale
;
import
org.h2.message.DbException
;
import
org.h2.util.MathUtils
;
...
...
@@ -38,8 +39,7 @@ public class ValueEnumBase extends Value {
@Override
public
boolean
equals
(
final
Object
other
)
{
return
other
instanceof
ValueEnumBase
&&
ordinal
()
==
((
ValueEnumBase
)
other
).
ordinal
()
&&
getString
()
==
((
ValueEnumBase
)
other
).
getString
();
ordinal
()
==
((
ValueEnumBase
)
other
).
ordinal
();
}
public
static
ValueEnumBase
get
(
final
String
label
,
final
int
ordinal
)
{
...
...
This diff is collapsed.
Click to expand it.
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论