Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
G
guns-vip
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
chenjunxiong
guns-vip
Commits
a1c700f4
Commit
a1c700f4
authored
Mar 30, 2017
by
fsn
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
完成异常落库
parent
980d11c8
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
436 additions
and
438 deletions
+436
-438
src/main/java/com/stylefeng/guns/core/aop/GlobalExceptionHandler.java
+11
-0
src/main/java/com/stylefeng/guns/core/log/LogFactory.java
+5
-1
src/main/java/com/stylefeng/guns/core/util/ToolUtil.java
+420
-437
No files found.
src/main/java/com/stylefeng/guns/core/aop/GlobalExceptionHandler.java
View file @
a1c700f4
...
...
@@ -3,11 +3,15 @@ package com.stylefeng.guns.core.aop;
import
com.stylefeng.guns.common.constant.tips.ErrorTip
;
import
com.stylefeng.guns.common.exception.BizExceptionEnum
;
import
com.stylefeng.guns.common.exception.BussinessException
;
import
com.stylefeng.guns.core.log.ILog
;
import
com.stylefeng.guns.core.support.HttpKit
;
import
com.stylefeng.guns.core.util.SpringContextHolder
;
import
com.stylefeng.guns.core.util.ToolUtil
;
import
org.apache.log4j.Logger
;
import
org.apache.shiro.authc.AuthenticationException
;
import
org.apache.shiro.authc.CredentialsException
;
import
org.apache.shiro.authc.DisabledAccountException
;
import
org.springframework.context.annotation.DependsOn
;
import
org.springframework.http.HttpStatus
;
import
org.springframework.ui.Model
;
import
org.springframework.web.bind.annotation.ControllerAdvice
;
...
...
@@ -24,10 +28,14 @@ import javax.naming.NoPermissionException;
* @date 2016年11月12日 下午3:19:56
*/
@ControllerAdvice
@DependsOn
(
"springContextHolder"
)
public
class
GlobalExceptionHandler
{
private
Logger
log
=
Logger
.
getLogger
(
this
.
getClass
());
private
ILog
logFactory
=
SpringContextHolder
.
getBean
(
ILog
.
class
);
/**
* 拦截业务异常
*
...
...
@@ -37,6 +45,7 @@ public class GlobalExceptionHandler {
@ResponseStatus
(
HttpStatus
.
INTERNAL_SERVER_ERROR
)
@ResponseBody
public
ErrorTip
notFount
(
BussinessException
e
)
{
logFactory
.
doLog
(
"业务异常"
,
e
.
toString
(),
false
);
HttpKit
.
getRequest
().
setAttribute
(
"tip"
,
e
.
getMessage
());
return
new
ErrorTip
(
e
.
getCode
(),
e
.
getMessage
());
}
...
...
@@ -50,6 +59,8 @@ public class GlobalExceptionHandler {
@ResponseStatus
(
HttpStatus
.
INTERNAL_SERVER_ERROR
)
@ResponseBody
public
ErrorTip
notFount
(
RuntimeException
e
)
{
String
msg
=
ToolUtil
.
getExceptionMsg
(
e
);
logFactory
.
doLog
(
"Runtime异常"
,
msg
,
false
);
log
.
error
(
"服务器异常:"
,
e
);
HttpKit
.
getRequest
().
setAttribute
(
"tip"
,
"服务器未知运行时异常"
);
return
new
ErrorTip
(
BizExceptionEnum
.
SERVER_ERROR
);
...
...
src/main/java/com/stylefeng/guns/core/log/LogFactory.java
View file @
a1c700f4
...
...
@@ -30,6 +30,10 @@ public class LogFactory implements ILog {
log
.
setSucceed
((
succeed
)
?
"1"
:
"0"
);
log
.
setUserid
(
String
.
valueOf
(
user
.
getId
()));
log
.
setLogname
(
logName
);
operationLogMapper
.
insert
(
log
);
try
{
operationLogMapper
.
insert
(
log
);
}
catch
(
Exception
e
){
//e.printStackTrace();
}
}
}
src/main/java/com/stylefeng/guns/core/util/ToolUtil.java
View file @
a1c700f4
/**
* Copyright (c) 2015-2016, Chill Zhuang 庄骞 (smallchill@163.com).
*
*
<p>
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*
http://www.apache.org/licenses/LICENSE-2.0
*
*
<p>
* http://www.apache.org/licenses/LICENSE-2.0
*
<p>
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
...
...
@@ -15,402 +15,384 @@
*/
package
com
.
stylefeng
.
guns
.
core
.
util
;
import
com.stylefeng.guns.core.support.StrKit
;
import
java.io.IOException
;
import
java.io.PrintWriter
;
import
java.io.StringWriter
;
import
java.lang.reflect.Array
;
import
java.util.Arrays
;
import
java.util.Calendar
;
import
java.util.Collection
;
import
java.util.Collections
;
import
java.util.Enumeration
;
import
java.util.HashMap
;
import
java.util.Iterator
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Random
;
import
java.util.*
;
import
java.util.Map.Entry
;
import
java.util.Set
;
import
com.stylefeng.guns.core.support.StrKit
;
/**
* 高频方法集合类
*/
public
class
ToolUtil
{
/**
* 获取随机车牌号码
* @date 2017年2月24日 下午10:12:52
*/
public
static
String
randomPlateNumber
(){
// String province = "冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼渝京津沪";
String
province
=
"京"
;
String
letters
=
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
;
String
nums
=
"0123456789"
;
Random
random
=
new
Random
();
StringBuffer
sb
=
new
StringBuffer
();
sb
.
append
(
province
.
charAt
(
random
.
nextInt
(
province
.
length
())));
sb
.
append
(
letters
.
charAt
(
random
.
nextInt
(
letters
.
length
())));
for
(
int
i
=
0
;
i
<
5
;
i
++){
sb
.
append
(
nums
.
charAt
(
random
.
nextInt
(
nums
.
length
())));
}
return
sb
.
toString
();
}
/**
* @Description 主键id
* @author fengshuonan
*/
public
static
String
getUid
(){
return
getRandomNum
();
}
/**
* @Description 随机数字
* @author fengshuonan
*/
public
static
String
getRandomNum
(){
return
Calendar
.
getInstance
().
getTimeInMillis
()
+
generateCellPhoneValNum
();
}
/**
* @Description 获取电话号码
* @author fengshuonan
*/
public
static
String
generateCellPhoneValNum
()
{
String
[]
beforeShuffle
=
new
String
[]
{
"1"
,
"2"
,
"3"
,
"4"
,
"5"
,
"6"
,
"7"
,
"8"
,
"9"
,
"0"
};
List
<
String
>
list
=
Arrays
.
asList
(
beforeShuffle
);
Collections
.
shuffle
(
list
);
StringBuilder
buffer
=
new
StringBuilder
();
for
(
int
i
=
0
;
i
<
list
.
size
();
i
++)
{
buffer
.
append
(
list
.
get
(
i
));
}
String
afterShuffle
=
buffer
.
toString
();
String
result
=
afterShuffle
.
substring
(
3
,
9
);
return
result
;
}
/**
* 比较两个对象是否相等。<br>
* 相同的条件有两个,满足其一即可:<br>
* 1. obj1 == null && obj2 == null; 2. obj1.equals(obj2)
*
* @param obj1
* 对象1
* @param obj2
* 对象2
* @return 是否相等
*/
public
static
boolean
equals
(
Object
obj1
,
Object
obj2
)
{
return
(
obj1
!=
null
)
?
(
obj1
.
equals
(
obj2
))
:
(
obj2
==
null
);
}
/**
* 计算对象长度,如果是字符串调用其length函数,集合类调用其size函数,数组调用其length属性,其他可遍历对象遍历计算长度
*
* @param obj
* 被计算长度的对象
* @return 长度
*/
public
static
int
length
(
Object
obj
)
{
if
(
obj
==
null
)
{
return
0
;
}
if
(
obj
instanceof
CharSequence
)
{
return
((
CharSequence
)
obj
).
length
();
}
if
(
obj
instanceof
Collection
)
{
return
((
Collection
<?>)
obj
).
size
();
}
if
(
obj
instanceof
Map
)
{
return
((
Map
<?,
?>)
obj
).
size
();
}
int
count
;
if
(
obj
instanceof
Iterator
)
{
Iterator
<?>
iter
=
(
Iterator
<?>)
obj
;
count
=
0
;
while
(
iter
.
hasNext
())
{
count
++;
iter
.
next
();
}
return
count
;
}
if
(
obj
instanceof
Enumeration
)
{
Enumeration
<?>
enumeration
=
(
Enumeration
<?>)
obj
;
count
=
0
;
while
(
enumeration
.
hasMoreElements
())
{
count
++;
enumeration
.
nextElement
();
}
return
count
;
}
if
(
obj
.
getClass
().
isArray
()
==
true
)
{
return
Array
.
getLength
(
obj
);
}
return
-
1
;
}
/**
* 对象中是否包含元素
*
* @param obj
* 对象
* @param element
* 元素
* @return 是否包含
*/
public
static
boolean
contains
(
Object
obj
,
Object
element
)
{
if
(
obj
==
null
)
{
return
false
;
}
if
(
obj
instanceof
String
)
{
if
(
element
==
null
)
{
return
false
;
}
return
((
String
)
obj
).
contains
(
element
.
toString
());
}
if
(
obj
instanceof
Collection
)
{
return
((
Collection
<?>)
obj
).
contains
(
element
);
}
if
(
obj
instanceof
Map
)
{
return
((
Map
<?,
?>)
obj
).
values
().
contains
(
element
);
}
if
(
obj
instanceof
Iterator
)
{
Iterator
<?>
iter
=
(
Iterator
<?>)
obj
;
while
(
iter
.
hasNext
())
{
Object
o
=
iter
.
next
();
if
(
equals
(
o
,
element
))
{
return
true
;
}
}
return
false
;
}
if
(
obj
instanceof
Enumeration
)
{
Enumeration
<?>
enumeration
=
(
Enumeration
<?>)
obj
;
while
(
enumeration
.
hasMoreElements
())
{
Object
o
=
enumeration
.
nextElement
();
if
(
equals
(
o
,
element
))
{
return
true
;
}
}
return
false
;
}
if
(
obj
.
getClass
().
isArray
()
==
true
)
{
int
len
=
Array
.
getLength
(
obj
);
for
(
int
i
=
0
;
i
<
len
;
i
++)
{
Object
o
=
Array
.
get
(
obj
,
i
);
if
(
equals
(
o
,
element
))
{
return
true
;
}
}
}
return
false
;
}
/**
* 对象是否不为空(新增)
*
* @param obj
* String,List,Map,Object[],int[],long[]
* @return
*/
public
static
boolean
isNotEmpty
(
Object
o
)
{
return
!
isEmpty
(
o
);
}
/**
* 对象是否为空
*
* @param obj
* String,List,Map,Object[],int[],long[]
* @return
*/
@SuppressWarnings
(
"rawtypes"
)
public
static
boolean
isEmpty
(
Object
o
)
{
if
(
o
==
null
)
{
return
true
;
}
if
(
o
instanceof
String
)
{
if
(
o
.
toString
().
trim
().
equals
(
""
))
{
return
true
;
}
}
else
if
(
o
instanceof
List
)
{
if
(((
List
)
o
).
size
()
==
0
)
{
return
true
;
}
}
else
if
(
o
instanceof
Map
)
{
if
(((
Map
)
o
).
size
()
==
0
)
{
return
true
;
}
}
else
if
(
o
instanceof
Set
)
{
if
(((
Set
)
o
).
size
()
==
0
)
{
return
true
;
}
}
else
if
(
o
instanceof
Object
[])
{
if
(((
Object
[])
o
).
length
==
0
)
{
return
true
;
}
}
else
if
(
o
instanceof
int
[])
{
if
(((
int
[])
o
).
length
==
0
)
{
return
true
;
}
}
else
if
(
o
instanceof
long
[])
{
if
(((
long
[])
o
).
length
==
0
)
{
return
true
;
}
}
return
false
;
}
/**
* 对象组中是否存在 Empty Object
*
* @param os
* 对象组
* @return
*/
public
static
boolean
isOneEmpty
(
Object
...
os
)
{
for
(
Object
o
:
os
)
{
if
(
isEmpty
(
o
))
{
return
true
;
}
}
return
false
;
}
/**
* 对象组中是否全是 Empty Object
*
* @param os
* @return
*/
public
static
boolean
isAllEmpty
(
Object
...
os
)
{
for
(
Object
o
:
os
)
{
if
(!
isEmpty
(
o
))
{
return
false
;
}
}
return
true
;
}
/**
* 是否为数字
*
* @param obj
* @return
*/
public
static
boolean
isNum
(
Object
obj
)
{
try
{
Integer
.
parseInt
(
obj
.
toString
());
}
catch
(
Exception
e
)
{
return
false
;
}
return
true
;
}
/**
* 如果为空, 则调用默认值
*
* @param str
* @return
*/
public
static
Object
getValue
(
Object
str
,
Object
defaultValue
)
{
if
(
isEmpty
(
str
))
{
return
defaultValue
;
}
return
str
;
}
/**
* 格式化文本
*
* @param template
* 文本模板,被替换的部分用 {} 表示
* @param values
* 参数值
* @return 格式化后的文本
*/
public
static
String
format
(
String
template
,
Object
...
values
)
{
return
StrKit
.
format
(
template
,
values
);
}
/**
* 格式化文本
*
* @param template
* 文本模板,被替换的部分用 {key} 表示
* @param map
* 参数值对
* @return 格式化后的文本
*/
public
static
String
format
(
String
template
,
Map
<?,
?>
map
)
{
return
StrKit
.
format
(
template
,
map
);
}
/**
* 强转->string,并去掉多余空格
*
* @param str
* @return
*/
public
static
String
toStr
(
Object
str
)
{
return
toStr
(
str
,
""
);
}
/**
* 强转->string,并去掉多余空格
*
* @param str
* @param defaultValue
* @return
*/
public
static
String
toStr
(
Object
str
,
String
defaultValue
)
{
if
(
null
==
str
)
{
return
defaultValue
;
}
return
str
.
toString
().
trim
();
}
/**
* 强转->int
*
* @param obj
* @return
*/
/**
* 获取异常的具体信息
*
* @author fengshuonan
* @Date 2017/3/30 9:21
* @version 2.0
*/
public
static
String
getExceptionMsg
(
Exception
e
)
{
StringWriter
sw
=
new
StringWriter
();
try
{
e
.
printStackTrace
(
new
PrintWriter
(
sw
));
}
finally
{
try
{
sw
.
close
();
}
catch
(
IOException
e1
)
{
e1
.
printStackTrace
();
}
}
return
sw
.
getBuffer
().
toString
().
replaceAll
(
"\\$"
,
"T"
);
}
/**
* @Description 主键id
* @author fengshuonan
*/
public
static
String
getUid
()
{
return
getRandomNum
();
}
/**
* @Description 随机数字
* @author fengshuonan
*/
public
static
String
getRandomNum
()
{
return
Calendar
.
getInstance
().
getTimeInMillis
()
+
generateCellPhoneValNum
();
}
/**
* @Description 获取电话号码
* @author fengshuonan
*/
public
static
String
generateCellPhoneValNum
()
{
String
[]
beforeShuffle
=
new
String
[]{
"1"
,
"2"
,
"3"
,
"4"
,
"5"
,
"6"
,
"7"
,
"8"
,
"9"
,
"0"
};
List
<
String
>
list
=
Arrays
.
asList
(
beforeShuffle
);
Collections
.
shuffle
(
list
);
StringBuilder
buffer
=
new
StringBuilder
();
for
(
int
i
=
0
;
i
<
list
.
size
();
i
++)
{
buffer
.
append
(
list
.
get
(
i
));
}
String
afterShuffle
=
buffer
.
toString
();
String
result
=
afterShuffle
.
substring
(
3
,
9
);
return
result
;
}
/**
* 比较两个对象是否相等。<br>
* 相同的条件有两个,满足其一即可:<br>
* 1. obj1 == null && obj2 == null; 2. obj1.equals(obj2)
*
* @param obj1 对象1
* @param obj2 对象2
* @return 是否相等
*/
public
static
boolean
equals
(
Object
obj1
,
Object
obj2
)
{
return
(
obj1
!=
null
)
?
(
obj1
.
equals
(
obj2
))
:
(
obj2
==
null
);
}
/**
* 计算对象长度,如果是字符串调用其length函数,集合类调用其size函数,数组调用其length属性,其他可遍历对象遍历计算长度
*
* @param obj 被计算长度的对象
* @return 长度
*/
public
static
int
length
(
Object
obj
)
{
if
(
obj
==
null
)
{
return
0
;
}
if
(
obj
instanceof
CharSequence
)
{
return
((
CharSequence
)
obj
).
length
();
}
if
(
obj
instanceof
Collection
)
{
return
((
Collection
<?>)
obj
).
size
();
}
if
(
obj
instanceof
Map
)
{
return
((
Map
<?,
?>)
obj
).
size
();
}
int
count
;
if
(
obj
instanceof
Iterator
)
{
Iterator
<?>
iter
=
(
Iterator
<?>)
obj
;
count
=
0
;
while
(
iter
.
hasNext
())
{
count
++;
iter
.
next
();
}
return
count
;
}
if
(
obj
instanceof
Enumeration
)
{
Enumeration
<?>
enumeration
=
(
Enumeration
<?>)
obj
;
count
=
0
;
while
(
enumeration
.
hasMoreElements
())
{
count
++;
enumeration
.
nextElement
();
}
return
count
;
}
if
(
obj
.
getClass
().
isArray
()
==
true
)
{
return
Array
.
getLength
(
obj
);
}
return
-
1
;
}
/**
* 对象中是否包含元素
*
* @param obj 对象
* @param element 元素
* @return 是否包含
*/
public
static
boolean
contains
(
Object
obj
,
Object
element
)
{
if
(
obj
==
null
)
{
return
false
;
}
if
(
obj
instanceof
String
)
{
if
(
element
==
null
)
{
return
false
;
}
return
((
String
)
obj
).
contains
(
element
.
toString
());
}
if
(
obj
instanceof
Collection
)
{
return
((
Collection
<?>)
obj
).
contains
(
element
);
}
if
(
obj
instanceof
Map
)
{
return
((
Map
<?,
?>)
obj
).
values
().
contains
(
element
);
}
if
(
obj
instanceof
Iterator
)
{
Iterator
<?>
iter
=
(
Iterator
<?>)
obj
;
while
(
iter
.
hasNext
())
{
Object
o
=
iter
.
next
();
if
(
equals
(
o
,
element
))
{
return
true
;
}
}
return
false
;
}
if
(
obj
instanceof
Enumeration
)
{
Enumeration
<?>
enumeration
=
(
Enumeration
<?>)
obj
;
while
(
enumeration
.
hasMoreElements
())
{
Object
o
=
enumeration
.
nextElement
();
if
(
equals
(
o
,
element
))
{
return
true
;
}
}
return
false
;
}
if
(
obj
.
getClass
().
isArray
()
==
true
)
{
int
len
=
Array
.
getLength
(
obj
);
for
(
int
i
=
0
;
i
<
len
;
i
++)
{
Object
o
=
Array
.
get
(
obj
,
i
);
if
(
equals
(
o
,
element
))
{
return
true
;
}
}
}
return
false
;
}
/**
* 对象是否不为空(新增)
*
* @param obj String,List,Map,Object[],int[],long[]
* @return
*/
public
static
boolean
isNotEmpty
(
Object
o
)
{
return
!
isEmpty
(
o
);
}
/**
* 对象是否为空
*
* @param obj String,List,Map,Object[],int[],long[]
* @return
*/
@SuppressWarnings
(
"rawtypes"
)
public
static
boolean
isEmpty
(
Object
o
)
{
if
(
o
==
null
)
{
return
true
;
}
if
(
o
instanceof
String
)
{
if
(
o
.
toString
().
trim
().
equals
(
""
))
{
return
true
;
}
}
else
if
(
o
instanceof
List
)
{
if
(((
List
)
o
).
size
()
==
0
)
{
return
true
;
}
}
else
if
(
o
instanceof
Map
)
{
if
(((
Map
)
o
).
size
()
==
0
)
{
return
true
;
}
}
else
if
(
o
instanceof
Set
)
{
if
(((
Set
)
o
).
size
()
==
0
)
{
return
true
;
}
}
else
if
(
o
instanceof
Object
[])
{
if
(((
Object
[])
o
).
length
==
0
)
{
return
true
;
}
}
else
if
(
o
instanceof
int
[])
{
if
(((
int
[])
o
).
length
==
0
)
{
return
true
;
}
}
else
if
(
o
instanceof
long
[])
{
if
(((
long
[])
o
).
length
==
0
)
{
return
true
;
}
}
return
false
;
}
/**
* 对象组中是否存在 Empty Object
*
* @param os 对象组
* @return
*/
public
static
boolean
isOneEmpty
(
Object
...
os
)
{
for
(
Object
o
:
os
)
{
if
(
isEmpty
(
o
))
{
return
true
;
}
}
return
false
;
}
/**
* 对象组中是否全是 Empty Object
*
* @param os
* @return
*/
public
static
boolean
isAllEmpty
(
Object
...
os
)
{
for
(
Object
o
:
os
)
{
if
(!
isEmpty
(
o
))
{
return
false
;
}
}
return
true
;
}
/**
* 是否为数字
*
* @param obj
* @return
*/
public
static
boolean
isNum
(
Object
obj
)
{
try
{
Integer
.
parseInt
(
obj
.
toString
());
}
catch
(
Exception
e
)
{
return
false
;
}
return
true
;
}
/**
* 如果为空, 则调用默认值
*
* @param str
* @return
*/
public
static
Object
getValue
(
Object
str
,
Object
defaultValue
)
{
if
(
isEmpty
(
str
))
{
return
defaultValue
;
}
return
str
;
}
/**
* 格式化文本
*
* @param template 文本模板,被替换的部分用 {} 表示
* @param values 参数值
* @return 格式化后的文本
*/
public
static
String
format
(
String
template
,
Object
...
values
)
{
return
StrKit
.
format
(
template
,
values
);
}
/**
* 格式化文本
*
* @param template 文本模板,被替换的部分用 {key} 表示
* @param map 参数值对
* @return 格式化后的文本
*/
public
static
String
format
(
String
template
,
Map
<?,
?>
map
)
{
return
StrKit
.
format
(
template
,
map
);
}
/**
* 强转->string,并去掉多余空格
*
* @param str
* @return
*/
public
static
String
toStr
(
Object
str
)
{
return
toStr
(
str
,
""
);
}
/**
* 强转->string,并去掉多余空格
*
* @param str
* @param defaultValue
* @return
*/
public
static
String
toStr
(
Object
str
,
String
defaultValue
)
{
if
(
null
==
str
)
{
return
defaultValue
;
}
return
str
.
toString
().
trim
();
}
/**
* 强转->int
*
* @param obj
* @return
*/
// public static int toInt(Object value) {
// return toInt(value, -1);
// }
/**
* 强转->int
*
* @param obj
* @param defaultValue
* @return
*/
/**
* 强转->int
*
* @param obj
* @param defaultValue
* @return
*/
// public static int toInt(Object value, int defaultValue) {
// return Convert.toInt(value, defaultValue);
// }
/**
* 强转->long
*
* @param obj
* @return
*/
/**
* 强转->long
*
* @param obj
* @return
*/
// public static long toLong(Object value) {
// return toLong(value, -1);
// }
/**
* 强转->long
*
* @param obj
* @param defaultValue
* @return
*/
/**
* 强转->long
*
* @param obj
* @param defaultValue
* @return
*/
// public static long toLong(Object value, long defaultValue) {
// return Convert.toLong(value, defaultValue);
// }
...
...
@@ -423,21 +405,21 @@ public class ToolUtil {
// return URLKit.decode(url, CharsetKit.UTF_8);
// }
/**
* map的key转为小写
*
* @param map
* @return Map<String,Object>
*/
public
static
Map
<
String
,
Object
>
caseInsensitiveMap
(
Map
<
String
,
Object
>
map
)
{
Map
<
String
,
Object
>
tempMap
=
new
HashMap
<>();
for
(
String
key
:
map
.
keySet
())
{
tempMap
.
put
(
key
.
toLowerCase
(),
map
.
get
(
key
));
}
return
tempMap
;
}
/**
/**
* map的key转为小写
*
* @param map
* @return Map<String,Object>
*/
public
static
Map
<
String
,
Object
>
caseInsensitiveMap
(
Map
<
String
,
Object
>
map
)
{
Map
<
String
,
Object
>
tempMap
=
new
HashMap
<>();
for
(
String
key
:
map
.
keySet
())
{
tempMap
.
put
(
key
.
toLowerCase
(),
map
.
get
(
key
));
}
return
tempMap
;
}
/**
* 获取map中第一个数据值
*
* @param <K> Key的类型
...
...
@@ -456,45 +438,45 @@ public class ToolUtil {
return
obj
;
}
/**
* 创建StringBuilder对象
*
* @return StringBuilder对象
*/
public
static
StringBuilder
builder
(
String
...
strs
)
{
final
StringBuilder
sb
=
new
StringBuilder
();
for
(
String
str
:
strs
)
{
sb
.
append
(
str
);
}
return
sb
;
}
/**
* 创建StringBuilder对象
*
* @return StringBuilder对象
*/
public
static
void
builder
(
StringBuilder
sb
,
String
...
strs
)
{
for
(
String
str
:
strs
)
{
sb
.
append
(
str
);
}
}
/**
* 去掉指定后缀
*
* @param str
字符串
* @param suffix 后缀
* @return 切掉后的字符串,若后缀不是 suffix, 返回原字符串
*/
public
static
String
removeSuffix
(
String
str
,
String
suffix
)
{
if
(
isEmpty
(
str
)
||
isEmpty
(
suffix
))
{
return
str
;
}
if
(
str
.
endsWith
(
suffix
))
{
return
str
.
substring
(
0
,
str
.
length
()
-
suffix
.
length
());
}
return
str
;
}
/**
* 创建StringBuilder对象
*
* @return StringBuilder对象
*/
public
static
StringBuilder
builder
(
String
...
strs
)
{
final
StringBuilder
sb
=
new
StringBuilder
();
for
(
String
str
:
strs
)
{
sb
.
append
(
str
);
}
return
sb
;
}
/**
* 创建StringBuilder对象
*
* @return StringBuilder对象
*/
public
static
void
builder
(
StringBuilder
sb
,
String
...
strs
)
{
for
(
String
str
:
strs
)
{
sb
.
append
(
str
);
}
}
/**
* 去掉指定后缀
*
* @param str
字符串
* @param suffix 后缀
* @return 切掉后的字符串,若后缀不是 suffix, 返回原字符串
*/
public
static
String
removeSuffix
(
String
str
,
String
suffix
)
{
if
(
isEmpty
(
str
)
||
isEmpty
(
suffix
))
{
return
str
;
}
if
(
str
.
endsWith
(
suffix
))
{
return
str
.
substring
(
0
,
str
.
length
()
-
suffix
.
length
());
}
return
str
;
}
}
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment