/**
* Licensed under the terms of the Apache License 2.0. Please see LICENSE file in the project root for terms.
*/
package apex.benchmark;
import java.io.Serializable;
public class DimensionTuple implements Serializable
{
private static final long serialVersionUID = -4382320567154145354L;
public static final String ADID = "adId";
public static final String CAMPAIGNID = "campaignId";
public static final String EVENTTIME = "eventTime";
public static final String CLICKS = "clicks";
public static final String LATENCY = "latency";
public String adId;
public String campaignId;
public long eventTime;
public long clicks = 1;
protected static boolean autoGeneratorCampaignId = true;
public static DimensionTuple fromTuple(Tuple tuple)
{
/**
* The campaignId should not empty in normal case.
* This part of code is used for unit test where campainId will not populated.
* Choose a special campainId for easier identify if any problem
*/
if(tuple.campaignId == null && autoGeneratorCampaignId) {
tuple.campaignId = "1111111111111111111";
}
if (tuple.adId == null || tuple.campaignId == null || tuple.event_time == null) {
return null;
}
try {
return new DimensionTuple(tuple);
} catch (NumberFormatException e) {
return null;
}
}
public DimensionTuple()
{
}
public DimensionTuple(Tuple tuple)
{
this(tuple.adId, tuple.campaignId, Long.valueOf(tuple.event_time), tuple.clicks == null ? 1L : Long.valueOf(tuple.clicks));
}
/**
* following code are for Hard Coded Dimension Computation only
*/
public DimensionTuple(String adId, String campaignId, long eventTime, long clicks)
{
this.adId = adId;
this.campaignId = campaignId;
this.eventTime = eventTime;
this.clicks = clicks;
}
public long getLatency()
{
return System.currentTimeMillis() - eventTime;
}
}