package org.openstack.atlas.api.mapper;
import org.openstack.atlas.docs.loadbalancers.api.v1.AccountUsage;
import org.openstack.atlas.docs.loadbalancers.api.v1.LoadBalancerUsage;
import org.openstack.atlas.docs.loadbalancers.api.v1.LoadBalancerUsageRecord;
import org.openstack.atlas.docs.loadbalancers.api.v1.VipType;
import org.openstack.atlas.service.domain.entities.Usage;
import org.openstack.atlas.service.domain.events.entities.SslMode;
import org.openstack.atlas.service.domain.pojos.LoadBalancerBilling;
import org.openstack.atlas.service.domain.usage.BitTag;
import org.openstack.atlas.service.domain.usage.BitTags;
import java.util.ArrayList;
import java.util.List;
public final class UsageMapper {
public static LoadBalancerUsage toRestApiServiceUsage(List<Usage> domainUsageList) {
LoadBalancerUsage lbusage = new LoadBalancerUsage();
if (domainUsageList != null) {
lbusage.getLoadBalancerUsageRecords().addAll(toRestApiUsages(domainUsageList));
}
return lbusage;
}
public static LoadBalancerUsage toRestApiCurrentUsage(List<Usage> domainUsageList) {
LoadBalancerUsage currentUsage = new LoadBalancerUsage();
if (domainUsageList != null) {
currentUsage.getLoadBalancerUsageRecords().addAll(toRestApiUsages(domainUsageList));
}
return currentUsage;
}
public static List<LoadBalancerUsageRecord> toRestApiUsages(List<Usage> usageList) {
List<LoadBalancerUsageRecord> apiUsageList = new ArrayList<LoadBalancerUsageRecord>();
if (usageList != null) {
for (Usage usage : usageList) {
apiUsageList.add(toRestApiUsage(usage));
}
}
return apiUsageList;
}
public static LoadBalancerUsageRecord toRestApiUsage(Usage dusage) {
LoadBalancerUsageRecord rusage = new LoadBalancerUsageRecord();
if (dusage == null) {
return null;
}
rusage.setId(dusage.getId());
rusage.setAverageNumConnections(dusage.getAverageConcurrentConnections());
rusage.setIncomingTransfer(dusage.getIncomingTransfer());
rusage.setOutgoingTransfer(dusage.getOutgoingTransfer());
rusage.setAverageNumConnectionsSsl(dusage.getAverageConcurrentConnectionsSsl());
rusage.setIncomingTransferSsl(dusage.getIncomingTransferSsl());
rusage.setOutgoingTransferSsl(dusage.getOutgoingTransferSsl());
rusage.setNumVips(dusage.getNumVips());
rusage.setNumPolls(dusage.getNumberOfPolls());
rusage.setStartTime(dusage.getStartTime());
rusage.setEndTime(dusage.getEndTime());
rusage.setEventType(dusage.getEventType());
BitTags bitTags = new BitTags(dusage.getTags());
rusage.setSslMode(SslMode.getMode(bitTags).name());
if (bitTags.isTagOn(BitTag.SERVICENET_LB)) {
rusage.setVipType(VipType.SERVICENET);
} else {
rusage.setVipType(VipType.PUBLIC);
}
return rusage;
}
public static List<org.openstack.atlas.docs.loadbalancers.api.management.v1.LoadBalancerUsageRecord> toMgmtApiUsages(List<Usage> usageList) {
List<org.openstack.atlas.docs.loadbalancers.api.management.v1.LoadBalancerUsageRecord> apiUsageList = new ArrayList<org.openstack.atlas.docs.loadbalancers.api.management.v1.LoadBalancerUsageRecord>();
if (usageList != null) {
for (Usage usage : usageList) {
apiUsageList.add(toMgmtApiUsage(usage));
}
}
return apiUsageList;
}
public static org.openstack.atlas.docs.loadbalancers.api.management.v1.LoadBalancerUsageRecord toMgmtApiUsage(Usage dusage) {
org.openstack.atlas.docs.loadbalancers.api.management.v1.LoadBalancerUsageRecord rusage = new org.openstack.atlas.docs.loadbalancers.api.management.v1.LoadBalancerUsageRecord();
if (dusage == null) {
return null;
}
rusage.setId(dusage.getId());
rusage.setAccountId(dusage.getAccountId());
rusage.setLoadBalancerId(dusage.getLoadbalancer().getId());
rusage.setAverageNumConnections(dusage.getAverageConcurrentConnections());
rusage.setIncomingTransfer(dusage.getIncomingTransfer());
rusage.setOutgoingTransfer(dusage.getOutgoingTransfer());
rusage.setAverageNumConnectionsSsl(dusage.getAverageConcurrentConnectionsSsl());
rusage.setIncomingTransferSsl(dusage.getIncomingTransferSsl());
rusage.setOutgoingTransferSsl(dusage.getOutgoingTransferSsl());
rusage.setNumVips(dusage.getNumVips());
rusage.setNumPolls(dusage.getNumberOfPolls());
rusage.setStartTime(dusage.getStartTime());
rusage.setEndTime(dusage.getEndTime());
rusage.setEventType(dusage.getEventType());
BitTags bitTags = new BitTags(dusage.getTags());
rusage.setSslMode(SslMode.getMode(bitTags).name());
if (bitTags.isTagOn(BitTag.SERVICENET_LB)) {
rusage.setVipType(VipType.SERVICENET);
} else {
rusage.setVipType(VipType.PUBLIC);
}
return rusage;
}
public static org.openstack.atlas.docs.loadbalancers.api.v1.AccountBilling toDataModelAccountBilling(org.openstack.atlas.service.domain.pojos.AccountBilling domainAccountBilling) {
org.openstack.atlas.docs.loadbalancers.api.v1.AccountBilling dataModelAccountBilling = new org.openstack.atlas.docs.loadbalancers.api.v1.AccountBilling();
AccountUsage accountUsage = new AccountUsage();
for (org.openstack.atlas.service.domain.entities.AccountUsage domainAccountUsage : domainAccountBilling.getAccountUsageRecords()) {
org.openstack.atlas.docs.loadbalancers.api.v1.AccountUsageRecord accountUsageRecord = new org.openstack.atlas.docs.loadbalancers.api.v1.AccountUsageRecord();
accountUsageRecord.setNumLoadBalancers(domainAccountUsage.getNumLoadBalancers());
accountUsageRecord.setNumPublicVips(domainAccountUsage.getNumPublicVips());
accountUsageRecord.setNumServicenetVips(domainAccountUsage.getNumServicenetVips());
accountUsageRecord.setStartTime(domainAccountUsage.getStartTime());
accountUsage.getAccountUsageRecords().add(accountUsageRecord);
}
dataModelAccountBilling.setAccountUsage(accountUsage);
dataModelAccountBilling.getLoadBalancerUsages().addAll(loadBalancerBillingsToLoadBalancerUsages(domainAccountBilling.getLoadBalancerBillings()));
dataModelAccountBilling.setAccountId(domainAccountBilling.getAccountId());
return dataModelAccountBilling;
}
public static List<LoadBalancerUsage> loadBalancerBillingsToLoadBalancerUsages(List<LoadBalancerBilling> loadBalancerBillings) {
List<LoadBalancerUsage> loadBalancerUsages = new ArrayList<LoadBalancerUsage>();
for (LoadBalancerBilling loadBalancerBilling : loadBalancerBillings) {
LoadBalancerUsage loadBalancerUsage = new LoadBalancerUsage();
loadBalancerUsage.setLoadBalancerId(loadBalancerBilling.getLoadBalancerId());
loadBalancerUsage.setLoadBalancerName(loadBalancerBilling.getLoadBalancerName());
for (Usage usage : loadBalancerBilling.getUsageRecords()) {
loadBalancerUsage.getLoadBalancerUsageRecords().add(toRestApiUsage(usage));
}
loadBalancerUsages.add(loadBalancerUsage);
}
return loadBalancerUsages;
}
}