package org.weiboad.ragnar.server.data.statics; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Component; import org.weiboad.ragnar.server.data.MetaLog; import org.weiboad.ragnar.server.util.DateTimeHelper; import java.util.LinkedHashMap; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; @Component @Scope("singleton") public class APITopURLStaticShardCollect { private ConcurrentHashMap<Long, APITopURLStaticURLCollect> apiTopStaticHelper = new ConcurrentHashMap<Long, APITopURLStaticURLCollect>(); Logger log = LoggerFactory.getLogger(APITopURLStaticShardCollect.class); public void analyzeMetaLog(MetaLog metainfo) { Long shardTime = metainfo.getTime().longValue(); if (shardTime > 0) { shardTime = DateTimeHelper.getTimesMorning(shardTime); if (!apiTopStaticHelper.containsKey(shardTime)) { APITopURLStaticURLCollect apiTopURLStaticURLCollect = new APITopURLStaticURLCollect(shardTime); //count ++ apiTopURLStaticURLCollect.analyzeMetaLog(metainfo); apiTopStaticHelper.put(shardTime, apiTopURLStaticURLCollect); } else { //count ++ apiTopStaticHelper.get(shardTime).analyzeMetaLog(metainfo); } } } public Map<String, Integer> getAPITOPStatics() { Map<String, Integer> result = new LinkedHashMap<>(); for (Map.Entry<Long, APITopURLStaticURLCollect> ent : apiTopStaticHelper.entrySet()) { result.put(ent.getKey() + "", ent.getValue().getUrlSize()); } return result; } public APITopURLStaticURLCollect getSharder(Long timestamp, boolean create) { Long shardTime = DateTimeHelper.getTimesMorning(timestamp); if (!apiTopStaticHelper.containsKey(shardTime)) { if (create) { APITopURLStaticURLCollect apiTopURLStaticURLCollect = new APITopURLStaticURLCollect(shardTime); apiTopStaticHelper.put(shardTime, apiTopURLStaticURLCollect); return apiTopStaticHelper.get(shardTime); } //default not create this one return null; } else { return apiTopStaticHelper.get(shardTime); } } }