PackageCom.castalia.market.blh.impl;Importjava.io.Serializable;ImportJava.net.URL;ImportJava.sql.Timestamp;Importjava.util.ArrayList;ImportJava.util.HashMap;ImportJava.util.Iterator;Importjava.util.List;ImportJava.util.Map;ImportJava.util.StringTokenizer;ImportOrg.apache.log4j.Logger;Importorg.springframework.jdbc.core.JdbcTemplate;Importcom.castalia.base.util.ObjectUtils;ImportCom.castalia.market.util.IPUtil;ImportCom.castalia.market.util.ServerDetector;ImportCom.castalia.market.vo.CampaignPrizeRange;ImportCom.castalia.market.vo.ConfigSms;ImportCom.castalia.market.blh.IgetCampaignPrizeFromCacheBlh;ImportCom.castalia.market.dao.ICampaignPrizeDao; Public classCampaignprizecacheblhimpl {Private Static FinalLogger Logger = Logger.getlogger (Campaignprizecacheblhimpl.class); Privateconfigsms configsms; PrivateJdbcTemplate JdbcTemplate; PrivateIcampaignprizedao Campaignprizedao; PrivateIGETCAMPAIGNPRIZEFROMCACHEBLH Getcampaignprizefromcache; Publicconfigsms getconfigsms () {returnconfigsms; } Public voidsetconfigsms (configsms configsms) { This. configsms =configsms; } PublicJdbcTemplate getjdbctemplate () {returnJdbcTemplate; } Public voidsetjdbctemplate (JdbcTemplate jdbctemplate) { This. JdbcTemplate =JdbcTemplate; } PublicIGETCAMPAIGNPRIZEFROMCACHEBLH Getgetcampaignprizefromcache () {returnGetcampaignprizefromcache; } Public voidSetgetcampaignprizefromcache (Igetcampaignprizefromcacheblh getcampaignprizefromcache) {
This. Getcampaignprizefromcache =Getcampaignprizefromcache; } PublicIcampaignprizedao Getcampaignprizedao () {returnCampaignprizedao; } Public voidSetcampaignprizedao (Icampaignprizedao Campaignprizedao) { This. Campaignprizedao =Campaignprizedao; } Private voidLoadData (String Serverindex,LongCampaignid,LongPrizetypeid) {String key=serverindex+campaignid+Prizetypeid; String procedure= "{call Campaignprize_range (?,?,?,?)}"; Object[] Objs=objectutils. Asarray (Campaignid, Prizetypeid, Serverindex); String ServerName= "Tomcat"; if(Serverdetector.istomcat ()) {ServerName= "Tomcat"; } Else if(Serverdetector.iswebsphere ()) {ServerName= "WebSphere"; } logger.info ("Server name is:" +serverName); Logger.info ("Execute stored procedure, parameters:" +serverindex+ "," +campaignid+ "," +Prizetypeid); Object retval=Campaignprizedao.runprocedure (procedure, OBJS, serverName); String Retstr=retval.tostring (); Logger.info ("End of execution, result:" +retstr); Try{ if(retstr!= "") { if(Retstr.tochararray () [0]!= ' E ') {Retstr=retstr.substring (0,retstr.length ()-1); List<CampaignPrizeRange> campaignprizeranges=NewArraylist<campaignprizerange>(); StringTokenizer StringTokenizer=NewStringTokenizer (RETSTR, "$"); while(Stringtokenizer.hasmoretokens ()) {String Level1token=Stringtokenizer.nexttoken (); Campaignprizerange Campaignprizerange=NewCampaignprizerange (); String[] Startandend=level1token.split (","); if(startandend==NULL|| Startandend.length<2){ Continue; } logger.info ("Startandend---[0]:" +startandend[0]); Logger.info ("Startandend---[1]:" +startandend[1]); Campaignprizerange.setstartvalue (Long.parselong (startandend[0])); Campaignprizerange.setendvalue (Long.parselong (startandend[1])); Campaignprizeranges.add (Campaignprizerange); } getcampaignprizefromcache.savetocache (Key,campaignprizeranges); } } } Catch(Exception e) {logger.info (E.getmessage ()); Logger.info ("Getcampaignprize Error:" +campaignid+ "" +Prizetypeid); } } Public classGetcampaignprizerangeblhImplementsRunnable {PrivateString Serverindex; Private LongCampaignid,prizetypeid; PublicGETCAMPAIGNPRIZERANGEBLH (String Serverindex,LongCampaignid,LongPrizetypeid) { This. serverindex=Serverindex; This. campaignid=Campaignid; This. prizetypeid=Prizetypeid; } @Override Public voidrun () {//TODO auto-generated Method StubLoadData ( This. Serverindex, This. Campaignid, This. Prizetypeid); } } PublicCampaignprizecacheblhimpl (configsms configsms,jdbctemplate Jdbctemplate,icampaignprizedao CampaignPrizeDao, Igetcampaignprizefromcacheblh getcampaignprizefromcacheblh) { This. configsms=configsms; This. jdbctemplate=JdbcTemplate; This. campaignprizedao=Campaignprizedao; This. getcampaignprizefromcache=GETCAMPAIGNPRIZEFROMCACHEBLH; Cachecampaiginprize (); } Public voidcachecampaiginprize () {//TODO auto-generated Method StubString localhostaddress =iputil.getaddress (); String[] Hashserverarra=configsms.gethashserver (). Split (","); String Servernum=""; for(inti=0;i) { if(Hashserverarra[i].trim (). Contains (localhostaddress)) {Servernum=string.format ("%02d", i); Break; } } if(servernum== "") {Logger.info ("Current server IP:" +localhostaddress+ "the server configured in the data configuration file does not have this address, cannot complete the column data to the cache, cannot carry on the subsequent PIE award work"); return; } getcampaignprizefromcache.savetocache ("Serverindex", Servernum); Starthashcampaignprize (Servernum); } Private voidstarthashcampaignprize (String serverindex) {Try{String SQL= "SELECT distinct T.campaignid,t.prizetypeid from Mkt_campaignprize T joins Mkt_marketcampaign m on T.campaignid=m.campai Gnid and m.state=0 where t.issend=0 and t.hashcode like ' +serverindex+ ' percent ' group by T.campaignid, T.prizetypeid '; List rows=jdbctemplate.queryforlist (SQL); Iterator it=Rows.iterator (); while(It.hasnext ()) {Map QueryResult=(MAP) it.next (); LongCampaigid =long.parselong (Queryresult.get ("Campaignid"). toString ()); LongPrizetypeid =long.parselong (Queryresult.get ("Prizetypeid"). toString ()); Logger.info (Prizetypeid); //LoadData (Serverindex,campaigid,prizetypeid); NewThread (NewGETCAMPAIGNPRIZERANGEBLH (Serverindex,campaigid,prizetypeid)). Start (); } } Catch(Exception e) {logger.info (E.getmessage ()); } }}
Java Internal class multithreading