package com.fourinone; import java.util.concurrent.LinkedBlockingQueue; import java.util.List; public class ParkPatternExector { private static ParkLocal pl; private static LinkedBlockingQueue<ParkPatternBean> bq = new LinkedBlockingQueue<ParkPatternBean>(); private static AsyncExector aeLastest=null; static ParkLocal getParkLocal() { if(pl==null) { /*String[][] servers = {{"localhost","1888"},{"localhost","1889"}};//get from config.xml pl = BeanContext.getPark(servers[0][0], Integer.parseInt(servers[0][1]), servers);*/ pl = BeanContext.getPark(); } return pl; } static ParkLocal getParkLocal(String host, int port){ return pl=pl==null?BeanContext.getPark(host, port):pl; } static List<ObjectBean> getWorkerTypeList(String workerType) { return getParkLocal().get("_worker_"+workerType); } static List<ObjectBean> getWorkerTypeList(String parkhost, int parkport, String workerType) { return getParkLocal(parkhost, parkport).get("_worker_"+workerType); } static ObjectBean createWorkerTypeNode(String workerType, String nodevalue) { return getParkLocal().create("_worker_"+workerType, ParkGroup.getKeyId(), nodevalue, AuthPolicy.OP_ALL, true); } static ObjectBean createWorkerTypeNode(String parkhost, int parkport, String workerType, String nodevalue) { return getParkLocal(parkhost, parkport).create("_worker_"+workerType, ParkGroup.getKeyId(), nodevalue, AuthPolicy.OP_ALL, true); } static ObjectBean getLastestObjectBean(ObjectBean ob) { String[] keyarr = ParkObjValue.getDomainNode(ob.getName()); while(true) { ObjectBean curob = getParkLocal().getLastest(keyarr[0], keyarr[1], ob); if(curob!=null) return curob; } } static ObjectBean updateObjectBean(ObjectBean ob, WareHouse wh) { String[] keyarr = ParkObjValue.getDomainNode(ob.getName()); return getParkLocal().update(keyarr[0], keyarr[1], wh); } static void append(ParkPatternBean ppb) { try{ ObjectBean ob = getParkLocal().update(ppb.domain, ppb.node, ppb.inhouse); ppb.thisversion = ob; bq.put(ppb); if(aeLastest==null){ LogUtil.fine("", "", "AsyncExector aeLastest:"); (aeLastest = new AsyncExector(){ public void task(){ try{ while(true){ ParkPatternBean curPpb = bq.take(); //System.out.println("ParkPatternExector bq.size():"+bq.size()); ObjectBean curversion = getParkLocal().getLastest(curPpb.domain, curPpb.node, curPpb.thisversion); if(curversion!=null) { curPpb.thisversion = curversion; curPpb.rx.setRecall(false); curPpb.outhouse.putAll((WareHouse)curversion.toObject()); //curPpb.outhouse.setReady(true); curPpb.outhouse.setReady(FileResult.READY); } else bq.put(curPpb); } }catch(Exception e){ LogUtil.info("AsyncExector", "append aeLastest", e); //e.printStackTrace(); } } }).run(); } }catch(Exception e){ LogUtil.info("ParkPatternExector", "append", e); } } }