You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by al...@apache.org on 2014/07/28 23:55:27 UTC
[2/4] git commit: updated refs/heads/master to fa74b3a
listNetworks: moved pagination post processing to StringUtils class
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/ca8d3672
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/ca8d3672
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/ca8d3672
Branch: refs/heads/master
Commit: ca8d3672e8d319f7bc6db516e58e3dbb7b225487
Parents: 9a94bc2
Author: Alena Prokharchyk <al...@citrix.com>
Authored: Mon Jul 28 13:51:50 2014 -0700
Committer: Alena Prokharchyk <al...@citrix.com>
Committed: Mon Jul 28 14:43:55 2014 -0700
----------------------------------------------------------------------
.../com/cloud/network/NetworkServiceImpl.java | 32 +++++---------------
utils/src/com/cloud/utils/StringUtils.java | 28 +++++++++++++++++
2 files changed, 35 insertions(+), 25 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ca8d3672/server/src/com/cloud/network/NetworkServiceImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/network/NetworkServiceImpl.java b/server/src/com/cloud/network/NetworkServiceImpl.java
index b154fd9..4ac1bea 100755
--- a/server/src/com/cloud/network/NetworkServiceImpl.java
+++ b/server/src/com/cloud/network/NetworkServiceImpl.java
@@ -40,9 +40,6 @@ import javax.ejb.Local;
import javax.inject.Inject;
import javax.naming.ConfigurationException;
-import com.cloud.network.security.SecurityGroupService;
-import org.apache.log4j.Logger;
-
import org.apache.cloudstack.acl.ControlledEntity.ACLType;
import org.apache.cloudstack.acl.SecurityChecker.AccessType;
import org.apache.cloudstack.api.command.admin.network.CreateNetworkCmdByAdmin;
@@ -57,6 +54,7 @@ import org.apache.cloudstack.context.CallContext;
import org.apache.cloudstack.engine.orchestration.service.NetworkOrchestrationService;
import org.apache.cloudstack.framework.config.dao.ConfigurationDao;
import org.apache.cloudstack.network.element.InternalLoadBalancerElementService;
+import org.apache.log4j.Logger;
import com.cloud.api.ApiDBUtils;
import com.cloud.configuration.Config;
@@ -129,6 +127,7 @@ import com.cloud.network.rules.FirewallRule.Purpose;
import com.cloud.network.rules.FirewallRuleVO;
import com.cloud.network.rules.RulesManager;
import com.cloud.network.rules.dao.PortForwardingRulesDao;
+import com.cloud.network.security.SecurityGroupService;
import com.cloud.network.vpc.NetworkACL;
import com.cloud.network.vpc.PrivateIpVO;
import com.cloud.network.vpc.Vpc;
@@ -1624,33 +1623,16 @@ public class NetworkServiceImpl extends ManagerBase implements NetworkService {
}
//Now apply pagination
- //Most likely pageSize will never exceed int value, and we need integer to partition the listToReturn
- boolean notNull = cmd.getStartIndex() != null && cmd.getPageSizeVal() != null;
- if (notNull && cmd.getStartIndex() <= Integer.MAX_VALUE && cmd.getStartIndex() >= Integer.MIN_VALUE && cmd.getPageSizeVal() <= Integer.MAX_VALUE
- && cmd.getPageSizeVal() >= Integer.MIN_VALUE) {
- int index = cmd.getStartIndex().intValue() == 0 ? 0 : cmd.getStartIndex().intValue() / cmd.getPageSizeVal().intValue();
- List<NetworkVO> wPagination = new ArrayList<NetworkVO>();
- List<List<NetworkVO>> partitions = partitionNetworks(networksToReturn, cmd.getPageSizeVal().intValue());
- if (index < partitions.size()) {
- wPagination = partitions.get(index);
- }
- return new Pair<List<? extends Network>, Integer>(wPagination, networksToReturn.size());
+ List<?> wPagination = StringUtils.applyPagination(networksToReturn, cmd.getStartIndex(), cmd.getPageSizeVal());
+ if (wPagination != null) {
+ @SuppressWarnings("unchecked")
+ Pair<List<? extends Network>, Integer> listWPagination = new Pair<List<? extends Network>, Integer>((List<NetworkVO>) wPagination, networksToReturn.size());
+ return listWPagination;
}
return new Pair<List<? extends Network>, Integer>(networksToReturn, networksToReturn.size());
}
- private static List<List<NetworkVO>> partitionNetworks(List<NetworkVO> originalList, int chunkSize) {
- List<List<NetworkVO>> listOfChunks = new ArrayList<List<NetworkVO>>();
- for (int i = 0; i < originalList.size() / chunkSize; i++) {
- listOfChunks.add(originalList.subList(i * chunkSize, i * chunkSize + chunkSize));
- }
- if (originalList.size() % chunkSize != 0) {
- listOfChunks.add(originalList.subList(originalList.size() - originalList.size() % chunkSize, originalList.size()));
- }
- return listOfChunks;
- }
-
private SearchCriteria<NetworkVO> buildNetworkSearchCriteria(SearchBuilder<NetworkVO> sb, String keyword, Long id, Boolean isSystem, Long zoneId, String guestIpType,
String trafficType, Long physicalNetworkId, String aclType, boolean skipProjectNetworks, Boolean restartRequired, Boolean specifyIpRanges, Long vpcId,
Map<String, String> tags, Boolean display) {
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/ca8d3672/utils/src/com/cloud/utils/StringUtils.java
----------------------------------------------------------------------
diff --git a/utils/src/com/cloud/utils/StringUtils.java b/utils/src/com/cloud/utils/StringUtils.java
index 3b8cf71..f4c3f9e 100644
--- a/utils/src/com/cloud/utils/StringUtils.java
+++ b/utils/src/com/cloud/utils/StringUtils.java
@@ -268,4 +268,32 @@ public class StringUtils {
}
return s;
}
+
+ public static List<?> applyPagination(List<?> originalList, Long startIndex, Long pageSizeVal) {
+ // Most likely pageSize will never exceed int value, and we need integer to partition the listToReturn
+ boolean applyPagination = startIndex != null && pageSizeVal != null
+ && startIndex <= Integer.MAX_VALUE && startIndex >= Integer.MIN_VALUE && pageSizeVal <= Integer.MAX_VALUE
+ && pageSizeVal >= Integer.MIN_VALUE;
+ List<?> listWPagination = null;
+ if (applyPagination) {
+ listWPagination = new ArrayList<>();
+ int index = startIndex.intValue() == 0 ? 0 : startIndex.intValue() / pageSizeVal.intValue();
+ List<List<?>> partitions = StringUtils.partitionList(originalList, pageSizeVal.intValue());
+ if (index < partitions.size()) {
+ listWPagination = partitions.get(index);
+ }
+ }
+ return listWPagination;
+ }
+
+ private static List<List<?>> partitionList(List<?> originalList, int chunkSize) {
+ List<List<?>> listOfChunks = new ArrayList<List<?>>();
+ for (int i = 0; i < originalList.size() / chunkSize; i++) {
+ listOfChunks.add(originalList.subList(i * chunkSize, i * chunkSize + chunkSize));
+ }
+ if (originalList.size() % chunkSize != 0) {
+ listOfChunks.add(originalList.subList(originalList.size() - originalList.size() % chunkSize, originalList.size()));
+ }
+ return listOfChunks;
+ }
}