Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
weixin_42566577
o2oa
提交
ace2e2ac
o2oa
项目概览
weixin_42566577
/
o2oa
与 Fork 源项目一致
Fork自
浙江兰德纵横网络技术股份有限公司 / o2oa
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
o2oa
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
ace2e2ac
编写于
8月 07, 2020
作者:
Z
zhourui
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add erase content entity
上级
61de42d8
变更
10
隐藏空白更改
内联
并排
Showing
10 changed file
with
269 addition
and
260 deletion
+269
-260
o2server/x_console/src/main/java/com/x/server/console/Main.java
...er/x_console/src/main/java/com/x/server/console/Main.java
+40
-56
o2server/x_console/src/main/java/com/x/server/console/action/ActionControl.java
.../main/java/com/x/server/console/action/ActionControl.java
+31
-25
o2server/x_console/src/main/java/com/x/server/console/action/EraseContent.java
...c/main/java/com/x/server/console/action/EraseContent.java
+169
-0
o2server/x_console/src/main/java/com/x/server/console/action/EraseContentBbs.java
...ain/java/com/x/server/console/action/EraseContentBbs.java
+1
-4
o2server/x_console/src/main/java/com/x/server/console/action/EraseContentCms.java
...ain/java/com/x/server/console/action/EraseContentCms.java
+7
-13
o2server/x_console/src/main/java/com/x/server/console/action/EraseContentEntity.java
.../java/com/x/server/console/action/EraseContentEntity.java
+17
-0
o2server/x_console/src/main/java/com/x/server/console/action/EraseContentLog.java
...ain/java/com/x/server/console/action/EraseContentLog.java
+1
-5
o2server/x_console/src/main/java/com/x/server/console/action/EraseContentMessage.java
...java/com/x/server/console/action/EraseContentMessage.java
+1
-4
o2server/x_console/src/main/java/com/x/server/console/action/EraseContentOrg.java
...ain/java/com/x/server/console/action/EraseContentOrg.java
+1
-5
o2server/x_console/src/main/java/com/x/server/console/action/EraseContentProcessPlatform.java
.../x/server/console/action/EraseContentProcessPlatform.java
+1
-148
未找到文件。
o2server/x_console/src/main/java/com/x/server/console/Main.java
浏览文件 @
ace2e2ac
...
...
@@ -55,12 +55,12 @@ public class Main {
/* getVersion需要FileUtils在后面运行 */
cleanTempDir
(
base
);
createTempClassesDirectory
(
base
);
//LogTools.setSlf4jSimple();
//
LogTools.setSlf4jSimple();
try
{
Main
.
class
.
getClassLoader
().
loadClass
(
"org.slf4j.impl.SimpleLogger"
);
LogTools
.
setSlf4jSimple
();
}
catch
(
ClassNotFoundException
ex
)
{
System
.
out
.
println
(
"ignore:"
+
ex
.
getMessage
());
}
catch
(
ClassNotFoundException
ex
)
{
System
.
out
.
println
(
"ignore:"
+
ex
.
getMessage
());
slf4jOtherImplOn
=
true
;
}
org
.
slf4j
.
impl
.
StaticLoggerBinder
.
getSingleton
();
...
...
@@ -125,7 +125,7 @@ public class Main {
}
}
}.
start
();
/* 启动NodeAgent */
if
(
BooleanUtils
.
isTrue
(
Config
.
currentNode
().
nodeAgentEnable
()))
{
NodeAgent
nodeAgent
=
new
NodeAgent
();
...
...
@@ -157,48 +157,48 @@ public class Main {
matcher
=
CommandFactory
.
start_pattern
.
matcher
(
cmd
);
if
(
matcher
.
find
())
{
switch
(
matcher
.
group
(
1
))
{
case
"application"
:
startApplicationServer
();
break
;
case
"center"
:
startCenterServer
();
break
;
case
"web"
:
startWebServer
();
break
;
case
"storage"
:
startStorageServer
();
break
;
case
"data"
:
startDataServer
();
break
;
default
:
startAll
();
break
;
case
"application"
:
startApplicationServer
();
break
;
case
"center"
:
startCenterServer
();
break
;
case
"web"
:
startWebServer
();
break
;
case
"storage"
:
startStorageServer
();
break
;
case
"data"
:
startDataServer
();
break
;
default
:
startAll
();
break
;
}
continue
;
}
matcher
=
CommandFactory
.
stop_pattern
.
matcher
(
cmd
);
if
(
matcher
.
find
())
{
switch
(
matcher
.
group
(
1
))
{
case
"application"
:
stopApplicationServer
();
break
;
case
"center"
:
stopCenterServer
();
break
;
case
"web"
:
stopWebServer
();
break
;
case
"storage"
:
stopStorageServer
();
break
;
case
"data"
:
stopDataServer
();
break
;
default
:
stopAll
();
break
;
case
"application"
:
stopApplicationServer
();
break
;
case
"center"
:
stopCenterServer
();
break
;
case
"web"
:
stopWebServer
();
break
;
case
"storage"
:
stopStorageServer
();
break
;
case
"data"
:
stopDataServer
();
break
;
default
:
stopAll
();
break
;
}
continue
;
}
...
...
@@ -245,25 +245,9 @@ public class Main {
}
/* 关闭定时器 */
scheduler
.
shutdown
();
// }
SystemOutErrorSideCopyBuilder
.
stop
();
}
private
static
boolean
test
()
{
try
{
DeploymentManager
deployer
=
Servers
.
applicationServer
.
getBean
(
DeploymentManager
.
class
);
for
(
App
app
:
deployer
.
getApps
())
{
System
.
out
.
println
(
app
.
getContextPath
());
if
(
StringUtils
.
equals
(
"/x_query_assemble_designer"
,
app
.
getContextPath
()))
{
app
.
getContextHandler
().
stop
();
}
}
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
return
true
;
}
private
static
boolean
createEncryptKey
()
{
try
{
return
new
ActionCreateEncryptKey
().
execute
();
...
...
o2server/x_console/src/main/java/com/x/server/console/action/ActionControl.java
浏览文件 @
ace2e2ac
...
...
@@ -2,10 +2,6 @@ package com.x.server.console.action;
import
java.util.Objects
;
import
com.x.base.core.project.config.Config
;
import
com.x.base.core.project.logger.Logger
;
import
com.x.base.core.project.logger.LoggerFactory
;
import
org.apache.commons.cli.CommandLine
;
import
org.apache.commons.cli.CommandLineParser
;
import
org.apache.commons.cli.DefaultParser
;
...
...
@@ -13,8 +9,13 @@ import org.apache.commons.cli.HelpFormatter;
import
org.apache.commons.cli.Option
;
import
org.apache.commons.cli.Options
;
import
org.apache.commons.lang3.BooleanUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.commons.lang3.math.NumberUtils
;
import
com.x.base.core.project.config.Config
;
import
com.x.base.core.project.logger.Logger
;
import
com.x.base.core.project.logger.LoggerFactory
;
/*
@author zhourui
...
...
@@ -132,7 +133,7 @@ public class ActionControl extends ActionBase {
private
static
Option
ecOption
()
{
return
Option
.
builder
(
"ec"
).
longOpt
(
"eraseContent"
).
argName
(
"type"
).
hasArg
().
optionalArg
(
false
)
.
desc
(
"清空实例数据,保留设计数据,type可选值
bbs cms log processPlatform message org
."
).
build
();
.
desc
(
"清空实例数据,保留设计数据,type可选值
: bbs,cms,log,processPlatform,message,org或者实体类名
."
).
build
();
}
private
static
Option
clh2Option
()
{
...
...
@@ -183,26 +184,31 @@ public class ActionControl extends ActionBase {
}
String
type
=
Objects
.
toString
(
cmd
.
getOptionValue
(
"ec"
));
switch
(
type
)
{
case
"processPlatform"
:
new
EraseContentProcessPlatform
().
execute
();
break
;
case
"bbs"
:
new
EraseContentBbs
().
execute
();
break
;
case
"cms"
:
new
EraseContentCms
().
execute
();
break
;
case
"log"
:
new
EraseContentLog
().
execute
();
break
;
case
"message"
:
new
EraseContentMessage
().
execute
();
break
;
case
"org"
:
new
EraseContentOrg
().
execute
();
break
;
default
:
logger
.
print
(
"type may be processPlatform bbs cms log message."
);
case
"processPlatform"
:
new
EraseContentProcessPlatform
().
execute
();
break
;
case
"bbs"
:
new
EraseContentBbs
().
execute
();
break
;
case
"cms"
:
new
EraseContentCms
().
execute
();
break
;
case
"log"
:
new
EraseContentLog
().
execute
();
break
;
case
"message"
:
new
EraseContentMessage
().
execute
();
break
;
case
"org"
:
new
EraseContentOrg
().
execute
();
break
;
default
:
EraseContentEntity
eraseContentEntity
=
new
EraseContentEntity
();
for
(
String
str
:
StringUtils
.
split
(
type
,
","
))
{
eraseContentEntity
.
addClass
(
str
);
}
eraseContentEntity
.
execute
();
break
;
}
}
...
...
o2server/x_console/src/main/java/com/x/server/console/action/EraseContent.java
0 → 100644
浏览文件 @
ace2e2ac
package
com.x.server.console.action
;
import
java.io.File
;
import
java.util.ArrayList
;
import
java.util.Date
;
import
java.util.List
;
import
javax.persistence.EntityManager
;
import
javax.persistence.EntityManagerFactory
;
import
javax.persistence.criteria.CriteriaBuilder
;
import
javax.persistence.criteria.CriteriaQuery
;
import
javax.persistence.criteria.Predicate
;
import
javax.persistence.criteria.Root
;
import
org.apache.commons.collections4.ListUtils
;
import
org.apache.openjpa.persistence.OpenJPAPersistence
;
import
com.x.base.core.container.factory.PersistenceXmlHelper
;
import
com.x.base.core.entity.JpaObject
;
import
com.x.base.core.entity.StorageObject
;
import
com.x.base.core.entity.annotation.ContainerEntity
;
import
com.x.base.core.entity.dataitem.DataItem
;
import
com.x.base.core.entity.dataitem.ItemCategory
;
import
com.x.base.core.project.config.Config
;
import
com.x.base.core.project.config.StorageMapping
;
import
com.x.base.core.project.config.StorageMappings
;
import
com.x.base.core.project.logger.Logger
;
import
com.x.base.core.project.logger.LoggerFactory
;
import
com.x.base.core.project.tools.DateTools
;
import
com.x.base.core.project.tools.ListTools
;
public
abstract
class
EraseContent
{
private
static
Logger
logger
=
LoggerFactory
.
getLogger
(
EraseContent
.
class
);
private
Date
start
;
private
String
name
;
private
List
<
String
>
classNames
=
new
ArrayList
<>();
private
ItemCategory
itemCategory
;
public
abstract
boolean
execute
()
throws
Exception
;
protected
void
addClass
(
Class
<?>
cls
)
{
this
.
classNames
.
add
(
cls
.
getName
());
}
protected
void
addClass
(
String
className
)
{
this
.
classNames
.
add
(
className
);
}
protected
void
init
(
String
name
,
ItemCategory
itemCategory
)
throws
Exception
{
this
.
name
=
name
;
this
.
itemCategory
=
itemCategory
;
this
.
start
=
new
Date
();
}
protected
void
run
()
throws
Exception
{
logger
.
print
(
"erase {} content data: start at {}."
,
name
,
DateTools
.
format
(
start
));
this
.
classNames
=
ListUtils
.
intersection
(
this
.
classNames
,
(
List
<
String
>)
Config
.
resource
(
Config
.
RESOURCE_CONTAINERENTITYNAMES
));
StorageMappings
storageMappings
=
Config
.
storageMappings
();
File
persistence
=
new
File
(
Config
.
dir_local_temp_classes
(),
DateTools
.
compact
(
this
.
start
)
+
"_eraseContent.xml"
);
PersistenceXmlHelper
.
write
(
persistence
.
getAbsolutePath
(),
classNames
);
for
(
int
i
=
0
;
i
<
classNames
.
size
();
i
++)
{
Class
<?
extends
JpaObject
>
cls
=
(
Class
<?
extends
JpaObject
>)
Class
.
forName
(
classNames
.
get
(
i
));
EntityManagerFactory
emf
=
OpenJPAPersistence
.
createEntityManagerFactory
(
cls
.
getName
(),
persistence
.
getName
(),
PersistenceXmlHelper
.
properties
(
cls
.
getName
(),
Config
.
slice
().
getEnable
()));
EntityManager
em
=
emf
.
createEntityManager
();
if
(
DataItem
.
class
.
isAssignableFrom
(
cls
))
{
Long
total
=
this
.
estimateItemCount
(
em
,
cls
);
logger
.
print
(
"erase {} content data:{}, total {}."
,
name
,
cls
.
getName
(),
total
);
this
.
eraseItem
(
cls
,
em
,
total
);
}
else
{
Long
total
=
this
.
estimateCount
(
em
,
cls
);
logger
.
print
(
"erase {} content data:{}, total {}."
,
name
,
cls
.
getName
(),
total
);
this
.
erase
(
cls
,
em
,
storageMappings
,
total
);
}
}
Date
end
=
new
Date
();
logger
.
print
(
"erase {} content data: completed at {}, elapsed {} ms."
,
name
,
DateTools
.
format
(
end
),
(
end
.
getTime
()
-
start
.
getTime
()));
}
private
<
T
extends
JpaObject
>
long
estimateCount
(
EntityManager
em
,
Class
<
T
>
cls
)
{
CriteriaBuilder
cb
=
em
.
getCriteriaBuilder
();
CriteriaQuery
<
Long
>
cq
=
cb
.
createQuery
(
Long
.
class
);
Root
<
T
>
root
=
cq
.
from
(
cls
);
cq
.
select
(
cb
.
count
(
root
));
return
em
.
createQuery
(
cq
).
getSingleResult
();
}
private
<
T
extends
JpaObject
>
long
estimateItemCount
(
EntityManager
em
,
Class
<
T
>
cls
)
{
CriteriaBuilder
cb
=
em
.
getCriteriaBuilder
();
CriteriaQuery
<
Long
>
cq
=
cb
.
createQuery
(
Long
.
class
);
Root
<
T
>
root
=
cq
.
from
(
cls
);
Predicate
p
=
cb
.
equal
(
root
.
get
(
DataItem
.
itemCategory_FIELDNAME
),
this
.
itemCategory
);
cq
.
select
(
cb
.
count
(
root
)).
where
(
p
);
return
em
.
createQuery
(
cq
).
getSingleResult
();
}
private
<
T
>
Long
erase
(
Class
<
T
>
cls
,
EntityManager
em
,
StorageMappings
storageMappings
,
Long
total
)
throws
Exception
{
Long
count
=
0L
;
List
<
T
>
list
=
null
;
ContainerEntity
containerEntity
=
cls
.
getAnnotation
(
ContainerEntity
.
class
);
do
{
if
(
ListTools
.
isNotEmpty
(
list
))
{
em
.
getTransaction
().
begin
();
for
(
T
t
:
list
)
{
em
.
remove
(
t
);
}
em
.
getTransaction
().
commit
();
if
(
StorageObject
.
class
.
isAssignableFrom
(
cls
))
{
for
(
T
t
:
list
)
{
StorageObject
storageObject
=
(
StorageObject
)
t
;
String
storageName
=
storageObject
.
getStorage
();
StorageMapping
mapping
=
storageMappings
.
get
(
storageObject
.
getClass
(),
storageName
);
if
(
null
!=
mapping
)
{
storageObject
.
deleteContent
(
mapping
);
}
else
{
logger
.
print
(
"can not find storage mapping {}."
,
storageName
);
}
}
}
count
+=
list
.
size
();
em
.
clear
();
logger
.
print
(
"erase {} content data:{}, {}/{}."
,
name
,
cls
.
getName
(),
count
,
total
);
}
CriteriaBuilder
cb
=
em
.
getCriteriaBuilder
();
CriteriaQuery
<
T
>
cq
=
cb
.
createQuery
(
cls
);
Root
<
T
>
root
=
cq
.
from
(
cls
);
cq
.
select
(
root
);
list
=
em
.
createQuery
(
cq
).
setMaxResults
(
containerEntity
.
dumpSize
()).
getResultList
();
}
while
(
ListTools
.
isNotEmpty
(
list
));
return
count
;
}
private
<
T
>
Long
eraseItem
(
Class
<
T
>
cls
,
EntityManager
em
,
Long
total
)
throws
Exception
{
Long
count
=
0L
;
List
<
T
>
list
=
null
;
ContainerEntity
containerEntity
=
cls
.
getAnnotation
(
ContainerEntity
.
class
);
do
{
if
(
ListTools
.
isNotEmpty
(
list
))
{
em
.
getTransaction
().
begin
();
for
(
T
t
:
list
)
{
em
.
remove
(
t
);
}
em
.
getTransaction
().
commit
();
count
+=
list
.
size
();
em
.
clear
();
logger
.
print
(
"erase {} content data:{}, {}/{}."
,
name
,
cls
.
getName
(),
count
,
total
);
}
CriteriaBuilder
cb
=
em
.
getCriteriaBuilder
();
CriteriaQuery
<
T
>
cq
=
cb
.
createQuery
(
cls
);
Root
<
T
>
root
=
cq
.
from
(
cls
);
Predicate
p
=
cb
.
equal
(
root
.
get
(
DataItem
.
itemCategory_FIELDNAME
),
itemCategory
);
cq
.
select
(
root
).
where
(
p
);
list
=
em
.
createQuery
(
cq
).
setMaxResults
(
containerEntity
.
dumpSize
()).
getResultList
();
}
while
(
ListTools
.
isNotEmpty
(
list
));
return
count
;
}
}
\ No newline at end of file
o2server/x_console/src/main/java/com/x/server/console/action/EraseContentBbs.java
浏览文件 @
ace2e2ac
package
com.x.server.console.action
;
import
com.x.base.core.entity.dataitem.ItemCategory
;
import
com.x.base.core.project.logger.Logger
;
import
com.x.base.core.project.logger.LoggerFactory
;
import
com.x.bbs.entity.BBSOperationRecord
;
import
com.x.bbs.entity.BBSReplyInfo
;
import
com.x.bbs.entity.BBSSubjectAttachment
;
...
...
@@ -13,9 +11,8 @@ import com.x.bbs.entity.BBSVoteOption;
import
com.x.bbs.entity.BBSVoteOptionGroup
;
import
com.x.bbs.entity.BBSVoteRecord
;
public
class
EraseContentBbs
extends
EraseContent
ProcessPlatform
{
public
class
EraseContentBbs
extends
EraseContent
{
private
static
Logger
logger
=
LoggerFactory
.
getLogger
(
EraseContentBbs
.
class
);
@Override
public
boolean
execute
()
throws
Exception
{
this
.
init
(
"bbs"
,
ItemCategory
.
bbs
);
...
...
o2server/x_console/src/main/java/com/x/server/console/action/EraseContentCms.java
浏览文件 @
ace2e2ac
package
com.x.server.console.action
;
import
org.apache.commons.lang3.StringUtils
;
import
com.x.base.core.entity.dataitem.ItemCategory
;
import
com.x.base.core.project.config.Config
;
import
com.x.base.core.project.logger.Logger
;
import
com.x.base.core.project.logger.LoggerFactory
;
import
com.x.cms.core.entity.CmsBatchOperation
;
import
com.x.cms.core.entity.Document
;
import
com.x.cms.core.entity.Review
;
import
com.x.cms.core.entity.DocumentCommend
;
import
com.x.cms.core.entity.DocumentCommentCommend
;
import
com.x.cms.core.entity.DocumentCommentContent
;
import
com.x.cms.core.entity.DocumentCommentInfo
;
import
com.x.cms.core.entity.DocumentViewRecord
;
import
com.x.cms.core.entity.FileInfo
;
import
com.x.cms.core.entity.Log
;
import
com.x.cms.core.entity.ReadRemind
;
import
com.x.cms.core.entity.DocumentCommentInfo
;
import
com.x.cms.core.entity.DocumentCommentContent
;
import
com.x.cms.core.entity.DocumentCommentCommend
;
import
com.x.cms.core.entity.DocumentCommend
;
import
com.x.cms.core.entity.CmsBatchOperation
;
import
com.x.cms.core.entity.Review
;
public
class
EraseContentCms
extends
EraseContent
ProcessPlatform
{
public
class
EraseContentCms
extends
EraseContent
{
private
static
Logger
logger
=
LoggerFactory
.
getLogger
(
EraseContentCms
.
class
);
@Override
public
boolean
execute
()
throws
Exception
{
this
.
init
(
"cms"
,
ItemCategory
.
cms
);
...
...
o2server/x_console/src/main/java/com/x/server/console/action/EraseContentEntity.java
0 → 100644
浏览文件 @
ace2e2ac
package
com.x.server.console.action
;
import
com.x.base.core.project.logger.Logger
;
import
com.x.base.core.project.logger.LoggerFactory
;
public
class
EraseContentEntity
extends
EraseContent
{
private
static
Logger
logger
=
LoggerFactory
.
getLogger
(
EraseContentEntity
.
class
);
@Override
public
boolean
execute
()
throws
Exception
{
this
.
init
(
"entity"
,
null
);
this
.
run
();
return
true
;
}
}
\ No newline at end of file
o2server/x_console/src/main/java/com/x/server/console/action/EraseContentLog.java
浏览文件 @
ace2e2ac
package
com.x.server.console.action
;
import
com.x.base.core.project.logger.Logger
;
import
com.x.base.core.project.logger.LoggerFactory
;
import
com.x.processplatform.core.entity.element.FormVersion
;
import
com.x.processplatform.core.entity.element.ProcessVersion
;
import
com.x.processplatform.core.entity.element.ScriptVersion
;
...
...
@@ -10,9 +8,7 @@ import com.x.program.center.core.entity.ScheduleLog;
import
com.x.program.center.core.entity.UnexpectedErrorLog
;
import
com.x.program.center.core.entity.WarnLog
;
public
class
EraseContentLog
extends
EraseContentProcessPlatform
{
private
static
Logger
logger
=
LoggerFactory
.
getLogger
(
EraseContentLog
.
class
);
public
class
EraseContentLog
extends
EraseContent
{
@Override
public
boolean
execute
()
throws
Exception
{
...
...
o2server/x_console/src/main/java/com/x/server/console/action/EraseContentMessage.java
浏览文件 @
ace2e2ac
package
com.x.server.console.action
;
import
com.x.base.core.project.logger.Logger
;
import
com.x.base.core.project.logger.LoggerFactory
;
import
com.x.message.core.entity.IMConversation
;
import
com.x.message.core.entity.IMConversationExt
;
import
com.x.message.core.entity.IMMsg
;
...
...
@@ -10,9 +8,8 @@ import com.x.message.core.entity.Mass;
import
com.x.message.core.entity.Message
;
import
com.x.message.core.entity.Org
;
public
class
EraseContentMessage
extends
EraseContent
ProcessPlatform
{
public
class
EraseContentMessage
extends
EraseContent
{
private
static
Logger
logger
=
LoggerFactory
.
getLogger
(
EraseContentMessage
.
class
);
@Override
public
boolean
execute
()
throws
Exception
{
this
.
init
(
"message"
,
null
);
...
...
o2server/x_console/src/main/java/com/x/server/console/action/EraseContentOrg.java
浏览文件 @
ace2e2ac
...
...
@@ -2,8 +2,6 @@ package com.x.server.console.action;
import
javax.wsdl.Definition
;
import
com.x.base.core.project.logger.Logger
;
import
com.x.base.core.project.logger.LoggerFactory
;
import
com.x.organization.core.entity.Bind
;
import
com.x.organization.core.entity.Custom
;
import
com.x.organization.core.entity.Group
;
...
...
@@ -19,9 +17,7 @@ import com.x.organization.core.entity.UnitDuty;
import
com.x.organization.core.entity.accredit.Empower
;
import
com.x.organization.core.entity.accredit.EmpowerLog
;
public
class
EraseContentOrg
extends
EraseContentProcessPlatform
{
private
static
Logger
logger
=
LoggerFactory
.
getLogger
(
EraseContentOrg
.
class
);
public
class
EraseContentOrg
extends
EraseContent
{
@Override
public
boolean
execute
()
throws
Exception
{
...
...
o2server/x_console/src/main/java/com/x/server/console/action/EraseContentProcessPlatform.java
浏览文件 @
ace2e2ac
package
com.x.server.console.action
;
import
java.io.File
;
import
java.util.ArrayList
;
import
java.util.Date
;
import
java.util.List
;
import
javax.persistence.EntityManager
;
import
javax.persistence.EntityManagerFactory
;
import
javax.persistence.criteria.CriteriaBuilder
;
import
javax.persistence.criteria.CriteriaQuery
;
import
javax.persistence.criteria.Predicate
;
import
javax.persistence.criteria.Root
;
import
com.x.base.core.container.factory.PersistenceXmlHelper
;
import
com.x.base.core.entity.JpaObject
;
import
com.x.base.core.entity.StorageObject
;
import
com.x.base.core.entity.dataitem.DataItem
;
import
com.x.base.core.entity.dataitem.ItemCategory
;
import
com.x.base.core.project.config.Config
;
import
com.x.base.core.project.config.StorageMapping
;
import
com.x.base.core.project.config.StorageMappings
;
import
com.x.base.core.project.logger.Logger
;
import
com.x.base.core.project.logger.LoggerFactory
;
import
com.x.base.core.project.tools.DateTools
;
import
com.x.base.core.project.tools.ListTools
;
import
com.x.processplatform.core.entity.content.Attachment
;
import
com.x.processplatform.core.entity.content.DocumentVersion
;
import
com.x.processplatform.core.entity.content.Draft
;
...
...
@@ -39,20 +16,7 @@ import com.x.processplatform.core.entity.content.WorkCompleted;
import
com.x.processplatform.core.entity.content.WorkLog
;
import
com.x.query.core.entity.Item
;
import
org.apache.commons.collections4.ListUtils
;
import
org.apache.openjpa.persistence.OpenJPAPersistence
;
public
class
EraseContentProcessPlatform
{
private
static
Logger
logger
=
LoggerFactory
.
getLogger
(
EraseContentProcessPlatform
.
class
);
private
Date
start
;
private
String
name
;
private
List
<
String
>
classNames
=
new
ArrayList
<>();
private
ItemCategory
itemCategory
;
public
class
EraseContentProcessPlatform
extends
EraseContent
{
public
boolean
execute
()
throws
Exception
{
this
.
init
(
"processPlatform"
,
ItemCategory
.
pp
);
...
...
@@ -73,115 +37,4 @@ public class EraseContentProcessPlatform {
this
.
run
();
return
true
;
}
protected
void
addClass
(
Class
<?>
cls
)
throws
Exception
{
this
.
classNames
.
add
(
cls
.
getName
());
}
protected
void
init
(
String
name
,
ItemCategory
itemCategory
)
throws
Exception
{
this
.
name
=
name
;
this
.
itemCategory
=
itemCategory
;
this
.
start
=
new
Date
();
}
protected
void
run
()
throws
Exception
{
logger
.
print
(
"clean {} content data, start at {}."
,
name
,
DateTools
.
format
(
start
));
this
.
classNames
=
ListUtils
.
intersection
(
this
.
classNames
,
(
List
<
String
>)
Config
.
resource
(
Config
.
RESOURCE_CONTAINERENTITYNAMES
));
StorageMappings
storageMappings
=
Config
.
storageMappings
();
File
persistence
=
new
File
(
Config
.
dir_local_temp_classes
(),
DateTools
.
compact
(
this
.
start
)
+
"_eraseContent.xml"
);
PersistenceXmlHelper
.
write
(
persistence
.
getAbsolutePath
(),
classNames
);
for
(
int
i
=
0
;
i
<
classNames
.
size
();
i
++)
{
Class
<?
extends
JpaObject
>
cls
=
(
Class
<?
extends
JpaObject
>)
Class
.
forName
(
classNames
.
get
(
i
));
EntityManagerFactory
emf
=
OpenJPAPersistence
.
createEntityManagerFactory
(
cls
.
getName
(),
persistence
.
getName
(),
PersistenceXmlHelper
.
properties
(
cls
.
getName
(),
Config
.
slice
().
getEnable
()));
EntityManager
em
=
emf
.
createEntityManager
();
if
(
DataItem
.
class
.
isAssignableFrom
(
cls
))
{
logger
.
print
(
"erase {} content data:{}, total:{}."
,
name
,
cls
.
getName
(),
this
.
estimateItemCount
(
em
,
cls
));
this
.
eraseItem
(
cls
,
em
);
}
else
{
logger
.
print
(
"erase {} content data:{}, total:{}."
,
name
,
cls
.
getName
(),
this
.
estimateCount
(
em
,
cls
));
this
.
erase
(
cls
,
em
,
storageMappings
);
}
}
Date
end
=
new
Date
();
logger
.
print
(
"erase {} completed at {}, elapsed: {} ms."
,
name
,
DateTools
.
format
(
end
),
(
end
.
getTime
()
-
start
.
getTime
()));
}
private
<
T
extends
JpaObject
>
long
estimateCount
(
EntityManager
em
,
Class
<
T
>
cls
)
{
CriteriaBuilder
cb
=
em
.
getCriteriaBuilder
();
CriteriaQuery
<
Long
>
cq
=
cb
.
createQuery
(
Long
.
class
);
Root
<
T
>
root
=
cq
.
from
(
cls
);
cq
.
select
(
cb
.
count
(
root
));
return
em
.
createQuery
(
cq
).
getSingleResult
();
}
private
<
T
extends
JpaObject
>
long
estimateItemCount
(
EntityManager
em
,
Class
<
T
>
cls
)
{
CriteriaBuilder
cb
=
em
.
getCriteriaBuilder
();
CriteriaQuery
<
Long
>
cq
=
cb
.
createQuery
(
Long
.
class
);
Root
<
T
>
root
=
cq
.
from
(
cls
);
Predicate
p
=
cb
.
equal
(
root
.
get
(
DataItem
.
itemCategory_FIELDNAME
),
this
.
itemCategory
);
cq
.
select
(
cb
.
count
(
root
)).
where
(
p
);
return
em
.
createQuery
(
cq
).
getSingleResult
();
}
private
<
T
>
Long
erase
(
Class
<
T
>
cls
,
EntityManager
em
,
StorageMappings
storageMappings
)
throws
Exception
{
Long
count
=
0L
;
List
<
T
>
list
=
null
;
do
{
if
(
ListTools
.
isNotEmpty
(
list
))
{
em
.
getTransaction
().
begin
();
for
(
T
t
:
list
)
{
em
.
remove
(
t
);
}
em
.
getTransaction
().
commit
();
if
(
StorageObject
.
class
.
isAssignableFrom
(
cls
))
{
for
(
T
t
:
list
)
{
StorageObject
storageObject
=
(
StorageObject
)
t
;
String
name
=
storageObject
.
getStorage
();
StorageMapping
mapping
=
storageMappings
.
get
(
storageObject
.
getClass
(),
name
);
if
(
null
!=
mapping
)
{
storageObject
.
deleteContent
(
mapping
);
}
else
{
logger
.
print
(
"can not find storage mapping: {}."
,
name
);
}
}
}
count
+=
list
.
size
();
}
CriteriaBuilder
cb
=
em
.
getCriteriaBuilder
();
CriteriaQuery
<
T
>
cq
=
cb
.
createQuery
(
cls
);
Root
<
T
>
root
=
cq
.
from
(
cls
);
cq
.
select
(
root
);
list
=
em
.
createQuery
(
cq
).
setMaxResults
(
1000
).
getResultList
();
}
while
(
ListTools
.
isNotEmpty
(
list
));
return
count
;
}
private
<
T
>
Long
eraseItem
(
Class
<
T
>
cls
,
EntityManager
em
)
throws
Exception
{
Long
count
=
0L
;
List
<
T
>
list
=
null
;
do
{
if
(
ListTools
.
isNotEmpty
(
list
))
{
em
.
getTransaction
().
begin
();
for
(
T
t
:
list
)
{
em
.
remove
(
t
);
}
em
.
getTransaction
().
commit
();
count
+=
list
.
size
();
}
CriteriaBuilder
cb
=
em
.
getCriteriaBuilder
();
CriteriaQuery
<
T
>
cq
=
cb
.
createQuery
(
cls
);
Root
<
T
>
root
=
cq
.
from
(
cls
);
Predicate
p
=
cb
.
equal
(
root
.
get
(
DataItem
.
itemCategory_FIELDNAME
),
itemCategory
);
cq
.
select
(
root
).
where
(
p
);
list
=
em
.
createQuery
(
cq
).
setMaxResults
(
1000
).
getResultList
();
}
while
(
ListTools
.
isNotEmpty
(
list
));
return
count
;
}
}
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录