Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
weixin_42566577
o2oa
提交
24998fbc
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,体验更适合开发者的 AI 搜索 >>
提交
24998fbc
编写于
12月 07, 2022
作者:
Z
zhourui
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
update dd rd
上级
4063663b
变更
3
显示空白变更内容
内联
并排
Showing
3 changed file
with
53 addition
and
26 deletion
+53
-26
o2server/x_base_core_project/src/main/java/com/x/base/core/project/config/DumpRestoreData.java
.../java/com/x/base/core/project/config/DumpRestoreData.java
+1
-1
o2server/x_console/src/main/java/com/x/server/console/action/DumpData.java
...e/src/main/java/com/x/server/console/action/DumpData.java
+15
-7
o2server/x_console/src/main/java/com/x/server/console/action/RestoreData.java
...rc/main/java/com/x/server/console/action/RestoreData.java
+37
-18
未找到文件。
o2server/x_base_core_project/src/main/java/com/x/base/core/project/config/DumpRestoreData.java
浏览文件 @
24998fbc
...
...
@@ -22,7 +22,7 @@ public class DumpRestoreData extends ConfigObject {
public
static
final
String
RESTOREOVERRIDE_CLEAN
=
"clean"
;
public
static
final
String
RESTOREOVERRIDE_SKIPEXISTED
=
"skipExisted"
;
public
static
final
Boolean
DEFAULT_REDISTRIBUTE
=
fals
e
;
public
static
final
Boolean
DEFAULT_REDISTRIBUTE
=
tru
e
;
public
static
final
Boolean
DEFAULT_EXCEPTIONINVALIDSTORAGE
=
false
;
public
static
final
Boolean
DEFAULT_ATTACHSTORAGE
=
true
;
public
static
final
String
DEFAULT_ITEMCATEGORY
=
""
;
...
...
o2server/x_console/src/main/java/com/x/server/console/action/DumpData.java
浏览文件 @
24998fbc
...
...
@@ -226,16 +226,24 @@ public class DumpData {
if
(
BooleanUtils
.
isTrue
(
Config
.
dumpRestoreData
().
getExceptionInvalidStorage
()))
{
throw
new
ExceptionInvalidStorage
(
s
);
}
else
{
LOGGER
.
warn
(
"can not access storage:{}."
,
s
);
LOGGER
.
warn
(
"can not access storage
, storageObject
:{}."
,
s
);
}
}
else
{
binaryWriteOut
(
sub
,
s
,
mapping
);
}
}
}
private
void
binaryWriteOut
(
Path
sub
,
StorageObject
s
,
StorageMapping
mapping
)
throws
Exception
{
Path
p
=
sub
.
resolve
(
FilenameUtils
.
getName
(
s
.
path
()));
if
(
s
.
existContent
(
mapping
))
{
try
(
OutputStream
out
=
Files
.
newOutputStream
(
p
))
{
out
.
write
(
s
.
readContent
(
mapping
));
}
catch
(
Exception
e
)
{
LOGGER
.
error
(
e
);
}
}
}
}
else
{
LOGGER
.
warn
(
"storage file not exist, path:{}, storageObject:{}."
,
p
,
s
);
}
}
}
...
...
o2server/x_console/src/main/java/com/x/server/console/action/RestoreData.java
浏览文件 @
24998fbc
...
...
@@ -40,6 +40,7 @@ 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.entity.tools.JpaObjectTools
;
import
com.x.base.core.project.bean.tuple.Pair
;
import
com.x.base.core.project.config.Config
;
import
com.x.base.core.project.config.DumpRestoreData
;
import
com.x.base.core.project.config.StorageMapping
;
...
...
@@ -106,8 +107,16 @@ public class RestoreData {
@Override
public
void
run
()
{
try
{
List
<
String
>
classNames
=
entities
(
catalog
,
classLoader
);
LOGGER
.
print
(
"find: {} data to restore, path: {}."
,
classNames
.
size
(),
this
.
dir
.
toString
());
Pair
<
List
<
String
>,
List
<
String
>>
pair
=
entities
(
catalog
,
classLoader
);
List
<
String
>
classNames
=
pair
.
first
();
if
(
pair
.
second
().
isEmpty
())
{
LOGGER
.
print
(
"find: {} data to restore from path: {}."
,
classNames
.
size
(),
this
.
dir
.
toString
());
}
else
{
LOGGER
.
print
(
"find: {} data to restore from path: {}, can not find entity classes:{}."
,
classNames
.
size
(),
this
.
dir
.
toString
(),
gson
.
toJson
(
pair
.
second
()));
}
Path
xml
=
Paths
.
get
(
Config
.
dir_local_temp_classes
().
getAbsolutePath
(),
DateTools
.
compact
(
start
)
+
"_restore.xml"
);
PersistenceXmlHelper
.
write
(
xml
.
toString
(),
classNames
,
true
,
classLoader
);
...
...
@@ -209,7 +218,8 @@ public class RestoreData {
return
list
;
}
private
List
<
String
>
entities
(
DumpRestoreDataCatalog
catalog
,
ClassLoader
classLoader
)
throws
Exception
{
private
Pair
<
List
<
String
>,
List
<
String
>>
entities
(
DumpRestoreDataCatalog
catalog
,
ClassLoader
classLoader
)
throws
Exception
{
List
<
String
>
containerEntityNames
=
new
ArrayList
<>(
JpaObjectTools
.
scanContainerEntityNames
(
classLoader
));
if
(
StringUtils
.
equalsIgnoreCase
(
DumpRestoreData
.
MODE_LITE
,
Config
.
dumpRestoreData
().
getMode
()))
{
containerEntityNames
=
containerEntityNames
.
stream
().
filter
(
o
->
{
...
...
@@ -225,7 +235,9 @@ public class RestoreData {
List
<
String
>
classNames
=
new
ArrayList
<>(
catalog
.
keySet
());
classNames
=
ListTools
.
includesExcludesWildcard
(
classNames
,
Config
.
dumpRestoreData
().
getIncludes
(),
Config
.
dumpRestoreData
().
getExcludes
());
return
ListUtils
.
intersection
(
containerEntityNames
,
classNames
);
return
Pair
.
of
(
ListUtils
.
intersection
(
classNames
,
containerEntityNames
),
ListUtils
.
subtract
(
classNames
,
containerEntityNames
));
}
@SuppressWarnings
(
"unchecked"
)
...
...
@@ -233,7 +245,7 @@ public class RestoreData {
StorageObject
so
=
(
StorageObject
)
o
;
Path
path
=
sub
.
resolve
(
Paths
.
get
(
so
.
path
()).
getFileName
());
if
(!
Files
.
exists
(
path
))
{
LOGGER
.
warn
(
"
file not exist: {}."
,
path
.
toString
()
);
LOGGER
.
warn
(
"
storage file not exist, path:{}, storageObject:{}."
,
path
,
so
);
return
;
}
StorageMapping
mapping
=
null
;
...
...
@@ -246,11 +258,13 @@ public class RestoreData {
if
(
BooleanUtils
.
isTrue
(
Config
.
dumpRestoreData
().
getExceptionInvalidStorage
()))
{
throw
new
ExceptionInvalidStorage
(
so
);
}
else
{
LOGGER
.
warn
(
"can not access storage:{}
."
,
so
.
getStorage
()
);
LOGGER
.
warn
(
"can not access storage:{}
, storageObject:{}."
,
so
.
getStorage
(),
so
);
}
}
else
{
try
(
InputStream
input
=
Files
.
newInputStream
(
path
))
{
so
.
saveContent
(
mapping
,
input
,
so
.
getName
());
}
catch
(
Exception
e
)
{
LOGGER
.
error
(
e
);
}
}
}
...
...
@@ -269,6 +283,15 @@ public class RestoreData {
list
=
list
(
cls
,
em
,
containerEntity
);
if
(
ListTools
.
isNotEmpty
(
list
))
{
em
.
getTransaction
().
begin
();
remove
(
cls
,
em
,
storageMappings
,
list
);
em
.
getTransaction
().
commit
();
em
.
clear
();
}
}
while
(
ListTools
.
isNotEmpty
(
list
));
}
private
<
T
>
void
remove
(
Class
<
T
>
cls
,
EntityManager
em
,
StorageMappings
storageMappings
,
List
<
T
>
list
)
throws
Exception
{
for
(
T
t
:
list
)
{
if
(
BooleanUtils
.
isTrue
(
Config
.
dumpRestoreData
().
getAttachStorage
())
&&
StorageObject
.
class
.
isAssignableFrom
(
cls
))
{
...
...
@@ -281,10 +304,6 @@ public class RestoreData {
}
em
.
remove
(
t
);
}
em
.
getTransaction
().
commit
();
em
.
clear
();
}
}
while
(
ListTools
.
isNotEmpty
(
list
));
}
private
<
T
>
List
<
T
>
list
(
Class
<
T
>
cls
,
EntityManager
em
,
ContainerEntity
containerEntity
)
throws
Exception
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录