package com.vci.client.oq.ui.export; import java.io.File; import java.io.PrintWriter; import java.util.HashMap; import java.util.HashSet; import java.util.Map; import javax.swing.JOptionPane; import javax.swing.JTable; import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.DefaultTreeModel; import javax.swing.tree.TreeNode; import javax.swing.tree.TreePath; import javax.swing.tree.TreeSelectionModel; import com.vci.corba.omd.btm.BtmItem; import com.vci.corba.omd.qtm.QTInfo; import com.vci.mw.ClientContextVariable; import com.vci.client.omd.btm.ui.BtmClient; import com.vci.client.oq.QTClient; import com.vci.client.oq.QTDClient; import com.vci.client.portal.NewNewUI.Export.ExportTreeCellRenderer; import com.vci.client.portal.NewNewUI.Export.VCIExportTree; import com.vci.client.ui.tree.CheckBoxTreeManager; import com.vci.corba.common.VCIError; //查询模板导出结构树 public class QTExportTree extends VCIExportTree { private static final long serialVersionUID = 1L; private CheckBoxTreeManager treeManager = null; public CheckBoxTreeManager getTreeManager() { return treeManager; } public void setTreeManager(CheckBoxTreeManager treeManager) { this.treeManager = treeManager; } /* private PrintWriter fileLog = null ; private DefaultTableModel tableLog = null;*/ public QTExportTree(DefaultTreeModel treeModel) { super(treeModel); this.setCellRenderer(new ExportTreeCellRenderer()); //ExportTreeCellRenderer?? } public QTExportTree() { super(new DefaultTreeModel(new DefaultMutableTreeNode("业务类型"))); this.setCellRenderer(new ExportTreeCellRenderer()); //ExportTreeCellRenderer? } @Override public String getExportDataFileName(String paramString, Long paramLong) { // TODO Auto-generated method stub return paramString + File.separator + "VCIQTMODELFILE" + paramLong + ".xls"; } @Override public String getExportLogFileName(String paramString, Long paramLong) { // TODO Auto-generated method stub return paramString + File.separator + "VCIQTMODELFILE" + paramLong + ".log"; } @Override public void init() { this.getSelectionModel().setSelectionMode( TreeSelectionModel.SINGLE_TREE_SELECTION); // 刷新分类树 //this.getPathForRow(0). initExportTree(this.getPathForRow(0)); if (treeManager == null) { treeManager = new CheckBoxTreeManager(this); } } private BtmItem[] btmArray = null; private Map btmItemName= new HashMap(); private QTInfo[] qts = null; /*private LinkType[] linkTypes= null;*/ private void initExportTree(TreePath pathForRow) { try { System.out.println(this.getParent()); if (btmArray == null) { btmItemName.clear(); btmArray = BtmClient.getService().getAllBtmItem(""); qts = QTDClient.getService().getAllQTs();//获取所有查询模板 for (BtmItem element : btmArray) { btmItemName.put(element.name,element); } HashSet es = new HashSet(); for (QTInfo qtWrapper : qts) { saveParentBtm(qtWrapper.btmName,es); } btmArray = es.toArray(new BtmItem[es.size()]); //TODO:需修正没有关联查询模板业务类型去掉 } DefaultTreeModel dtml = (DefaultTreeModel) this.getModel(); DefaultMutableTreeNode node = (DefaultMutableTreeNode) pathForRow .getLastPathComponent(); addExportTreeNode(dtml, node, btmArray, qts); // 展开所有树节点 TreeNode rootNode = (TreeNode) this.getModel().getRoot(); TreePath rootPath = new TreePath(rootNode); //this.expandAllTreeNode(rootPath, true); this.expandPath(rootPath); } catch (VCIError e1) { e1.printStackTrace(); JOptionPane.showMessageDialog(ClientContextVariable.getFrame(), "刷新分类树异常:" + e1.getMessage(), "系统异常", JOptionPane.ERROR_MESSAGE); } } private void saveParentBtm(String btmName, HashSet es) { // TODO Auto-generated method stub if(btmItemName.containsKey(btmName)){ BtmItem btmItem = btmItemName.get(btmName); es.add(btmItem); saveParentBtm(btmItem.fName,es); } } @SuppressWarnings("unused") private void filterBtmItem(BtmItem element) { // TODO Auto-generated method stub try { QTInfo[] qtWrappers = QTDClient.getService().getObjTypeQTs(element.name); if(qtWrappers.length==0){ String[] strings= BtmClient.getService().getChildrenNames(element.name); if(strings.length == 0){ } } } catch (VCIError e) { // TODO Auto-generated catch block e.printStackTrace(); } } /** * * @Title :addExportTreeNode * @Description : * @param dtml * @param node * @param allBtm * @param plActions */ private void addExportTreeNode(DefaultTreeModel dtml, DefaultMutableTreeNode node, BtmItem[] allBtm/*业务类型树*/,QTInfo[] qts/*查询模板对象*/) { // TODO Auto-generated method stub // node.removeAllChildren(); String curBtmName = ""; Object userObject = node.getUserObject(); if (!(userObject instanceof String)) { //业务类型对象节点 if (userObject instanceof QTExportBTMNode) { BtmItem pac = ((QTExportBTMNode) userObject).getBean(); curBtmName = pac.name; //业务类型名称 for (BtmItem plac : allBtm) { if (plac.fName.equals(curBtmName)) { DefaultMutableTreeNode child = new DefaultMutableTreeNode(new QTExportBTMNode(plac)); dtml.insertNodeInto(child, node, node.getChildCount()); addExportTreeNode(dtml, child, allBtm, qts); } } // 添加查询模板对象子节点 for (QTInfo qtItem : qts) { if ((!curBtmName.equals("")) && qtItem.btmName.equals(curBtmName)) { DefaultMutableTreeNode newChild = new DefaultMutableTreeNode(new QTExportQTNode(qtItem)); /*TreePath newChildTreePath = new TreePath(newChild); */ dtml.insertNodeInto(newChild, node,node.getChildCount()); } } } }else { //添加业务类型根节点 for (BtmItem plAction : allBtm) { if (plAction.fName.equals("")) { DefaultMutableTreeNode newChild = new DefaultMutableTreeNode(new QTExportBTMNode(plAction));//, false dtml.insertNodeInto(newChild, node, node.getChildCount()); addExportTreeNode(dtml, newChild, allBtm, qts); } } } dtml.reload(node); } @SuppressWarnings("rawtypes") @Override public HashMap getExportBeans(HashMap exportBeansMap, PrintWriter logFileWriter, JTable tblExportLog) { // TODO Auto-generated method stub return null; } @Override public boolean hasSelectExportContent() { // TODO Auto-generated method stub return false; } }