You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@seatunnel.apache.org by ki...@apache.org on 2022/08/22 12:21:25 UTC
[incubator-seatunnel] branch dev updated: [seatunnel-1947][seatunnel-server] wrapper paging for some list interface (#2466)
This is an automated email from the ASF dual-hosted git repository.
kirs pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/incubator-seatunnel.git
The following commit(s) were added to refs/heads/dev by this push:
new 5694d38b5 [seatunnel-1947][seatunnel-server] wrapper paging for some list interface (#2466)
5694d38b5 is described below
commit 5694d38b5c9620573c99a4f92d15d32dc63d6cb8
Author: dijie <nj...@gmail.com>
AuthorDate: Mon Aug 22 20:21:20 2022 +0800
[seatunnel-1947][seatunnel-server] wrapper paging for some list interface (#2466)
---
.../seatunnel/app/controller/ScriptController.java | 3 +-
.../seatunnel/app/controller/TaskController.java | 7 +-
.../seatunnel/app/controller/UserController.java | 5 +-
.../apache/seatunnel/app/dal/dao/IScriptDao.java | 5 +-
.../org/apache/seatunnel/app/dal/dao/IUserDao.java | 5 +-
.../seatunnel/app/dal/dao/impl/ScriptDaoImpl.java | 8 ++-
.../seatunnel/app/dal/dao/impl/UserDaoImpl.java | 8 ++-
.../seatunnel/app/dal/mapper/ScriptMapper.java | 2 +
.../seatunnel/app/dal/mapper/UserMapper.java | 2 +
.../{task/JobListReq.java => BasePageReq.java} | 12 ++--
.../app/domain/request/script/ScriptListReq.java | 8 +--
.../app/domain/request/task/InstanceListReq.java | 8 +--
.../app/domain/request/task/JobListReq.java | 8 +--
.../app/domain/request/user/UserListReq.java | 8 +--
.../seatunnel/app/domain/response/PageInfo.java | 77 ++++++++++++++++++++++
.../app/domain/response/user/AddUserRes.java | 2 +
.../seatunnel/app/service/IScriptService.java | 3 +-
.../apache/seatunnel/app/service/ITaskService.java | 7 +-
.../apache/seatunnel/app/service/IUserService.java | 5 +-
.../app/service/impl/ScriptServiceImpl.java | 15 ++++-
.../app/service/impl/TaskServiceImpl.java | 28 ++++++--
.../app/service/impl/UserServiceImpl.java | 16 ++++-
.../seatunnel/app/dal/mapper/ScriptMapper.xml | 15 ++++-
.../apache/seatunnel/app/dal/mapper/UserMapper.xml | 10 +++
.../dolphinscheduler/IDolphinschedulerService.java | 5 +-
.../constants/DolphinschedulerConstants.java | 1 +
.../impl/DolphinschedulerServiceImpl.java | 26 +++++---
.../dolphinscheduler/impl/InstanceServiceImpl.java | 8 ++-
.../dolphinscheduler/impl/JobServiceImpl.java | 28 ++++----
.../apache/seatunnel/server/common/PageData.java} | 43 ++++++------
.../seatunnel/spi/scheduler/IInstanceService.java | 5 +-
.../seatunnel/spi/scheduler/IJobService.java | 5 +-
32 files changed, 271 insertions(+), 117 deletions(-)
diff --git a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/controller/ScriptController.java b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/controller/ScriptController.java
index bf4133de8..01a5e1732 100644
--- a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/controller/ScriptController.java
+++ b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/controller/ScriptController.java
@@ -23,6 +23,7 @@ import org.apache.seatunnel.app.domain.request.script.PublishScriptReq;
import org.apache.seatunnel.app.domain.request.script.ScriptListReq;
import org.apache.seatunnel.app.domain.request.script.UpdateScriptContentReq;
import org.apache.seatunnel.app.domain.request.script.UpdateScriptParamReq;
+import org.apache.seatunnel.app.domain.response.PageInfo;
import org.apache.seatunnel.app.domain.response.script.AddEmptyScriptRes;
import org.apache.seatunnel.app.domain.response.script.ScriptParamRes;
import org.apache.seatunnel.app.domain.response.script.ScriptSimpleInfoRes;
@@ -76,7 +77,7 @@ public class ScriptController {
@PostMapping("/list")
@ApiOperation(value = "script list", httpMethod = "POST")
- public Result<List<ScriptSimpleInfoRes>> list(@RequestBody @NotNull ScriptListReq scriptListReq) {
+ public Result<PageInfo<ScriptSimpleInfoRes>> list(@RequestBody @NotNull ScriptListReq scriptListReq) {
return Result.success(iScriptService.list(scriptListReq));
}
diff --git a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/controller/TaskController.java b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/controller/TaskController.java
index e4dbb9528..d9110ebca 100644
--- a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/controller/TaskController.java
+++ b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/controller/TaskController.java
@@ -22,6 +22,7 @@ import org.apache.seatunnel.app.domain.request.task.ExecuteReq;
import org.apache.seatunnel.app.domain.request.task.InstanceListReq;
import org.apache.seatunnel.app.domain.request.task.JobListReq;
import org.apache.seatunnel.app.domain.request.task.RecycleScriptReq;
+import org.apache.seatunnel.app.domain.response.PageInfo;
import org.apache.seatunnel.app.domain.response.task.InstanceSimpleInfoRes;
import org.apache.seatunnel.app.domain.response.task.JobSimpleInfoRes;
import org.apache.seatunnel.app.service.ITaskService;
@@ -37,8 +38,6 @@ import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import javax.validation.constraints.NotNull;
-import java.util.List;
-
@RequestMapping("/api/v1/task")
@RestController
public class TaskController {
@@ -55,13 +54,13 @@ public class TaskController {
@GetMapping("/listJob")
@ApiOperation(value = "list job", httpMethod = "GET")
- Result<List<JobSimpleInfoRes>> listJob(@RequestBody @NotNull JobListReq req) {
+ Result<PageInfo<JobSimpleInfoRes>> listJob(@RequestBody @NotNull JobListReq req) {
return Result.success(iTaskService.listJob(req));
}
@GetMapping("/listInstance")
@ApiOperation(value = "list instance", httpMethod = "GET")
- Result<List<InstanceSimpleInfoRes>> listInstance(@RequestBody @NotNull InstanceListReq req) {
+ Result<PageInfo<InstanceSimpleInfoRes>> listInstance(@RequestBody @NotNull InstanceListReq req) {
return Result.success(iTaskService.listInstance(req));
}
diff --git a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/controller/UserController.java b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/controller/UserController.java
index ec5c16d71..d7cf924d2 100644
--- a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/controller/UserController.java
+++ b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/controller/UserController.java
@@ -21,6 +21,7 @@ import org.apache.seatunnel.app.common.Result;
import org.apache.seatunnel.app.domain.request.user.AddUserReq;
import org.apache.seatunnel.app.domain.request.user.UpdateUserReq;
import org.apache.seatunnel.app.domain.request.user.UserListReq;
+import org.apache.seatunnel.app.domain.response.PageInfo;
import org.apache.seatunnel.app.domain.response.user.AddUserRes;
import org.apache.seatunnel.app.domain.response.user.UserSimpleInfoRes;
import org.apache.seatunnel.app.service.IUserService;
@@ -39,8 +40,6 @@ import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import javax.validation.constraints.NotNull;
-import java.util.List;
-
@RequestMapping("/api/v1/user")
@RestController
public class UserController {
@@ -73,7 +72,7 @@ public class UserController {
@PostMapping("/list")
@ApiOperation(value = "user list", httpMethod = "POST")
- public Result<List<UserSimpleInfoRes>> list(@RequestBody @NotNull UserListReq userListReq) {
+ public Result<PageInfo<UserSimpleInfoRes>> list(@RequestBody @NotNull UserListReq userListReq) {
return Result.success(iUserService.list(userListReq));
}
diff --git a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/dal/dao/IScriptDao.java b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/dal/dao/IScriptDao.java
index 7da0332ac..0178b58b3 100644
--- a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/dal/dao/IScriptDao.java
+++ b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/dal/dao/IScriptDao.java
@@ -22,8 +22,7 @@ import org.apache.seatunnel.app.domain.dto.script.AddEmptyScriptDto;
import org.apache.seatunnel.app.domain.dto.script.CheckScriptDuplicateDto;
import org.apache.seatunnel.app.domain.dto.script.ListScriptsDto;
import org.apache.seatunnel.app.domain.dto.script.UpdateScriptContentDto;
-
-import java.util.List;
+import org.apache.seatunnel.server.common.PageData;
public interface IScriptDao {
void checkScriptDuplicate(CheckScriptDuplicateDto dto);
@@ -36,5 +35,5 @@ public interface IScriptDao {
void deleteScript(int id);
- List<Script> list(ListScriptsDto dto, Integer pageNo, Integer pageSize);
+ PageData<Script> list(ListScriptsDto dto, Integer pageNo, Integer pageSize);
}
diff --git a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/dal/dao/IUserDao.java b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/dal/dao/IUserDao.java
index 2572efe97..bd08d294c 100644
--- a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/dal/dao/IUserDao.java
+++ b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/dal/dao/IUserDao.java
@@ -20,8 +20,7 @@ package org.apache.seatunnel.app.dal.dao;
import org.apache.seatunnel.app.dal.entity.User;
import org.apache.seatunnel.app.domain.dto.user.ListUserDto;
import org.apache.seatunnel.app.domain.dto.user.UpdateUserDto;
-
-import java.util.List;
+import org.apache.seatunnel.server.common.PageData;
public interface IUserDao {
int add(UpdateUserDto dto);
@@ -36,7 +35,7 @@ public interface IUserDao {
void disable(int id);
- List<User> list(ListUserDto dto, int pageNo, int pageSize);
+ PageData<User> list(ListUserDto dto, int pageNo, int pageSize);
User getById(int operatorId);
}
diff --git a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/dal/dao/impl/ScriptDaoImpl.java b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/dal/dao/impl/ScriptDaoImpl.java
index d3df27b8f..0f2c73571 100644
--- a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/dal/dao/impl/ScriptDaoImpl.java
+++ b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/dal/dao/impl/ScriptDaoImpl.java
@@ -28,6 +28,7 @@ import org.apache.seatunnel.app.domain.dto.script.AddEmptyScriptDto;
import org.apache.seatunnel.app.domain.dto.script.CheckScriptDuplicateDto;
import org.apache.seatunnel.app.domain.dto.script.ListScriptsDto;
import org.apache.seatunnel.app.domain.dto.script.UpdateScriptContentDto;
+import org.apache.seatunnel.server.common.PageData;
import org.springframework.stereotype.Repository;
@@ -76,11 +77,14 @@ public class ScriptDaoImpl implements IScriptDao {
}
@Override
- public List<Script> list(ListScriptsDto dto, Integer pageNo, Integer pageSize) {
+ public PageData<Script> list(ListScriptsDto dto, Integer pageNo, Integer pageSize) {
final Script script = new Script();
script.setName(dto.getName());
script.setStatus(dto.getStatus());
- return scriptMapper.selectBySelectiveAndPage(script, pageNo * pageSize, pageSize);
+ final List<Script> scripts = scriptMapper.selectBySelectiveAndPage(script, pageNo * pageSize, pageSize);
+ int count = scriptMapper.countBySelectiveAndPage(script);
+
+ return new PageData<Script>(count, scripts);
}
}
diff --git a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/dal/dao/impl/UserDaoImpl.java b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/dal/dao/impl/UserDaoImpl.java
index bea735acc..bb29cda2b 100644
--- a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/dal/dao/impl/UserDaoImpl.java
+++ b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/dal/dao/impl/UserDaoImpl.java
@@ -27,6 +27,7 @@ import org.apache.seatunnel.app.dal.entity.User;
import org.apache.seatunnel.app.dal.mapper.UserMapper;
import org.apache.seatunnel.app.domain.dto.user.ListUserDto;
import org.apache.seatunnel.app.domain.dto.user.UpdateUserDto;
+import org.apache.seatunnel.server.common.PageData;
import org.springframework.stereotype.Repository;
@@ -87,10 +88,13 @@ public class UserDaoImpl implements IUserDao {
}
@Override
- public List<User> list(ListUserDto dto, int pageNo, int pageSize) {
+ public PageData<User> list(ListUserDto dto, int pageNo, int pageSize) {
final User user = new User();
user.setUsername(dto.getName());
- return userMapper.selectBySelectiveAndPage(user, pageNo * pageSize, pageSize);
+
+ int count = userMapper.countBySelective(user);
+ final List<User> userList = userMapper.selectBySelectiveAndPage(user, pageNo * pageSize, pageSize);
+ return new PageData<User>(count, userList);
}
@Override
diff --git a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/dal/mapper/ScriptMapper.java b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/dal/mapper/ScriptMapper.java
index 512c40782..0732ad0d6 100644
--- a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/dal/mapper/ScriptMapper.java
+++ b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/dal/mapper/ScriptMapper.java
@@ -35,4 +35,6 @@ public interface ScriptMapper {
List<Script> selectBySelectiveAndPage(@Param("script") Script script, @Param("start") int start, @Param("offset") int offset);
Script selectByNameAndCreatorAndStatusNotEq(@Param("name") String name, @Param("creatorId") int creatorId, @Param("status") byte status);
+
+ int countBySelectiveAndPage(@Param("script") Script script);
}
diff --git a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/dal/mapper/UserMapper.java b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/dal/mapper/UserMapper.java
index 9b8cc58a9..5d0cbae25 100644
--- a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/dal/mapper/UserMapper.java
+++ b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/dal/mapper/UserMapper.java
@@ -37,4 +37,6 @@ public interface UserMapper {
void updateStatus(@Param("id") int id, @Param("status") byte status);
User selectByName(@Param("username") String username);
+
+ int countBySelective(@Param("user") User user);
}
diff --git a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/domain/request/task/JobListReq.java b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/domain/request/BasePageReq.java
similarity index 79%
copy from seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/domain/request/task/JobListReq.java
copy to seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/domain/request/BasePageReq.java
index 544352178..a04f8af24 100644
--- a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/domain/request/task/JobListReq.java
+++ b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/domain/request/BasePageReq.java
@@ -15,19 +15,19 @@
* limitations under the License.
*/
-package org.apache.seatunnel.app.domain.request.task;
+package org.apache.seatunnel.app.domain.request;
-import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
-@ApiModel(value = "listJobReq", description = "list job")
-public class JobListReq {
- @ApiModelProperty(value = "job name", required = true, dataType = "String")
- private String name;
+public class BasePageReq {
@ApiModelProperty(value = "page number", required = true, dataType = "Integer")
private Integer pageNo;
@ApiModelProperty(value = "page size", required = true, dataType = "Integer")
private Integer pageSize;
+
+ public int getRealPageNo() {
+ return pageNo - 1;
+ }
}
diff --git a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/domain/request/script/ScriptListReq.java b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/domain/request/script/ScriptListReq.java
index 5bb301029..3ac64ba16 100644
--- a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/domain/request/script/ScriptListReq.java
+++ b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/domain/request/script/ScriptListReq.java
@@ -17,19 +17,17 @@
package org.apache.seatunnel.app.domain.request.script;
+import org.apache.seatunnel.app.domain.request.BasePageReq;
+
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@ApiModel(value = "scriptListReq", description = "script list")
@Data
-public class ScriptListReq {
+public class ScriptListReq extends BasePageReq {
@ApiModelProperty(value = "script name", required = false, dataType = "String")
private String name;
@ApiModelProperty(value = "script status", required = false, dataType = "Integer")
private Byte status;
- @ApiModelProperty(value = "page number", required = true, dataType = "Integer")
- private Integer pageNo;
- @ApiModelProperty(value = "page size", required = true, dataType = "Integer")
- private Integer pageSize;
}
diff --git a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/domain/request/task/InstanceListReq.java b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/domain/request/task/InstanceListReq.java
index 461a4f8fd..dcabb54b1 100644
--- a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/domain/request/task/InstanceListReq.java
+++ b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/domain/request/task/InstanceListReq.java
@@ -17,17 +17,15 @@
package org.apache.seatunnel.app.domain.request.task;
+import org.apache.seatunnel.app.domain.request.BasePageReq;
+
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel(value = "listInstanceReq", description = "list instance")
-public class InstanceListReq {
+public class InstanceListReq extends BasePageReq {
@ApiModelProperty(value = "instance name", required = true, dataType = "String")
private String name;
- @ApiModelProperty(value = "page number", required = true, dataType = "Integer")
- private Integer pageNo;
- @ApiModelProperty(value = "page size", required = true, dataType = "Integer")
- private Integer pageSize;
}
diff --git a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/domain/request/task/JobListReq.java b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/domain/request/task/JobListReq.java
index 544352178..55be19be8 100644
--- a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/domain/request/task/JobListReq.java
+++ b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/domain/request/task/JobListReq.java
@@ -17,17 +17,15 @@
package org.apache.seatunnel.app.domain.request.task;
+import org.apache.seatunnel.app.domain.request.BasePageReq;
+
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel(value = "listJobReq", description = "list job")
-public class JobListReq {
+public class JobListReq extends BasePageReq {
@ApiModelProperty(value = "job name", required = true, dataType = "String")
private String name;
- @ApiModelProperty(value = "page number", required = true, dataType = "Integer")
- private Integer pageNo;
- @ApiModelProperty(value = "page size", required = true, dataType = "Integer")
- private Integer pageSize;
}
diff --git a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/domain/request/user/UserListReq.java b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/domain/request/user/UserListReq.java
index 186e69f83..80bcdf972 100644
--- a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/domain/request/user/UserListReq.java
+++ b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/domain/request/user/UserListReq.java
@@ -17,17 +17,15 @@
package org.apache.seatunnel.app.domain.request.user;
+import org.apache.seatunnel.app.domain.request.BasePageReq;
+
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@ApiModel(value = "userListReq", description = "user list")
@Data
-public class UserListReq {
+public class UserListReq extends BasePageReq {
@ApiModelProperty(value = "user name", required = false, dataType = "String")
private String name;
- @ApiModelProperty(value = "page number", required = true, dataType = "Integer")
- private Integer pageNo;
- @ApiModelProperty(value = "page size", required = true, dataType = "Integer")
- private Integer pageSize;
}
diff --git a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/domain/response/PageInfo.java b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/domain/response/PageInfo.java
new file mode 100644
index 000000000..f4ced6e86
--- /dev/null
+++ b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/domain/response/PageInfo.java
@@ -0,0 +1,77 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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
+ *
+ * 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.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.seatunnel.app.domain.response;
+
+import io.swagger.annotations.ApiModel;
+
+import java.util.List;
+
+@ApiModel(value = "pageInfo", description = "page info")
+@SuppressWarnings("MagicNumber")
+public class PageInfo<T> {
+ private List<T> data;
+ private Integer totalCount = 0;
+ private Integer totalPage = 0;
+ private Integer pageNo = 1;
+ private Integer pageSize = 20;
+
+ public List<T> getData() {
+ return data;
+ }
+
+ public void setData(List<T> data) {
+ this.data = data;
+ }
+
+ public Integer getTotalCount() {
+ return totalCount;
+ }
+
+ public void setTotalCount(Integer totalCount) {
+ this.totalCount = totalCount;
+
+ if (pageSize == null || pageSize == 0) {
+ pageSize = 20;
+ }
+ if (this.totalCount % this.pageSize == 0) {
+ this.totalPage = this.totalCount / this.pageSize == 0 ? 1 : this.totalCount / this.pageSize;
+ return;
+ }
+ this.totalPage = this.totalCount / this.pageSize + 1;
+ }
+
+ public Integer getTotalPage() {
+ return totalPage;
+ }
+
+ public Integer getPageNo() {
+ return pageNo;
+ }
+
+ public void setPageNo(Integer pageNo) {
+ this.pageNo = pageNo;
+ }
+
+ public Integer getPageSize() {
+ return pageSize;
+ }
+
+ public void setPageSize(Integer pageSize) {
+ this.pageSize = pageSize;
+ }
+}
diff --git a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/domain/response/user/AddUserRes.java b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/domain/response/user/AddUserRes.java
index 0712dc75a..e115a9350 100644
--- a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/domain/response/user/AddUserRes.java
+++ b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/domain/response/user/AddUserRes.java
@@ -17,9 +17,11 @@
package org.apache.seatunnel.app.domain.response.user;
+import io.swagger.annotations.ApiModel;
import lombok.Data;
@Data
+@ApiModel(value = "addUserRes", description = "add user response")
public class AddUserRes {
private int id;
}
diff --git a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/service/IScriptService.java b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/service/IScriptService.java
index 99b993ad7..4e9a9ebbd 100644
--- a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/service/IScriptService.java
+++ b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/service/IScriptService.java
@@ -22,6 +22,7 @@ import org.apache.seatunnel.app.domain.request.script.PublishScriptReq;
import org.apache.seatunnel.app.domain.request.script.ScriptListReq;
import org.apache.seatunnel.app.domain.request.script.UpdateScriptContentReq;
import org.apache.seatunnel.app.domain.request.script.UpdateScriptParamReq;
+import org.apache.seatunnel.app.domain.response.PageInfo;
import org.apache.seatunnel.app.domain.response.script.AddEmptyScriptRes;
import org.apache.seatunnel.app.domain.response.script.ScriptParamRes;
import org.apache.seatunnel.app.domain.response.script.ScriptSimpleInfoRes;
@@ -35,7 +36,7 @@ public interface IScriptService {
void delete(Integer id);
- List<ScriptSimpleInfoRes> list(ScriptListReq scriptListReq);
+ PageInfo<ScriptSimpleInfoRes> list(ScriptListReq scriptListReq);
String fetchScriptContent(Integer id);
diff --git a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/service/ITaskService.java b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/service/ITaskService.java
index 78217d873..475da0e51 100644
--- a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/service/ITaskService.java
+++ b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/service/ITaskService.java
@@ -22,19 +22,18 @@ import org.apache.seatunnel.app.domain.request.task.ExecuteReq;
import org.apache.seatunnel.app.domain.request.task.InstanceListReq;
import org.apache.seatunnel.app.domain.request.task.JobListReq;
import org.apache.seatunnel.app.domain.request.task.RecycleScriptReq;
+import org.apache.seatunnel.app.domain.response.PageInfo;
import org.apache.seatunnel.app.domain.response.task.InstanceSimpleInfoRes;
import org.apache.seatunnel.app.domain.response.task.JobSimpleInfoRes;
-import java.util.List;
-
public interface ITaskService {
Long pushScriptToScheduler(PushScriptDto pushScriptDto);
void recycleScriptFromScheduler(RecycleScriptReq req);
- List<JobSimpleInfoRes> listJob(JobListReq req);
+ PageInfo<JobSimpleInfoRes> listJob(JobListReq req);
- List<InstanceSimpleInfoRes> listInstance(InstanceListReq req);
+ PageInfo<InstanceSimpleInfoRes> listInstance(InstanceListReq req);
InstanceSimpleInfoRes tmpExecute(ExecuteReq req);
}
diff --git a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/service/IUserService.java b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/service/IUserService.java
index da89f2c76..54f56f0d9 100644
--- a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/service/IUserService.java
+++ b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/service/IUserService.java
@@ -20,11 +20,10 @@ package org.apache.seatunnel.app.service;
import org.apache.seatunnel.app.domain.request.user.AddUserReq;
import org.apache.seatunnel.app.domain.request.user.UpdateUserReq;
import org.apache.seatunnel.app.domain.request.user.UserListReq;
+import org.apache.seatunnel.app.domain.response.PageInfo;
import org.apache.seatunnel.app.domain.response.user.AddUserRes;
import org.apache.seatunnel.app.domain.response.user.UserSimpleInfoRes;
-import java.util.List;
-
public interface IUserService {
AddUserRes add(AddUserReq addReq);
@@ -33,7 +32,7 @@ public interface IUserService {
void delete(int id);
- List<UserSimpleInfoRes> list(UserListReq userListReq);
+ PageInfo<UserSimpleInfoRes> list(UserListReq userListReq);
void enable(int id);
diff --git a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/service/impl/ScriptServiceImpl.java b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/service/impl/ScriptServiceImpl.java
index 3d6d2f139..df830e2de 100644
--- a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/service/impl/ScriptServiceImpl.java
+++ b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/service/impl/ScriptServiceImpl.java
@@ -38,6 +38,7 @@ import org.apache.seatunnel.app.domain.request.script.PublishScriptReq;
import org.apache.seatunnel.app.domain.request.script.ScriptListReq;
import org.apache.seatunnel.app.domain.request.script.UpdateScriptContentReq;
import org.apache.seatunnel.app.domain.request.script.UpdateScriptParamReq;
+import org.apache.seatunnel.app.domain.response.PageInfo;
import org.apache.seatunnel.app.domain.response.script.AddEmptyScriptRes;
import org.apache.seatunnel.app.domain.response.script.ScriptParamRes;
import org.apache.seatunnel.app.domain.response.script.ScriptSimpleInfoRes;
@@ -45,6 +46,7 @@ import org.apache.seatunnel.app.service.IScriptService;
import org.apache.seatunnel.app.service.ITaskService;
import org.apache.seatunnel.app.util.Md5Utils;
import org.apache.seatunnel.scheduler.dolphinscheduler.impl.InstanceServiceImpl;
+import org.apache.seatunnel.server.common.PageData;
import com.google.common.base.Strings;
import org.springframework.stereotype.Component;
@@ -143,15 +145,22 @@ public class ScriptServiceImpl implements IScriptService {
}
@Override
- public List<ScriptSimpleInfoRes> list(ScriptListReq scriptListReq) {
+ public PageInfo<ScriptSimpleInfoRes> list(ScriptListReq scriptListReq) {
final ListScriptsDto dto = ListScriptsDto.builder()
.name(scriptListReq.getName())
.status(scriptListReq.getStatus())
.build();
- List<Script> scripts = scriptDaoImpl.list(dto, scriptListReq.getPageNo(), scriptListReq.getPageSize());
- return scripts.stream().map(this::translate).collect(Collectors.toList());
+ PageData<Script> scriptPageData = scriptDaoImpl.list(dto, scriptListReq.getRealPageNo(), scriptListReq.getPageSize());
+ final List<ScriptSimpleInfoRes> data = scriptPageData.getData().stream().map(this::translate).collect(Collectors.toList());
+
+ final PageInfo<ScriptSimpleInfoRes> pageInfo = new PageInfo<>();
+ pageInfo.setPageNo(scriptListReq.getPageNo());
+ pageInfo.setPageSize(scriptListReq.getPageSize());
+ pageInfo.setTotalCount(scriptPageData.getTotalCount());
+ pageInfo.setData(data);
+ return pageInfo;
}
@Override
diff --git a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/service/impl/TaskServiceImpl.java b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/service/impl/TaskServiceImpl.java
index 751aa42cb..7b779d81d 100644
--- a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/service/impl/TaskServiceImpl.java
+++ b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/service/impl/TaskServiceImpl.java
@@ -38,9 +38,11 @@ import org.apache.seatunnel.app.domain.request.task.ExecuteReq;
import org.apache.seatunnel.app.domain.request.task.InstanceListReq;
import org.apache.seatunnel.app.domain.request.task.JobListReq;
import org.apache.seatunnel.app.domain.request.task.RecycleScriptReq;
+import org.apache.seatunnel.app.domain.response.PageInfo;
import org.apache.seatunnel.app.domain.response.task.InstanceSimpleInfoRes;
import org.apache.seatunnel.app.domain.response.task.JobSimpleInfoRes;
import org.apache.seatunnel.app.service.ITaskService;
+import org.apache.seatunnel.server.common.PageData;
import org.apache.seatunnel.server.common.SeatunnelException;
import org.apache.seatunnel.spi.scheduler.IInstanceService;
import org.apache.seatunnel.spi.scheduler.IJobService;
@@ -153,27 +155,41 @@ public class TaskServiceImpl implements ITaskService {
}
@Override
- public List<JobSimpleInfoRes> listJob(JobListReq req) {
+ public PageInfo<JobSimpleInfoRes> listJob(JobListReq req) {
// Search from scheduler.
final JobListDto dto = JobListDto.builder()
.name(req.getName())
.pageNo(req.getPageNo())
.pageSize(req.getPageSize())
.build();
- final List<JobSimpleInfoDto> list = iJobService.list(dto);
- return list.stream().map(this::translate).collect(Collectors.toList());
+ final PageData<JobSimpleInfoDto> jobPageData = iJobService.list(dto);
+ final List<JobSimpleInfoRes> data = jobPageData.getData().stream().map(this::translate).collect(Collectors.toList());
+ final PageInfo<JobSimpleInfoRes> pageInfo = new PageInfo<>();
+ pageInfo.setData(data);
+ pageInfo.setTotalCount(jobPageData.getTotalCount());
+ pageInfo.setPageNo(req.getPageNo());
+ pageInfo.setPageSize(req.getPageSize());
+
+ return pageInfo;
}
@Override
- public List<InstanceSimpleInfoRes> listInstance(InstanceListReq req) {
+ public PageInfo<InstanceSimpleInfoRes> listInstance(InstanceListReq req) {
// Search from scheduler.
final InstanceListDto dto = InstanceListDto.builder()
.name(req.getName())
.pageNo(req.getPageNo())
.pageSize(req.getPageSize())
.build();
- final List<InstanceDto> list = iInstanceService.list(dto);
- return list.stream().map(this::translate).collect(Collectors.toList());
+ final PageData<InstanceDto> instancePageData = iInstanceService.list(dto);
+ final List<InstanceSimpleInfoRes> data = instancePageData.getData().stream().map(this::translate).collect(Collectors.toList());
+ final PageInfo<InstanceSimpleInfoRes> pageInfo = new PageInfo<>();
+ pageInfo.setData(data);
+ pageInfo.setTotalCount(instancePageData.getTotalCount());
+ pageInfo.setPageNo(req.getPageNo());
+ pageInfo.setPageSize(req.getPageSize());
+
+ return pageInfo;
}
@Override
diff --git a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/service/impl/UserServiceImpl.java b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/service/impl/UserServiceImpl.java
index ce8cb86d4..94b11c385 100644
--- a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/service/impl/UserServiceImpl.java
+++ b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/service/impl/UserServiceImpl.java
@@ -24,10 +24,12 @@ import org.apache.seatunnel.app.domain.dto.user.UpdateUserDto;
import org.apache.seatunnel.app.domain.request.user.AddUserReq;
import org.apache.seatunnel.app.domain.request.user.UpdateUserReq;
import org.apache.seatunnel.app.domain.request.user.UserListReq;
+import org.apache.seatunnel.app.domain.response.PageInfo;
import org.apache.seatunnel.app.domain.response.user.AddUserRes;
import org.apache.seatunnel.app.domain.response.user.UserSimpleInfoRes;
import org.apache.seatunnel.app.service.IUserService;
import org.apache.seatunnel.app.util.PasswordUtils;
+import org.apache.seatunnel.server.common.PageData;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@@ -86,14 +88,22 @@ public class UserServiceImpl implements IUserService {
}
@Override
- public List<UserSimpleInfoRes> list(UserListReq userListReq) {
+ public PageInfo<UserSimpleInfoRes> list(UserListReq userListReq) {
final ListUserDto dto = ListUserDto.builder()
.name(userListReq.getName())
.build();
- List<User> userList = userDaoImpl.list(dto, userListReq.getPageNo(), userListReq.getPageSize());
- return userList.stream().map(this::translate).collect(Collectors.toList());
+ final PageData<User> userPageData = userDaoImpl.list(dto, userListReq.getRealPageNo(), userListReq.getPageSize());
+
+ final List<UserSimpleInfoRes> data = userPageData.getData().stream().map(this::translate).collect(Collectors.toList());
+ final PageInfo<UserSimpleInfoRes> pageInfo = new PageInfo<>();
+ pageInfo.setPageNo(userListReq.getPageNo());
+ pageInfo.setPageSize(userListReq.getPageSize());
+ pageInfo.setData(data);
+ pageInfo.setTotalCount(userPageData.getTotalCount());
+
+ return pageInfo;
}
@Override
diff --git a/seatunnel-server/seatunnel-app/src/main/resources/org/apache/seatunnel/app/dal/mapper/ScriptMapper.xml b/seatunnel-server/seatunnel-app/src/main/resources/org/apache/seatunnel/app/dal/mapper/ScriptMapper.xml
index 210b4d769..c74563b9e 100644
--- a/seatunnel-server/seatunnel-app/src/main/resources/org/apache/seatunnel/app/dal/mapper/ScriptMapper.xml
+++ b/seatunnel-server/seatunnel-app/src/main/resources/org/apache/seatunnel/app/dal/mapper/ScriptMapper.xml
@@ -66,7 +66,7 @@
</select>
<select id="selectBySelectiveAndPage" resultMap="BaseResultMap">
select
- *
+ <include refid="Base_Column_List"/>
from script
<where>
<if test="script.name != null and script.name != ''">
@@ -86,4 +86,17 @@
and `creator_id` = #{creatorId,jdbcType=INTEGER}
and `status` != #{status,jdbcType=TINYINT}
</select>
+ <select id="countBySelectiveAndPage" resultType="java.lang.Integer">
+ select
+ count(1)
+ from script
+ <where>
+ <if test="script.name != null and script.name != ''">
+ and `name` = #{script.name,jdbcType=VARCHAR}
+ </if>
+ <if test="script.status != null">
+ and `status` = #{script.status,jdbcType=TINYINT}
+ </if>
+ </where>
+ </select>
</mapper>
diff --git a/seatunnel-server/seatunnel-app/src/main/resources/org/apache/seatunnel/app/dal/mapper/UserMapper.xml b/seatunnel-server/seatunnel-app/src/main/resources/org/apache/seatunnel/app/dal/mapper/UserMapper.xml
index d68d8828a..070729e84 100644
--- a/seatunnel-server/seatunnel-app/src/main/resources/org/apache/seatunnel/app/dal/mapper/UserMapper.xml
+++ b/seatunnel-server/seatunnel-app/src/main/resources/org/apache/seatunnel/app/dal/mapper/UserMapper.xml
@@ -80,4 +80,14 @@
from `user`
where username = #{username,jdbcType=VARCHAR}
</select>
+ <select id="countBySelective" resultType="java.lang.Integer">
+ select
+ count(1)
+ from `user`
+ <where>
+ <if test="user.username != null and user.username != ''">
+ and `username` = #{user.username,jdbcType=VARCHAR}
+ </if>
+ </where>
+ </select>
</mapper>
diff --git a/seatunnel-server/seatunnel-scheduler/seatunnel-scheduler-dolphinscheduler/src/main/java/org/apache/seatunnel/scheduler/dolphinscheduler/IDolphinschedulerService.java b/seatunnel-server/seatunnel-scheduler/seatunnel-scheduler-dolphinscheduler/src/main/java/org/apache/seatunnel/scheduler/dolphinscheduler/IDolphinschedulerService.java
index 0d026d68a..8e0769cae 100644
--- a/seatunnel-server/seatunnel-scheduler/seatunnel-scheduler-dolphinscheduler/src/main/java/org/apache/seatunnel/scheduler/dolphinscheduler/IDolphinschedulerService.java
+++ b/seatunnel-server/seatunnel-scheduler/seatunnel-scheduler-dolphinscheduler/src/main/java/org/apache/seatunnel/scheduler/dolphinscheduler/IDolphinschedulerService.java
@@ -25,6 +25,7 @@ import org.apache.seatunnel.scheduler.dolphinscheduler.dto.SchedulerDto;
import org.apache.seatunnel.scheduler.dolphinscheduler.dto.StartProcessDefinitionDto;
import org.apache.seatunnel.scheduler.dolphinscheduler.dto.TaskInstanceDto;
import org.apache.seatunnel.scheduler.dolphinscheduler.dto.UpdateProcessDefinitionDto;
+import org.apache.seatunnel.server.common.PageData;
import org.apache.seatunnel.spi.scheduler.dto.JobDto;
import java.util.List;
@@ -33,7 +34,7 @@ public interface IDolphinschedulerService {
ProcessDefinitionDto createOrUpdateProcessDefinition(UpdateProcessDefinitionDto dto);
- List<ProcessDefinitionDto> listProcessDefinition(ListProcessDefinitionDto dto);
+ PageData<ProcessDefinitionDto> listProcessDefinition(ListProcessDefinitionDto dto);
ProcessDefinitionDto fetchProcessDefinitionByName(String processDefinitionName);
@@ -53,7 +54,7 @@ public interface IDolphinschedulerService {
ResourceDto createOrUpdateScriptContent(String resourceName, String content);
- List<TaskInstanceDto> listTaskInstance(ListProcessInstanceDto dto);
+ PageData<TaskInstanceDto> listTaskInstance(ListProcessInstanceDto dto);
void deleteProcessDefinition(long code);
}
diff --git a/seatunnel-server/seatunnel-scheduler/seatunnel-scheduler-dolphinscheduler/src/main/java/org/apache/seatunnel/scheduler/dolphinscheduler/constants/DolphinschedulerConstants.java b/seatunnel-server/seatunnel-scheduler/seatunnel-scheduler-dolphinscheduler/src/main/java/org/apache/seatunnel/scheduler/dolphinscheduler/constants/DolphinschedulerConstants.java
index f6e8085e3..110a190ce 100644
--- a/seatunnel-server/seatunnel-scheduler/seatunnel-scheduler-dolphinscheduler/src/main/java/org/apache/seatunnel/scheduler/dolphinscheduler/constants/DolphinschedulerConstants.java
+++ b/seatunnel-server/seatunnel-scheduler/seatunnel-scheduler-dolphinscheduler/src/main/java/org/apache/seatunnel/scheduler/dolphinscheduler/constants/DolphinschedulerConstants.java
@@ -173,6 +173,7 @@ public class DolphinschedulerConstants {
*/
public static final String DATA = "data";
public static final String DATA_TOTAL_LIST = "totalList";
+ public static final String DATA_TOTAL = "total";
public static final String CODE = "code";
public static final int CODE_SUCCESS = 0;
public static final String MSG = "msg";
diff --git a/seatunnel-server/seatunnel-scheduler/seatunnel-scheduler-dolphinscheduler/src/main/java/org/apache/seatunnel/scheduler/dolphinscheduler/impl/DolphinschedulerServiceImpl.java b/seatunnel-server/seatunnel-scheduler/seatunnel-scheduler-dolphinscheduler/src/main/java/org/apache/seatunnel/scheduler/dolphinscheduler/impl/DolphinschedulerServiceImpl.java
index 698f9f15b..746192a9f 100644
--- a/seatunnel-server/seatunnel-scheduler/seatunnel-scheduler-dolphinscheduler/src/main/java/org/apache/seatunnel/scheduler/dolphinscheduler/impl/DolphinschedulerServiceImpl.java
+++ b/seatunnel-server/seatunnel-scheduler/seatunnel-scheduler-dolphinscheduler/src/main/java/org/apache/seatunnel/scheduler/dolphinscheduler/impl/DolphinschedulerServiceImpl.java
@@ -24,6 +24,7 @@ import static org.apache.seatunnel.scheduler.dolphinscheduler.constants.Dolphins
import static org.apache.seatunnel.scheduler.dolphinscheduler.constants.DolphinschedulerConstants.CREATE_SCHEDULE;
import static org.apache.seatunnel.scheduler.dolphinscheduler.constants.DolphinschedulerConstants.CRONTAB;
import static org.apache.seatunnel.scheduler.dolphinscheduler.constants.DolphinschedulerConstants.DATA;
+import static org.apache.seatunnel.scheduler.dolphinscheduler.constants.DolphinschedulerConstants.DATA_TOTAL;
import static org.apache.seatunnel.scheduler.dolphinscheduler.constants.DolphinschedulerConstants.DATA_TOTAL_LIST;
import static org.apache.seatunnel.scheduler.dolphinscheduler.constants.DolphinschedulerConstants.DEFAULT_FILE_SUFFIX;
import static org.apache.seatunnel.scheduler.dolphinscheduler.constants.DolphinschedulerConstants.DELAY_TIME_DEFAULT;
@@ -135,6 +136,7 @@ import org.apache.seatunnel.scheduler.dolphinscheduler.dto.TaskRelationDto;
import org.apache.seatunnel.scheduler.dolphinscheduler.dto.UpdateProcessDefinitionDto;
import org.apache.seatunnel.scheduler.dolphinscheduler.utils.HttpUtils;
import org.apache.seatunnel.server.common.DateUtils;
+import org.apache.seatunnel.server.common.PageData;
import org.apache.seatunnel.server.common.SeatunnelErrorEnum;
import org.apache.seatunnel.server.common.SeatunnelException;
import org.apache.seatunnel.spi.scheduler.dto.InstanceLogDto;
@@ -224,7 +226,7 @@ public class DolphinschedulerServiceImpl implements IDolphinschedulerService, In
}
@Override
- public List<ProcessDefinitionDto> listProcessDefinition(ListProcessDefinitionDto dto) {
+ public PageData<ProcessDefinitionDto> listProcessDefinition(ListProcessDefinitionDto dto) {
final Map result = HttpUtils.builder()
.withUrl(apiPrefix.concat(String.format(QUERY_LIST_PAGING, defaultProjectCode)))
.withMethod(Connection.Method.GET)
@@ -233,11 +235,16 @@ public class DolphinschedulerServiceImpl implements IDolphinschedulerService, In
.execute(Map.class);
checkResult(result, false);
- final List<Map<String, Object>> processDefinitionList = (List<Map<String, Object>>) MapUtils.getMap(result, DATA).get(DATA_TOTAL_LIST);
+ final Map map = MapUtils.getMap(result, DATA);
+ final int total = MapUtils.getIntValue(map, DATA_TOTAL);
+ final List<Map<String, Object>> processDefinitionList = (List<Map<String, Object>>) map.get(DATA_TOTAL_LIST);
+
if (CollectionUtils.isEmpty(processDefinitionList)) {
- return Collections.emptyList();
+ return new PageData<>(total, Collections.emptyList());
}
- return processDefinitionList.stream().map(m -> this.mapToPojo(m, ProcessDefinitionDto.class)).collect(Collectors.toList());
+ final List<ProcessDefinitionDto> data = processDefinitionList.stream().map(m -> this.mapToPojo(m, ProcessDefinitionDto.class)).collect(Collectors.toList());
+
+ return new PageData<>(total, data);
}
@Override
@@ -405,7 +412,7 @@ public class DolphinschedulerServiceImpl implements IDolphinschedulerService, In
}
@Override
- public List<TaskInstanceDto> listTaskInstance(ListProcessInstanceDto dto) {
+ public PageData<TaskInstanceDto> listTaskInstance(ListProcessInstanceDto dto) {
final Map result = HttpUtils.builder()
.withUrl(apiPrefix.concat(String.format(QUERY_TASK_LIST_PAGING, defaultProjectCode)))
.withMethod(Connection.Method.GET)
@@ -414,12 +421,15 @@ public class DolphinschedulerServiceImpl implements IDolphinschedulerService, In
.execute(Map.class);
checkResult(result, false);
- final List<Map<String, Object>> taskInstanceList = (List<Map<String, Object>>) MapUtils.getMap(result, DATA).get(DATA_TOTAL_LIST);
+ final Map map = MapUtils.getMap(result, DATA);
+ final List<Map<String, Object>> taskInstanceList = (List<Map<String, Object>>) map.get(DATA_TOTAL_LIST);
+ final int total = MapUtils.getIntValue(map, DATA_TOTAL);
if (CollectionUtils.isEmpty(taskInstanceList)) {
- return Collections.emptyList();
+ return PageData.empty();
}
- return taskInstanceList.stream().map(m -> this.mapToPojo(m, TaskInstanceDto.class)).collect(Collectors.toList());
+ final List<TaskInstanceDto> data = taskInstanceList.stream().map(m -> this.mapToPojo(m, TaskInstanceDto.class)).collect(Collectors.toList());
+ return new PageData<>(total, data);
}
@Override
diff --git a/seatunnel-server/seatunnel-scheduler/seatunnel-scheduler-dolphinscheduler/src/main/java/org/apache/seatunnel/scheduler/dolphinscheduler/impl/InstanceServiceImpl.java b/seatunnel-server/seatunnel-scheduler/seatunnel-scheduler-dolphinscheduler/src/main/java/org/apache/seatunnel/scheduler/dolphinscheduler/impl/InstanceServiceImpl.java
index 57615943c..1c7f7555d 100644
--- a/seatunnel-server/seatunnel-scheduler/seatunnel-scheduler-dolphinscheduler/src/main/java/org/apache/seatunnel/scheduler/dolphinscheduler/impl/InstanceServiceImpl.java
+++ b/seatunnel-server/seatunnel-scheduler/seatunnel-scheduler-dolphinscheduler/src/main/java/org/apache/seatunnel/scheduler/dolphinscheduler/impl/InstanceServiceImpl.java
@@ -20,6 +20,7 @@ package org.apache.seatunnel.scheduler.dolphinscheduler.impl;
import org.apache.seatunnel.scheduler.dolphinscheduler.IDolphinschedulerService;
import org.apache.seatunnel.scheduler.dolphinscheduler.dto.ListProcessInstanceDto;
import org.apache.seatunnel.scheduler.dolphinscheduler.dto.TaskInstanceDto;
+import org.apache.seatunnel.server.common.PageData;
import org.apache.seatunnel.spi.scheduler.IInstanceService;
import org.apache.seatunnel.spi.scheduler.dto.InstanceDto;
import org.apache.seatunnel.spi.scheduler.dto.InstanceListDto;
@@ -40,16 +41,16 @@ public class InstanceServiceImpl implements IInstanceService {
private IDolphinschedulerService iDolphinschedulerService;
@Override
- public List<InstanceDto> list(InstanceListDto dto) {
+ public PageData<InstanceDto> list(InstanceListDto dto) {
final ListProcessInstanceDto listDto = ListProcessInstanceDto.builder()
.processInstanceName(dto.getName())
.pageNo(dto.getPageNo())
.pageSize(dto.getPageSize())
.build();
- final List<TaskInstanceDto> taskInstanceDtos = iDolphinschedulerService.listTaskInstance(listDto);
+ final PageData<TaskInstanceDto> instancePageData = iDolphinschedulerService.listTaskInstance(listDto);
- return taskInstanceDtos.stream().map(t -> InstanceDto.builder()
+ final List<InstanceDto> data = instancePageData.getData().stream().map(t -> InstanceDto.builder()
.instanceId(t.getId())
.instanceCode(t.getProcessInstanceId())
.instanceName(t.getProcessInstanceName())
@@ -60,5 +61,6 @@ public class InstanceServiceImpl implements IInstanceService {
.executionDuration(t.getDuration())
.retryTimes(t.getRetryTimes())
.build()).collect(Collectors.toList());
+ return new PageData<>(instancePageData.getTotalCount(), data);
}
}
diff --git a/seatunnel-server/seatunnel-scheduler/seatunnel-scheduler-dolphinscheduler/src/main/java/org/apache/seatunnel/scheduler/dolphinscheduler/impl/JobServiceImpl.java b/seatunnel-server/seatunnel-scheduler/seatunnel-scheduler-dolphinscheduler/src/main/java/org/apache/seatunnel/scheduler/dolphinscheduler/impl/JobServiceImpl.java
index 495eeb146..5aef2ad82 100644
--- a/seatunnel-server/seatunnel-scheduler/seatunnel-scheduler-dolphinscheduler/src/main/java/org/apache/seatunnel/scheduler/dolphinscheduler/impl/JobServiceImpl.java
+++ b/seatunnel-server/seatunnel-scheduler/seatunnel-scheduler-dolphinscheduler/src/main/java/org/apache/seatunnel/scheduler/dolphinscheduler/impl/JobServiceImpl.java
@@ -44,6 +44,7 @@ import org.apache.seatunnel.scheduler.dolphinscheduler.dto.StartProcessDefinitio
import org.apache.seatunnel.scheduler.dolphinscheduler.dto.TaskDescriptionDto;
import org.apache.seatunnel.scheduler.dolphinscheduler.dto.UpdateProcessDefinitionDto;
import org.apache.seatunnel.server.common.DateUtils;
+import org.apache.seatunnel.server.common.PageData;
import org.apache.seatunnel.server.common.SeatunnelErrorEnum;
import org.apache.seatunnel.server.common.SeatunnelException;
import org.apache.seatunnel.spi.scheduler.IInstanceService;
@@ -103,22 +104,23 @@ public class JobServiceImpl implements IJobService {
}
@Override
- public List<JobSimpleInfoDto> list(JobListDto dto) {
+ public PageData<JobSimpleInfoDto> list(JobListDto dto) {
final ListProcessDefinitionDto listDto = ListProcessDefinitionDto.builder()
.name(dto.getName())
.pageNo(dto.getPageNo())
.pageSize(dto.getPageSize())
.build();
- final List<ProcessDefinitionDto> processDefinitionDtos = iDolphinschedulerService.listProcessDefinition(listDto);
- return processDefinitionDtos.stream().map(p -> JobSimpleInfoDto.builder()
- .jobId(p.getCode())
- .jobStatus(p.getReleaseState())
- .createTime(p.getCreateTime())
- .updateTime(p.getUpdateTime())
- .creatorName(p.getUserName())
- .menderName(p.getUserName())
- .build())
+ final PageData<ProcessDefinitionDto> processPageData = iDolphinschedulerService.listProcessDefinition(listDto);
+ final List<JobSimpleInfoDto> data = processPageData.getData().stream().map(p -> JobSimpleInfoDto.builder()
+ .jobId(p.getCode())
+ .jobStatus(p.getReleaseState())
+ .createTime(p.getCreateTime())
+ .updateTime(p.getUpdateTime())
+ .creatorName(p.getUserName())
+ .menderName(p.getUserName())
+ .build())
.collect(Collectors.toList());
+ return new PageData<>(processPageData.getTotalCount(), data);
}
@Override
@@ -183,9 +185,9 @@ public class JobServiceImpl implements IJobService {
.pageSize(PAGE_SIZE_MIN)
.name(processDefinition.getName())
.build();
- final List<InstanceDto> list = iInstanceService.list(instanceListDto);
- if (!CollectionUtils.isEmpty(list)) {
- instanceDto = list.get(0);
+ final PageData<InstanceDto> instancePageData = iInstanceService.list(instanceListDto);
+ if (!CollectionUtils.isEmpty(instancePageData.getData())) {
+ instanceDto = instancePageData.getData().get(0);
break;
}
try {
diff --git a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/dal/dao/IUserDao.java b/seatunnel-server/seatunnel-server-common/src/main/java/org/apache/seatunnel/server/common/PageData.java
similarity index 59%
copy from seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/dal/dao/IUserDao.java
copy to seatunnel-server/seatunnel-server-common/src/main/java/org/apache/seatunnel/server/common/PageData.java
index 2572efe97..85cc07054 100644
--- a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/dal/dao/IUserDao.java
+++ b/seatunnel-server/seatunnel-server-common/src/main/java/org/apache/seatunnel/server/common/PageData.java
@@ -15,28 +15,31 @@
* limitations under the License.
*/
-package org.apache.seatunnel.app.dal.dao;
+package org.apache.seatunnel.server.common;
-import org.apache.seatunnel.app.dal.entity.User;
-import org.apache.seatunnel.app.domain.dto.user.ListUserDto;
-import org.apache.seatunnel.app.domain.dto.user.UpdateUserDto;
+import lombok.Data;
+import java.util.Collections;
import java.util.List;
-public interface IUserDao {
- int add(UpdateUserDto dto);
-
- void checkUserExists(String username);
-
- void update(UpdateUserDto dto);
-
- void delete(int id);
-
- void enable(int id);
-
- void disable(int id);
-
- List<User> list(ListUserDto dto, int pageNo, int pageSize);
-
- User getById(int operatorId);
+@Data
+public class PageData<T> {
+ private int totalCount;
+ private List<T> data;
+
+ public PageData(int totalCount, List<T> data) {
+ this.totalCount = totalCount;
+ this.data = data;
+ }
+
+ public static <T> PageData<T> empty() {
+ return new PageData<>(0, Collections.emptyList());
+ }
+
+ public List<T> getData() {
+ if (data == null || data.size() == 0) {
+ return Collections.emptyList();
+ }
+ return data;
+ }
}
diff --git a/seatunnel-server/seatunnel-spi/src/main/java/org/apache/seatunnel/spi/scheduler/IInstanceService.java b/seatunnel-server/seatunnel-spi/src/main/java/org/apache/seatunnel/spi/scheduler/IInstanceService.java
index 80572b1cf..ab7f6ddc3 100644
--- a/seatunnel-server/seatunnel-spi/src/main/java/org/apache/seatunnel/spi/scheduler/IInstanceService.java
+++ b/seatunnel-server/seatunnel-spi/src/main/java/org/apache/seatunnel/spi/scheduler/IInstanceService.java
@@ -17,11 +17,10 @@
package org.apache.seatunnel.spi.scheduler;
+import org.apache.seatunnel.server.common.PageData;
import org.apache.seatunnel.spi.scheduler.dto.InstanceDto;
import org.apache.seatunnel.spi.scheduler.dto.InstanceListDto;
-import java.util.List;
-
public interface IInstanceService {
- List<InstanceDto> list(InstanceListDto dto);
+ PageData<InstanceDto> list(InstanceListDto dto);
}
diff --git a/seatunnel-server/seatunnel-spi/src/main/java/org/apache/seatunnel/spi/scheduler/IJobService.java b/seatunnel-server/seatunnel-spi/src/main/java/org/apache/seatunnel/spi/scheduler/IJobService.java
index cd9fcd3d9..e160fc36d 100644
--- a/seatunnel-server/seatunnel-spi/src/main/java/org/apache/seatunnel/spi/scheduler/IJobService.java
+++ b/seatunnel-server/seatunnel-spi/src/main/java/org/apache/seatunnel/spi/scheduler/IJobService.java
@@ -17,21 +17,20 @@
package org.apache.seatunnel.spi.scheduler;
+import org.apache.seatunnel.server.common.PageData;
import org.apache.seatunnel.spi.scheduler.dto.ExecuteDto;
import org.apache.seatunnel.spi.scheduler.dto.InstanceDto;
import org.apache.seatunnel.spi.scheduler.dto.JobDto;
import org.apache.seatunnel.spi.scheduler.dto.JobListDto;
import org.apache.seatunnel.spi.scheduler.dto.JobSimpleInfoDto;
-import java.util.List;
-
public interface IJobService {
long submitJob(JobDto dto);
void offlineJob(JobDto dto);
- List<JobSimpleInfoDto> list(JobListDto dto);
+ PageData<JobSimpleInfoDto> list(JobListDto dto);
InstanceDto execute(ExecuteDto dto);
}