package com.vci.test.oq; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.concurrent.Callable; import com.vci.client.common.oq.OQTool; import com.vci.client.common.providers.ServiceProvider; import com.vci.client.oq.QTClient; import com.vci.client.oq.QTDClient; import com.vci.common.qt.object.ChildrenInfo; import com.vci.common.qt.object.Condition; import com.vci.common.qt.object.ConditionItem; import com.vci.common.qt.object.Connector; import com.vci.common.qt.object.LeafInfo; import com.vci.common.qt.object.LeafValue; import com.vci.common.qt.object.Operator; import com.vci.common.qt.object.OrderInfo; import com.vci.common.qt.object.PageInfo; import com.vci.common.qt.object.QTConstants; import com.vci.common.qt.object.QueryTemplate; import com.vci.common.qt.object.Version; import com.vci.corba.common.VCIError; import com.vci.corba.omd.data.BusinessObject; import com.vci.corba.omd.data.LinkObject; import com.vci.corba.query.data.BOAndLO; public class Test{ @org.junit.Test public void getQT() throws VCIError{ boolean qt = ServiceProvider.getOMDService().getQTDService().isExistsQT("GroupPRunitQueryAll"); System.out.println(); } @org.junit.Test public void buildWholeQT(){ QueryTemplate qt = new QueryTemplate(); qt.setId("queryLink"); qt.setType("link"); qt.setLinkType("DocumentRelation"); qt.setBtmType("Document"); List clauseList = new ArrayList(); clauseList.add("*"); qt.setClauseList(clauseList); PageInfo pageInfo = new PageInfo(); pageInfo.setPageNO(1); pageInfo.setRowCount(100); qt.setPageInfo(pageInfo); qt.setVersion(Version.currentRevLastVer); qt.setDirection("positive"); qt.setLevel(1); List orderInfoList = new ArrayList(); OrderInfo e = new OrderInfo(); e.setLevel(2); e.setOrderField("linkAttr1"); e.setOrderMode(QTConstants.ORDERMODE_DESC); orderInfoList.add(e ); OrderInfo e2 = new OrderInfo(); e2.setLevel(5); e2.setOrderField("T_OID.btmAttr1"); e2.setOrderMode(QTConstants.ORDERMODE_ASC); orderInfoList.add(e2 ); qt.setOrderInfoList(orderInfoList ); Condition condition = new Condition(); condition.setRootCIName("ci3"); Map cIMap = new HashMap(); condition.setCIMap(cIMap ); ConditionItem ci1 = new ConditionItem(); ci1.setId("ci1"); ci1.setLeafFlag(true); LeafInfo leafInfo = new LeafInfo(); leafInfo.setClause("linkAttr2"); leafInfo.setOperator(Operator.EQUAL); LeafValue value = new LeafValue(); value.setOrdinaryValue("abc"); leafInfo.setValue(value ); ci1.setLeafInfo(leafInfo ); ConditionItem ci2 = new ConditionItem(); ci2.setId("ci2"); ci2.setLeafFlag(true); LeafInfo leafInfo_ = new LeafInfo(); leafInfo_.setClause("T_OID.btmAttr2"); leafInfo_.setOperator(Operator.IN); LeafValue value_ = new LeafValue(); QueryTemplate refQt = new QueryTemplate(); refQt.setId("queryBtm"); refQt.setType("btm"); refQt.setBtmType("Document"); refQt.setVersion(3); List clauseList_ = new ArrayList(); clauseList_.add("btmAttr2"); refQt.setClauseList(clauseList_); Condition condition_ = new Condition(); condition_.setRootCIName("ci1_"); Map cIMap_ = new HashMap(); condition_.setCIMap(cIMap_ ); ConditionItem ci1_ = new ConditionItem(); cIMap_.put("ci1_", ci1_ ); ci1_.setId("ci1_"); ci1_.setLeafFlag(true); LeafInfo _leafInfo = new LeafInfo(); _leafInfo.setClause("btmAttr3"); _leafInfo.setOperator(Operator.LIKE); LeafValue _value = new LeafValue(); _value.setOrdinaryValue("abc"); _leafInfo.setValue(_value ); ci1_.setLeafInfo(_leafInfo ); refQt.setCondition(condition_); value_.setQueryTemplate(refQt ); leafInfo_.setValue(value_ ); ci2.setLeafInfo(leafInfo_ ); cIMap.put("ci1", ci1); cIMap.put("ci2", ci2); ConditionItem ci3 = new ConditionItem(); ci3.setId("ci3"); ci3.setLeafFlag(false); ChildrenInfo childrenInfo = new ChildrenInfo(); childrenInfo.setConnector(Connector.AND); childrenInfo.setLeftCIName("ci1"); childrenInfo.setRightCIName("ci2"); ci3.setChildrenInfo(childrenInfo ); cIMap.put("ci3", ci3 ); qt.setCondition(condition); String asXML = OQTool.qtTOXMl(qt).asXML(); System.out.println(); } public static void main(String[] args){ int i; for(i = 0; i < 1; i++){ Thread t = new Thread(new RunnableTest()); t.setName("thread-" + i); t.start(); } QueryTemplate qt = new QueryTemplate(); qt.setId("queryBtm"); qt.setType(QTConstants.TYPE_BTM); qt.setBtmType("part"); List clauseList = new ArrayList(); clauseList.add("*"); qt.setClauseList(clauseList); qt.setVersion(Version.lastReleasedRev); Map map = new HashMap(); map.put("nameoid", "6AF73192-2B0C-FFF5-2B76-9819C44E566F"); Condition condition = OQTool.getCondition(map ); qt.setCondition(condition); BusinessObject[] bts = null; long ss = System.currentTimeMillis(); try { bts = QTClient.getService().findBTMObjects(qt.getId(), OQTool.getQTTextByQT(qt)); } catch (VCIError e) { e.printStackTrace(); } long ss2 = System.currentTimeMillis(); System.out.println("BusinessObject: " + (ss2 - ss) + "-----" + bts.length); } // public static void main(String[] args) throws InterruptedException, ExecutionException, TimeoutException { // ExecutorService exec = Executors.newCachedThreadPool(); // ExecutorCompletionService completionExec = new ExecutorCompletionService(exec); // List> list1 = new ArrayList>(); // List> list2 = new ArrayList>(); // int i; // for (i = 0; i < 10; i++) { //// list1.add(exec.submit(new CallableTest())); // completionExec.submit(new CallableTest()); // } //// for(Future f1 : list1){ //// //如有必要,等待计算完成,然后获取其结果。 //// BOAndLO[] boAndLOs = f1.get(Long.MAX_VALUE, TimeUnit.MILLISECONDS); //// System.out.println(f1.toString() + ":" + boAndLOs.length); //// } // // for(i = 0; i < 10; i++){ // //completionExec.take(): // //获取并移除表示下一个已完成任务的 Future,如果目前不存在这样的任务,则等待。 // //任务完成后调用done(),将完成的任务加入队列;如果队列中没有已经完成的任务,则等待。 // BOAndLO[] boAndLOs = completionExec.take().get(Long.MAX_VALUE, TimeUnit.MILLISECONDS); // System.out.println(i + ":" + boAndLOs.length); // } // exec.shutdownNow(); // exec.awaitTermination(Long.MAX_VALUE, TimeUnit.MILLISECONDS); // } } class RunnableTest implements Runnable{ @Override public void run() { QueryTemplate qt = new QueryTemplate(); qt.setId("queryLink"); qt.setType("link"); qt.setLinkType("MBOM"); qt.setBtmType("part"); qt.setVersion(Version.lastReleasedRev); qt.setDirection("positive"); qt.setRecReturnMode(QTConstants.RECRETURNMODE_FILTER); qt.setLevel(10); List clauseList = new ArrayList(); clauseList.add("*"); qt.setClauseList(clauseList); Condition condition = new Condition(); qt.setCondition(condition); condition.setRootCIName("ci1"); Map cIMap = new HashMap(); condition.setCIMap(cIMap ); ConditionItem ci1 = new ConditionItem(); ci1.setId("ci1"); ci1.setLeafFlag(true); LeafInfo leafInfo = new LeafInfo(); leafInfo.setClause("f_oid"); leafInfo.setOperator(Operator.EQUAL); LeafValue value = new LeafValue(); value.setOrdinaryValue("E120EECE-733D-F0CE-0465-9DB3BBC7086B"); // value.setOrdinaryValue("FC9F8F84-0C06-EC51-4089-4A5C60115B81"); leafInfo.setValue(value ); ci1.setLeafInfo(leafInfo ); cIMap.put("ci1", ci1); ConditionItem ci2 = new ConditionItem(); ci2.setId("ci2"); ci2.setLeafFlag(true); LeafInfo leafInfo_ = new LeafInfo(); leafInfo_.setClause("ownedmanuproduct"); leafInfo_.setOperator(Operator.EQUAL); LeafValue value_ = new LeafValue(); value_.setOrdinaryValue("5F460EF5-7EBE-0A9D-C32D-451C6D343AF1"); leafInfo_.setValue(value_ ); ci2.setLeafInfo(leafInfo_ ); cIMap.put("ci1", ci1); cIMap.put("ci2", ci2); ConditionItem ci3 = new ConditionItem(); ci3.setId("ci3"); ci3.setLeafFlag(false); ChildrenInfo childrenInfo = new ChildrenInfo(); childrenInfo.setConnector(Connector.AND); childrenInfo.setLeftCIName("ci1"); childrenInfo.setRightCIName("ci2"); ci3.setChildrenInfo(childrenInfo ); cIMap.put("ci3", ci3 ); long s1 = System.currentTimeMillis(); LinkObject[] los = null; try { los = QTClient.getService().findLTObjects(qt.getId(), OQTool.getQTTextByQT(qt)); System.out.println(); } catch (VCIError e) { e.printStackTrace(); } long s11 = System.currentTimeMillis(); System.out.println(Thread.currentThread().getName() + "****findLTObjects:" + (s11 - s1) +"--"+ los.length); // BOAndLO[] boAndLOS = null; // long s2 = System.currentTimeMillis(); // try { // boAndLOS = QTClient.getService().getBOAndLOS(qt.getId(), Tool.getQTTextByQT(qt), ""); // } catch (VCIError e) { // e.printStackTrace(); // } // long s3 = System.currentTimeMillis(); // System.out.println(Thread.currentThread().getName() + "****BOAndLO:" + (s3 - s2) +"--"+ boAndLOS.length); } } class CallableTest implements Callable{ @Override public BOAndLO[] call() throws Exception { QueryTemplate qt = new QueryTemplate(); qt.setId("queryLink"); qt.setType("link"); qt.setLinkType("EBOM"); qt.setBtmType("part,product"); qt.setVersion(Version.lastReleasedRev); qt.setDirection("positive"); qt.setLevel(10); List clauseList = new ArrayList(); clauseList.add("*"); qt.setClauseList(clauseList); Condition condition = new Condition(); qt.setCondition(condition); condition.setRootCIName("ci1"); Map cIMap = new HashMap(); condition.setCIMap(cIMap ); ConditionItem ci1 = new ConditionItem(); ci1.setId("ci1"); ci1.setLeafFlag(true); LeafInfo leafInfo = new LeafInfo(); leafInfo.setClause("f_oid"); leafInfo.setOperator(Operator.EQUAL); LeafValue value = new LeafValue(); value.setOrdinaryValue("E120EECE-733D-F0CE-0465-9DB3BBC7086B"); leafInfo.setValue(value ); ci1.setLeafInfo(leafInfo ); cIMap.put("ci1", ci1); long s2 = System.currentTimeMillis(); BOAndLO[] boAndLOS = null; try { boAndLOS = QTClient.getService().getBOAndLOS(qt.getId(), OQTool.getQTTextByQT(qt), ""); } catch (VCIError e) { e.printStackTrace(); } long s3 = System.currentTimeMillis(); // System.out.println(Thread.currentThread().getName() + "***BOAndLO:" + (s3 - s2)); return boAndLOS; } }