packagecom.castalia.market.blh.impl;importjava.io.Serializable;importjava.net.URL;importjava.util.ArrayList;importjava.util.List;importorg.apache.log4j.Logger;importorg.springframework.stereotype.Component;importnet.sf.ehcache.Cache;importnet.sf.ehcache.CacheManager;importnet.sf.ehcache.Element;importcom.castalia.market.blh.IgetCampaignPrizeFromCacheBlh;importcom.castalia.market.vo.CampaignPrizeRange;
@Componentpublic class getCampaignPrizeFromCacheBlhImpl implementsIgetCampaignPrizeFromCacheBlh {private static final Logger logger = Logger.getLogger(getCampaignPrizeFromCacheBlhImpl.class);privateCache cache;publicgetCampaignPrizeFromCacheBlhImpl()
{
URL url= CampaignPrizeCacheBlhImpl.class.getClassLoader().getResource("/config/ehcache.xml");
CacheManager manager= newCacheManager(url);
logger.info(manager.getName());
cache= manager.getCache("sampleCache2");
}
@Overridepublic synchronized String getCampaignPrizeFromCache(String key, intnum) {//TODO Auto-generated method stub
StringBuilder Hashcodes=newStringBuilder();
logger.info("取缓存的键:"+key);try{
Element result=cache.get(key);if(result==null)
{
logger.info("取缓存的键值: CacheNull");return "CacheNull";
}
@SuppressWarnings("deprecation")
List CampaignPrizeRanges=(List)result.getValue();
String ServerIndex=key.substring(0,2);int index=0;
List RemoveCampaignPrizeRanges=new ArrayList();
tag:for(CampaignPrizeRange e :CampaignPrizeRanges)
{for (long i=e.getStartValue();i<=e.getEndValue();i++)
{if(index>=num)
{
e.setStartValue(i);breaktag;
}else{
Hashcodes.append(ServerIndex+String.format("%06d", i)+",");
index++;
}
}
RemoveCampaignPrizeRanges.add(e);
}if(index!=num)
{
logger.info("取缓存的键值: Lack");return "Lack";
}else{for(CampaignPrizeRange e :RemoveCampaignPrizeRanges)
{
CampaignPrizeRanges.remove(e);
}if(Hashcodes.length()>0)
{
saveToCache(key,CampaignPrizeRanges);
}else{
logger.info("取缓存的键值: ");return "";
}
}
}catch(Exception e)
{return "Error";
}
String keyValue=Hashcodes.substring(0,Hashcodes.length()-1);
logger.info("取缓存的键值:"+keyValue);returnkeyValue;
}
@Overridepublic synchronized voidsaveToCache(String key,Object Value )
{
logger.info("进入锁保存数据键:"+key);try{//添加数据到缓存中
Element element = newElement(key, (Serializable)Value);
cache.put(element);
logger.info("保存成功");
}catch(Exception e)
{
logger.info(e.getMessage());
}
}
@OverridepublicString get(String key){
Element result=cache.get(key);if(result==null)
{return "CacheNull";
}
@SuppressWarnings("deprecation")
String ret=(String) result.getValue();returnret;
}
}