Package org.apache.stratos.rest.endpoint.bean.util.converter

Source Code of org.apache.stratos.rest.endpoint.bean.util.converter.PojoConverter

/*
* 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.stratos.rest.endpoint.bean.util.converter;

import org.apache.stratos.cloud.controller.stub.pojo.*;
import org.apache.stratos.manager.deploy.service.Service;
import org.apache.stratos.messaging.domain.topology.Cluster;
import org.apache.stratos.rest.endpoint.bean.autoscaler.partition.Partition;
import org.apache.stratos.rest.endpoint.bean.autoscaler.partition.PartitionGroup;
import org.apache.stratos.rest.endpoint.bean.autoscaler.policy.autoscale.*;
import org.apache.stratos.rest.endpoint.bean.autoscaler.policy.deployment.DeploymentPolicy;
import org.apache.stratos.rest.endpoint.bean.cartridge.definition.*;
import org.apache.stratos.rest.endpoint.bean.topology.Member;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;

public class PojoConverter {

    public static CartridgeConfig populateCartridgeConfigPojo (CartridgeDefinitionBean cartridgeDefinitionBean) {

        CartridgeConfig cartridgeConfig = new CartridgeConfig();

        cartridgeConfig.setType(cartridgeDefinitionBean.type);
        cartridgeConfig.setHostName(cartridgeDefinitionBean.host);
        cartridgeConfig.setProvider(cartridgeDefinitionBean.provider);
        cartridgeConfig.setVersion(cartridgeDefinitionBean.version);
        cartridgeConfig.setMultiTenant(cartridgeDefinitionBean.multiTenant);
        cartridgeConfig.setDisplayName(cartridgeDefinitionBean.displayName);
        cartridgeConfig.setDescription(cartridgeDefinitionBean.description);
        cartridgeConfig.setDefaultAutoscalingPolicy(cartridgeDefinitionBean.defaultAutoscalingPolicy);
        cartridgeConfig.setDefaultDeploymentPolicy(cartridgeDefinitionBean.defaultDeploymentPolicy);
        cartridgeConfig.setServiceGroup(cartridgeDefinitionBean.serviceGroup);

       
        //deployment information
        if(cartridgeDefinitionBean.deployment != null) {
            cartridgeConfig.setBaseDir(cartridgeDefinitionBean.deployment.baseDir);
            if(cartridgeDefinitionBean.deployment.dir != null && !cartridgeDefinitionBean.deployment.dir.isEmpty()) {
                cartridgeConfig.setDeploymentDirs(cartridgeDefinitionBean.deployment.dir.
                        toArray(new String[cartridgeDefinitionBean.deployment.dir.size()]));
            }
        }
        //port mapping
        if(cartridgeDefinitionBean.portMapping != null && !cartridgeDefinitionBean.portMapping.isEmpty()) {
            cartridgeConfig.setPortMappings(getPortMappingsAsArray(cartridgeDefinitionBean.portMapping));
        }
       
        //persistance mapping
        if(cartridgeDefinitionBean.persistence != null) {
            cartridgeConfig.setPersistence(getPersistence(cartridgeDefinitionBean.persistence));
        }
       
        //IaaS
        if(cartridgeDefinitionBean.iaasProvider != null && !cartridgeDefinitionBean.iaasProvider.isEmpty()) {
            cartridgeConfig.setIaasConfigs(getIaasConfigsAsArray(cartridgeDefinitionBean.iaasProvider));
        }
        //LB
        if(cartridgeDefinitionBean.loadBalancer != null) {
            cartridgeConfig.setLbConfig(getLBConfig(cartridgeDefinitionBean.loadBalancer));
        }
        //Properties
        if(cartridgeDefinitionBean.property != null && !cartridgeDefinitionBean.property.isEmpty()) {
            cartridgeConfig.setProperties(getProperties(cartridgeDefinitionBean.property));
        }

        return cartridgeConfig;
    }

  private static LoadbalancerConfig getLBConfig(LoadBalancerBean loadBalancer) {
        LoadbalancerConfig lbConfig = new LoadbalancerConfig();
        lbConfig.setType(loadBalancer.type);
        if (loadBalancer.property != null && !loadBalancer.property.isEmpty()) {
            lbConfig.setProperties(getProperties(loadBalancer.property));
        }
        return lbConfig;
    }

    private static PortMapping[] getPortMappingsAsArray(List<PortMappingBean> portMappingBeans) {

        //convert to an array
        PortMappingBean [] portMappingBeanArray = new PortMappingBean[portMappingBeans.size()];
        portMappingBeans.toArray(portMappingBeanArray);
        PortMapping [] portMappingArray = new PortMapping[portMappingBeanArray.length];

        for (int i = 0 ; i < portMappingBeanArray.length ; i++) {
            PortMapping portMapping = new PortMapping();
            portMapping.setProtocol(portMappingBeanArray[i].protocol);
            portMapping.setPort(Integer.toString(portMappingBeanArray[i].port));
            portMapping.setProxyPort(Integer.toString(portMappingBeanArray[i].proxyPort));
            portMappingArray[i] = portMapping;
        }

        return portMappingArray;
    }

    private static IaasConfig[] getIaasConfigsAsArray (List<IaasProviderBean> iaasProviderBeans) {

        //convert to an array
        IaasProviderBean [] iaasProviderBeansArray = new IaasProviderBean[iaasProviderBeans.size()];
        iaasProviderBeans.toArray(iaasProviderBeansArray);
        IaasConfig [] iaasConfigsArray =  new IaasConfig[iaasProviderBeansArray.length];

        for (int i = 0 ; i < iaasProviderBeansArray.length ; i++) {
            IaasConfig iaasConfig = new IaasConfig();
            iaasConfig.setType(iaasProviderBeansArray[i].type);
            iaasConfig.setImageId(iaasProviderBeansArray[i].imageId);
            iaasConfig.setMaxInstanceLimit(iaasProviderBeansArray[i].maxInstanceLimit);
            iaasConfig.setName(iaasProviderBeansArray[i].name);
            iaasConfig.setClassName(iaasProviderBeansArray[i].className);
            iaasConfig.setCredential(iaasProviderBeansArray[i].credential);
            iaasConfig.setIdentity(iaasProviderBeansArray[i].identity);
            iaasConfig.setProvider(iaasProviderBeansArray[i].provider);

            if(iaasProviderBeansArray[i].property != null && !iaasProviderBeansArray[i].property.isEmpty()) {
                //set the Properties instance to IaasConfig instance
                iaasConfig.setProperties(getProperties(iaasProviderBeansArray[i].property));
            }

            if(iaasProviderBeansArray[i].networkInterfaces != null && !iaasProviderBeansArray[i].networkInterfaces.isEmpty()) {
                iaasConfig.setNetworkInterfaces(PojoConverter.getNetworkInterfaces(iaasProviderBeansArray[i].networkInterfaces));
            }

            iaasConfigsArray[i] = iaasConfig;
        }
        return iaasConfigsArray;
    }

    private static Persistence getPersistence(PersistenceBean persistenceBean) {
        Persistence persistence = new Persistence();
        persistence.setPersistanceRequired(persistenceBean.isRequired);
        VolumeBean[] volumeBean = new VolumeBean[persistenceBean.volume.size()];
        persistenceBean.volume.toArray(volumeBean);
        Volume[] volumes = new Volume[persistenceBean.volume.size()];
        for (int i = 0 ; i < volumes.length ; i++) {
            Volume volume = new Volume();
            volume.setSize(Integer.parseInt(volumeBean[i].size));
            volume.setDevice(volumeBean[i].device);
            volume.setRemoveOntermination(volumeBean[i].removeOnTermination);
            volume.setMappingPath(volumeBean[i].mappingPath);
            volumes[i] = volume;
        }
        persistence.setVolumes(volumes);
        return persistence;

    }

    private static Properties getProperties (List<PropertyBean> propertyBeans) {

        //convert to an array
        PropertyBean [] propertyBeansArray = new PropertyBean[propertyBeans.size()];
        propertyBeans.toArray(propertyBeansArray);
        Property[] propertyArray = new Property[propertyBeansArray.length];

        for (int j = 0 ; j < propertyBeansArray.length ; j++) {
            Property property = new Property();
            property.setName(propertyBeansArray[j].name);
            property.setValue(propertyBeansArray[j].value);
            propertyArray[j] = property;
        }

        Properties properties = new Properties();
        properties.setProperties(propertyArray);
        return properties;
    }

    private static NetworkInterfaces getNetworkInterfaces(List<NetworkInterfaceBean> networkInterfaceBeans) {
        NetworkInterface[] networkInterfacesArray = new NetworkInterface[networkInterfaceBeans.size()];

        int i = 0;
        for (NetworkInterfaceBean nib:networkInterfaceBeans) {
            NetworkInterface networkInterface = new NetworkInterface();
            networkInterface.setNetworkUuid(nib.networkUuid);
            networkInterface.setFixedIp(nib.fixedIp);
            networkInterface.setPortUuid(nib.portUuid);
            networkInterfacesArray[i++] = networkInterface;
        }

        NetworkInterfaces networkInterfaces = new NetworkInterfaces();
        networkInterfaces.setNetworkInterfaces(networkInterfacesArray);
        return networkInterfaces;
    }

    public static org.apache.stratos.cloud.controller.stub.deployment.partition.Partition convertToCCPartitionPojo
            (Partition partitionBean) {

        org.apache.stratos.cloud.controller.stub.deployment.partition.Partition partition = new
                org.apache.stratos.cloud.controller.stub.deployment.partition.Partition();

        partition.setId(partitionBean.id);
        partition.setProvider(partitionBean.provider);
        partition.setPartitionMin(partitionBean.partitionMin);
        partition.setPartitionMax(partitionBean.partitionMax);

        if(partitionBean.property != null && !partitionBean.property.isEmpty()) {
            partition.setProperties(getProperties(partitionBean.property));
        }

        return partition;
    }

    public static org.apache.stratos.autoscaler.policy.model.AutoscalePolicy convertToCCAutoscalerPojo (AutoscalePolicy
                                                                                                                autoscalePolicyBean) {

        org.apache.stratos.autoscaler.policy.model.AutoscalePolicy autoscalePolicy = new
                org.apache.stratos.autoscaler.policy.model.AutoscalePolicy();

        autoscalePolicy.setId(autoscalePolicyBean.getId());
        autoscalePolicy.setDescription(autoscalePolicyBean.getDescription());
        autoscalePolicy.setDisplayName(autoscalePolicyBean.getDisplayName());

        if (autoscalePolicyBean.getLoadThresholds() != null) {

            org.apache.stratos.autoscaler.policy.model.LoadThresholds loadThresholds = new
                    org.apache.stratos.autoscaler.policy.model.LoadThresholds();

            if(autoscalePolicyBean.getLoadThresholds().loadAverage != null) {

                //set load average information
                org.apache.stratos.autoscaler.policy.model.LoadAverage loadAverage = new
                        org.apache.stratos.autoscaler.policy.model.LoadAverage();
                loadAverage.setAverage(autoscalePolicyBean.getLoadThresholds().loadAverage.average);
                loadAverage.setGradient(autoscalePolicyBean.getLoadThresholds().loadAverage.gradient);
                loadAverage.setSecondDerivative(autoscalePolicyBean.getLoadThresholds().loadAverage.secondDerivative);
                loadAverage.setScaleDownMarginOfGradient(autoscalePolicyBean.getLoadThresholds().loadAverage.scaleDownMarginOfGradient);
                loadAverage.setScaleDownMarginOfSecondDerivative(autoscalePolicyBean.getLoadThresholds().loadAverage.scaleDownMarginOfSecondDerivative);
                //set load average
                loadThresholds.setLoadAverage(loadAverage);
            }
            if (autoscalePolicyBean.getLoadThresholds().requestsInFlight != null) {

                org.apache.stratos.autoscaler.policy.model.RequestsInFlight requestsInFlight = new
                        org.apache.stratos.autoscaler.policy.model.RequestsInFlight();
                //set request in flight information
                requestsInFlight.setAverage(autoscalePolicyBean.getLoadThresholds().requestsInFlight.average);
                requestsInFlight.setGradient(autoscalePolicyBean.getLoadThresholds().requestsInFlight.gradient);
                requestsInFlight.setSecondDerivative(autoscalePolicyBean.getLoadThresholds().requestsInFlight.secondDerivative);
                requestsInFlight.setScaleDownMarginOfGradient(autoscalePolicyBean.getLoadThresholds().requestsInFlight.scaleDownMarginOfGradient);
                requestsInFlight.setScaleDownMarginOfSecondDerivative(autoscalePolicyBean.getLoadThresholds().requestsInFlight.scaleDownMarginOfSecondDerivative);
                //set request in flight
                loadThresholds.setRequestsInFlight(requestsInFlight);
            }
            if (autoscalePolicyBean.getLoadThresholds().memoryConsumption != null) {

                org.apache.stratos.autoscaler.policy.model.MemoryConsumption memoryConsumption = new
                        org.apache.stratos.autoscaler.policy.model.MemoryConsumption();

                //set memory consumption information
                memoryConsumption.setAverage(autoscalePolicyBean.getLoadThresholds().memoryConsumption.average);
                memoryConsumption.setGradient(autoscalePolicyBean.getLoadThresholds().memoryConsumption.gradient);
                memoryConsumption.setSecondDerivative(autoscalePolicyBean.getLoadThresholds().memoryConsumption.secondDerivative);
                memoryConsumption.setScaleDownMarginOfGradient(autoscalePolicyBean.getLoadThresholds().memoryConsumption.scaleDownMarginOfGradient);
                memoryConsumption.setScaleDownMarginOfSecondDerivative(autoscalePolicyBean.getLoadThresholds().memoryConsumption.scaleDownMarginOfSecondDerivative);
                //set memory consumption
                loadThresholds.setMemoryConsumption(memoryConsumption);
            }

            autoscalePolicy.setLoadThresholds(loadThresholds);
        }

        return autoscalePolicy;
    }

    public static org.apache.stratos.autoscaler.deployment.policy.DeploymentPolicy convetToCCDeploymentPolicyPojo (DeploymentPolicy
                                                                                                                           deploymentPolicyBean) {

        org.apache.stratos.autoscaler.deployment.policy.DeploymentPolicy deploymentPolicy = new
                org.apache.stratos.autoscaler.deployment.policy.DeploymentPolicy();

        deploymentPolicy.setId(deploymentPolicyBean.id);
        if(deploymentPolicyBean.partitionGroup != null && !deploymentPolicyBean.partitionGroup.isEmpty()) {
            deploymentPolicy.setPartitionGroups(convertToCCPartitionGroup(deploymentPolicyBean.partitionGroup));
        }

        return deploymentPolicy;
    }

    private static org.apache.stratos.autoscaler.partition.PartitionGroup[] convertToCCPartitionGroup (List<PartitionGroup> partitionGroupBeans) {

        org.apache.stratos.autoscaler.partition.PartitionGroup[] partitionGroups = new
                org.apache.stratos.autoscaler.partition.PartitionGroup[partitionGroupBeans.size()];

        for (int i = 0 ; i < partitionGroupBeans.size() ; i++) {
            org.apache.stratos.autoscaler.partition.PartitionGroup partitionGroup = new
                    org.apache.stratos.autoscaler.partition.PartitionGroup();
            partitionGroup.setId(partitionGroupBeans.get(i).id);
            partitionGroup.setPartitionAlgo(partitionGroupBeans.get(i).partitionAlgo);

            if(partitionGroupBeans.get(i).partition != null && !partitionGroupBeans.get(i).partition.isEmpty()) {
                partitionGroup.setPartitions(convertToCCPartitionPojos(partitionGroupBeans.get(i).partition));
            }

            partitionGroups[i] = partitionGroup;
        }

        return partitionGroups;
    }

    public static org.apache.stratos.rest.endpoint.bean.topology.Cluster populateClusterPojos(Cluster cluster) {
        org.apache.stratos.rest.endpoint.bean.topology.Cluster cluster1 = new
                org.apache.stratos.rest.endpoint.bean.topology.Cluster();
        cluster1.serviceName = cluster.getServiceName();
        cluster1.clusterId = cluster.getClusterId();
        cluster1.isLbCluster = cluster.isLbCluster();
        cluster1.tenantRange = cluster.getTenantRange();
        cluster1.member = new ArrayList<Member>();
        cluster1.hostNames = new ArrayList<String>();

        for(org.apache.stratos.messaging.domain.topology.Member tmp : cluster.getMembers()) {
            Member member = new Member();
            member.clusterId = tmp.getClusterId();
            member.lbClusterId  = tmp.getLbClusterId();
            member.networkPartitionId = tmp.getNetworkPartitionId();
            member.partitionId = tmp.getPartitionId();
            member.memberId = tmp.getMemberId();
            if(tmp.getMemberIp() == null) {
                member.memberIp = "NULL";
            } else {
                member.memberIp = tmp.getMemberIp();
            }
            if(tmp.getMemberPublicIp() == null) {
              member.memberPublicIp = "NULL";
            } else {
              member.memberPublicIp = tmp.getMemberPublicIp();
            }
            member.serviceName = tmp.getServiceName();
            member.status = tmp.getStatus().toString();
            cluster1.member.add(member);
        }

        for(String tmp1 : cluster.getHostNames()) {
            cluster1.hostNames.add(tmp1);
        }

        return cluster1;
    }

    private static org.apache.stratos.cloud.controller.stub.deployment.partition.Partition[] convertToCCPartitionPojos
            (List<Partition> partitionList) {

        org.apache.stratos.cloud.controller.stub.deployment.partition.Partition[] partitions =
                new org.apache.stratos.cloud.controller.stub.deployment.partition.Partition[partitionList.size()];
        for (int i = 0; i < partitionList.size() ; i++) {
            partitions[i] = convertToCCPartitionPojo(partitionList.get(i));
        }

        return partitions;
    }

    public static Partition[] populatePartitionPojos (org.apache.stratos.cloud.controller.stub.deployment.partition.Partition[]
                                                             partitions) {

        Partition [] partitionBeans;
        if(partitions == null) {
            partitionBeans = new Partition[0];
            return partitionBeans;
        }

        partitionBeans = new Partition[partitions.length];
        for (int i = 0 ; i < partitions.length ; i++) {
            /*Partition partition = new Partition();
            partition.id = partitions[i].getId();
            partition.provider = partitions[i].getProvider();
            partition.partitionMin = partitions[i].getPartitionMin();
            partition.partitionMax = partitions[i].getPartitionMax();*/
            //properties are not added currently, TODO if required
            //if(partitions[i].getProperties() != null) {
            //    List<PropertyBean> propertyBeans = getPropertyBeans(partitions[i].getProperties());
            //    partition.property = propertyBeans;
            //}
            partitionBeans[i] = populatePartitionPojo(partitions[i]);
        }
        return partitionBeans;
    }

    public static Partition populatePartitionPojo (org.apache.stratos.cloud.controller.stub.deployment.partition.Partition
                                                             partition) {

        Partition partitionBeans = new Partition();
        if(partition == null) {
            return partitionBeans;
        }

        partitionBeans.id = partition.getId();
        partitionBeans.provider = partition.getProvider();
        partitionBeans.partitionMin = partition.getPartitionMin();
        partitionBeans.partitionMax = partition.getPartitionMax();
        //properties
        if(partition.getProperties() != null) {
            List<PropertyBean> propertyBeans = getPropertyBeans(partition.getProperties());
            partitionBeans.property = propertyBeans;
        }

        return partitionBeans;
    }

    private static List<PropertyBean> getPropertyBeans (Properties properties) {

        List<PropertyBean> propertyBeans = null;
        if(properties.getProperties() != null && properties.getProperties().length != 0) {
            Property [] propertyArr = properties.getProperties();
            propertyBeans = new ArrayList<PropertyBean>();
            for (int i = 0; i < propertyArr.length ; i++) {
                PropertyBean propertyBean = new PropertyBean();
                propertyBean.name = propertyArr[i].getName();
                propertyBean.value = propertyArr[i].getValue();
                propertyBeans.add(propertyBean);
            }
        }
        return propertyBeans;
    }

    public static AutoscalePolicy[] populateAutoscalePojos(org.apache.stratos.autoscaler.policy.model.AutoscalePolicy[]
                                                                   autoscalePolicies) {

        AutoscalePolicy [] autoscalePolicyBeans;
        if(autoscalePolicies == null) {
            autoscalePolicyBeans = new AutoscalePolicy[0];
            return autoscalePolicyBeans;
        }

        autoscalePolicyBeans = new AutoscalePolicy[autoscalePolicies.length];
        for (int i = 0 ; i < autoscalePolicies.length ; i++) {
            /*AutoscalePolicy autoscalePolicy = new AutoscalePolicy();
            autoscalePolicy.id = autoscalePolicies[i].getId();
            autoscalePolicy.displayName = autoscalePolicies[i].getDisplayName();
            autoscalePolicy.description = autoscalePolicies[i].getDescription();
            if(autoscalePolicies[i].getLoadThresholds() != null) {
                autoscalePolicy.loadThresholds = populateLoadThresholds(autoscalePolicies[i].getLoadThresholds());
            }*/
            autoscalePolicyBeans[i] = populateAutoscalePojo(autoscalePolicies[i]);
        }
        return autoscalePolicyBeans;
    }

    public static AutoscalePolicy populateAutoscalePojo(org.apache.stratos.autoscaler.policy.model.AutoscalePolicy
                                                                   autoscalePolicy) {

        AutoscalePolicy autoscalePolicyBean = new AutoscalePolicy();
        if(autoscalePolicy == null) {
            return autoscalePolicyBean;
        }

        autoscalePolicyBean.setId(autoscalePolicy.getId());
        autoscalePolicyBean.setDisplayName(autoscalePolicy.getDisplayName());
        autoscalePolicyBean.setDescription(autoscalePolicy.getDescription());
        if(autoscalePolicy.getLoadThresholds() != null) {
            autoscalePolicyBean.setLoadThresholds(populateLoadThresholds(autoscalePolicy.getLoadThresholds()));
        }

        return autoscalePolicyBean;
    }

    private static LoadThresholds populateLoadThresholds (org.apache.stratos.autoscaler.policy.model.LoadThresholds
                                                                  loadThresholds) {

        LoadThresholds loadThresholdBean = new LoadThresholds();
        if(loadThresholds.getLoadAverage() != null) {
            LoadAverage loadAverage = new LoadAverage();
            loadAverage.average = loadThresholds.getLoadAverage().getAverage();
            loadAverage.gradient = loadThresholds.getLoadAverage().getGradient();
            loadAverage.scaleDownMarginOfGradient = loadThresholds.getLoadAverage().getScaleDownMarginOfGradient();
            loadAverage.scaleDownMarginOfSecondDerivative = loadThresholds.getLoadAverage().
                    getScaleDownMarginOfSecondDerivative();
            loadAverage.secondDerivative = loadThresholds.getLoadAverage().getSecondDerivative();
            loadThresholdBean.loadAverage = loadAverage;
        }
        if(loadThresholds.getMemoryConsumption() != null) {
            MemoryConsumption memoryConsumption = new MemoryConsumption();
            memoryConsumption.average = loadThresholds.getMemoryConsumption().getAverage();
            memoryConsumption.gradient = loadThresholds.getMemoryConsumption().getGradient();
            memoryConsumption.scaleDownMarginOfGradient = loadThresholds.getMemoryConsumption().
                    getScaleDownMarginOfGradient();
            memoryConsumption.scaleDownMarginOfSecondDerivative = loadThresholds.getMemoryConsumption().
                    getScaleDownMarginOfSecondDerivative();
            memoryConsumption.secondDerivative = loadThresholds.getMemoryConsumption().getSecondDerivative();
            loadThresholdBean.memoryConsumption = memoryConsumption;
        }
        if(loadThresholds.getRequestsInFlight() != null) {
            RequestsInFlight requestsInFlight = new RequestsInFlight();
            requestsInFlight.average = loadThresholds.getRequestsInFlight().getAverage();
            requestsInFlight.gradient = loadThresholds.getRequestsInFlight().getGradient();
            requestsInFlight.scaleDownMarginOfGradient = loadThresholds.getRequestsInFlight().
                    getScaleDownMarginOfGradient();
            requestsInFlight.scaleDownMarginOfSecondDerivative = loadThresholds.getRequestsInFlight().
                    getScaleDownMarginOfSecondDerivative();
            requestsInFlight.secondDerivative = loadThresholds.getRequestsInFlight().getSecondDerivative();
            loadThresholdBean.requestsInFlight = requestsInFlight;
        }

        return loadThresholdBean;
    }

    public static DeploymentPolicy[] populateDeploymentPolicyPojos(org.apache.stratos.autoscaler.deployment.policy.DeploymentPolicy[]
                                                                           deploymentPolicies) {
        DeploymentPolicy[] deploymentPolicyBeans;
        if(deploymentPolicies == null) {
            deploymentPolicyBeans = new DeploymentPolicy[0];
            return deploymentPolicyBeans;
        }

        deploymentPolicyBeans = new DeploymentPolicy[deploymentPolicies.length];
        for (int i = 0 ; i < deploymentPolicies.length ; i++) {
            //DeploymentPolicy deploymentPolicy = new DeploymentPolicy();
            //deploymentPolicy.id = deploymentPolicies[i].getId();

            //if(deploymentPolicies[i].getPartitionGroups() != null &&
            //        deploymentPolicies[i].getPartitionGroups().length > 0) {
            //    deploymentPolicy.partitionGroup = getPartitionGroups(deploymentPolicies[i].getPartitionGroups());
            //}

            deploymentPolicyBeans[i] = populateDeploymentPolicyPojo(deploymentPolicies[i]);
        }

        return deploymentPolicyBeans;
    }

    public static DeploymentPolicy populateDeploymentPolicyPojo (org.apache.stratos.autoscaler.deployment.policy.DeploymentPolicy
                                                                 deploymentPolicy) {

        DeploymentPolicy deploymentPolicyBean = new DeploymentPolicy();
        if(deploymentPolicy == null) {
            return deploymentPolicyBean;
        }

        deploymentPolicyBean.id = deploymentPolicy.getId();

        if (deploymentPolicy.getPartitionGroups() != null &&  deploymentPolicy.getPartitionGroups().length > 0) {
            deploymentPolicyBean.partitionGroup = Arrays.asList(populatePartitionGroupPojos(deploymentPolicy.getPartitionGroups()));
        }

        /*if (deploymentPolicy.getAllPartitions() != null && deploymentPolicy.getAllPartitions().length > 0) {
            deploymentPolicyBean.partition = Arrays.asList(populatePartitionPojos(deploymentPolicy.getAllPartitions()));
        }*/

        return deploymentPolicyBean;
    }

    public static PartitionGroup populatePartitionGroupPojo (org.apache.stratos.autoscaler.partition.PartitionGroup
                                                                         partitionGroup) {

        PartitionGroup partitionGroupBean = new PartitionGroup();
        if(partitionGroup == null){
            return partitionGroupBean;
        }

        partitionGroupBean.id = partitionGroup.getId();
        partitionGroupBean.partitionAlgo = partitionGroup.getPartitionAlgo();
        if(partitionGroup.getPartitions() != null && partitionGroup.getPartitions().length > 0) {
            partitionGroupBean.partition = getPartitionList(partitionGroup.getPartitions());
        }

        return partitionGroupBean;
    }

    public static PartitionGroup [] populatePartitionGroupPojos (org.apache.stratos.autoscaler.partition.PartitionGroup[] partitionGroups) {

        PartitionGroup[] partitionGroupsBeans;
        if(partitionGroups == null) {
            partitionGroupsBeans = new PartitionGroup[0];
            return partitionGroupsBeans;
        }

        partitionGroupsBeans = new PartitionGroup[partitionGroups.length];
        for (int i = 0 ; i < partitionGroups.length ; i ++) {
            /*PartitionGroup partitionGroup = new PartitionGroup();
            partitionGroup.id = partitionGroups[i].getId();
            partitionGroup.partitionAlgo = partitionGroups[i].getPartitionAlgo();

            if(partitionGroups[i].getPartitions() != null && partitionGroups[i].getPartitions().length > 0){
                partitionGroup.partition = getPartitionList(partitionGroups[i].getPartitions());
            }*/
            partitionGroupsBeans[i] = populatePartitionGroupPojo(partitionGroups[i]);
        }

        return partitionGroupsBeans;
    }

    private static List<Partition> getPartitionList(org.apache.stratos.cloud.controller.stub.deployment.partition.Partition[]
                                                         partitions) {

        List<Partition> partitionList = new ArrayList<Partition>();
        for (int i = 0 ; i < partitions.length ; i++) {
            Partition partition = new Partition();
            partition.id = partitions[i].getId();
            partition.provider = partitions[i].getProvider();
            partition.partitionMin = partitions[i].getPartitionMin();
            partition.partitionMax = partitions[i].getPartitionMax();
            if (partitions[i].getProperties() != null) {
                partition.property = getPropertyBeans(partitions[i].getProperties());
            }
            partitionList.add(partition);
        }

        return partitionList;
    }

    public static ServiceDefinitionBean convertToServiceDefinitionBean (Service service) {

        ServiceDefinitionBean serviceDefinitionBean = new ServiceDefinitionBean();
        serviceDefinitionBean.setCartridgeType(service.getType());
        serviceDefinitionBean.setTenantRange(service.getTenantRange());
        serviceDefinitionBean.setClusterDomain(service.getClusterId());
        serviceDefinitionBean.setAutoscalingPolicyName(service.getAutoscalingPolicyName());
        serviceDefinitionBean.setDeploymentPolicyName(service.getDeploymentPolicyName());

        return serviceDefinitionBean;
    }

    public static List<ServiceDefinitionBean> convertToServiceDefinitionBeans (Collection<Service> services) {

        List<ServiceDefinitionBean> serviceDefinitionBeans = new ArrayList<ServiceDefinitionBean>();

        for (Service service : services) {
            serviceDefinitionBeans.add(convertToServiceDefinitionBean(service));
        }

        return serviceDefinitionBeans;
    }
}
TOP

Related Classes of org.apache.stratos.rest.endpoint.bean.util.converter.PojoConverter

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.