package com.sohu.cache.entity;
import com.sohu.cache.dao.AppStatsDao;
import com.sohu.cache.web.util.DateUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.util.NumberUtils;
import java.util.Date;
/**
* Created by yijunzhang on 14-9-2.
*/
public class TimeDimensionality {
private final Logger logger = LoggerFactory.getLogger(this.getClass());
private final long begin;
private final long end;
private final int dimensionality;
public TimeDimensionality(long begin, long end, String format) {
Date beginDate = DateUtil.getDateByFormat(String.valueOf(begin), format);
Date endDate = DateUtil.getDateByFormat(String.valueOf(end), format);
this.dimensionality = getSuitableDimensionality(beginDate, endDate);
if (dimensionality == AppStatsDao.MINUTE_DIMENSIONALITY) {
this.begin = Long.parseLong(DateUtil.formatDate(beginDate, "yyyyMMddHHmm"));
} else {
this.begin = Long.parseLong(DateUtil.formatDate(beginDate, "yyyyMMddHH"));
}
if (dimensionality == AppStatsDao.MINUTE_DIMENSIONALITY) {
this.end = Long.parseLong(DateUtil.formatDate(endDate, "yyyyMMddHHmm"));
} else {
this.end = Long.parseLong(DateUtil.formatDate(endDate, "yyyyMMddHH"));
}
}
public long getBegin() {
return begin;
}
public long getEnd() {
return end;
}
public int getDimensionality() {
return dimensionality;
}
/**
* 获取合适的维度
*/
private int getSuitableDimensionality(Date begin, Date end) {
try {
long s1 = begin.getTime();
long s2 = end.getTime();
long hour = (s2 - s1) / 1000 / 60 / 60;
if (hour >= 48) {
return AppStatsDao.HOUR_DIMENSIONALITY;
} else {
return AppStatsDao.MINUTE_DIMENSIONALITY;
}
} catch (Exception e) {
logger.error(e.getMessage(), e);
}
return AppStatsDao.MINUTE_DIMENSIONALITY;
}
@Override
public String toString() {
return "TimeDimensionality [begin=" + begin + ", end=" + end
+ ", dimensionality=" + dimensionality + "]";
}
}