123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- package com.cloudcross.ssp.loader;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.HashSet;
- import java.util.Iterator;
- import java.util.List;
- import java.util.Map;
- import java.util.Set;
- import org.apache.log4j.Logger;
- import com.cloudcross.ssp.model.Advertiser;
- /**
- * 将广告主代理商信息存入内存
- *创建人:周俊
- *创建时间:2016.01.04
- *
- */
- public class AdvertiserLoader {
- private static final Logger log = Logger.getLogger(AdvertiserLoader.class);
-
- public static List<Advertiser> ADVERTISER_LIST = new ArrayList<Advertiser>();//存放所有的广告主信息
- private static Map<Long,String> AGENTID_ADVERTISERID_MAP = new HashMap<Long,String>();//存放agentId,advertiserId键值对
- /**
- * 获取所有的agentId放入set集合
- * @return
- */
- private static Set<Long> setAgentIdSet(){
- Set<Long> agentIdSet = new HashSet<Long>();
- if(ADVERTISER_LIST != null && ADVERTISER_LIST.size()>0){
- for(Advertiser adv:ADVERTISER_LIST){
- agentIdSet.add(adv.getAgentId());
- }
- }else{
- log.debug("ADVERTISER_LIST为空,广告主信息为空或没有加载到内存,请检查!");
- }
- return agentIdSet;
- }
-
- /**
- * 处理加载内存中的广告主的数据,根据agentId把数据分成不同的组
- * key:agentId
- * value:List<Advertiser> list里面的数据有共同的agentId
- * @return
- */
- private static Map<Long,List<Advertiser>> setAgentIdKeyMap(){
- Map<Long,List<Advertiser>> agentKeyMap = new HashMap<Long, List<Advertiser>>();
- Set<Long> agentIdSet = setAgentIdSet();
- Iterator<Long> it = agentIdSet.iterator();
- while(it.hasNext()){
- Long agentId = it.next();
- List<Advertiser> advList = new ArrayList<Advertiser>();
- for(int i=0;i<ADVERTISER_LIST.size();i++){
- if(agentId.equals(ADVERTISER_LIST.get(i).getAgentId())){
- advList.add(ADVERTISER_LIST.remove(i));
- i--;
- }
- }
- agentKeyMap.put(agentId, advList);
- }
- return agentKeyMap;
- }
-
- /**
- * 将通过agentId分类的数据广告主List集合中的广告主Id拼接成字符串,结果放到AGENTID_ADVERTISERID_MAP中
- * key:agenyId
- * value:{advertiserId1,advertiserId2,advertiserId3,...}
- */
- public static void setAgentIdAdvertiserIdMap(){
- Map<Long,List<Advertiser>> map = setAgentIdKeyMap();
- List<Advertiser> list = null;
- for(Map.Entry<Long, List<Advertiser>> entry:map.entrySet()){
- Long l = entry.getKey();
- list = entry.getValue();
- Integer count = list.size();
- String str = "";
- for(int i=0;i<count-1;i++){
- str = str+list.get(i).getId()+",";
- }
- str = str + list.get(count-1).getId();
- AGENTID_ADVERTISERID_MAP.put(l, str);
- }
- }
-
- /**
- * 提供外部访问内存数据的方法
- * @param agentId
- * @return
- */
- public static String getAgentIdAdvertiserIdMap(Long agentId){
- if(AGENTID_ADVERTISERID_MAP != null && AGENTID_ADVERTISERID_MAP.size()>0){
- log.debug(AGENTID_ADVERTISERID_MAP.get(agentId));
- return AGENTID_ADVERTISERID_MAP.get(agentId);
- }else{
- log.debug("无法从内存获取数据");
- return "";
- }
- }
- }
|