From f9c241c5a90ae215caa5fe48dd953905ee2137bf Mon Sep 17 00:00:00 2001 From: peng-yongsheng <8082209@qq.com> Date: Fri, 2 Mar 2018 13:31:40 +0800 Subject: [PATCH] Pagination calculate --- .../apm/collector/ui/query/AlarmQuery.java | 10 ++-- .../collector/ui/utils/PaginationUtils.java | 53 +++++++++++++++++++ .../ui/utils/PaginationUtilsTestCase.java | 48 +++++++++++++++++ 3 files changed, 106 insertions(+), 5 deletions(-) create mode 100644 apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/utils/PaginationUtils.java create mode 100644 apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/test/java/org/apache/skywalking/apm/collector/ui/utils/PaginationUtilsTestCase.java diff --git a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/query/AlarmQuery.java b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/query/AlarmQuery.java index 6b1df8d77b..acbd6fe890 100644 --- a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/query/AlarmQuery.java +++ b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/query/AlarmQuery.java @@ -28,6 +28,7 @@ import org.apache.skywalking.apm.collector.storage.ui.common.Pagination; import org.apache.skywalking.apm.collector.ui.graphql.Query; import org.apache.skywalking.apm.collector.ui.service.AlarmService; import org.apache.skywalking.apm.collector.ui.utils.DurationUtils; +import org.apache.skywalking.apm.collector.ui.utils.PaginationUtils; /** * @author peng-yongsheng @@ -53,16 +54,15 @@ public class AlarmQuery implements Query { long start = DurationUtils.INSTANCE.durationToSecondTimeBucket(duration.getStep(), duration.getStart()) / 100; long end = DurationUtils.INSTANCE.durationToSecondTimeBucket(duration.getStep(), duration.getEnd()) / 100; - int limit = paging.getPageSize(); - int from = paging.getPageSize() * paging.getPageNum(); + PaginationUtils.Page page = PaginationUtils.INSTANCE.exchange(paging); switch (alarmType) { case APPLICATION: - return getAlarmService().loadApplicationAlarmList(keyword, start, end, limit, from); + return getAlarmService().loadApplicationAlarmList(keyword, start, end, page.getLimit(), page.getFrom()); case SERVER: - return getAlarmService().loadInstanceAlarmList(keyword, start, end, limit, from); + return getAlarmService().loadInstanceAlarmList(keyword, start, end, page.getLimit(), page.getFrom()); case SERVICE: - return getAlarmService().loadServiceAlarmList(keyword, start, end, limit, from); + return getAlarmService().loadServiceAlarmList(keyword, start, end, page.getLimit(), page.getFrom()); default: return new Alarm(); } diff --git a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/utils/PaginationUtils.java b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/utils/PaginationUtils.java new file mode 100644 index 0000000000..9250b138aa --- /dev/null +++ b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/main/java/org/apache/skywalking/apm/collector/ui/utils/PaginationUtils.java @@ -0,0 +1,53 @@ +/* + * 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.skywalking.apm.collector.ui.utils; + +import org.apache.skywalking.apm.collector.storage.ui.common.Pagination; + +/** + * @author peng-yongsheng + */ +public enum PaginationUtils { + INSTANCE; + + public Page exchange(Pagination paging) { + int limit = paging.getPageSize(); + int from = paging.getPageSize() * (paging.getPageNum() - 1); + + return new Page(from, limit); + } + + public class Page { + private int from; + private int limit; + + Page(int from, int limit) { + this.from = from; + this.limit = limit; + } + + public int getFrom() { + return from; + } + + public int getLimit() { + return limit; + } + } +} diff --git a/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/test/java/org/apache/skywalking/apm/collector/ui/utils/PaginationUtilsTestCase.java b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/test/java/org/apache/skywalking/apm/collector/ui/utils/PaginationUtilsTestCase.java new file mode 100644 index 0000000000..782d5ff1c3 --- /dev/null +++ b/apm-collector/apm-collector-ui/collector-ui-jetty-provider/src/test/java/org/apache/skywalking/apm/collector/ui/utils/PaginationUtilsTestCase.java @@ -0,0 +1,48 @@ +/* + * 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.skywalking.apm.collector.ui.utils; + +import org.apache.skywalking.apm.collector.storage.ui.common.Pagination; +import org.junit.Assert; +import org.junit.Test; + +/** + * @author peng-yongsheng + */ +public class PaginationUtilsTestCase { + + @Test + public void test() { + Pagination pagination = new Pagination(); + pagination.setPageSize(10); + pagination.setPageNum(1); + + PaginationUtils.Page page = PaginationUtils.INSTANCE.exchange(pagination); + Assert.assertEquals(0, page.getFrom()); + Assert.assertEquals(10, page.getLimit()); + + pagination = new Pagination(); + pagination.setPageSize(10); + pagination.setPageNum(2); + + page = PaginationUtils.INSTANCE.exchange(pagination); + Assert.assertEquals(10, page.getFrom()); + Assert.assertEquals(10, page.getLimit()); + } +} -- GitLab