Skip to content
项目
群组
代码片段
帮助
正在加载...
帮助
提交反馈
为 GitLab 提交贡献
登录
切换导航
iBiz4j Spring R7
项目
项目
详情
动态
版本
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
计划
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
iBiz-R7后台标准模板
iBiz4j Spring R7
提交
4630e5ab
提交
4630e5ab
编写于
5月 11, 2020
作者:
sq3536
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
rule规则
上级
6344f417
变更
3
隐藏空白字符变更
内嵌
并排
正在显示
3 个修改的文件
包含
562 行增加
和
23 行删除
+562
-23
%DE%%ITEM%Rule.drl.ftl
...PRJ%-core/src/main/resources/rules/%DE%%ITEM%Rule.drl.ftl
+19
-12
%DE%%ITEM%RuleFlow.bpmn.ftl
...core/src/main/resources/rules/%DE%%ITEM%RuleFlow.bpmn.ftl
+5
-11
RuleUtils.java.ftl
...rc/main/java/%SYS_PKGPATH%/util/helper/RuleUtils.java.ftl
+538
-0
未找到文件。
SLN/%PUBPRJ%-core/src/main/resources/rules/%DE%%ITEM%Rule.drl.ftl
浏览文件 @
4630e5ab
...
...
@@ -19,6 +19,7 @@ import com.alibaba.fastjson.JSONObject;
global
${
pub
.
getPKGCodeName
()}.
core
.${
ParamPSDataEntity
.
getPSSystemModule
().
codeName
?
lower_case
}.
domain
.${
ParamPSDataEntity
.
codeName
}
${
logicName
+
logicParam
.
codeName
?
lower_case
};
<#
else
>
global
java
.
util
.
Map
${
logicName
+
logicParam
.
codeName
?
lower_case
};
global
${
pub
.
getPKGCodeName
()}.
util
.
security
.
AuthenticationUser
curuser
;
</#
if
>
</#
list
>
</#
if
>
...
...
@@ -50,26 +51,32 @@ ruleflow-group "${logicName+deLogicNode.getCodeName()?lower_case}"
<#
list
deLogicNode
.
getPSDELogicNodeParams
()
as
nodeParam
>
<#
assign
targetLogicParam
=
nodeParam
.
getDstPSDELogicParam
()>
<#
assign
targetLogicFieldName
=
nodeParam
.
getDstFieldName
()>
<#
if
targetLogicParam
.
getParamPSDataEntity
().
getPSDEField
(
targetLogicFieldName
)??>
<#
assign
target
DEField
=((
targetLogicParam
.
getParamPSDataEntity
().
getPSDEField
(
targetLogicFieldName
))
!'
')>
<#
if
targetLogicParam
.
getParamPSDataEntity
().
getPSDEField
(
targetLogicFieldName
,
true
)??>
<#
assign
target
LogicFieldName
=
srfcaseformat
(
targetLogicParam
.
getParamPSDataEntity
().
getPSDEField
(
targetLogicFieldName
,
true
).
getCodeName
(),
'l_u2lC
'
)>
</#
if
>
<#
if
nodeParam
.
getSrcValueType
()==
'SRCVALUE'
><#
comment
>
直接值
</#
comment
>
<#
if
targetDEField
??&&
srfjavatype
(
targetDEField
.
stdDataType
)==
'Integer'
>
${
logicName
+
targetLogicParam
.
getCodeName
()?
lower_case
}.
set
(
"${targetLogicFieldName?lower_case}"
,${
nodeParam
.
getSrcValue
()});
<#
else
>
${
logicName
+
targetLogicParam
.
getCodeName
()?
lower_case
}.
set
(
"${targetLogicFieldName?lower_case}"
,
"${nodeParam.getSrcValue()}"
);
</#
if
>
<#
elseif
nodeParam
.
getSrcValueType
()==
'SRCDLPARAM'
><#
comment
>
源逻辑参数
</#
comment
>
<#
assign
srcPSDELogicParam
=
nodeParam
.
getSrcPSDELogicParam
()>
<#
assign
srcFieldName
=
nodeParam
.
getSrcFieldName
()>
<#--<#
assign
srcDEField
=((
srcPSDELogicParam
.
getParamPSDataEntity
().
getPSDEField
(
srcFieldName
))
!'') >-->
<#--<#
if
srcDEField
!='' && targetDEField!=''>-->
<#
if
srcPSDELogicParam
.
getParamPSDataEntity
().
getPSDEField
(
srcFieldName
,
true
)??>
<#
assign
srcFieldName
=
srfcaseformat
(
srcPSDELogicParam
.
getParamPSDataEntity
().
getPSDEField
(
srcFieldName
,
true
).
getCodeName
(),
'l_u2lC'
)>
</#
if
>
${
logicName
+
targetLogicParam
.
getCodeName
()?
lower_case
}.
set
(
"${targetLogicFieldName?lower_case}"
,${
logicName
+
srcPSDELogicParam
.
getCodeName
()?
lower_case
}.
get
(
"${srcFieldName?lower_case}"
));<#
comment
>
源逻辑参数选择了实体
</#
comment
>
<#--<#
else
>-->
<#--//
暂不支持逻辑参数无实体模式
属性
[${
srcFieldName
?
upper_case
}]-->
<#--</#
if
>-->
<#
else
>
//
暂未支持其余准备参数设置
<#
if
nodeParam
.
getSrcValueType
()==
"CURTIME"
>
${
logicName
+
targetLogicParam
.
getCodeName
()?
lower_case
}.
set
(
"${targetLogicFieldName?lower_case}"
,(
new
java
.
sql
.
Timestamp
(
new
java
.
util
.
Date
().
getTime
()))));
<#
elseif
nodeParam
.
getSrcValueType
()==
"OPERATOR"
>
${
logicName
+
targetLogicParam
.
getCodeName
()?
lower_case
}.
set
(
"${targetLogicFieldName?lower_case}"
,
curuser
.
getUserid
());
<#
elseif
nodeParam
.
getSrcValueType
()==
"OPERATORNAME"
>
${
logicName
+
targetLogicParam
.
getCodeName
()?
lower_case
}.
set
(
"${targetLogicFieldName?lower_case}"
,
curuser
.
getPersonname
());
<#
elseif
nodeParam
.
getSrcValueType
()==
"CONTEXT"
>
${
logicName
+
targetLogicParam
.
getCodeName
()?
lower_case
}.
set
(
"${targetLogicFieldName?lower_case}"
,${
logicName
+
"default"
}.
get
(
"${srcFieldName?lower_case}"
));<#
comment
>
源逻辑参数选择了实体
</#
comment
>
<#
elseif
nodeParam
.
getSrcValueType
()==
"SESSION"
>
${
logicName
+
targetLogicParam
.
getCodeName
()?
lower_case
}.
set
(
"${targetLogicFieldName?lower_case}"
,
curuser
.
getSessionParams
().
get
(
"${srcFieldName?lower_case}"
));
<#
elseif
nodeParam
.
getSrcValueType
()==
"NULLVALUE"
>
${
logicName
+
targetLogicParam
.
getCodeName
()?
lower_case
}.
set
(
"${targetLogicFieldName?lower_case}"
,
null
);
</#
if
>
</#
if
>
</#
list
>
<#
elseif
deLogicNode
.
getLogicNodeType
()==
'DEACTION'
><#
comment
>
调用实体行为
</#
comment
>
...
...
SLN/%PUBPRJ%-core/src/main/resources/rules/%DE%%ITEM%RuleFlow.bpmn.ftl
浏览文件 @
4630e5ab
...
...
@@ -7,7 +7,7 @@ TARGET=PSDELOGIC
<extensionElements>
<tns:import name="java.util.Map" />
<tns:import name="org.springframework.util.StringUtils"/>
<tns:import name="${pub.getPKGCodeName()}.util.helper.
CompareHelper
"/>
<tns:import name="${pub.getPKGCodeName()}.util.helper.
RuleUtils
"/>
<#assign logicName=(de.codeName+item.codeName)?lower_case>
<#comment>插入逻辑参数</#comment>
<#if item.getPSDELogicParams?? && item.getPSDELogicParams()??>
...
...
@@ -59,7 +59,6 @@ TARGET=PSDELOGIC
</#if>
<#assign LogicLinkCond=LogicLink.getPSDELogicLinkGroupCond()>
<#assign strGroupCond=getGroupCond(LogicLinkCond)>
<#assign strGroupCond=strGroupCond?replace("ISNOTNULL","!=NULL")?replace("ISNULL","==NULL")?replace("AND","&&")?replace("OR","||")?replace("GT&&EQ",">=")?replace("LT&&EQ","<=")?replace("NOTEQ","!=")?replace("EQ","==")?replace("GT",">")?replace("LT","<") >
eval${strGroupCond}
]]>
</conditionExpression>
...
...
@@ -93,7 +92,7 @@ TARGET=PSDELOGIC
<#function getGroupCond LogicLinkCond>
<#assign strRuleCond="(">
<#if LogicLinkCond.getPSDELogicLinkConds?? && LogicLinkCond.getPSDELogicLinkConds()??><#comment>判断是否有组条件</#comment>
<#assign conn=LogicLinkCond.getGroupOP()>
<#assign conn=LogicLinkCond.getGroupOP()
?replace("AND","&&")?replace("OR","||")
>
<#list LogicLinkCond.getPSDELogicLinkConds() as childLogicLinkCond><#comment>组条件,递归</#comment>
<#if childLogicLinkCond.getPSDELogicLinkConds?? && childLogicLinkCond.getPSDELogicLinkConds()??>
<#assign strRuleCond=strRuleCond+getGroupCond(childLogicLinkCond)>//getGroupCond
...
...
@@ -115,18 +114,13 @@ TARGET=PSDELOGIC
<#assign condBody="">
<#assign targetParam=LogicLinkCond.getDstLogicParam()><#comment>目标参数</#comment>
<#assign targetFieldName=LogicLinkCond.getDstFieldName()><#comment>目标属性名称</#comment>
<#assign targetDEField=((targetParam.getParamPSDataEntity().getPSDEField(targetFieldName))!'')><#comment>目标属性</#comment>
<#assign targetDEField=((targetParam.getParamPSDataEntity().getPSDEField(targetFieldName
,true
))!'')><#comment>目标属性</#comment>
<#assign targetDBValueOP=LogicLinkCond.getPSDBValueOPId()><#comment>表达式</#comment>
<#assign targetValue=LogicLinkCond.getValue()><#comment>值项</#comment>
<#if targetDEField!=''>
<#if targetDBValueOP=="ISNULL">
<#assign condBody="StringUtils.isEmpty($"+logicName+targetParam.getCodeName()?lower_case+".get"+targetDEField.codeName?cap_first+"()"+")">
<#elseif targetDBValueOP=="ISNOTNULL">
<#assign condBody="!StringUtils.isEmpty($"+logicName+targetParam.getCodeName()?lower_case+".get"+targetDEField.codeName?cap_first+"()"+")">
<#else>
<#assign condBody="CompareHelper.compare($"+logicName+targetParam.getCodeName()?lower_case+".get"+targetDEField.codeName?cap_first+"(),"+"\""+targetValue+"\","+"\""+targetDBValueOP+"\")">
</#if>
targetFieldName=srfcaseformat(targetDEField.codeName,'l_u2lC') ;
</#if>
<#assign condBody="RuleUtils.test($"+logicName+targetParam.getCodeName()?lower_case+".get(\""+targetFieldName+"\"),\""+targetDBValueOP+"\","+"\""+targetValue+"\")">
<#assign fieldCond=fieldCond+condBody >
<#assign fieldCond=fieldCond+")" >
<#return fieldCond/>
...
...
SLN/%PUBPRJ%-util/src/main/java/%SYS_PKGPATH%/util/helper/RuleUtils.java.ftl
0 → 100644
浏览文件 @
4630e5ab
<#
ibiztemplate
>
TARGET
=
PSSYSTEM
</#
ibiztemplate
>
package
${
pub
.
getPKGCodeName
()}.
util
.
helper
;
import
${
pub
.
getPKGCodeName
()}.
util
.
domain
.
EntityBase
;
import
java
.
lang
.
reflect
.
Method
;
import
java
.
math
.
BigDecimal
;
import
java
.
math
.
BigInteger
;
import
java
.
sql
.
Timestamp
;
import
java
.
text
.
SimpleDateFormat
;
import
java
.
util
.*;
import
com
.
alibaba
.
fastjson
.
JSONObject
;
import
org
.
springframework
.
util
.
ObjectUtils
;
import
org
.
springframework
.
util
.
StringUtils
;
public
class
RuleUtils
{
public
static
SimpleDateFormat
dateFormat
=
new
SimpleDateFormat
(
"yyyy-MM-dd"
);
public
static
Object
getObj
(
Object
object
,
String
members
)
{
if
(
object
==
null
)
return
null
;
Object
currentObj
=
object
;
String
[]
arrayOfString
=
members
.
split
(
"
\\
."
);
int
i
=
arrayOfString
.
length
;
for
(
int
j
=
0
;
j
<
i
;
++
j
)
{
String
methodName
=
arrayOfString
[
j
];
try
{
if
(
currentObj
instanceof
EntityBase
)
{
currentObj
=((
EntityBase
)
currentObj
).
get
(
methodName
);
if
(
currentObj
==
null
)
return
null
;
}
else
if
(
currentObj
instanceof
JSONObject
)
{
currentObj
=((
JSONObject
)
currentObj
).
get
(
methodName
);
if
(
currentObj
==
null
)
return
null
;
}
else
if
(
currentObj
instanceof
Map
)
{
currentObj
=((
Map
)
currentObj
).
get
(
methodName
);
if
(
currentObj
==
null
)
return
null
;
}
else
{
Class
clazz
=
currentObj
.
getClass
();
Method
method
=
null
;
try
{
method
=
clazz
.
getMethod
(
"get"
,
new
Class
[
0
]);
}
catch
(
Exception
e2
)
{
method
=
clazz
.
getDeclaredMethod
(
"get"
,
new
Class
[
0
]);
}
currentObj
=
method
.
invoke
(
currentObj
,
methodName
);
if
(
currentObj
==
null
)
return
null
;
}
}
catch
(
Exception
e
)
{
return
null
;
}
}
return
currentObj
;
}
public
static
boolean
test
(
Object
finalObject
,
String
option
,
Object
exp
)
{
if
(
option
.
equalsIgnoreCase
(
"eq"
)||
option
.
equalsIgnoreCase
(
"equal"
)||
option
.
equalsIgnoreCase
(
"="
))
return
equal
(
exp
,
finalObject
);
else
if
(
option
.
equalsIgnoreCase
(
"noteq"
)||
option
.
equalsIgnoreCase
(
"notequal"
)||
option
.
equalsIgnoreCase
(
"<>"
)||
option
.
equalsIgnoreCase
(
"!="
))
return
!equal(exp,finalObject);
else
if
(
option
.
equalsIgnoreCase
(
"gt"
)||
option
.
equalsIgnoreCase
(
">"
))
return
gt
(
exp
,
finalObject
);
else
if
(
option
.
equalsIgnoreCase
(
"lt"
)||
option
.
equalsIgnoreCase
(
"<"
))
return
lt
(
exp
,
finalObject
);
else
if
(
option
.
equalsIgnoreCase
(
"gtandeq"
)||
option
.
equalsIgnoreCase
(
"ge"
)||
option
.
equalsIgnoreCase
(
">="
))
return
ge
(
exp
,
finalObject
);
else
if
(
option
.
equalsIgnoreCase
(
"ltandeq"
)||
option
.
equalsIgnoreCase
(
"le"
)||
option
.
equalsIgnoreCase
(
"<="
))
return
le
(
exp
,
finalObject
);
else
if
(
option
.
equalsIgnoreCase
(
"null"
)||
option
.
equalsIgnoreCase
(
"isnull"
))
return
isNull
(
finalObject
);
else
if
(
option
.
equalsIgnoreCase
(
"notnull"
)||
option
.
equalsIgnoreCase
(
"isnotnull"
))
return
isNotNull
(
finalObject
);
else
if
(
option
.
equalsIgnoreCase
(
"like"
)||
option
.
equalsIgnoreCase
(
"matchor"
))
return
matchor
(
exp
,
finalObject
);
else
if
(
option
.
equalsIgnoreCase
(
"leftlike"
)||
option
.
equalsIgnoreCase
(
"startswith"
)||
option
.
equalsIgnoreCase
(
"begin"
))
return
leftmatchor
(
exp
,
finalObject
);
else
if
(
option
.
equalsIgnoreCase
(
"rightlike"
)||
option
.
equalsIgnoreCase
(
"endswith"
)||
option
.
equalsIgnoreCase
(
"end"
))
return
rightmatchor
(
exp
,
finalObject
);
else
if
(
option
.
equalsIgnoreCase
(
"match"
)||
option
.
equalsIgnoreCase
(
"matchand"
)||
option
.
equalsIgnoreCase
(
"matches"
))
return
matchand
(
exp
,
finalObject
);
else
if
(
option
.
equalsIgnoreCase
(
"in"
))
return
in
(
exp
,
finalObject
);
else
if
(
option
.
equalsIgnoreCase
(
"notin"
))
return
notin
(
exp
,
finalObject
);
else
if
(
option
.
equalsIgnoreCase
(
"NOTLIKE"
))
return
notmatchor
(
exp
,
finalObject
);
else
if
(
option
.
equalsIgnoreCase
(
"LEFTNOTLIKE"
))
return
!leftmatchor(exp,finalObject);
else
if
(
option
.
equalsIgnoreCase
(
"RIGHTNOTLIKE"
))
return
!rightmatchor(exp,finalObject);
else
if
(
option
.
equalsIgnoreCase
(
"NOTMATCHES"
))
return
notmatchand
(
exp
,
finalObject
);
else
return
false
;
}
public
static
boolean
equal
(
Object
exp
,
Object
object
,
String
members
)
{
return
equal
(
exp
,
getObj
(
object
,
members
));
}
public
static
boolean
equal
(
Object
exp
,
Object
finalObject
)
{
if
(
exp
==
null
)
return
false
;
if
(
finalObject
==
null
)
return
false
;
if
(
exp
instanceof
String
&&
((
String
)
exp
).
length
()==
10
&&
finalObject
instanceof
Timestamp
)
{
return
dateFormat
.
format
(
finalObject
).
equals
(
exp
);
}
else
if
(
exp
instanceof
Timestamp
&&
finalObject
instanceof
Timestamp
)
{
return
dateFormat
.
format
(
finalObject
).
equals
(
dateFormat
.
format
(
exp
));
}
else
if
(
finalObject
instanceof
Timestamp
)
{
Timestamp
tm
=
DataObject
.
getTimestampValue
(
exp
,
null
);
if
(
tm
==
null
)
return
false
;
return
ObjectUtils
.
nullSafeEquals
(
tm
,
finalObject
);
}
if
(
ObjectUtils
.
nullSafeEquals
(
exp
,
finalObject
))
return
true
;
if
(
exp
.
toString
().
equalsIgnoreCase
(
finalObject
.
toString
()))
return
true
;
return
false
;
}
public
static
boolean
gt
(
Object
exp
,
Object
object
,
String
members
)
{
return
gt
(
exp
,
getObj
(
object
,
members
));
}
public
static
boolean
gt
(
Object
exp
,
Object
finalObject
)
{
if
(
ObjectUtils
.
isEmpty
(
exp
))
return
false
;
if
(
ObjectUtils
.
isEmpty
(
finalObject
))
return
false
;
try
{
if
(
finalObject
instanceof
java
.
sql
.
Timestamp
)
{
java
.
sql
.
Timestamp
finalTime
=(
java
.
sql
.
Timestamp
)
finalObject
;
Timestamp
tm
=
null
;
if
(
exp
instanceof
java
.
sql
.
Timestamp
)
{
tm
=(
java
.
sql
.
Timestamp
)
exp
;
}
else
{
tm
=
DataObject
.
getTimestampValue
(
exp
,
null
);
if
(
tm
==
null
)
return
false
;
}
return
finalTime
.
getTime
()>
tm
.
getTime
();
}
else
if
(
finalObject
instanceof
Integer
)
{
return
((
Integer
)
finalObject
)
>
DataObject
.
getIntegerValue
(
exp
,
Integer
.
MAX_VALUE
);
}
else
if
(
finalObject
instanceof
Double
)
{
return
((
Double
)
finalObject
)
>
DataObject
.
getDoubleValue
(
exp
,
Double
.
MAX_VALUE
);
}
else
if
(
finalObject
instanceof
Float
)
{
return
((
Float
)
finalObject
)
>
DataObject
.
getFloatValue
(
exp
,
Float
.
MAX_VALUE
);
}
else
if
(
finalObject
instanceof
BigDecimal
)
{
return
((
BigDecimal
)
finalObject
).
compareTo
(
DataObject
.
getBigDecimalValue
(
exp
,
BigDecimal
.
valueOf
(
Double
.
MAX_VALUE
)))>
0
;
}
else
if
(
finalObject
instanceof
BigInteger
)
{
return
((
BigInteger
)
finalObject
).
compareTo
(
DataObject
.
getBigIntegerValue
(
exp
,
BigInteger
.
valueOf
(
Long
.
MAX_VALUE
)))>
0
;
}
else
if
(
finalObject
instanceof
Long
)
{
return
((
Long
)
finalObject
)
>
DataObject
.
getLongValue
(
exp
,
Long
.
MAX_VALUE
);
}
else
if
(
finalObject
instanceof
String
)
{
return
finalObject
.
toString
().
compareToIgnoreCase
(
exp
.
toString
())>
0
;
}
else
return
false
;
}
catch
(
Exception
ex
)
{
return
false
;
}
}
public
static
boolean
lt
(
Object
exp
,
Object
object
,
String
members
)
{
return
lt
(
exp
,
getObj
(
object
,
members
));
}
public
static
boolean
lt
(
Object
exp
,
Object
finalObject
)
{
if
(
ObjectUtils
.
isEmpty
(
exp
))
return
false
;
if
(
ObjectUtils
.
isEmpty
(
finalObject
))
return
false
;
try
{
if
(
finalObject
instanceof
java
.
sql
.
Timestamp
)
{
java
.
sql
.
Timestamp
finalTime
=(
java
.
sql
.
Timestamp
)
finalObject
;
Timestamp
tm
=
null
;
if
((
exp
instanceof
String
)&&
(
exp
.
toString
().
trim
().
length
()==
10
))
{
tm
=
new
Timestamp
(
dateFormat
.
parse
(
exp
.
toString
().
trim
()).
getTime
());
}
else
if
(
exp
instanceof
java
.
sql
.
Timestamp
)
{
tm
=(
java
.
sql
.
Timestamp
)
exp
;
}
else
{
return
false
;
}
return
finalTime
.
getTime
()<
tm
.
getTime
();
}
else
if
(
finalObject
instanceof
Integer
)
{
return
(((
Integer
)
finalObject
).
intValue
()
<
((
Integer
)
exp
).
intValue
());
}
else
if
(
finalObject
instanceof
Double
)
{
return
(((
Double
)
finalObject
).
doubleValue
()
<
((
Double
)
exp
).
doubleValue
());
}
else
if
(
finalObject
instanceof
Float
)
{
return
(((
Float
)
finalObject
).
floatValue
()
<
((
Float
)
exp
).
floatValue
());
}
else
if
(
finalObject
instanceof
String
)
{
return
finalObject
.
toString
().
compareToIgnoreCase
(
exp
.
toString
())<
0
;
}
else
return
false
;
}
catch
(
Exception
ex
)
{
return
false
;
}
}
public
static
boolean
ge
(
Object
exp
,
Object
object
,
String
members
)
{
return
ge
(
exp
,
getObj
(
object
,
members
));
}
public
static
boolean
ge
(
Object
exp
,
Object
finalObject
)
{
return
(
!(lt(exp, finalObject)));
}
public
static
boolean
le
(
Object
exp
,
Object
object
,
String
members
)
{
return
le
(
exp
,
getObj
(
object
,
members
));
}
public
static
boolean
le
(
Object
exp
,
Object
finalObject
)
{
return
(
!(gt(exp, finalObject)));
}
public
static
boolean
notin
(
Object
expObj
,
Object
object
,
String
members
)
{
return
notin
(
expObj
,
getObj
(
object
,
members
));
}
public
static
boolean
notin
(
Object
expObj
,
Object
finalObject
)
{
return
(
!in(expObj,finalObject));
}
public
static
boolean
in
(
Object
expObj
,
Object
object
,
String
members
)
{
return
in
(
expObj
,
getObj
(
object
,
members
));
}
public
static
boolean
in
(
Object
expObj
,
Object
finalObject
)
{
if
(
ObjectUtils
.
isEmpty
(
finalObject
))
return
false
;
String
tvs
=
expObj
.
toString
().
trim
();
if
(
StringUtils
.
isEmpty
(
tvs
))
return
false
;
if
(
finalObject
instanceof
Integer
)
{
tvs
=
"i:"
+
tvs
;
}
else
if
(
finalObject
instanceof
String
)
{
tvs
=
"s:"
+
tvs
;
}
List
acts
=
parseTvs
(
tvs
);
for
(
Iterator
localIterator
=
acts
.
iterator
();
localIterator
.
hasNext
();)
{
Object
act
=
localIterator
.
next
();
if
(
equal
(
act
,
finalObject
))
return
true
;
}
return
false
;
}
public
static
boolean
isNotNull
(
Object
object
,
String
members
)
{
return
isNotNull
(
getObj
(
object
,
members
));
}
public
static
boolean
isNotNull
(
Object
finalObject
)
{
return
!isNull(finalObject);
}
public
static
boolean
isNull
(
Object
object
,
String
members
)
{
return
isNull
(
getObj
(
object
,
members
));
}
public
static
boolean
isNull
(
Object
finalObject
)
{
if
(
finalObject
instanceof
String
)
return
StringUtils
.
isEmpty
(
finalObject
.
toString
().
trim
());
return
(
ObjectUtils
.
isEmpty
(
finalObject
));
}
public
static
boolean
notmatchor
(
Object
expObj
,
Object
object
,
String
members
)
{
return
notmatchor
(
expObj
,
getObj
(
object
,
members
));
}
public
static
boolean
notmatchor
(
Object
expObj
,
Object
obj
)
{
return
(
!matchor(expObj,obj));
}
public
static
boolean
notmatchand
(
Object
expObj
,
Object
object
,
String
members
)
{
return
notmatchand
(
expObj
,
getObj
(
object
,
members
));
}
public
static
boolean
notmatchand
(
Object
expObj
,
Object
finalObject
)
{
return
(
!matchand(expObj,finalObject));
}
public
static
boolean
matchor
(
Object
expObj
,
Object
object
,
String
members
)
{
return
matchor
(
expObj
,
getObj
(
object
,
members
));
}
public
static
boolean
matchor
(
Object
expObj
,
Object
obj
)
{
if
(
obj
==
null
)
return
false
;
String
exp
=
expObj
.
toString
().
trim
();
if
(
StringUtils
.
isEmpty
(
exp
))
return
false
;
exp
=
exp
.
replace
(
";"
,
","
);
exp
=
exp
.
replace
(
";"
,
","
);
exp
=
exp
.
replace
(
","
,
","
);
String
[]
arr
=
exp
.
split
(
","
);
boolean
bRt
=
false
;
for
(
String
strExp
:
arr
)
{
bRt
=(
obj
.
toString
()).
matches
(
"(.*)"
+(
strExp
)+
"(.*)"
);
if
(
bRt
)
return
true
;
}
return
bRt
;
}
public
static
boolean
leftmatchor
(
Object
expObj
,
Object
obj
)
{
if
(
obj
==
null
)
return
false
;
String
exp
=
expObj
.
toString
().
trim
();
if
(
StringUtils
.
isEmpty
(
exp
))
return
false
;
exp
=
exp
.
replace
(
";"
,
","
);
exp
=
exp
.
replace
(
";"
,
","
);
exp
=
exp
.
replace
(
","
,
","
);
String
[]
arr
=
exp
.
split
(
","
);
boolean
bRt
=
false
;
for
(
String
strExp
:
arr
)
{
bRt
=
obj
.
toString
().
matches
(
strExp
+
"(.*)"
);
if
(
bRt
)
return
true
;
}
return
bRt
;
}
public
static
boolean
rightmatchor
(
Object
expObj
,
Object
obj
)
{
if
(
obj
==
null
)
return
false
;
String
exp
=
expObj
.
toString
().
trim
();
if
(
StringUtils
.
isEmpty
(
exp
))
return
false
;
exp
=
exp
.
replace
(
";"
,
","
);
exp
=
exp
.
replace
(
";"
,
","
);
exp
=
exp
.
replace
(
","
,
","
);
String
[]
arr
=
exp
.
split
(
","
);
boolean
bRt
=
false
;
for
(
String
strExp
:
arr
)
{
bRt
=
obj
.
toString
().
matches
(
"(.*)"
+
strExp
);
if
(
bRt
)
return
true
;
}
return
bRt
;
}
public
static
boolean
matchand
(
Object
expObj
,
Object
object
,
String
members
)
{
return
matchand
(
expObj
,
getObj
(
object
,
members
));
}
public
static
boolean
matchand
(
Object
expObj
,
Object
obj
)
{
if
(
obj
==
null
)
return
false
;
if
(
expObj
==
null
)
return
false
;
String
exp
=
expObj
.
toString
().
trim
();
if
(
StringUtils
.
isEmpty
(
exp
))
return
false
;
exp
=
exp
.
replace
(
";"
,
","
);
exp
=
exp
.
replace
(
";"
,
","
);
exp
=
exp
.
replace
(
","
,
","
);
String
[]
arr
=
exp
.
split
(
","
);
String
objstr
=
obj
.
toString
();
boolean
bRt
=
true
;
for
(
String
strExp
:
arr
)
{
if
(
strExp
.
trim
().
length
()==
0
)
continue
;
bRt
=(
obj
.
toString
()).
matches
(
"(.*)"
+(
strExp
)+
"(.*)"
);
if
(
!bRt)
return
false
;
}
return
bRt
;
}
private
static
List
<
Object
>
parseTvs
(
String
tvs
)
{
tvs
=
tvs
.
replace
(
";"
,
","
);
tvs
=
tvs
.
replace
(
";"
,
","
);
tvs
=
tvs
.
replace
(
","
,
","
);
String
[]
arrayOfString1
;
int
j
;
int
k
;
String
value
;
String
type
=
"s"
;
String
values
=
""
;
String
[]
tv
=
tvs
.
split
(
":"
);
if
(
tv
.
length
>
1
)
{
type
=
tv
[
0
];
values
=
tv
[
1
];
}
else
{
values
=
tvs
;
}
List
acts
=
new
ArrayList
();
String
str1
=
type
;
int
i
=
-
1
;
switch
(
str1
.
hashCode
())
{
case
105
:
if
(
str1
.
equals
(
"i"
))
i
=
0
;
break
;
case
115
:
if
(
str1
.
equals
(
"s"
))
i
=
1
;
}
switch
(
i
)
{
case
0
:
arrayOfString1
=
values
.
split
(
","
);
j
=
arrayOfString1
.
length
;
for
(
k
=
0
;
k
<
j
;
++
k
)
{
value
=
arrayOfString1
[
k
];
acts
.
add
(
new
Integer
(
value
.
trim
()));
}
break
;
case
1
:
arrayOfString1
=
values
.
split
(
","
);
j
=
arrayOfString1
.
length
;
for
(
k
=
0
;
k
<
j
;
++
k
)
{
value
=
arrayOfString1
[
k
];
acts
.
add
(
value
.
trim
());
}
}
return
acts
;
}
}
\ No newline at end of file
编辑
预览
Markdown
格式
0%
请重试
or
添加新附件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
先完成此消息的编辑!
取消
想要评论请
注册
或
登录