package org.openstack.atlas.usagerefactor.generator; import org.openstack.atlas.service.domain.events.UsageEvent; import org.openstack.atlas.service.domain.usage.entities.LoadBalancerMergedHostUsage; import java.util.ArrayList; import java.util.Calendar; import java.util.GregorianCalendar; import java.util.List; public class PolledUsageRecordGenerator { private static final long DEFAULT_OUTGOING_TRANSFER = 0; private static final long DEFAULT_INCOMING_TRANSFER = 0; private static final long DEFAULT_OUTGOING_TRANSFER_SSL = 0; private static final long DEFAULT_INCOMING_TRANSFER_SSL = 0; private static final int DEFAULT_CONCURRENT_CONNECTIONS = 0; private static final int DEFAULT_CONCURRENT_CONNECTIONS_SSL = 0; private static final int DEFAULT_NUM_VIPS = 1; private static final int DEFAULT_TAGS_BITMASK = 0; private static final int DEFAULT_POLL_INTERVAL = 5; public static List<LoadBalancerMergedHostUsage> generate(List<GeneratorPojo> generatorPojoList, Calendar initialPollTime){ return generate(generatorPojoList, initialPollTime, DEFAULT_POLL_INTERVAL, DEFAULT_OUTGOING_TRANSFER, DEFAULT_INCOMING_TRANSFER, DEFAULT_OUTGOING_TRANSFER_SSL, DEFAULT_INCOMING_TRANSFER_SSL, DEFAULT_CONCURRENT_CONNECTIONS, DEFAULT_CONCURRENT_CONNECTIONS_SSL, DEFAULT_NUM_VIPS, DEFAULT_TAGS_BITMASK, null); } public static List<LoadBalancerMergedHostUsage> generate(List<GeneratorPojo> generatorPojoList, Calendar initialPollTime, int tagsBitMask){ return generate(generatorPojoList, initialPollTime, DEFAULT_POLL_INTERVAL, DEFAULT_OUTGOING_TRANSFER, DEFAULT_INCOMING_TRANSFER, DEFAULT_OUTGOING_TRANSFER_SSL, DEFAULT_INCOMING_TRANSFER_SSL, DEFAULT_CONCURRENT_CONNECTIONS, DEFAULT_CONCURRENT_CONNECTIONS_SSL, DEFAULT_NUM_VIPS, tagsBitMask, null); } public static List<LoadBalancerMergedHostUsage> generate(List<GeneratorPojo> generatorPojoList, Calendar initialPollTime, List<UsageEvent> eventTypes){ return generate(generatorPojoList, initialPollTime, DEFAULT_POLL_INTERVAL, DEFAULT_OUTGOING_TRANSFER, DEFAULT_INCOMING_TRANSFER, DEFAULT_OUTGOING_TRANSFER_SSL, DEFAULT_INCOMING_TRANSFER_SSL, DEFAULT_CONCURRENT_CONNECTIONS, DEFAULT_CONCURRENT_CONNECTIONS_SSL, DEFAULT_NUM_VIPS, DEFAULT_TAGS_BITMASK, eventTypes); } public static List<LoadBalancerMergedHostUsage> generate(List<GeneratorPojo> generatorPojoList, Calendar initialPollTime, long outgoingTransfer, long incomingTransfer){ return generate(generatorPojoList, initialPollTime, DEFAULT_POLL_INTERVAL, outgoingTransfer, incomingTransfer, DEFAULT_OUTGOING_TRANSFER_SSL, DEFAULT_INCOMING_TRANSFER_SSL, DEFAULT_CONCURRENT_CONNECTIONS, DEFAULT_CONCURRENT_CONNECTIONS_SSL, DEFAULT_NUM_VIPS, DEFAULT_TAGS_BITMASK, null); } public static List<LoadBalancerMergedHostUsage> generate(List<GeneratorPojo> generatorPojoList, Calendar initialPollTime, long outgoingTransfer, long incomingTransfer, long outgoingTransferSsl, long incomingTransferSsl, List<UsageEvent> eventTypes){ return generate(generatorPojoList, initialPollTime, DEFAULT_POLL_INTERVAL, outgoingTransfer, incomingTransfer, outgoingTransferSsl, incomingTransferSsl, DEFAULT_CONCURRENT_CONNECTIONS, DEFAULT_CONCURRENT_CONNECTIONS_SSL, DEFAULT_NUM_VIPS, DEFAULT_TAGS_BITMASK, eventTypes); } public static List<LoadBalancerMergedHostUsage> generate(List<GeneratorPojo> generatorPojoList, Calendar initialPollTime, int pollIntervalInMins, long outgoingTransfer, long incomingTransfer, long outgoingTransferSsl, long incomingTransferSsl, int concurrentConnections, int concurrentConnectionsSsl, int numVips, int tagsBitmask, List<UsageEvent> eventTypes) { List<LoadBalancerMergedHostUsage> LoadBalancerMergedHostUsages = new ArrayList<LoadBalancerMergedHostUsage>(); Calendar pollTime; int idCnt = 1; for (GeneratorPojo generatorPojo : generatorPojoList) { pollTime = initialPollTime; UsageEvent eventType = null; for (int j = 0; j < generatorPojo.getNumRecords(); j++) { if(eventTypes != null && j < eventTypes.size()){ eventType = eventTypes.get(j); } LoadBalancerMergedHostUsage LoadBalancerMergedHostUsage = new LoadBalancerMergedHostUsage( generatorPojo.getAccountId(), generatorPojo.getLoadbalancerId(), outgoingTransfer, incomingTransfer, incomingTransferSsl, outgoingTransferSsl, concurrentConnections, concurrentConnectionsSsl, numVips, tagsBitmask, pollTime, eventType ); LoadBalancerMergedHostUsages.add(LoadBalancerMergedHostUsage); Calendar newPollTime = new GregorianCalendar(pollTime.get(Calendar.YEAR), pollTime.get(Calendar.MONTH), pollTime.get(Calendar.DAY_OF_MONTH), pollTime.get(Calendar.HOUR), pollTime.get(Calendar.MINUTE), pollTime.get(Calendar.SECOND)); newPollTime.add(Calendar.MINUTE, pollIntervalInMins); pollTime = newPollTime; } } return LoadBalancerMergedHostUsages; } }