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<String> clauseList = new ArrayList<String>();
|
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<OrderInfo> orderInfoList = new ArrayList<OrderInfo>();
|
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<String, ConditionItem> cIMap = new HashMap<String, ConditionItem>();
|
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<String> clauseList_ = new ArrayList<String>();
|
clauseList_.add("btmAttr2");
|
refQt.setClauseList(clauseList_);
|
Condition condition_ = new Condition();
|
condition_.setRootCIName("ci1_");
|
Map<String, ConditionItem> cIMap_ = new HashMap<String, ConditionItem>();
|
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<String> clauseList = new ArrayList<String>();
|
clauseList.add("*");
|
qt.setClauseList(clauseList);
|
qt.setVersion(Version.lastReleasedRev);
|
|
Map<String, String> map = new HashMap<String, String>();
|
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<BOAndLO[]> completionExec = new ExecutorCompletionService<BOAndLO[]>(exec);
|
// List<Future<BOAndLO[]>> list1 = new ArrayList<Future<BOAndLO[]>>();
|
// List<Future<BOAndLO[]>> list2 = new ArrayList<Future<BOAndLO[]>>();
|
// int i;
|
// for (i = 0; i < 10; i++) {
|
//// list1.add(exec.submit(new CallableTest()));
|
// completionExec.submit(new CallableTest());
|
// }
|
//// for(Future<BOAndLO[]> 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<String> clauseList = new ArrayList<String>();
|
clauseList.add("*");
|
qt.setClauseList(clauseList);
|
Condition condition = new Condition();
|
qt.setCondition(condition);
|
condition.setRootCIName("ci1");
|
Map<String, ConditionItem> cIMap = new HashMap<String, ConditionItem>();
|
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<BOAndLO[]>{
|
|
@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<String> clauseList = new ArrayList<String>();
|
clauseList.add("*");
|
qt.setClauseList(clauseList);
|
Condition condition = new Condition();
|
qt.setCondition(condition);
|
condition.setRootCIName("ci1");
|
Map<String, ConditionItem> cIMap = new HashMap<String, ConditionItem>();
|
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;
|
}
|
|
}
|