package com.vci.client.oq.ui.linkqtimport;
|
|
import java.awt.GridBagConstraints;
|
import java.awt.GridBagLayout;
|
import java.awt.Insets;
|
import java.awt.SystemColor;
|
import java.awt.event.ActionEvent;
|
import java.awt.event.ActionListener;
|
import java.io.File;
|
import java.util.ArrayList;
|
import java.util.Enumeration;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
|
import javax.swing.JButton;
|
import javax.swing.JFileChooser;
|
import javax.swing.JLabel;
|
import javax.swing.JPanel;
|
import javax.swing.JScrollPane;
|
import javax.swing.JTextField;
|
import javax.swing.filechooser.FileFilter;
|
import javax.swing.tree.DefaultMutableTreeNode;
|
import javax.swing.tree.TreePath;
|
|
import com.vci.client.LogonApplication;
|
import com.vci.client.oq.ui.export.QTExportQTNode;
|
import com.vci.client.oq.ui.linkqtexport.LinkQTExportBTMNode;
|
import com.vci.client.portal.UI.dialog.VCIGuideStepPanel;
|
import com.vci.client.ui.swing.components.VCIJOptionPane;
|
import com.vci.corba.omd.qtm.QTInfo;
|
|
public class LinkQTImpQTStep1Panel extends VCIGuideStepPanel{
|
|
private static final long serialVersionUID = 1L;
|
|
private LinkQTImportTree importTree ;
|
private JTextField txtDirectory;
|
private JButton btnSelDirectory;
|
private String filePath = "c"+File.pathSeparator;
|
private JScrollPane scrollPane = new JScrollPane();
|
public LinkQTImpQTStep1Panel() {
|
GridBagLayout gridBagLayout = new GridBagLayout();
|
gridBagLayout.columnWidths = new int[]{0, 0, 0, 0};
|
gridBagLayout.rowHeights = new int[]{0, 30, 0};
|
gridBagLayout.columnWeights = new double[]{0.0, 1.0, 0.0, Double.MIN_VALUE};
|
gridBagLayout.rowWeights = new double[]{1.0, 0.0, Double.MIN_VALUE};
|
setLayout(gridBagLayout);
|
|
|
JLabel label_2 = new JLabel(" ");
|
GridBagConstraints gbc_label_2 = new GridBagConstraints();
|
gbc_label_2.insets = new Insets(0, 0, 5, 5);
|
gbc_label_2.gridx = 0;
|
gbc_label_2.gridy = 0;
|
add(label_2, gbc_label_2);
|
|
// JScrollPane scrollPane = new JScrollPane();
|
GridBagConstraints gbc_scrollPane = new GridBagConstraints();
|
gbc_scrollPane.fill = GridBagConstraints.BOTH;
|
gbc_scrollPane.insets = new Insets(0, 0, 5, 5);
|
gbc_scrollPane.gridx = 1;
|
gbc_scrollPane.gridy = 0;
|
add(scrollPane, gbc_scrollPane);
|
|
|
JLabel label = new JLabel(" ");
|
GridBagConstraints gbc_label = new GridBagConstraints();
|
gbc_label.insets = new Insets(0, 0, 5, 0);
|
gbc_label.gridx = 2;
|
gbc_label.gridy = 0;
|
add(label, gbc_label);
|
|
JPanel panel = new JPanel();
|
GridBagConstraints gbc_panel = new GridBagConstraints();
|
gbc_panel.insets = new Insets(0, 0, 0, 5);
|
gbc_panel.fill = GridBagConstraints.BOTH;
|
gbc_panel.gridx = 1;
|
gbc_panel.gridy = 1;
|
add(panel, gbc_panel);
|
GridBagLayout gbl_panel = new GridBagLayout();
|
gbl_panel.columnWidths = new int[]{0, 0, 0, 0};
|
gbl_panel.rowHeights = new int[]{0, 0};
|
gbl_panel.columnWeights = new double[]{0.0, 1.0, 0.0, Double.MIN_VALUE};
|
gbl_panel.rowWeights = new double[]{0.0, Double.MIN_VALUE};
|
panel.setLayout(gbl_panel);
|
|
JLabel label_3 = new JLabel("导出文件:");
|
GridBagConstraints gbc_label_3 = new GridBagConstraints();
|
gbc_label_3.insets = new Insets(0, 0, 0, 5);
|
gbc_label_3.anchor = GridBagConstraints.EAST;
|
gbc_label_3.gridx = 0;
|
gbc_label_3.gridy = 0;
|
panel.add(label_3, gbc_label_3);
|
|
txtDirectory = new JTextField();
|
txtDirectory.setText("请选择导入目录...");
|
txtDirectory.setEditable(false);
|
txtDirectory.setBackground(SystemColor.control);
|
GridBagConstraints gbc_txtDirectory = new GridBagConstraints();
|
gbc_txtDirectory.insets = new Insets(0, 0, 0, 5);
|
gbc_txtDirectory.fill = GridBagConstraints.HORIZONTAL;
|
gbc_txtDirectory.gridx = 1;
|
gbc_txtDirectory.gridy = 0;
|
panel.add(txtDirectory, gbc_txtDirectory);
|
txtDirectory.setColumns(10);
|
|
btnSelDirectory = new JButton("...");
|
btnSelDirectory.addActionListener(new ActionListener() {
|
public void actionPerformed(ActionEvent e) {
|
LinkQTImpQTStep1Panel.this.selectDirectory(e);
|
}
|
});
|
GridBagConstraints gbc_btnSelDirectory = new GridBagConstraints();
|
gbc_btnSelDirectory.anchor = GridBagConstraints.EAST;
|
gbc_btnSelDirectory.gridx = 2;
|
gbc_btnSelDirectory.gridy = 0;
|
panel.add(btnSelDirectory, gbc_btnSelDirectory);
|
}
|
|
/**
|
* 选择目录
|
* @Title :selectDirectory
|
* @Description :
|
* @param e
|
*/
|
public void selectDirectory(ActionEvent e) {
|
//TODO:给txtDirectory赋值
|
this.openFileChoser();
|
}
|
|
@Override
|
public void initUI() {
|
//可不处理,默认加载即可
|
LinkQTImportTree shareTreeData = (LinkQTImportTree)getGuidCommonShareData().get("importTree");
|
if(shareTreeData!=null && shareTreeData instanceof LinkQTImportTree){
|
/*shareTreeData = null;
|
System.gc();*/
|
}
|
if (shareTreeData == null || !(shareTreeData instanceof LinkQTImportTree)) {
|
importTree = new LinkQTImportTree();
|
getGuidCommonShareData().put("importTree", importTree);
|
// scrollPane.setViewportView(importTree);
|
// exportTree.init();
|
}
|
initData();
|
if(this.filePath!=null){
|
renderUIByObjectFile(filePath);
|
}
|
}
|
|
private void renderUIByObjectFile(String filePath2) {
|
// TODO Auto-generated method stub
|
this.getGuidCommonShareData().put("filePath", filePath);
|
//设置面板显示信息
|
// txtDirectory.setFont(new Font(Font.SANS_SERIF, Font.BOLD, 12));
|
// txtDirectory.setForeground(Color.red);
|
txtDirectory.setText(filePath);
|
importTree = (LinkQTImportTree) getGuidCommonShareData().get("importTree");
|
importTree.initTree(filePath);
|
scrollPane.setViewportView(importTree);
|
}
|
public void setFilePath(String filePath){
|
this.filePath = filePath;
|
}
|
@Override
|
//执行“导出”树的初始化,并添加到scrollPane中
|
public void initData() {
|
// TODO:主要处理结构树的加载(包括树结构勾选逻辑)
|
// 初始化树
|
|
}
|
|
//面板初始化
|
private void openFileChoser() {
|
JFileChooser jf = new JFileChooser();
|
jf.setFileSelectionMode(JFileChooser.FILES_ONLY);
|
jf.removeChoosableFileFilter(jf.getFileFilter());
|
jf.setFileFilter(new FileFilter() {
|
public String getDescription() {
|
return "文件夹";
|
}
|
public boolean accept(File f) {
|
return (f.isDirectory() || f.getName().endsWith(".vciqtf"));
|
}
|
});
|
jf.setDialogTitle("选择查询模板导出文件");
|
int showOpenDialog = jf.showOpenDialog(LogonApplication.frame);
|
if (showOpenDialog == JFileChooser.APPROVE_OPTION) {
|
File selectedFile = jf.getSelectedFile();
|
filePath = selectedFile.getAbsolutePath();;
|
renderUIByObjectFile(filePath);
|
|
}
|
}
|
@Override
|
public String getStepName() {
|
// String firstStepName = null;
|
// if((firstStepName = (String)this.getCommonMap().get("firstStepName") )!= null){
|
// return firstStepName;
|
// }
|
return "第一步:查询模板选择";
|
}
|
|
@Override
|
public boolean isPreBtnVisible() {
|
//第一步没有“上一步”
|
return false;
|
}
|
|
@Override
|
public String getPreBtnText() {
|
return null;
|
}
|
|
@Override
|
public boolean doPreBtnAction() {
|
return false;
|
}
|
|
@Override
|
public boolean isNextBtnVisible() {
|
return true;
|
}
|
|
@Override
|
public String getNextBtnText() {
|
return "导入";
|
}
|
|
/**
|
* 导出的主要处理入口
|
*/
|
@Override
|
public boolean doNextBtnAction() {
|
// 判断当前是否选择正确(如果没有正确选择到模板那么直接提示并终止下一步)
|
try {
|
if (importTree == null) {
|
//TODO:提示
|
VCIJOptionPane.showMessage(this, "树不存在!");
|
return false;
|
}
|
TreePath[] treePath = ((LinkQTImportTree) importTree)
|
.getTreeManager().getSelectionModel()
|
.getSelectionPaths();
|
Map<String/*查询模板名称*/, QTInfo/*查询模板对象*/> allQTs = new HashMap<String, QTInfo>();
|
if (treePath == null || treePath.length ==0) {
|
//TODO:提示
|
VCIJOptionPane.showMessage(this, "您没有选择数据!");
|
return false;
|
} else {
|
List<Object[]> selectedQTs = new ArrayList<Object[]>();
|
// 判断selecPaths中是否存在查询模板,不存在也直接提示并退出
|
// TreePath[] treePath = ((LinkQTImportTree) importTree)
|
// .getTreeManager().getSelectionModel()
|
// .getSelectionPaths();
|
// 循环填充列表数据
|
if (treePath != null) {
|
try {
|
int index = 1;
|
for (int i = 0; i < treePath.length; i++) {
|
DefaultMutableTreeNode node = (DefaultMutableTreeNode) treePath[i]
|
.getLastPathComponent();
|
Object obj = node.getUserObject();
|
if (obj instanceof String) {// 如果是root节点,则保存所有模块 返回
|
String nodeName = (String) obj;
|
if ("链接类型".equals(nodeName)) {
|
/*QTInfo[] qts = QTClient.getService()
|
.getAllQTS();*/
|
qtwrappers.clear();
|
List<QTExportQTNode> qts2 = getQtwrapper(node);
|
QTExportQTNode[] qts = (QTExportQTNode[]) qts2.toArray(new QTExportQTNode[qts2.size()]);
|
for (QTExportQTNode qtWrapper : qts) {
|
Object obj2[] = { "", "", "", "" };
|
obj2[0] = index;
|
obj2[1] = qtWrapper.getMessage();
|
obj2[2] = qtWrapper.getBean().qtName;
|
obj2[3] = qtWrapper.getBean().btmName;
|
/* tblModel.addRow(obj2); */
|
if(qtWrapper.getMessage().equals("【查询模板不存在,可导入】")){
|
obj2[1] = "【导入成功】";
|
allQTs.put(qtWrapper.getBean().qtName, qtWrapper.getBean());
|
}
|
selectedQTs.add(obj2);
|
index++;
|
}
|
|
}
|
}
|
|
if (obj instanceof QTExportQTNode) {
|
// 递归所有父节点添加到exportBeans中
|
Object obj2[] = { "", "", "", "" };
|
obj2[0] = index;
|
obj2[1] = ((QTExportQTNode) obj).getMessage();
|
obj2[2] = ((QTExportQTNode) obj).getBean().qtName;
|
obj2[3] = ((QTExportQTNode) obj).getBean().btmName;
|
/* tblModel.addRow(obj2); */
|
selectedQTs.add(obj2);
|
if(((QTExportQTNode) obj).getMessage().equals("【查询模板不存在,可导入】")){
|
allQTs.put(((QTExportQTNode) obj).getBean().qtName, ((QTExportQTNode) obj).getBean());
|
}
|
index++;
|
// this.tableLog.addRow(bean.getLogRowObjcets());
|
|
} else if (obj instanceof LinkQTExportBTMNode) {
|
if(node.isLeaf()){
|
continue;
|
}
|
// QTInfo[] qtWrappers = QTClient.getService()
|
// .getQTS(((QTExportBTMNode) obj)
|
// .getBean().name);
|
@SuppressWarnings("unchecked")
|
Enumeration<DefaultMutableTreeNode> enumeration = (Enumeration<DefaultMutableTreeNode>)node.children();
|
System.out.println(enumeration);
|
while (enumeration.hasMoreElements()) {
|
DefaultMutableTreeNode defaultMutableTreeNode = enumeration
|
.nextElement();
|
Object obj2[] = { "", "", "", "" };
|
obj2[0] = index;
|
obj2[1] = ((QTExportQTNode) (defaultMutableTreeNode
|
.getUserObject())).getMessage();
|
obj2[2] = (((QTExportQTNode) (defaultMutableTreeNode
|
.getUserObject())).getBean()).qtName;
|
obj2[3] = (((QTExportQTNode) (defaultMutableTreeNode
|
.getUserObject())).getBean()).btmName;
|
selectedQTs.add(obj2);
|
if(((QTExportQTNode)(defaultMutableTreeNode.getUserObject())).getMessage().equals("【查询模板不存在,可导入】")){
|
allQTs.put(
|
(((QTExportQTNode) (defaultMutableTreeNode
|
.getUserObject()))
|
.getBean()).qtName,
|
((QTExportQTNode) (defaultMutableTreeNode
|
.getUserObject()))
|
.getBean());
|
}
|
index++;
|
}
|
// for (QTInfo qtWrapper : qtWrappers) {
|
// Object obj2[] = { "", "", "", "" };
|
// obj2[0] = index;
|
// obj2[1] = "成功";
|
// obj2[2] = qtWrapper.qtName;
|
// obj2[3] = qtWrapper.btmName;
|
//// allQTs.put(qtWrapper.qtName, qtWrapper);
|
// /* tblModel.addRow(obj2); */
|
// selectedQTs.add(obj2);
|
// index++;
|
// }
|
}
|
|
}
|
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
}
|
if(selectedQTs.size()==0){
|
//TODO:提示
|
VCIJOptionPane.showMessage(this, "您没有选择查询模版!");
|
return false;
|
}
|
this.getGuidCommonShareData().put("selectedQTs",selectedQTs);
|
this.getGuidCommonShareData().put("selectedQTDs",importTree.getNorepQTDs());
|
this.getGuidCommonShareData().put("importData", allQTs); //刷新导出数据
|
// Map<String/*类型名称*/, QTD[]/*查询模板定义*/> norepQTDs = (Map<String, QTD[]>)this.getGuidCommonShareData().get("selectedQTDs");
|
// System.out.println(norepQTDs);
|
}
|
String exportFilePath = (String)this.getGuidCommonShareData().get("filePath");
|
if (exportFilePath == null || exportFilePath.trim().equals("")) {
|
//TODO:提示
|
VCIJOptionPane.showMessage(this, "您没有选择导入目录!");
|
return false;
|
}
|
// QTExportData exportData = new QTExportData();
|
// exportData.setAllQTs(allQTs);
|
/*if(!exportData.initData(this.getCommonMap())){
|
//TODO:提示
|
return false;
|
}*/
|
VCIGuideStepPanel nextStepUI = getNextStepUI();
|
nextStepUI.initUI();
|
return true;
|
} catch (Throwable e) {
|
//TODO:提示
|
return false;
|
}
|
}
|
List<QTExportQTNode> qtwrappers = new ArrayList<QTExportQTNode>();
|
//选择根节点时递归寻找查询模板对象
|
private List<QTExportQTNode> getQtwrapper(DefaultMutableTreeNode node) {
|
// TODO Auto-generated method stub
|
@SuppressWarnings("unchecked")
|
Enumeration<DefaultMutableTreeNode> enumeration = node.children();
|
while(enumeration.hasMoreElements()){
|
DefaultMutableTreeNode defaultMutableTreeNode = enumeration.nextElement();
|
if(!defaultMutableTreeNode.isLeaf()){
|
getQtwrapper(defaultMutableTreeNode);
|
}else{
|
qtwrappers.add((((QTExportQTNode)(defaultMutableTreeNode.getUserObject()))));
|
}
|
}
|
return qtwrappers;
|
}
|
|
@Override
|
public boolean isCancelBtnVisible() {
|
return true;
|
}
|
|
@Override
|
public String getcancelBtnText() {
|
return "取消";
|
}
|
|
String dialogProcess = ""; //[第X步/共X步]
|
public String getDialogProcess() {
|
dialogProcess = "[第1步/共2步]";
|
return dialogProcess;
|
}
|
|
public VCIGuideStepPanel getNextStepUI() {
|
if (super.getNextStepUI() == null) {
|
VCIGuideStepPanel nextStepUI = new LinkQTImpQTStep2Panel();
|
nextStepUI.setPreStepUI(this);
|
nextStepUI.setOwnParent(this.getOwnParent());
|
super.setNextStepUI(nextStepUI);
|
}
|
|
return super.getNextStepUI() ;
|
}
|
}
|