package com.vci.client.oq.ui;
|
|
import java.awt.BorderLayout;
|
import java.awt.FlowLayout;
|
import java.awt.event.ActionEvent;
|
import java.awt.event.ActionListener;
|
import java.io.File;
|
import java.io.FileOutputStream;
|
import java.util.ArrayList;
|
import java.util.Collections;
|
import java.util.List;
|
|
import javax.swing.JButton;
|
import javax.swing.JDialog;
|
import javax.swing.JFileChooser;
|
import javax.swing.JPanel;
|
import javax.swing.JScrollPane;
|
import javax.swing.filechooser.FileFilter;
|
import javax.swing.tree.TreePath;
|
|
import org.apache.poi.hssf.usermodel.HSSFCell;
|
import org.apache.poi.hssf.usermodel.HSSFRichTextString;
|
import org.apache.poi.hssf.usermodel.HSSFRow;
|
import org.apache.poi.hssf.usermodel.HSSFSheet;
|
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
|
|
import com.vci.corba.omd.btm.BtmItem;
|
import com.vci.corba.omd.ltm.LinkType;
|
import com.vci.corba.omd.qtm.QTD;
|
import com.vci.client.LogonApplication;
|
import com.vci.client.common.providers.ServiceProvider;
|
import com.vci.client.framework.rightConfig.modelConfig.ModuleTreeCellRenderer;
|
import com.vci.client.omd.provider.BtmProvider;
|
import com.vci.client.omd.provider.LinkTypeProvider;
|
import com.vci.client.oq.QTDClient;
|
import com.vci.client.ui.swing.VCIOptionPane;
|
import com.vci.client.ui.tree.CheckBoxTreeManager;
|
import com.vci.client.ui.tree.VCIBaseTree;
|
import com.vci.client.ui.tree.VCIBaseTreeModel;
|
import com.vci.client.ui.tree.VCIBaseTreeNode;
|
import com.vci.corba.common.VCIError;
|
|
public class ExpQTDDialog extends JDialog {
|
|
private static final long serialVersionUID = 1L;
|
private CheckBoxTreeManager treeManager;
|
private String exportFileName;
|
|
public ExpQTDDialog() {
|
super(LogonApplication.frame,true);
|
this.initUI();
|
this.setSize(500, 500);
|
this.setLocationRelativeTo(null);
|
}
|
|
private void initUI() {
|
try {
|
JScrollPane contentPanel = this.getContentPanel();
|
this.getContentPane().add(contentPanel, BorderLayout.CENTER);
|
JPanel btnPanel = this.getBtnPanel();
|
this.getContentPane().add(btnPanel, BorderLayout.SOUTH);
|
} catch (VCIError e) {
|
e.printStackTrace();
|
}
|
}
|
|
private JScrollPane getContentPanel() throws VCIError {
|
JScrollPane contentPanel = new JScrollPane();
|
VCIBaseTreeNode rootNode = new VCIBaseTreeNode("模板定义","root");
|
VCIBaseTreeNode btmRoot = new VCIBaseTreeNode("业务类型", "btm");
|
VCIBaseTreeNode linkRoot = new VCIBaseTreeNode("链接类型", "link");
|
rootNode.insert(btmRoot, 0);
|
rootNode.insert(linkRoot, 1);
|
VCIBaseTreeModel treeModel = new VCIBaseTreeModel(rootNode);
|
//业务类型
|
BtmItem[] allBtItems = BtmProvider.getInstance().getAllBtmItems();
|
for(int i=0;i<allBtItems.length;i++){
|
VCIBaseTreeNode node = new VCIBaseTreeNode(allBtItems[i].name,allBtItems[i]);
|
treeModel.insertNodeInto(node, btmRoot, btmRoot.getChildCount());
|
QTD[] qtdsByBtmName = ServiceProvider.getOMDService().getQTDService().getBizTypeQTDs(allBtItems[i].name);
|
for(QTD qtd: qtdsByBtmName){
|
VCIBaseTreeNode qtdNode = new VCIBaseTreeNode(qtd.name,qtd);
|
treeModel.insertNodeInto(qtdNode, node, node.getChildCount());
|
}
|
}
|
//链接类型
|
LinkType[] linkTypes = LinkTypeProvider.getInstance().getLinkTypes();
|
for(int i=0; i<linkTypes.length; i++){
|
VCIBaseTreeNode node = new VCIBaseTreeNode(linkTypes[i].name, linkTypes[i]);
|
treeModel.insertNodeInto(node, linkRoot, linkRoot.getChildCount());
|
QTD[] qtdsByLinkTypeName = ServiceProvider.getOMDService().getQTDService().getLinkTypeQTDs(linkTypes[i].name);
|
for(QTD qtd: qtdsByLinkTypeName){
|
VCIBaseTreeNode qtdNode = new VCIBaseTreeNode(qtd.name,qtd);
|
treeModel.insertNodeInto(qtdNode, node, node.getChildCount());
|
}
|
}
|
|
VCIBaseTree tree = new VCIBaseTree(treeModel, new ModuleTreeCellRenderer());
|
treeManager = new CheckBoxTreeManager(tree);
|
contentPanel.getViewport().removeAll();
|
contentPanel.setViewportView(tree);
|
contentPanel.repaint();
|
return contentPanel;
|
}
|
|
private JPanel getBtnPanel() {
|
JPanel btnPanel = new JPanel();
|
btnPanel.setLayout(new FlowLayout(FlowLayout.RIGHT));
|
JButton okButton = new JButton("确定");
|
JButton closeButton = new JButton("关闭");
|
btnPanel.add(okButton);
|
btnPanel.add(closeButton);
|
closeButton.addActionListener(new ActionListener() {
|
|
@Override
|
public void actionPerformed(ActionEvent e) {
|
setVisible(false);
|
}
|
});
|
|
okButton.addActionListener(new ActionListener() {
|
public void actionPerformed(ActionEvent arg0) {
|
TreePath[] treePath = treeManager.getSelectionModel().getSelectionPaths();
|
//openFileChoser();
|
if (treePath != null) {
|
try {
|
List<QTD> selQTDS = new ArrayList<QTD>();
|
for(int i = 0;i < treePath.length;i++){
|
VCIBaseTreeNode node = (VCIBaseTreeNode)treePath[i].getLastPathComponent();
|
Object obj = node.getObj();
|
if(obj instanceof String){//如果是root节点,则保存所有模块
|
String nodeName = (String)obj;
|
if("root".equals(nodeName)){
|
QTD[] allQTDS = ServiceProvider.getOMDService().getQTDService().getAllQTDs();
|
Collections.addAll(selQTDS, allQTDS);
|
}else if("btm".equals(nodeName)){
|
QTD[] allBTMQTDS = ServiceProvider.getOMDService().getQTDService().getAllBizTypeQTDs();
|
Collections.addAll(selQTDS, allBTMQTDS);
|
}else if("link".equals(nodeName)){
|
QTD[] allLinkQTDS = ServiceProvider.getOMDService().getQTDService().getAllLinkTypeQTDs();
|
Collections.addAll(selQTDS, allLinkQTDS);
|
}
|
}else if(obj instanceof QTD){
|
selQTDS.add((QTD)obj);
|
}else if(obj instanceof BtmItem){
|
BtmItem btmItem = (BtmItem)obj;
|
QTD[] qtdsByBtmName = ServiceProvider.getOMDService().getQTDService().getBizTypeQTDs(btmItem.name);
|
Collections.addAll(selQTDS, qtdsByBtmName);
|
}else if(obj instanceof LinkType){
|
LinkType linkType = (LinkType)obj;
|
QTD[] qtdsByLinkTypeName = ServiceProvider.getOMDService().getQTDService().getLinkTypeQTDs(linkType.name);
|
Collections.addAll(selQTDS, qtdsByLinkTypeName);
|
}
|
}
|
System.out.println(selQTDS.size());
|
openFileChoser();
|
if(writeFile(selQTDS)){
|
VCIOptionPane.showMessage(LogonApplication.frame, "导出成功");
|
setVisible(false);
|
}else{
|
VCIOptionPane.showMessage(LogonApplication.frame, "导出失败!");
|
}
|
} catch (VCIError e) {
|
e.printStackTrace();
|
VCIOptionPane.showMessage(LogonApplication.frame, "导出异常!");
|
}
|
}else{
|
VCIOptionPane.showMessage(LogonApplication.frame, "请选择要导出的模板定义!");
|
return;
|
}
|
}
|
|
});
|
|
return btnPanel;
|
}
|
|
private void openFileChoser() {
|
JFileChooser jf = new JFileChooser();
|
jf.removeChoosableFileFilter(jf.getFileFilter());
|
jf.setFileFilter(new FileFilter() {
|
public String getDescription() {
|
return "xls";
|
}
|
public boolean accept(File f) {
|
return ((f.isDirectory()) || (f.getName().endsWith(".xls")));
|
}
|
});
|
jf.setDialogTitle("打开");
|
int showOpenDialog = jf.showOpenDialog(LogonApplication.frame);
|
if(showOpenDialog == JFileChooser.APPROVE_OPTION){
|
File selectedFile = jf.getSelectedFile();
|
exportFileName = selectedFile.getAbsolutePath();
|
if(!exportFileName.endsWith(".xls")){
|
exportFileName = exportFileName + ".xls";
|
}
|
}
|
}
|
|
private boolean writeFile(List<QTD> qTDS) {
|
HSSFWorkbook workbook = new HSSFWorkbook();
|
HSSFSheet sheet = workbook.createSheet();
|
HSSFRow titleRow = sheet.createRow(0);
|
HSSFCell cell = titleRow.createCell(0);
|
cell.setCellValue(new HSSFRichTextString("模板定义名称"));
|
cell = titleRow.createCell(1);
|
cell.setCellValue("业务类型");
|
cell = titleRow.createCell(2);
|
cell.setCellValue("链接类型");
|
cell = titleRow.createCell(3);
|
cell.setCellValue("模板可用字段");
|
cell = titleRow.createCell(4);
|
cell.setCellValue("创建人");
|
cell = titleRow.createCell(5);
|
cell.setCellValue("创建时间");
|
for(int i=0; i<qTDS.size(); i++){
|
QTD qtd = qTDS.get(i);
|
HSSFRow valueRow = sheet.createRow(i+1);
|
HSSFCell valueCell = valueRow.createCell(0);
|
valueCell.setCellValue(formateString(qtd.name));
|
valueCell = valueRow.createCell(1);
|
valueCell.setCellValue(formateString(qtd.btmName));
|
valueCell = valueRow.createCell(2);
|
valueCell.setCellValue(formateString(qtd.linkTypeName));
|
valueCell = valueRow.createCell(3);
|
valueCell.setCellValue(arr2Str(qtd.abNames));
|
valueCell = valueRow.createCell(4);
|
valueCell.setCellValue(formateString(qtd.creator));
|
valueCell = valueRow.createCell(5);
|
valueCell.setCellValue(qtd.createTime);
|
}
|
try {
|
FileOutputStream fos = new FileOutputStream(exportFileName);
|
workbook.write(fos);
|
fos.flush();
|
fos.close();
|
System.out.println("文件"+exportFileName + "生成成功!");
|
} catch (Exception e) {
|
e.printStackTrace();
|
return false;
|
}
|
return true;
|
}
|
private String formateString(String str){
|
if(str == null || str.trim().length() == 0){
|
return "";
|
}
|
return str;
|
}
|
|
private String arr2Str(String[] arr){
|
if(arr == null){
|
return "";
|
}
|
StringBuilder sb = new StringBuilder();
|
for(int i=0; i< arr.length; i++){
|
if(i != 0)sb.append(",");
|
sb.append(arr[i]);
|
}
|
return sb.toString();
|
}
|
}
|