亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? replaceutil.java

?? UCS (Ultra Corba Simulator) is one more powerful corba client/servant simulator tool than other simi
?? JAVA
字號:
package com.corba.mnq.xls;

import java.util.Enumeration;
import java.util.Hashtable;
import java.util.List;
import java.util.Map;
import java.util.Vector;

import com.corba.mnq.main.MNQmainFrame;
import com.corba.mnq.tool.Warehouse;
import com.corba.mnq.tool.idl.Args;
import com.corba.mnq.tool.idl.type.CTArray;
import com.corba.mnq.tool.idl.type.CTBasic;
import com.corba.mnq.tool.idl.type.CTDeclaration;
import com.corba.mnq.tool.idl.type.CTEnum;
import com.corba.mnq.tool.idl.type.CTSequence;
import com.corba.mnq.tool.idl.type.CTStruct;
import com.corba.mnq.tool.idl.type.CTUnion;
import com.corba.mnq.tool.idl.type.TypeBase;
import com.corba.mnq.ui.ArgsCellEditor;
import com.corba.mnq.ui.ArgsTable;
import com.corba.mnq.ui.MNQMutableTreeNode;

// note that here the op node means the op on workflow tree
// instead the op on top_ParaTree
public class ReplaceUtil {

	public static final int NODE_BEHIND = 1;

	public static final int NODE_AFTER = 2;

	// input a op type's node, return a List
	// the list conatin all parameters needed to be replaced
	// the list element is RepNode type
	private static Map op2paraList = new Hashtable();

	public static void clearAll() {
		op2paraList.clear();
	}

	public static void removeAllReplaceChild(MNQMutableTreeNode node) {
		List ls = ReplaceUtil.getReplacedChild(node);
		for (int i = 0; i < ls.size(); i++) {
			ReplaceUtil.removePara((MNQMutableTreeNode) ls.get(i));
		}
	}

	// only the op behind current op will appear
	public static List getSelectableNode(MNQMutableTreeNode node) {
		MNQMutableTreeNode op = getParaOpNode(node);
		return getBrother(op, ReplaceUtil.NODE_BEHIND);
	}

	// should be like "op[x].para[y].subpara[z]
	public static String getNodePathName(MNQMutableTreeNode node,
			MNQMutableTreeNode top) {
		String ret = "";
		MNQMutableTreeNode current = node;
		Object obj = node.getUserObject();
		ret = obj.toString();
		ret = ret + "[" + getNodeIndex(current) + "]";
		while (true) {
			current = (MNQMutableTreeNode) current.getParent();

			if (current == top)
				return ret;
			obj = current.getUserObject();
			ret = obj.toString() + "[" + getNodeIndex(current) + "]" + "."
					+ ret;
		}
	}

	public static MNQMutableTreeNode pathId2node(String id,
			MNQMutableTreeNode root) {
		// id like "1.2.3.4.0" from op on
		MNQMutableTreeNode current = root;
		String tmp = id.replace('.', ':');
		String[] ss = tmp.split(":");
		for (int i = 0; i < ss.length; i++) {
			int index = Integer.valueOf(ss[i]).intValue();
			try {
				current = (MNQMutableTreeNode) current.getChildAt(index);
			} catch (ArrayIndexOutOfBoundsException e) {
				return null;
			}
		}
		return current;
	}

	public static String getNodePathId(MNQMutableTreeNode node,
			MNQMutableTreeNode top) {
		String ret = "";
		MNQMutableTreeNode current = node;
		ret = ret + getNodeIndex(current);
		while (true) {
			current = (MNQMutableTreeNode) current.getParent();
			if (current == top)
				return ret;
			ret = getNodeIndex(current) + "." + ret;
		}
	}

	public static int getNodeIndex(MNQMutableTreeNode node) {
		MNQMutableTreeNode f = (MNQMutableTreeNode) node.getParent();
		// return f.getIndex(node);
		if (f == null) {
			System.out.println("parent is null");
			return 0;
		}
		int i = 0;
		i = f.getIndex(node);
		// for (Enumeration e = f.children(); e.hasMoreElements();) {
		// MNQMutableTreeNode mtn = (MNQMutableTreeNode) e.nextElement();
		// if (mtn == node)
		// return i;
		// i++;
		// }
		return i;

	}

	public static List getBrother(MNQMutableTreeNode node, int type) {
		List lst = new Vector();
		MNQMutableTreeNode f = (MNQMutableTreeNode) node.getParent();
		boolean isStart = false;
		for (Enumeration e = f.children(); e.hasMoreElements();) {
			MNQMutableTreeNode mtn = (MNQMutableTreeNode) e.nextElement();
			if (type == ReplaceUtil.NODE_AFTER) {
				if (isStart)
					lst.add(mtn);
				if (mtn == node)
					isStart = true;
			} else if (type == ReplaceUtil.NODE_BEHIND) {
				if (mtn == node)
					return lst;
				lst.add(mtn);
			}
		}
		return lst;
	}

	private static void getReplacedRecurredChild(MNQMutableTreeNode f, List lst) {
		if (findRepNode(f) != null) {
			lst.add(f);
		}
		if (!f.isLeaf()) {
			Enumeration e = f.children();
			while (e.hasMoreElements()) {
				MNQMutableTreeNode mtn = (MNQMutableTreeNode) e.nextElement();
				getReplacedRecurredChild(mtn, lst);
			}
		}
	}

	public static List getReplacedChild(MNQMutableTreeNode f) {
		List lst = new Vector();
		if (!f.isLeaf()) {
			Enumeration e = f.children();
			while (e.hasMoreElements()) {
				MNQMutableTreeNode mtn = (MNQMutableTreeNode) e.nextElement();
				getReplacedRecurredChild(mtn, lst);
			}
		}
		return lst;
	}

	// remove all parameters under the op
	// if other parameter reference to the para under this op
	// they should also be removed
	public static void removeList(MNQMutableTreeNode op) {
		// remove reference parameter;
		List lst = getBrother(op, ReplaceUtil.NODE_AFTER);
		for (int i = 0; i < lst.size(); i++) {
			List ls = getRepList((MNQMutableTreeNode) lst.get(i));
			if (ls != null) {
				for (int j = 0; j < ls.size(); j++) {
					RepNode rn = (RepNode) ls.get(j);
					MNQMutableTreeNode tmp = ReplaceUtil.pathId2node(rn.tid,
							MNQmainFrame.top_CaseTree);
					if (tmp != null && op == getParaOpNode(tmp)) {
						// remove reference
						ls.remove(rn);
						// re-loop, because index change
						j = 0;
					}
				}
			}
		}
		// remove op itself
		op2paraList.remove(op);
	}

	// remove a parameter from list
	public static void removePara(MNQMutableTreeNode para) {
		List lst = getRepList(para);
		if (lst != null) {
			for (int i = 0; i < lst.size(); i++) {
				RepNode rn = (RepNode) lst.get(i);
				String id = ReplaceUtil.getNodePathId(para,
						MNQmainFrame.top_CaseTree);
				if (rn.sid.equals(id)) {
					lst.remove(rn);
					return;
				}
			}
		}
	}

	public static String displayRepInfo(MNQMutableTreeNode para) {
		RepNode rn = findRepNode(para);
		if (rn == null)
			return null;
		MNQMutableTreeNode target = ReplaceUtil.pathId2node(rn.tid,
				MNQmainFrame.top_CaseTree);
		if (target == null)
			return null;
		String ret = getNodePathName(target, MNQmainFrame.top_CaseTree);

		return para.getUserObject().toString() + " was replaced by:\n	" + ret;
	}

	// get replace list by a parameter
	public static List getRepList(MNQMutableTreeNode para) {
		MNQMutableTreeNode op = getParaOpNode(para);
		Object o = op2paraList.get(op);
		if (o != null)
			return (List) o;
		else
			return null;
	}

	// if father node was already replaced, then it make no sence to replace
	// its child node, so give this method to judge
	public static boolean fatherRepExist(MNQMutableTreeNode para) {
		// MNQMutableTreeNode op=getParaOpNode(para);
		List lst = getRepList(para);
		if (lst == null) {
			return false;
		}
		// loop until up to op node
		MNQMutableTreeNode current = para;
		Object o = current.getUserObject();
		while (!(o instanceof OpFlowNode)) {
			current = (MNQMutableTreeNode) current.getParent();
			for (int i = 0; i < lst.size(); i++) {
				RepNode rn = (RepNode) lst.get(i);
				String id = ReplaceUtil.getNodePathId(current,
						MNQmainFrame.top_CaseTree);
				if (rn.sid.equals(id))
					return true;
			}
			o = current.getUserObject();
		}
		return false;
	}

	public static RepNode findRepNode(MNQMutableTreeNode src) {
		// MNQMutableTreeNode op=getParaOpNode(src);
		List lst = getRepList(src);
		if (lst == null)
			return null;
		for (int i = 0; i < lst.size(); i++) {
			RepNode rn = (RepNode) lst.get(i);
			String id = ReplaceUtil.getNodePathId(src,
					MNQmainFrame.top_CaseTree);
			if (rn.sid.equals(id))
				return rn;
		}
		return null;
	}

	public static void setRepParameterById(String sid, String tid) {
		MNQMutableTreeNode src = ReplaceUtil.pathId2node(sid,
				MNQmainFrame.top_CaseTree);
		RepNode rn = findRepNode(src);
		boolean isNew = false;
		if (rn == null) {
			isNew = true;
			rn = new RepNode();
		}
		rn.sid = sid;
		rn.tid = tid;
		if (isNew) {
			List lst = getRepList(src);
			if (lst == null)
				lst = new Vector();
			lst.add(rn);
			op2paraList.put(getParaOpNode(src), lst);
		}
	}

	public static void setRepParameter(MNQMutableTreeNode src,
			MNQMutableTreeNode target) {
		RepNode rn = findRepNode(src);
		boolean isNew = false;
		if (rn == null) {
			isNew = true;
			rn = new RepNode();
		}
		rn.sid = ReplaceUtil.getNodePathId(src, MNQmainFrame.top_CaseTree);
		rn.tid = ReplaceUtil.getNodePathId(target, MNQmainFrame.top_CaseTree);
		;
		if (isNew) {
			List lst = getRepList(src);
			if (lst == null)
				lst = new Vector();
			lst.add(rn);
			op2paraList.put(getParaOpNode(src), lst);
		}
	}

	public static MNQMutableTreeNode getParaOpNode(MNQMutableTreeNode para) {
		MNQMutableTreeNode current = para;
		Object o = current.getUserObject();

		while (true) {
			if (o instanceof OpFlowNode)
				return current;
			current = (MNQMutableTreeNode) current.getParent();
			o = current.getUserObject();
		}
	}

	// this method will be called before invoke a case
	public static void replace(MNQMutableTreeNode op) {
		List lst = getRepList(op);
		if (lst == null)
			return;
		// replace parameter one by one
		for (int i = 0; i < lst.size(); i++) {
			RepNode rn = (RepNode) lst.get(i);
			MNQMutableTreeNode src = ReplaceUtil.pathId2node(rn.sid,
					MNQmainFrame.top_CaseTree);
			MNQMutableTreeNode target = ReplaceUtil.pathId2node(rn.tid,
					MNQmainFrame.top_CaseTree);
			if (src == null || target == null)
				continue;
			replaceOnePara(src, target);
		}
	}

	private static void replaceOnePara(MNQMutableTreeNode src,
			MNQMutableTreeNode target) {
		Object srcObj = src.getUserObject();
		// replace ior
		Object oo = Warehouse.node2table.get(target);
		ArgsTable table = null;
		if (oo != null && (oo instanceof ArgsTable))
			table = (ArgsTable) oo;
		if (srcObj instanceof OpFlowNode) {
			OpFlowNode cn = (OpFlowNode) srcObj;
			cn.ior = table.getInputValue();
			return;
		}
		// replace parameter
		TypeBase srcType;

		// get srcType
		if (srcObj instanceof Args)
			srcType = ((Args) srcObj).pt;
		else
			// only Args & TypeBase on tree
			srcType = (TypeBase) srcObj;

		// set value, here assume that the node type is same between src &
		// target
		if (srcType instanceof CTBasic) {
			srcType.setValueToTree(table.getInputValue());
			if (srcType.rdn.equalsIgnoreCase("any")) {
				replaceOnePara((MNQMutableTreeNode) src.getFirstChild(),
						(MNQMutableTreeNode) target.getFirstChild());
			}
		} else if (srcType instanceof CTEnum) {
			srcType.setValueToTree(table.getInputValue());
		} else if (srcType instanceof CTUnion) {
			srcType.setValueToTree(table.getInputValue());
			if (!src.isLeaf()) {
				replaceOnePara((MNQMutableTreeNode) src.getFirstChild(),
						(MNQMutableTreeNode) target.getFirstChild());
			}
		} else if (srcType instanceof CTSequence) {
			src.removeAllChildren(true);
			Enumeration e = target.children();
			while (e.hasMoreElements()) {
				MNQMutableTreeNode mtn = (MNQMutableTreeNode) e.nextElement();
				TypeBase n_sib = ((CTSequence) srcType).t_in.cloneType();
				MNQMutableTreeNode dMTN_sib = new MNQMutableTreeNode(n_sib);
				src.add(dMTN_sib);
				n_sib.dmtn = dMTN_sib;
				ArgsCellEditor.createTreeCellEditorComponent(dMTN_sib,
						MNQmainFrame.caseTree);
				MNQmainFrame.buildParaSibling(dMTN_sib, n_sib,
						MNQmainFrame.caseTree);
				replaceOnePara(dMTN_sib, mtn);
			}
		} else if (srcType instanceof CTArray) {
			src.removeAllChildren(true);
			Enumeration e = target.children();
			while (e.hasMoreElements()) {
				MNQMutableTreeNode mtn = (MNQMutableTreeNode) e.nextElement();
				TypeBase n_sib = ((CTArray) srcType).t_in.cloneType();
				MNQMutableTreeNode dMTN_sib = new MNQMutableTreeNode(n_sib);
				src.add(dMTN_sib);
				n_sib.dmtn = dMTN_sib;
				ArgsCellEditor.createTreeCellEditorComponent(dMTN_sib,
						MNQmainFrame.caseTree);
				MNQmainFrame.buildParaSibling(dMTN_sib, n_sib,
						MNQmainFrame.caseTree);
				replaceOnePara(dMTN_sib, mtn);
			}
		} else if (srcType instanceof CTStruct) {
			Enumeration e1 = src.children();
			Enumeration e2 = target.children();
			while (e1.hasMoreElements() && e2.hasMoreElements()) {
				MNQMutableTreeNode mtn1 = (MNQMutableTreeNode) e1.nextElement();
				MNQMutableTreeNode mtn2 = (MNQMutableTreeNode) e2.nextElement();
				replaceOnePara(mtn1, mtn2);
			}
		} else if (srcType instanceof CTDeclaration) {
			replaceOnePara((MNQMutableTreeNode) src.getFirstChild(),
					(MNQMutableTreeNode) target.getFirstChild());
		} else {
			// assume that CTExcept will never be used
			System.out.println("Unexpected paramether replacement, ignored");
		}
	}

	/**
	 * @param args
	 */
	public static void main_(String[] args) {
		// TODO Auto-generated method stub

	}

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产三级精品三级在线专区| 精品少妇一区二区三区| 国产一区二区三区免费播放| 天天色天天操综合| 亚洲一二三区在线观看| 午夜精品视频在线观看| 亚洲国产精品视频| 日韩va欧美va亚洲va久久| 日韩av电影免费观看高清完整版| 日韩国产精品大片| 蜜臀av国产精品久久久久| 精品影院一区二区久久久| 国产精品自在欧美一区| 成人av在线播放网站| 91久久精品一区二区| 欧美人与性动xxxx| 日韩一卡二卡三卡国产欧美| 久久久久久99久久久精品网站| 欧美经典三级视频一区二区三区| 中文字幕亚洲成人| 亚洲国产日日夜夜| 久久99精品国产.久久久久久| 国产黄色精品网站| 色综合网站在线| 亚洲国产日韩一区二区| 五月婷婷色综合| 国产成人av自拍| 欧美性一区二区| 久久先锋影音av鲁色资源| 亚洲欧美激情视频在线观看一区二区三区| 亚洲视频一二三| 蜜臀av性久久久久蜜臀aⅴ| 国产91富婆露脸刺激对白| 欧美亚洲综合网| 国产欧美一区视频| 亚洲国产精品久久艾草纯爱 | 国产精品午夜免费| 亚洲欧美国产三级| 国产一区在线精品| 欧美日韩亚洲另类| 日本一区二区免费在线观看视频| 亚洲精品一二三| 国产在线播精品第三| 欧美日韩视频在线一区二区| 国产亚洲一二三区| 日韩精品国产精品| 91在线观看污| 久久久91精品国产一区二区三区| 午夜成人免费视频| 色综合天天综合网天天看片| 久久综合九色综合欧美98| 一区二区日韩av| 成人免费毛片高清视频| 精品福利一二区| 日韩电影网1区2区| 欧美性大战xxxxx久久久| 国产精品视频第一区| 久久99精品久久久久久| 欧美久久久影院| 亚洲黄网站在线观看| 成人精品鲁一区一区二区| 日韩一区二区免费视频| 五月婷婷色综合| 91福利区一区二区三区| 亚洲天堂网中文字| aa级大片欧美| 中文字幕中文字幕一区二区| 国产精品18久久久久久vr| 久久久久综合网| 国产老肥熟一区二区三区| 26uuu国产在线精品一区二区| 丝袜美腿亚洲一区| 欧美一区二区美女| 蜜芽一区二区三区| 69久久99精品久久久久婷婷| 日韩国产精品久久久| 777精品伊人久久久久大香线蕉| 亚洲最新视频在线观看| 欧洲av在线精品| 午夜天堂影视香蕉久久| 欧美精品123区| 麻豆视频一区二区| 久久一区二区三区四区| 国产馆精品极品| 亚洲国产精品成人综合| 99精品热视频| 一区二区三区日本| 欧美日韩成人激情| 免费成人在线观看视频| 2020国产精品| 成人性视频免费网站| 亚洲私人影院在线观看| 色94色欧美sute亚洲线路一ni| 亚洲高清久久久| 欧美一二三四区在线| 国产精品影视在线观看| 日韩美女视频一区二区| 在线免费观看视频一区| 美女脱光内衣内裤视频久久影院| 精品国产第一区二区三区观看体验| 国产成人亚洲综合a∨猫咪| 国产精品理伦片| 91精品国产综合久久香蕉的特点| 国产乱码精品一区二区三区av| 日韩毛片视频在线看| 欧美日韩免费在线视频| 国产精品一区二区久激情瑜伽| 亚洲精品美腿丝袜| 久久青草欧美一区二区三区| 国产成人综合亚洲91猫咪| 亚洲欧洲日本在线| 欧美一级欧美三级| aaa国产一区| 狂野欧美性猛交blacked| 国产精品大尺度| 日韩视频在线观看一区二区| 99re66热这里只有精品3直播| 午夜在线成人av| 国产精品私房写真福利视频| 91精品国产一区二区人妖| jiyouzz国产精品久久| 麻豆一区二区三区| 亚洲综合一二三区| 国产三级久久久| 欧美一级理论片| 在线一区二区三区四区| 国产91精品一区二区麻豆网站 | 欧美另类久久久品| 成人app在线| 久久99热狠狠色一区二区| 一二三四区精品视频| 欧美国产日韩亚洲一区| 26uuu亚洲综合色| 制服丝袜在线91| 欧美亚日韩国产aⅴ精品中极品| 福利91精品一区二区三区| 美女高潮久久久| 日本成人中文字幕在线视频| 亚洲欧洲精品成人久久奇米网| 国产亚洲婷婷免费| 精品免费一区二区三区| 欧美高清精品3d| 欧美日韩一区高清| 色久综合一二码| 在线亚洲一区观看| 91传媒视频在线播放| 精品久久久久久久久久久久久久久| 色噜噜夜夜夜综合网| 91黄视频在线观看| 99久久精品免费| 一本久久综合亚洲鲁鲁五月天| 99久久99久久久精品齐齐| eeuss鲁片一区二区三区| 国产成人在线视频播放| 成人综合激情网| av高清不卡在线| 色综合一区二区三区| 色婷婷综合激情| 欧美中文字幕不卡| 欧美日韩精品欧美日韩精品一 | 成人av中文字幕| 色综合色狠狠天天综合色| 色狠狠一区二区三区香蕉| 91久久一区二区| 欧美日韩电影在线播放| 日韩美一区二区三区| 亚洲精品一区二区三区精华液 | 日韩电影在线免费观看| 日韩高清不卡一区| 精品一区二区免费看| 国产精品一区二区黑丝| 99久久精品免费| 欧美日本视频在线| 久久综合给合久久狠狠狠97色69| 精品国产一区二区三区av性色| 久久久久久久久免费| 亚洲私人黄色宅男| 午夜激情一区二区三区| 久久成人综合网| 91免费看视频| 日韩三级av在线播放| 久久久青草青青国产亚洲免观| 中文字幕一区二区不卡| 亚洲成人免费看| 国产精品99久久久久久似苏梦涵| 99精品热视频| 欧美成人高清电影在线| ...xxx性欧美| 久久精品国内一区二区三区| 成人app在线| 日韩三级av在线播放| ●精品国产综合乱码久久久久| 美腿丝袜一区二区三区| 色诱亚洲精品久久久久久| 日韩欧美久久久| 一区二区三区四区国产精品| 狠狠色狠狠色综合日日91app| 色偷偷久久一区二区三区| 精品国产乱码久久久久久免费| 亚洲午夜免费福利视频|