/* * Copyright 2014 by SCSK Corporation. * * This file is part of PrimeCloud Controller(TM). * * PrimeCloud Controller(TM) is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 2 of the License, or * (at your option) any later version. * * PrimeCloud Controller(TM) is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with PrimeCloud Controller(TM). If not, see <http://www.gnu.org/licenses/>. */ package jp.primecloud.auto.service.impl; import java.util.Comparator; import jp.primecloud.auto.entity.crud.AwsAddress; import jp.primecloud.auto.entity.crud.Component; import jp.primecloud.auto.entity.crud.ComponentInstance; import jp.primecloud.auto.entity.crud.Instance; import jp.primecloud.auto.entity.crud.LoadBalancer; import jp.primecloud.auto.entity.crud.LoadBalancerInstance; import jp.primecloud.auto.entity.crud.LoadBalancerListener; import jp.primecloud.auto.entity.crud.NiftyKeyPair; import jp.primecloud.auto.entity.crud.PlatformVcloudStorageType; import jp.primecloud.auto.entity.crud.VcloudInstanceNetwork; import jp.primecloud.auto.entity.crud.VcloudKeyPair; import jp.primecloud.auto.entity.crud.VmwareKeyPair; import jp.primecloud.auto.service.dto.ComponentDto; import jp.primecloud.auto.service.dto.ComponentInstanceDto; import jp.primecloud.auto.service.dto.ComponentTypeDto; import jp.primecloud.auto.service.dto.FarmDto; import jp.primecloud.auto.service.dto.InstanceDto; import jp.primecloud.auto.service.dto.LoadBalancerDto; import org.apache.commons.lang.StringUtils; import com.amazonaws.services.ec2.model.AvailabilityZone; import com.amazonaws.services.ec2.model.KeyPairInfo; import com.amazonaws.services.ec2.model.SecurityGroup; import com.amazonaws.services.ec2.model.Subnet; import com.vmware.vim25.mo.ComputeResource; /** * <p> * TODO: クラスコメントを記述 * </p> * */ public class Comparators { public static final Comparator<FarmDto> COMPARATOR_FARM_DTO; public static final Comparator<ComponentDto> COMPARATOR_COMPONENT_DTO; public static final Comparator<Component> COMPARATOR_COMPONENT; public static final Comparator<InstanceDto> COMPARATOR_INSTANCE_DTO; public static final Comparator<Instance> COMPARATOR_INSTANCE; public static final Comparator<ComponentTypeDto> COMPARATOR_COMPONENT_TYPE_DTO; public static final Comparator<ComponentInstance> COMPARATOR_COMPONENT_INSTANCE; public static final Comparator<ComponentInstanceDto> COMPARATOR_COMPONENT_INSTANCE_DTO; public static final Comparator<ComputeResource> COMPARATOR_COMPUTE_RESOURCE; public static final Comparator<VmwareKeyPair> COMPARATOR_VMWARE_KEY_PAIR; public static final Comparator<NiftyKeyPair> COMPARATOR_NIFTY_KEY_PAIR; public static final Comparator<VcloudKeyPair> COMPARATOR_VCLOUD_KEY_PAIR; public static final Comparator<LoadBalancerDto> COMPARATOR_LOAD_BALANCER_DTO; public static final Comparator<LoadBalancer> COMPARATOR_LOAD_BALANCER; public static final Comparator<LoadBalancerListener> COMPARATOR_LOAD_BALANCER_LISTENER; public static final Comparator<LoadBalancerInstance> COMPARATOR_LOAD_BALANCER_INSTANCE; public static final Comparator<VcloudInstanceNetwork> COMPARATOR_VCLOUD_INSTANCE_NETWORK; public static final Comparator<PlatformVcloudStorageType> COMPARATOR_PLATFORM_VCLOUD_STORAGE_TYPE; public static final Comparator<AvailabilityZone> COMPARATOR_AVAILABILITY_ZONE; public static final Comparator<KeyPairInfo> COMPARATOR_KEY_PAIR_INFO; public static final Comparator<SecurityGroup> COMPARATOR_SECURITY_GROUP; public static final Comparator<Subnet> COMPARATOR_SUBNET; public static final Comparator<AwsAddress> COMPARATOR_AWS_ADDRESS; static { COMPARATOR_FARM_DTO = new Comparator<FarmDto>() { @Override public int compare(FarmDto o1, FarmDto o2) { long diff = o1.getFarm().getFarmNo() - o2.getFarm().getFarmNo(); if (diff == 0) { return 0; } return diff > 0 ? 1 : -1; } }; COMPARATOR_COMPONENT_DTO = new Comparator<ComponentDto>() { @Override public int compare(ComponentDto o1, ComponentDto o2) { long diff = o1.getComponent().getComponentNo() - o2.getComponent().getComponentNo(); if (diff == 0) { return 0; } return diff > 0 ? 1 : -1; } }; COMPARATOR_COMPONENT = new Comparator<Component>() { @Override public int compare(Component o1, Component o2) { long diff = o1.getComponentNo() - o2.getComponentNo(); if (diff == 0) { return 0; } return diff > 0 ? 1 : -1; } }; COMPARATOR_INSTANCE_DTO = new Comparator<InstanceDto>() { @Override public int compare(InstanceDto o1, InstanceDto o2) { long diff = o1.getInstance().getInstanceNo() - o2.getInstance().getInstanceNo(); if (diff == 0) { return 0; } return diff > 0 ? 1 : -1; } }; COMPARATOR_INSTANCE = new Comparator<Instance>() { @Override public int compare(Instance o1, Instance o2) { long diff = o1.getInstanceNo() - o2.getInstanceNo(); if (diff == 0) { return 0; } return diff > 0 ? 1 : -1; } }; COMPARATOR_COMPONENT_TYPE_DTO = new Comparator<ComponentTypeDto>() { @Override public int compare(ComponentTypeDto o1, ComponentTypeDto o2) { long diff = o1.getComponentType().getComponentTypeNo() - o2.getComponentType().getComponentTypeNo(); if (diff == 0) { return 0; } return diff > 0 ? 1 : -1; } }; COMPARATOR_COMPONENT_INSTANCE = new Comparator<ComponentInstance>() { @Override public int compare(ComponentInstance o1, ComponentInstance o2) { long diff = o1.getComponentNo() - o2.getComponentNo(); if (diff == 0) { diff = o1.getInstanceNo() - o2.getInstanceNo(); if (diff == 0) { return 0; } return diff > 0 ? 1 : -1; } return diff > 0 ? 1 : -1; } }; COMPARATOR_COMPONENT_INSTANCE_DTO = new Comparator<ComponentInstanceDto>() { @Override public int compare(ComponentInstanceDto o1, ComponentInstanceDto o2) { long diff = o1.getComponentInstance().getComponentNo() - o2.getComponentInstance().getComponentNo(); if (diff == 0) { diff = o1.getComponentInstance().getInstanceNo() - o2.getComponentInstance().getInstanceNo(); if (diff == 0) { return 0; } return diff > 0 ? 1 : -1; } return diff > 0 ? 1 : -1; } }; COMPARATOR_COMPUTE_RESOURCE = new Comparator<ComputeResource>() { @Override public int compare(ComputeResource o1, ComputeResource o2) { return o1.getName().compareTo(o2.getName()); } }; COMPARATOR_VMWARE_KEY_PAIR = new Comparator<VmwareKeyPair>() { @Override public int compare(VmwareKeyPair o1, VmwareKeyPair o2) { return o1.getKeyNo().compareTo(o2.getKeyNo()); } }; COMPARATOR_NIFTY_KEY_PAIR = new Comparator<NiftyKeyPair>() { @Override public int compare(NiftyKeyPair o1, NiftyKeyPair o2) { return o1.getKeyNo().compareTo(o2.getKeyNo()); } }; COMPARATOR_VCLOUD_KEY_PAIR = new Comparator<VcloudKeyPair>() { @Override public int compare(VcloudKeyPair o1, VcloudKeyPair o2) { return o1.getKeyNo().compareTo(o2.getKeyNo()); } }; COMPARATOR_LOAD_BALANCER_DTO = new Comparator<LoadBalancerDto>() { @Override public int compare(LoadBalancerDto o1, LoadBalancerDto o2) { return o1.getLoadBalancer().getLoadBalancerNo().compareTo(o2.getLoadBalancer().getLoadBalancerNo()); } }; COMPARATOR_LOAD_BALANCER = new Comparator<LoadBalancer>() { @Override public int compare(LoadBalancer o1, LoadBalancer o2) { return o1.getLoadBalancerNo().compareTo(o2.getLoadBalancerNo()); } }; COMPARATOR_LOAD_BALANCER_LISTENER = new Comparator<LoadBalancerListener>() { @Override public int compare(LoadBalancerListener o1, LoadBalancerListener o2) { int comp = o1.getLoadBalancerNo().compareTo(o2.getLoadBalancerNo()); if (comp == 0) { comp = o1.getLoadBalancerPort().compareTo(o2.getLoadBalancerPort()); } return comp; } }; COMPARATOR_LOAD_BALANCER_INSTANCE = new Comparator<LoadBalancerInstance>() { @Override public int compare(LoadBalancerInstance o1, LoadBalancerInstance o2) { int comp = o1.getLoadBalancerNo().compareTo(o2.getLoadBalancerNo()); if (comp == 0) { comp = o1.getInstanceNo().compareTo(o2.getInstanceNo()); } return comp; } }; COMPARATOR_VCLOUD_INSTANCE_NETWORK = new Comparator<VcloudInstanceNetwork>() { @Override public int compare(VcloudInstanceNetwork o1, VcloudInstanceNetwork o2) { if (o1.getNetworkIndex() == null && o2.getNetworkIndex() == null) { return o1.getNetworkNo().compareTo(o2.getNetworkNo()); } else if (o1.getNetworkIndex() != null && o2.getNetworkIndex() == null) { return -1; } else if (o1.getNetworkIndex() == null && o2.getNetworkIndex() != null) { return 1; } return o1.getNetworkIndex().compareTo(o2.getNetworkIndex()); } }; COMPARATOR_PLATFORM_VCLOUD_STORAGE_TYPE = new Comparator<PlatformVcloudStorageType>() { @Override public int compare(PlatformVcloudStorageType o1, PlatformVcloudStorageType o2) { if (!o1.getPlatformNo().equals(o2.getPlatformNo())) { return o1.getPlatformNo().compareTo(o2.getPlatformNo()); } else { return o1.getStorageTypeNo().compareTo(o2.getStorageTypeNo()); } } }; COMPARATOR_AVAILABILITY_ZONE = new Comparator<AvailabilityZone>() { @Override public int compare(AvailabilityZone o1, AvailabilityZone o2) { return o1.getZoneName().compareTo(o2.getZoneName()); } }; COMPARATOR_KEY_PAIR_INFO = new Comparator<KeyPairInfo>() { @Override public int compare(KeyPairInfo o1, KeyPairInfo o2) { return o1.getKeyName().compareTo(o2.getKeyName()); } }; COMPARATOR_SECURITY_GROUP = new Comparator<SecurityGroup>() { @Override public int compare(SecurityGroup o1, SecurityGroup o2) { return o1.getGroupName().compareTo(o2.getGroupName()); } }; COMPARATOR_SUBNET = new Comparator<Subnet>() { @Override public int compare(Subnet o1, Subnet o2) { long diff = toLong(o1.getCidrBlock()) - toLong(o2.getCidrBlock()); return diff == 0 ? 0 : (diff > 0 ? 1 : -1); } private long toLong(String cidrBlock) { String[] array = StringUtils.split(StringUtils.split(cidrBlock, "/")[0], "."); return Long.parseLong(array[0]) * 256 * 256 * 256 + Long.parseLong(array[1]) * 256 * 256 + Long.parseLong(array[2]) * 256 + Long.parseLong(array[3]); } }; COMPARATOR_AWS_ADDRESS = new Comparator<AwsAddress>() { @Override public int compare(AwsAddress o1, AwsAddress o2) { long diff = o1.getAddressNo() - o2.getAddressNo(); if (diff == 0) { return 0; } return diff > 0 ? 1 : -1; } }; } }