This is an automated email from the ASF dual-hosted git repository.

healchow pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/inlong.git


The following commit(s) were added to refs/heads/master by this push:
     new bfbfcab17 [INLONG-5285][Manager] Support custom query for group, 
stream, source and sink (#5287)
bfbfcab17 is described below

commit bfbfcab17e98da4da66df710e800506783e7db48
Author: ciscozhou <[email protected]>
AuthorDate: Sun Jul 31 17:22:11 2022 +0800

    [INLONG-5285][Manager] Support custom query for group, stream, source and 
sink (#5287)
---
 .../manager/common/enums/OrderFieldEnum.java}      | 39 ++++++++--------------
 .../manager/common/enums/OrderTypeEnum.java}       | 39 ++++++++--------------
 .../resources/mappers/InlongGroupEntityMapper.xml  |  9 ++++-
 .../resources/mappers/InlongStreamEntityMapper.xml |  9 ++++-
 .../resources/mappers/StreamSinkEntityMapper.xml   |  9 ++++-
 .../resources/mappers/StreamSourceEntityMapper.xml |  9 ++++-
 .../inlong/manager/pojo/common/PageRequest.java    | 28 ++++++++++++++--
 .../service/group/InlongGroupServiceImpl.java      |  4 +++
 .../service/sink/StreamSinkServiceImpl.java        |  4 +++
 .../service/source/StreamSourceServiceImpl.java    |  4 +++
 .../service/stream/InlongStreamServiceImpl.java    |  4 +++
 11 files changed, 102 insertions(+), 56 deletions(-)

diff --git 
a/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/common/PageRequest.java
 
b/inlong-manager/manager-common/src/main/java/org/apache/inlong/manager/common/enums/OrderFieldEnum.java
similarity index 50%
copy from 
inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/common/PageRequest.java
copy to 
inlong-manager/manager-common/src/main/java/org/apache/inlong/manager/common/enums/OrderFieldEnum.java
index 2589100b2..1595d94b7 100644
--- 
a/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/common/PageRequest.java
+++ 
b/inlong-manager/manager-common/src/main/java/org/apache/inlong/manager/common/enums/OrderFieldEnum.java
@@ -15,38 +15,27 @@
  * limitations under the License.
  */
 
-package org.apache.inlong.manager.pojo.common;
+package org.apache.inlong.manager.common.enums;
 
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
+import org.apache.inlong.manager.common.beans.PageRequest;
 
 /**
- * Pagination request
+ * The order field enumeration.
  */
-@ApiModel(value = "Pagination request")
-public class PageRequest {
+public enum OrderFieldEnum {
 
-    @ApiModelProperty(value = "current page, default 1", required = true, 
example = "1")
-    private int pageNum = 1;
+    CREATE_TIME,
 
-    @ApiModelProperty(value = "page size, default 10", required = true, 
example = "10")
-    private int pageSize = 10;
+    MODIFY_TIME;
 
-    public int getPageNum() {
-        return pageNum;
+    public static void checkOrderField(PageRequest pageRequest) {
+        for (OrderFieldEnum value : values()) {
+            if (value.name().equalsIgnoreCase(pageRequest.getOrderField())) {
+                pageRequest.setOrderField(value.name().toLowerCase());
+                return;
+            }
+        }
+        pageRequest.setOrderField(CREATE_TIME.name().toLowerCase());
     }
 
-    public PageRequest setPageNum(int pageNum) {
-        this.pageNum = pageNum;
-        return this;
-    }
-
-    public int getPageSize() {
-        return pageSize;
-    }
-
-    public PageRequest setPageSize(int pageSize) {
-        this.pageSize = pageSize;
-        return this;
-    }
 }
diff --git 
a/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/common/PageRequest.java
 
b/inlong-manager/manager-common/src/main/java/org/apache/inlong/manager/common/enums/OrderTypeEnum.java
similarity index 50%
copy from 
inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/common/PageRequest.java
copy to 
inlong-manager/manager-common/src/main/java/org/apache/inlong/manager/common/enums/OrderTypeEnum.java
index 2589100b2..03f509e8c 100644
--- 
a/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/common/PageRequest.java
+++ 
b/inlong-manager/manager-common/src/main/java/org/apache/inlong/manager/common/enums/OrderTypeEnum.java
@@ -15,38 +15,27 @@
  * limitations under the License.
  */
 
-package org.apache.inlong.manager.pojo.common;
+package org.apache.inlong.manager.common.enums;
 
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
+import org.apache.inlong.manager.common.beans.PageRequest;
 
 /**
- * Pagination request
+ * The order type enumeration.
  */
-@ApiModel(value = "Pagination request")
-public class PageRequest {
+public enum OrderTypeEnum {
 
-    @ApiModelProperty(value = "current page, default 1", required = true, 
example = "1")
-    private int pageNum = 1;
+    DESC,
 
-    @ApiModelProperty(value = "page size, default 10", required = true, 
example = "10")
-    private int pageSize = 10;
+    ASC;
 
-    public int getPageNum() {
-        return pageNum;
+    public static void checkOrderType(PageRequest pageRequest) {
+        for (OrderTypeEnum value : values()) {
+            if (value.name().equalsIgnoreCase(pageRequest.getOrderType())) {
+                pageRequest.setOrderType(value.name().toLowerCase());
+                return;
+            }
+        }
+        pageRequest.setOrderType(DESC.name().toLowerCase());
     }
 
-    public PageRequest setPageNum(int pageNum) {
-        this.pageNum = pageNum;
-        return this;
-    }
-
-    public int getPageSize() {
-        return pageSize;
-    }
-
-    public PageRequest setPageSize(int pageSize) {
-        this.pageSize = pageSize;
-        return this;
-    }
 }
diff --git 
a/inlong-manager/manager-dao/src/main/resources/mappers/InlongGroupEntityMapper.xml
 
b/inlong-manager/manager-dao/src/main/resources/mappers/InlongGroupEntityMapper.xml
index 1863ea0c1..f2b2b29e0 100644
--- 
a/inlong-manager/manager-dao/src/main/resources/mappers/InlongGroupEntityMapper.xml
+++ 
b/inlong-manager/manager-dao/src/main/resources/mappers/InlongGroupEntityMapper.xml
@@ -154,7 +154,14 @@
                 </foreach>
             </if>
         </where>
-        order by modify_time desc
+        <choose>
+            <when test="orderField != null and orderField != '' and orderType 
!= null and orderType != ''">
+                order by ${orderField} ${orderType}
+            </when>
+            <otherwise>
+                order by create_time desc
+            </otherwise>
+        </choose>
     </select>
     <select id="selectBriefList" 
parameterType="org.apache.inlong.manager.pojo.group.InlongGroupPageRequest"
             
resultType="org.apache.inlong.manager.pojo.group.InlongGroupBriefInfo">
diff --git 
a/inlong-manager/manager-dao/src/main/resources/mappers/InlongStreamEntityMapper.xml
 
b/inlong-manager/manager-dao/src/main/resources/mappers/InlongStreamEntityMapper.xml
index b444a557e..f6b3a549a 100644
--- 
a/inlong-manager/manager-dao/src/main/resources/mappers/InlongStreamEntityMapper.xml
+++ 
b/inlong-manager/manager-dao/src/main/resources/mappers/InlongStreamEntityMapper.xml
@@ -262,7 +262,14 @@
                 and stream.status = #{request.status, jdbcType=INTEGER}
             </if>
         </where>
-        order by stream.modify_time desc
+        <choose>
+            <when test="request.orderField != null and request.orderField != 
'' and request.orderType != null and request.orderType != ''">
+                order by stream.${request.orderField} ${request.orderType}
+            </when>
+            <otherwise>
+                order by stream.create_time desc
+            </otherwise>
+        </choose>
     </select>
     <select id="selectBriefList" 
resultType="org.apache.inlong.manager.pojo.stream.InlongStreamBriefInfo">
         select id, inlong_group_id, inlong_stream_id, name, mq_resource, 
modify_time
diff --git 
a/inlong-manager/manager-dao/src/main/resources/mappers/StreamSinkEntityMapper.xml
 
b/inlong-manager/manager-dao/src/main/resources/mappers/StreamSinkEntityMapper.xml
index fd2329bdb..ee65e9326 100644
--- 
a/inlong-manager/manager-dao/src/main/resources/mappers/StreamSinkEntityMapper.xml
+++ 
b/inlong-manager/manager-dao/src/main/resources/mappers/StreamSinkEntityMapper.xml
@@ -235,8 +235,15 @@
             <if test="request.sortConsumerGroup != null and 
request.sortConsumerGroup != ''">
                 and sort_consumer_group = #{request.sortConsumerGroup, 
jdbcType=VARCHAR}
             </if>
-            order by modify_time desc
         </where>
+        <choose>
+            <when test="request.orderField != null and request.orderField != 
'' and request.orderType != null and request.orderType != ''">
+                order by ${request.orderField} ${request.orderType}
+            </when>
+            <otherwise>
+                order by create_time desc
+            </otherwise>
+        </choose>
     </select>
     <select id="selectSummary"
             resultType="org.apache.inlong.manager.pojo.sink.SinkBriefInfo">
diff --git 
a/inlong-manager/manager-dao/src/main/resources/mappers/StreamSourceEntityMapper.xml
 
b/inlong-manager/manager-dao/src/main/resources/mappers/StreamSourceEntityMapper.xml
index cd5c08547..7b64a8c18 100644
--- 
a/inlong-manager/manager-dao/src/main/resources/mappers/StreamSourceEntityMapper.xml
+++ 
b/inlong-manager/manager-dao/src/main/resources/mappers/StreamSourceEntityMapper.xml
@@ -125,8 +125,15 @@
             <if test="request.status != null and request.status != ''">
                 and status = #{request.status, jdbcType=INTEGER}
             </if>
-            order by modify_time desc
         </where>
+        <choose>
+            <when test="request.orderField != null and request.orderField != 
'' and request.orderType != null and request.orderType != ''">
+                order by ${request.orderField} ${request.orderType}
+            </when>
+            <otherwise>
+                order by create_time desc
+            </otherwise>
+        </choose>
     </select>
     <select id="selectByAgentIp" 
resultType="org.apache.inlong.manager.dao.entity.StreamSourceEntity">
         select
diff --git 
a/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/common/PageRequest.java
 
b/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/common/PageRequest.java
index 2589100b2..8c1a105c8 100644
--- 
a/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/common/PageRequest.java
+++ 
b/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/common/PageRequest.java
@@ -26,12 +26,36 @@ import io.swagger.annotations.ApiModelProperty;
 @ApiModel(value = "Pagination request")
 public class PageRequest {
 
-    @ApiModelProperty(value = "current page, default 1", required = true, 
example = "1")
+    @ApiModelProperty(value = "Current page number, default is 1")
     private int pageNum = 1;
 
-    @ApiModelProperty(value = "page size, default 10", required = true, 
example = "10")
+    @ApiModelProperty(value = "Page size, default is 10")
     private int pageSize = 10;
 
+    @ApiModelProperty(value = "Order field, support create_time and 
modify_time, default is create_time")
+    private String orderField = "create_time";
+
+    @ApiModelProperty(value = "Order type, only support asc and desc, default 
is desc")
+    private String orderType = "desc";
+
+    public String getOrderField() {
+        return orderField;
+    }
+
+    public PageRequest setOrderField(String orderField) {
+        this.orderField = orderField;
+        return this;
+    }
+
+    public String getOrderType() {
+        return orderType;
+    }
+
+    public PageRequest setOrderType(String orderType) {
+        this.orderType = orderType;
+        return this;
+    }
+
     public int getPageNum() {
         return pageNum;
     }
diff --git 
a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/group/InlongGroupServiceImpl.java
 
b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/group/InlongGroupServiceImpl.java
index 771b84347..fc8014db8 100644
--- 
a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/group/InlongGroupServiceImpl.java
+++ 
b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/group/InlongGroupServiceImpl.java
@@ -27,6 +27,8 @@ import org.apache.commons.lang3.StringUtils;
 import org.apache.inlong.manager.common.consts.InlongConstants;
 import org.apache.inlong.manager.common.enums.ErrorCodeEnum;
 import org.apache.inlong.manager.common.enums.GroupStatus;
+import org.apache.inlong.manager.common.enums.OrderFieldEnum;
+import org.apache.inlong.manager.common.enums.OrderTypeEnum;
 import org.apache.inlong.manager.common.enums.SourceType;
 import org.apache.inlong.manager.common.exceptions.BusinessException;
 import org.apache.inlong.manager.common.exceptions.WorkflowListenerException;
@@ -176,6 +178,8 @@ public class InlongGroupServiceImpl implements 
InlongGroupService {
             request.setPageSize(MAX_PAGE_SIZE);
         }
         PageHelper.startPage(request.getPageNum(), request.getPageSize());
+        OrderFieldEnum.checkOrderField(request);
+        OrderTypeEnum.checkOrderType(request);
         Page<InlongGroupEntity> entityPage = (Page<InlongGroupEntity>) 
groupMapper.selectByCondition(request);
 
         List<InlongGroupBriefInfo> briefInfos = 
CommonBeanUtils.copyListProperties(entityPage,
diff --git 
a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/sink/StreamSinkServiceImpl.java
 
b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/sink/StreamSinkServiceImpl.java
index 8c66461de..8e6bceb6e 100644
--- 
a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/sink/StreamSinkServiceImpl.java
+++ 
b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/sink/StreamSinkServiceImpl.java
@@ -27,6 +27,8 @@ import org.apache.commons.lang3.StringUtils;
 import org.apache.inlong.manager.common.consts.InlongConstants;
 import org.apache.inlong.manager.common.enums.ErrorCodeEnum;
 import org.apache.inlong.manager.common.enums.GroupStatus;
+import org.apache.inlong.manager.common.enums.OrderFieldEnum;
+import org.apache.inlong.manager.common.enums.OrderTypeEnum;
 import org.apache.inlong.manager.common.enums.SinkStatus;
 import org.apache.inlong.manager.common.enums.SinkType;
 import org.apache.inlong.manager.common.exceptions.BusinessException;
@@ -183,6 +185,8 @@ public class StreamSinkServiceImpl implements 
StreamSinkService {
         Preconditions.checkNotNull(request.getInlongGroupId(), 
ErrorCodeEnum.GROUP_ID_IS_EMPTY.getMessage());
 
         PageHelper.startPage(request.getPageNum(), request.getPageSize());
+        OrderFieldEnum.checkOrderField(request);
+        OrderTypeEnum.checkOrderType(request);
         List<StreamSinkEntity> entityPage = 
sinkMapper.selectByCondition(request);
         Map<SinkType, Page<StreamSinkEntity>> sinkMap = Maps.newHashMap();
         for (StreamSinkEntity streamSink : entityPage) {
diff --git 
a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/source/StreamSourceServiceImpl.java
 
b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/source/StreamSourceServiceImpl.java
index 9021818b7..eeb8315a4 100644
--- 
a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/source/StreamSourceServiceImpl.java
+++ 
b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/source/StreamSourceServiceImpl.java
@@ -27,6 +27,8 @@ import org.apache.commons.lang3.StringUtils;
 import org.apache.inlong.manager.common.consts.InlongConstants;
 import org.apache.inlong.manager.common.enums.ErrorCodeEnum;
 import org.apache.inlong.manager.common.enums.GroupStatus;
+import org.apache.inlong.manager.common.enums.OrderFieldEnum;
+import org.apache.inlong.manager.common.enums.OrderTypeEnum;
 import org.apache.inlong.manager.common.enums.SourceStatus;
 import org.apache.inlong.manager.common.enums.SourceType;
 import org.apache.inlong.manager.common.exceptions.BusinessException;
@@ -171,6 +173,8 @@ public class StreamSourceServiceImpl implements 
StreamSourceService {
         Preconditions.checkNotNull(request.getInlongGroupId(), 
ErrorCodeEnum.GROUP_ID_IS_EMPTY.getMessage());
 
         PageHelper.startPage(request.getPageNum(), request.getPageSize());
+        OrderFieldEnum.checkOrderField(request);
+        OrderTypeEnum.checkOrderType(request);
         List<StreamSourceEntity> entityList = 
sourceMapper.selectByCondition(request);
 
         // Encapsulate the paging query results into the PageInfo object to 
obtain related paging information
diff --git 
a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/stream/InlongStreamServiceImpl.java
 
b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/stream/InlongStreamServiceImpl.java
index c305661e8..5c00ed54c 100644
--- 
a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/stream/InlongStreamServiceImpl.java
+++ 
b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/stream/InlongStreamServiceImpl.java
@@ -25,6 +25,8 @@ import org.apache.commons.lang3.StringUtils;
 import org.apache.inlong.manager.common.consts.InlongConstants;
 import org.apache.inlong.manager.common.enums.ErrorCodeEnum;
 import org.apache.inlong.manager.common.enums.GroupStatus;
+import org.apache.inlong.manager.common.enums.OrderFieldEnum;
+import org.apache.inlong.manager.common.enums.OrderTypeEnum;
 import org.apache.inlong.manager.common.enums.StreamStatus;
 import org.apache.inlong.manager.common.exceptions.BusinessException;
 import org.apache.inlong.manager.pojo.sink.SinkBriefInfo;
@@ -201,6 +203,8 @@ public class InlongStreamServiceImpl implements 
InlongStreamService {
         LOGGER.debug("begin to list inlong stream page by {}", request);
 
         PageHelper.startPage(request.getPageNum(), request.getPageSize());
+        OrderFieldEnum.checkOrderField(request);
+        OrderTypeEnum.checkOrderType(request);
         Page<InlongStreamEntity> entityPage = (Page<InlongStreamEntity>) 
streamMapper.selectByCondition(request);
         List<InlongStreamBriefInfo> streamList = 
CommonBeanUtils.copyListProperties(entityPage,
                 InlongStreamBriefInfo::new);

Reply via email to