package com.vci.client.omd.linktype;
|
|
import java.awt.BorderLayout;
|
import java.awt.Dimension;
|
import java.awt.FlowLayout;
|
import java.awt.GridBagConstraints;
|
import java.awt.GridBagLayout;
|
import java.awt.Insets;
|
import java.awt.Toolkit;
|
import java.awt.event.ActionEvent;
|
import java.awt.event.ActionListener;
|
import java.awt.event.MouseAdapter;
|
import java.awt.event.MouseEvent;
|
import java.util.ArrayList;
|
import java.util.Arrays;
|
import java.util.Collections;
|
import java.util.HashMap;
|
import java.util.Iterator;
|
import java.util.List;
|
import java.util.Map;
|
|
import javax.swing.BorderFactory;
|
import javax.swing.ButtonGroup;
|
import javax.swing.JButton;
|
import javax.swing.JCheckBox;
|
import javax.swing.JComboBox;
|
import javax.swing.JDialog;
|
import javax.swing.JLabel;
|
import javax.swing.JOptionPane;
|
import javax.swing.JPanel;
|
import javax.swing.JRadioButton;
|
import javax.swing.JScrollPane;
|
import javax.swing.JSplitPane;
|
import javax.swing.JTable;
|
import javax.swing.JTextArea;
|
import javax.swing.JTextField;
|
import javax.swing.JTree;
|
import javax.swing.ScrollPaneConstants;
|
import javax.swing.border.EmptyBorder;
|
import javax.swing.event.DocumentEvent;
|
import javax.swing.event.DocumentListener;
|
import javax.swing.table.DefaultTableModel;
|
import javax.swing.tree.DefaultMutableTreeNode;
|
import javax.swing.tree.DefaultTreeModel;
|
import javax.swing.tree.TreeNode;
|
import javax.swing.tree.TreePath;
|
|
import org.dom4j.Document;
|
import org.jdesktop.swingx.JXTable;
|
|
import com.vci.corba.omd.btm.BtmItem;
|
import com.vci.corba.omd.ltm.LinkType;
|
import com.vci.mw.InvocationUtility;
|
import com.vci.client.common.providers.ServiceProvider;
|
import com.vci.client.omd.attribpool.toOutside.ApTableForOut;
|
import com.vci.client.omd.attribpool.ui.APClient;
|
import com.vci.client.omd.btm.toOutside.BtmTableForOut;
|
//import com.vci.client.omd.ddl.DDLToolClient;
|
import com.vci.client.omd.linktype.LinkTypeWrapper;
|
import com.vci.client.omd.linktype.util.Tool;
|
import com.vci.client.omd.provider.LinkTypeProvider;
|
import com.vci.client.omd.statepool.StatePoolWrapper;
|
import com.vci.client.omd.ui.OmdTreeCellRenderer;
|
import com.vci.client.ui.util.PostorderEnumeration;
|
import com.vci.corba.common.VCIError;
|
import com.vci.omd.utils.LinkTypeComparator;
|
|
|
@SuppressWarnings("all")
|
public class LinkTypeUI extends JPanel{
|
|
private JButton btnConsistencyCheck, btnCreateView;
|
private JButton addButton,modifyButton,deleteButton,checkButton,saveButton,cancleButton,jb1,jb2,jbutton1,jbutton2,jbutton3,jbutton4;
|
private JPanel northPanel,eastPanel2,eastPanel3,jp1;
|
private JTree ltTree;
|
private JRadioButton jcb1,jcb2,jcb3,jcb4;
|
private JComboBox jchb1,jchb2;
|
private String select = null;
|
private JScrollPane jsl;
|
private JXTable jxt;
|
private JTable jt1,jt2;
|
private JPanel jp3;
|
private JPanel jp2;
|
private JSplitPane splitPane3;
|
private JSplitPane splitPane;
|
private JScrollPane jsp;
|
private DefaultTableModel tableModel1,tableModel;
|
private JTextField jtf1,jtf2,implClassText, shapeText;
|
private JTextField textField ;
|
private JButton sel;
|
private JPanel left=new JPanel();
|
private JPanel textPanel=new JPanel();
|
|
private JLabel jl1,jl2,jl3;
|
private JTextArea jta;
|
private String[] aa = {"111","222"};
|
/**
|
* true:add
|
* false:Modify
|
*/
|
private boolean addFlag;
|
private JSplitPane splitPane1;
|
|
private JSplitPane splitPane1_from_toJSplitPane;
|
|
private String nodeName="";
|
ArrayList<String> apNameList = new ArrayList<String>();
|
Map<String, String> map = new HashMap<String, String>();
|
private JScrollPane scrollPane = new JScrollPane();
|
public static LinkTypeUI linktypeui=null;
|
private List<String> btmItemsFrom = null;
|
private List<String> btmItemsTo = null;
|
private List<String> attributes = null;
|
private String biFrom = null;
|
private String biTo = null;
|
private String ai = null;
|
private String btwNameFrom = null;
|
private String btwNameTo = null;
|
private String lable = null;
|
private String attName = null;
|
private LinkType currentLt = null;
|
Object[][] p= null;
|
Object[][] p1= null;
|
private static BtmItem[] btmArray = null;
|
private static List<String> main_types = null;
|
private JLabel jla2 = new JLabel("业务类型名");
|
private JLabel jla3 = new JLabel("业务类型名");
|
private JButton sel2;
|
private JButton sel3;
|
private JTextField fieldFrom = new JTextField(20);
|
private JTextField field_to = new JTextField(20);
|
JXTable JXT;
|
private JButton btnExp;
|
private JButton btnImp;
|
//构造方法用于初始化运行程序所需要的方法
|
public LinkTypeUI(){
|
createPoolTree();
|
initLinkType(p,p1);
|
addListenerDelete();
|
addListenerAdd();
|
addListenerSave();
|
addListenerModify();
|
addListenerCancle();
|
addListenerConsistencyCheck();
|
//queryBtmByNameListener_from();
|
//queryBtmByNameListener_to();
|
|
btnExp.addActionListener(new ExpActionListener());
|
btnImp.addActionListener(new ImpActionListener(this));
|
}
|
|
public void queryBtmByNameListener_from() {
|
fieldFrom.getDocument().addDocumentListener(new DocumentListener() {
|
@Override
|
public void removeUpdate(DocumentEvent e) {
|
((BtmTableForOut) JXT).initBtmTable(fieldFrom.getText());
|
|
}
|
@Override
|
public void insertUpdate(DocumentEvent e) {
|
((BtmTableForOut) JXT).initBtmTable(fieldFrom.getText());
|
}
|
@Override
|
public void changedUpdate(DocumentEvent e) {
|
((BtmTableForOut) JXT).initBtmTable(fieldFrom.getText());
|
}
|
});
|
|
}
|
|
public void queryBtmByNameListener_to() {
|
field_to.getDocument().addDocumentListener(new DocumentListener() {
|
@Override
|
public void removeUpdate(DocumentEvent e) {
|
((BtmTableForOut) JXT).initBtmTable(field_to.getText());
|
|
}
|
@Override
|
public void insertUpdate(DocumentEvent e) {
|
((BtmTableForOut) JXT).initBtmTable(field_to.getText());
|
}
|
@Override
|
public void changedUpdate(DocumentEvent e) {
|
((BtmTableForOut) JXT).initBtmTable(field_to.getText());
|
}
|
});
|
|
}
|
|
public static void cleanInstance(){
|
linktypeui = null;
|
}
|
|
public static LinkTypeUI getInstance(){
|
if(linktypeui==null){
|
linktypeui = new LinkTypeUI();
|
return linktypeui;
|
}
|
return linktypeui;
|
}
|
|
//初始化界面,把界面的各个组成部分都显现出来
|
private void initLinkType(Object[][] p, Object[][] p1){
|
jta = new JTextArea();
|
jta.setPreferredSize(new Dimension(180, 50));
|
jta.setBorder(BorderFactory.createEtchedBorder());
|
setLayout(new BorderLayout(0, 0));
|
northPanel = new JPanel();
|
FlowLayout fl = (FlowLayout) northPanel.getLayout();
|
fl.setAlignment(FlowLayout.LEFT);
|
this.add(northPanel,BorderLayout.NORTH);
|
|
addButton = new JButton("创建");
|
modifyButton = new JButton("修改");
|
deleteButton = new JButton("删除");
|
checkButton = new JButton("查看");
|
saveButton = new JButton("保存");
|
cancleButton = new JButton("取消");
|
btnConsistencyCheck = new JButton("一致性检查");
|
btnConsistencyCheck.setToolTipText("检查类型与数据库中表的一致性");
|
btnCreateView = new JButton("创建视图");
|
btnCreateView.setToolTipText("创建链接类型查询全部To/From端业务类型的视图");
|
btnExp = new JButton("导出");
|
btnImp = new JButton("导入");
|
|
northPanel.add(addButton);
|
northPanel.add(modifyButton);
|
northPanel.add(deleteButton);
|
northPanel.add(checkButton);
|
northPanel.add(saveButton);
|
northPanel.add(cancleButton);
|
northPanel.add(btnConsistencyCheck);
|
northPanel.add(btnCreateView);
|
northPanel.add(btnExp);
|
northPanel.add(btnImp);
|
saveButton.setEnabled(false);
|
cancleButton.setEnabled(false);
|
|
jl1=new JLabel("名称");
|
jl2=new JLabel("标签");
|
jl3=new JLabel("描述");
|
JLabel implClassLabel = new JLabel("实现类");
|
JLabel shapeLabel = new JLabel("形状");
|
jtf1 = new JTextField();
|
jtf1.setPreferredSize(new Dimension(180, 25));
|
jtf2 = new JTextField();
|
jtf2.setPreferredSize(new Dimension(180, 25));
|
implClassText = new JTextField();
|
implClassText.setPreferredSize(new Dimension(180, 25));
|
shapeText = new JTextField();
|
shapeText.setPreferredSize(new Dimension(180, 25));
|
|
|
jtf1.setEditable(false);
|
jtf2.setEditable(false);
|
jta.setEditable(false);
|
|
jp1 = new JPanel();
|
jp1.setLayout(new GridBagLayout());
|
GridBagConstraints gbc4 = new GridBagConstraints();
|
gbc4.insets = new Insets(5, 5, 5, 5);
|
gbc4.gridx=0;
|
gbc4.gridy=0;
|
jp1.add(jl1,gbc4);
|
gbc4.gridx=1;
|
jp1.add(jtf1,gbc4);
|
jtf1.setEditable(false);
|
gbc4.gridx=0;
|
gbc4.gridy=1;
|
jp1.add(jl2,gbc4);
|
gbc4.gridx=1;
|
jp1.add(jtf2,gbc4);
|
jtf2.setEditable(false);
|
gbc4.gridx=0;
|
gbc4.gridy=2;
|
jp1.add(implClassLabel,gbc4);
|
gbc4.gridx=1;
|
jp1.add(implClassText,gbc4);
|
implClassText.setEditable(false);
|
gbc4.gridx=0;
|
gbc4.gridy=3;
|
jp1.add(shapeLabel,gbc4);
|
gbc4.gridx=1;
|
jp1.add(shapeText,gbc4);
|
shapeText.setEditable(false);
|
gbc4.gridx=0;
|
gbc4.gridy=4;
|
jp1.add(jl3,gbc4);
|
gbc4.gridx=1;
|
jp1.add(jta,gbc4);
|
jta.setEditable(false);
|
fromAndToPanel(p,p1);
|
|
|
jbutton1.setEnabled(false);
|
jbutton2.setEnabled(false);
|
jbutton3.setEnabled(false);
|
jbutton4.setEnabled(false);
|
jsp = new JScrollPane();
|
jsp.setViewportView(eastPanel3);
|
//jsp.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
|
//jsp.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED);
|
JScrollPane jScrollPane = new JScrollPane();
|
jScrollPane.setViewportView(jp1);
|
splitPane3 = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, jScrollPane, jsp);
|
splitPane3.setDividerLocation(Toolkit.getDefaultToolkit().getScreenSize().width/6);
|
shuXingPanel();
|
jb1.setEnabled(false);
|
jb2.setEnabled(false);
|
|
jchb1.setSelectedItem(null);
|
jchb2.setSelectedItem(null);
|
|
jcb1.setSelected(false);
|
jcb2.setSelected(false);
|
jcb3.setSelected(false);
|
jcb4.setSelected(false);
|
|
jchb1.setEnabled(false);
|
jchb2.setEnabled(false);
|
|
jcb1.setEnabled(false);
|
jcb2.setEnabled(false);
|
jcb3.setEnabled(false);
|
jcb4.setEnabled(false);
|
|
JScrollPane attributeJScrollPane = new JScrollPane();
|
Dimension dimension = Toolkit.getDefaultToolkit().getScreenSize();
|
eastPanel2.setPreferredSize(new Dimension(dimension.width/2,dimension.height/3));
|
|
attributeJScrollPane.setViewportView(eastPanel2);
|
|
splitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT, splitPane3, attributeJScrollPane);
|
splitPane.setDividerLocation(Toolkit.getDefaultToolkit().getScreenSize().height / 3);
|
|
//add by caill start
|
textField=new JTextField();
|
sel=new JButton("定位");
|
//搜索框的设置
|
GridBagConstraints gb = new GridBagConstraints();
|
gb.gridx = 0;
|
gb.gridy = 0;
|
gb.weightx = 0.7;
|
gb.weighty = 0;
|
gb.fill = GridBagConstraints.HORIZONTAL;
|
textPanel.setLayout(new GridBagLayout());
|
textPanel.add(textField,gb);
|
textPanel.add(sel);
|
left.setLayout(new BorderLayout());
|
left.add(textPanel,BorderLayout.NORTH);
|
left.add(scrollPane,BorderLayout.CENTER);
|
//为定位按钮增加点击事件
|
sel.addActionListener(new ActionListener() {
|
@Override
|
public void actionPerformed(ActionEvent e) {
|
//e.getSource();
|
String test = textField.getText().trim();
|
DefaultTreeModel model = (DefaultTreeModel)ltTree.getModel();
|
model.reload();
|
TreeNode root = (TreeNode) model.getRoot();
|
PostorderEnumeration enumeration = new PostorderEnumeration(
|
root);
|
while (enumeration.hasMoreElements()) {
|
DefaultMutableTreeNode element = (DefaultMutableTreeNode) enumeration
|
.nextElement();
|
if (element.getUserObject() instanceof LinkTypeWrapper) {
|
LinkTypeWrapper wrapper = (LinkTypeWrapper) element
|
.getUserObject();
|
|
if (wrapper != null && wrapper.linkType != null
|
&& wrapper.linkType.name.equals(test)) {
|
TreeNode[] path = element.getPath();
|
TreePath treePath = new TreePath(path);
|
ltTree.setSelectionPath(treePath);
|
return;
|
}
|
;
|
}
|
}
|
if (test.equals("")) {
|
JOptionPane.showMessageDialog(
|
com.vci.client.LogonApplication.frame,
|
"请输入链接类型", "提示", JOptionPane.INFORMATION_MESSAGE);
|
} else {
|
JOptionPane.showMessageDialog(
|
com.vci.client.LogonApplication.frame,
|
"{ " + test + " }链接类型不存在", "提示",
|
JOptionPane.INFORMATION_MESSAGE);
|
}
|
|
}
|
|
});
|
//为定位框添加事件
|
textField.addActionListener(new ActionListener() {
|
|
@Override
|
public void actionPerformed(ActionEvent e) {
|
|
JTextField text = (JTextField) e.getSource();
|
String test = text.getText().trim();
|
DefaultTreeModel model = (DefaultTreeModel)ltTree.getModel();
|
model.reload();
|
TreeNode root = (TreeNode) model.getRoot();
|
PostorderEnumeration enumeration = new PostorderEnumeration(
|
root);
|
|
while (enumeration.hasMoreElements()) {
|
DefaultMutableTreeNode element = (DefaultMutableTreeNode) enumeration
|
.nextElement();
|
if (element.getUserObject() instanceof LinkTypeWrapper) {
|
LinkTypeWrapper wrapper = (LinkTypeWrapper) element
|
.getUserObject();
|
|
if (wrapper != null && wrapper.linkType != null
|
&& wrapper.linkType.name.equals(test)) {
|
TreeNode[] path = element.getPath();
|
TreePath treePath = new TreePath(path);
|
ltTree.setSelectionPath(treePath);
|
return;
|
}
|
;
|
}
|
}
|
if (test.equals("")) {
|
JOptionPane.showMessageDialog(
|
com.vci.client.LogonApplication.frame,
|
"请输入链接类型", "提示", JOptionPane.INFORMATION_MESSAGE);
|
} else {
|
JOptionPane.showMessageDialog(
|
com.vci.client.LogonApplication.frame,
|
"{ " + test + " }链接类型不存在", "提示",
|
JOptionPane.INFORMATION_MESSAGE);
|
}
|
|
}
|
|
});
|
//add by caill end
|
splitPane1 = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, left, splitPane);
|
//eastPanel = new JPanel();
|
//splitPane1 = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, scrollPane, splitPane);
|
splitPane1.setDividerLocation(Toolkit.getDefaultToolkit().getScreenSize().width/6);
|
this.add(splitPane1,BorderLayout.CENTER);
|
}
|
|
//新建按钮的监听器,点击新建按钮界面需要的变化在这里实现
|
public void addListenerAdd(){
|
addButton.addActionListener(new ActionListener() {
|
@Override
|
public void actionPerformed(ActionEvent arg0) {
|
addFlag=true;
|
jtf1.setText("");
|
jtf2.setText("");
|
implClassText.setText("");
|
shapeText.setText("");
|
jta.setText("");
|
ArrayList<String> list5 = apNameList;
|
apNameList.removeAll(list5);
|
updateShuXing();
|
int s=jt1.getRowCount();
|
for(int i=0;i<s;i++){
|
tableModel.removeRow(0);
|
}
|
int s1 = jt2.getRowCount();
|
for(int j=0;j<s1;j++){
|
tableModel1.removeRow(0);
|
}
|
|
jchb1.removeAllItems();
|
jchb2.removeAllItems();
|
|
jchb1.setEnabled(true);
|
jchb2.setEnabled(true);
|
|
jcb1.setEnabled(true);
|
jcb2.setEnabled(true);
|
jcb3.setEnabled(true);
|
jcb4.setEnabled(true);
|
|
jchb1.addItem("请选择");
|
jchb2.addItem("请选择");
|
|
|
jcb1.setSelected(false);
|
jcb2.setSelected(false);
|
jcb3.setSelected(false);
|
jcb4.setSelected(false);
|
|
jbutton1.setEnabled(true);
|
jbutton2.setEnabled(true);
|
jbutton3.setEnabled(true);
|
jbutton4.setEnabled(true);
|
jb1.setEnabled(true);
|
jb2.setEnabled(true);
|
jtf1.setEditable(true);
|
jtf2.setEditable(true);
|
implClassText.setEditable(true);
|
shapeText.setEditable(true);
|
jta.setEditable(true);
|
|
//splitPane1.updateUI();
|
addButton.setEnabled(false);
|
modifyButton.setEnabled(false);
|
deleteButton.setEnabled(false);
|
checkButton.setEnabled(false);
|
saveButton.setEnabled(true);
|
cancleButton.setEnabled(true);
|
}
|
});
|
}
|
|
public boolean isMatchesEnglish(String name){
|
if(!name.matches("[a-z A-Z]*")){
|
//JOptionPane.showMessageDialog(this, "生命周期名称只能为英文字母", "注意", JOptionPane.WARNING_MESSAGE);
|
return false;
|
}
|
return true;
|
}
|
|
public boolean used(String name){
|
try {
|
LinkType lt = LinkTypeStart.getService().getLinkType(name);
|
if(lt != null && !lt.name.equals("")){
|
return true;
|
}
|
} catch (VCIError e) {
|
// TODO Auto-generated catch block
|
e.printStackTrace();
|
}
|
|
return false;
|
}
|
|
public boolean check(){
|
if(jtf1.getText().equals("")){
|
JOptionPane.showMessageDialog(this, "请输入链接类型名称", "注意", JOptionPane.WARNING_MESSAGE);
|
return false;
|
}
|
|
String name = jtf1.getText();
|
if(!isMatchesEnglish(name)){
|
JOptionPane.showMessageDialog(this, "链接类型名称只能为英文字母", "注意", JOptionPane.WARNING_MESSAGE);
|
return false;
|
}
|
int maxLength = 0;
|
try {
|
maxLength = ServiceProvider.getOMDService().getLinkTypeService().getLTNameMaxLength();
|
} catch (VCIError e) {
|
// TODO Auto-generated catch block
|
e.printStackTrace();
|
return false;
|
}
|
if(name.length() > maxLength){
|
JOptionPane.showMessageDialog(this, "链接类型名长度不能超过" + maxLength, "链接类型名错误", JOptionPane.ERROR_MESSAGE);
|
return false;
|
}
|
String lc_name = jtf1.getText();
|
if(used(lc_name)){
|
JOptionPane.showMessageDialog(this, "该链接类型名称已经存在", "请更换", JOptionPane.WARNING_MESSAGE);
|
return false;
|
}
|
|
if ( (jt1.getRowCount() <1 ) || ( jt2.getRowCount() < 1 ) )
|
{
|
JOptionPane.showMessageDialog(this, "From端业务类型和To端类型均不能为空!", "提醒", JOptionPane.WARNING_MESSAGE);
|
return false;
|
}
|
|
return true;
|
}
|
|
//保存按钮的监听器,保存里面包括新建的保存和修改的保存,具体情况要根据判断来决定
|
public void addListenerSave(){
|
saveButton.addActionListener(new ActionListener() {
|
|
@Override
|
public void actionPerformed(ActionEvent arg0) {
|
if(addFlag){
|
if(!check()){
|
return;
|
}
|
try {
|
LinkType linkType = new LinkType();
|
linkType.name = jtf1.getText().toLowerCase();
|
linkType.tag = jtf2.getText();
|
linkType.implClass = implClassText.getText();
|
linkType.shape = shapeText.getText();
|
linkType.description = jta.getText();
|
linkType.primitivesFrom = (String) jchb1.getSelectedItem();
|
linkType.primitivesTo = (String) jchb2.getSelectedItem();
|
if(jcb4.isSelected() && jcb2.isSelected()){
|
linkType.relation = "N:N";
|
linkType.relationFrom = "N";
|
linkType.relationTo="N";
|
}
|
if(jcb4.isSelected() && jcb1.isSelected()){
|
linkType.relation = "N:1";
|
linkType.relationFrom = "N";
|
linkType.relationTo="1";
|
}
|
if(jcb3.isSelected() && jcb2.isSelected()){
|
linkType.relation = "1:N";
|
linkType.relationFrom = "1";
|
linkType.relationTo="N";
|
}
|
if(jcb3.isSelected() && jcb1.isSelected()){
|
linkType.relation = "1:1";
|
linkType.relationFrom = "1";
|
linkType.relationTo="1";
|
}
|
int rowFrom = jt1.getRowCount();
|
btmItemsFrom = new ArrayList<String>();
|
for(int i=0;i<rowFrom;i++){
|
biFrom = new String();
|
biFrom = (String) jt1.getValueAt(i, 0);
|
btmItemsFrom.add(biFrom);
|
}
|
linkType.btmItemsFrom = btmItemsFrom.toArray(new String[0]);
|
|
int rowTo = jt2.getRowCount();
|
btmItemsTo = new ArrayList<String>();
|
for(int i=0;i<rowTo;i++){
|
biTo = new String();
|
biTo = (String) jt2.getValueAt(i, 0);
|
btmItemsTo.add(biTo);
|
}
|
linkType.btmItemsTo = btmItemsTo.toArray(new String[0]);
|
|
int rowAttributes = jxt.getRowCount();
|
attributes = new ArrayList<String>();
|
for(int i=0;i<rowAttributes;i++){
|
ai = new String();
|
ai = (String) jxt.getValueAt(i, 0);
|
attributes.add(ai);
|
}
|
linkType.attributes = attributes.toArray(new String[0]);
|
String userName = InvocationUtility.getInvocation().userName;
|
linkType.creator = userName;
|
linkType.modifier = userName;
|
boolean success = LinkTypeStart.getService().addLinkType(linkType);
|
if (success) {
|
JOptionPane.showMessageDialog(null, "创建链接类型失败", "创建链接类型", JOptionPane.INFORMATION_MESSAGE);
|
}else{
|
JOptionPane.showMessageDialog(null, "创建链接类型成功", "创建链接类型", JOptionPane.INFORMATION_MESSAGE);
|
}
|
|
// if(addFlag){
|
// String createSql = LinkTypeProvider.getInstance().getCreateLtSql(linkType);
|
// String tableName = OmdTools.getLTTableName(linkType.name);
|
// String alterSql = "alter table " + tableName + " add constraint PKLT_" + linkType.name + " primary key (OID)\n";
|
// //执行DDL
|
// boolean createFlag = DDLToolClient.getService().executeUpdateOracle(createSql);
|
// boolean alterFlag = DDLToolClient.getService().executeUpdateOracle(alterSql);
|
// if(!createFlag || !alterFlag){
|
// JOptionPane.showMessageDialog(null, "创建链接类型Table失败", "创建Table失败", JOptionPane.INFORMATION_MESSAGE);
|
// }else{
|
// JOptionPane.showMessageDialog(null, "创建链接类型Table成功", "创建Table成功", JOptionPane.INFORMATION_MESSAGE);
|
// }
|
// }
|
} catch (Exception e) {
|
// TODO Auto-generated catch block
|
e.printStackTrace();
|
}
|
|
// TODO Auto-generated method stub
|
createPoolTree();
|
jtf1.setText("");
|
jtf2.setText("");
|
implClassText.setText("");
|
shapeText.setText("");
|
jta.setText("");
|
ArrayList<String> list5 = apNameList;
|
apNameList.removeAll(list5);
|
updateShuXing();
|
int s=jt1.getRowCount();
|
for(int i=0;i<s;i++){
|
tableModel.removeRow(0);
|
}
|
int s1 = jt2.getRowCount();
|
for(int j=0;j<s1;j++){
|
tableModel1.removeRow(0);
|
}
|
|
|
jchb1.setSelectedItem(null);
|
jchb2.setSelectedItem(null);
|
|
jcb1.setSelected(false);
|
jcb2.setSelected(false);
|
jcb3.setSelected(false);
|
jcb4.setSelected(false);
|
|
//splitPane1.updateUI();
|
jbutton1.setEnabled(false);
|
jbutton2.setEnabled(false);
|
jbutton3.setEnabled(false);
|
jbutton4.setEnabled(false);
|
jb1.setEnabled(false);
|
jb2.setEnabled(false);
|
|
jchb1.setEnabled(false);
|
jchb2.setEnabled(false);
|
|
jcb1.setEnabled(false);
|
jcb2.setEnabled(false);
|
jcb3.setEnabled(false);
|
jcb4.setEnabled(false);
|
|
jtf1.setEditable(false);
|
jtf2.setEditable(false);
|
implClassText.setEditable(false);
|
shapeText.setEditable(false);
|
jta.setEditable(false);
|
addButton.setEnabled(true);
|
modifyButton.setEnabled(true);
|
deleteButton.setEnabled(true);
|
checkButton.setEnabled(true);
|
saveButton.setEnabled(false);
|
cancleButton.setEnabled(false);
|
}else{
|
LinkType selectedLT = getSelectedLT();
|
if (selectedLT != null) {
|
try {
|
selectedLT.tag = jtf2.getText();
|
selectedLT.implClass = implClassText.getText();
|
selectedLT.shape = shapeText.getText();
|
selectedLT.description = jta.getText();
|
|
selectedLT.primitivesFrom = (String) jchb1.getSelectedItem();
|
selectedLT.primitivesTo = (String) jchb2.getSelectedItem();
|
|
if(jcb4.isSelected() && jcb2.isSelected()){
|
selectedLT.relation = "N:N";
|
selectedLT.relationFrom = "N";
|
selectedLT.relationTo = "N";
|
}
|
if(jcb4.isSelected() && jcb1.isSelected()){
|
selectedLT.relation = "N:1";
|
selectedLT.relationFrom = "N";
|
selectedLT.relationTo = "1";
|
}
|
if(jcb3.isSelected() && jcb2.isSelected()){
|
selectedLT.relation = "1:N";
|
selectedLT.relationFrom = "1";
|
selectedLT.relationTo = "N";
|
}
|
if(jcb3.isSelected() && jcb1.isSelected()){
|
selectedLT.relation = "1:1";
|
selectedLT.relationFrom = "1";
|
selectedLT.relationTo = "1";
|
}
|
|
int rowFrom = jt1.getRowCount();
|
btmItemsFrom = new ArrayList<String>();
|
for(int i=0;i<rowFrom;i++){
|
biFrom = new String();
|
biFrom = (String) jt1.getValueAt(i, 0);
|
btmItemsFrom.add(biFrom);
|
}
|
selectedLT.btmItemsFrom = btmItemsFrom.toArray(new String[0]);
|
|
int rowTo = jt2.getRowCount();
|
btmItemsTo = new ArrayList<String>();
|
for(int i=0;i<rowTo;i++){
|
biTo = new String();
|
biTo = (String) jt2.getValueAt(i, 0);
|
btmItemsTo.add(biTo);
|
}
|
selectedLT.btmItemsTo = btmItemsTo.toArray(new String[0]);
|
|
int rowAttributes = jxt.getRowCount();
|
attributes = new ArrayList<String>();
|
for(int i=0;i<rowAttributes;i++){
|
ai = new String();
|
ai = (String) jxt.getValueAt(i, 0);
|
attributes.add(ai);
|
}
|
//selectedLT.attributes = attributes.toArray(new String[0]);
|
ArrayList<String> removeAbList = getRemovedApList(currentLt, selectedLT);
|
if(removeAbList.size() > 0 && hasInstance(selectedLT.name)){
|
JOptionPane.showMessageDialog(getInstance(), "类型已有实例, 不进行移除操作", "不能移除属性", JOptionPane.INFORMATION_MESSAGE);
|
for(int i = 0; i < removeAbList.size(); i++){
|
String abName = removeAbList.get(i);
|
attributes.add(abName);
|
}
|
}
|
selectedLT.attributes = attributes.toArray(new String[0]);
|
selectedLT.modifier = InvocationUtility.getInvocation().userName;
|
// //修改链接类型TABLE
|
// ArrayList<String> addedAbList = getAddedApList(currentLt, selectedLT);
|
// if(addedAbList != null && addedAbList.size() != 0){
|
// //更新表btName 增加属性
|
// String tableName = OmdTools.getLTTableName(selectedLT.name);
|
// String sql = "alter table " + tableName + " add(";
|
// for(int i = 0; i < addedAbList.size(); i++){
|
// String abName = addedAbList.get(i);
|
// com.vci.corba.omd.attribpool.AttribItem abItem = null;
|
// abItem = APClient.getService().getAttribItemByName(abName);
|
// sql += Tool.getInstance().getAbSql(abItem);
|
// }
|
// sql = sql.substring(0, sql.lastIndexOf(","));
|
// sql += ")";
|
// boolean flag = DDLToolClient.getService().executeUpdateOracle(sql);
|
// if(!flag){
|
// JOptionPane.showMessageDialog(null, "增加链接类型Table列失败", "修改Table失败", JOptionPane.INFORMATION_MESSAGE);
|
// return;
|
// }else{
|
// JOptionPane.showMessageDialog(null, "增加链接类型Table列成功", "修改Table成功", JOptionPane.INFORMATION_MESSAGE);
|
// }
|
// //将AlterSQL变更到DDL
|
// DDLToolClient.getService().alterTableDDLOracle(sql + ";");
|
// }
|
// if(removeAbList.size() > 0 && !hasInstance(selectedLT.name)){
|
// String tableName = OmdTools.getLTTableName(selectedLT.name);
|
// String dropSql = "alter table " + tableName + " drop(";
|
// for(int i = 0; i < removeAbList.size(); i++){
|
// dropSql += removeAbList.get(i);
|
// if(i < removeAbList.size() -1){
|
// dropSql += ",";
|
// }
|
// }
|
// dropSql += ")";
|
// boolean dropFlag = DDLToolClient.getService().executeUpdateOracle(dropSql);
|
// if(!dropFlag){
|
// JOptionPane.showMessageDialog(getInstance(), "移除链接类型Table列失败", "修改Table失败", JOptionPane.INFORMATION_MESSAGE);
|
// return;
|
// }else{
|
// JOptionPane.showMessageDialog(getInstance(), "移除链接类型Table列成功", "修改Table成功", JOptionPane.INFORMATION_MESSAGE);
|
// }
|
// //将AlterSQL变更到DDL
|
// DDLToolClient.getService().alterTableDDLOracle(dropSql + ";");
|
// }
|
//*****先修改数据库中的表结构 , 修改成功后再去修改链接类型
|
//修改链接类型XML
|
LinkTypeStart.getService().modifyLinkType(selectedLT);
|
} catch (Exception e1) {
|
// TODO Auto-generated catch block
|
e1.printStackTrace();
|
}
|
}else{
|
JOptionPane.showMessageDialog(getThis(), "请选择链接类型", "请选择链接类型", JOptionPane.WARNING_MESSAGE);
|
return;
|
}
|
createPoolTree();
|
jtf1.setText("");
|
jtf2.setText("");
|
implClassText.setText("");
|
shapeText.setText("");
|
jta.setText("");
|
ArrayList<String> list5 = apNameList;
|
apNameList.removeAll(list5);
|
updateShuXing();
|
int s=jt1.getRowCount();
|
//每次removeRow(0)
|
for(int i=0;i<s;i++){
|
tableModel.removeRow(0);
|
}
|
int s1 = jt2.getRowCount();
|
//每次removeRow(0)
|
for(int j=0;j<s1;j++){
|
tableModel1.removeRow(0);
|
}
|
|
jchb1.setSelectedItem(null);
|
jchb2.setSelectedItem(null);
|
|
jcb1.setSelected(false);
|
jcb2.setSelected(false);
|
jcb3.setSelected(false);
|
jcb4.setSelected(false);
|
|
// splitPane1.updateUI();
|
jbutton1.setEnabled(false);
|
jbutton2.setEnabled(false);
|
jbutton3.setEnabled(false);
|
jbutton4.setEnabled(false);
|
jb1.setEnabled(false);
|
jb2.setEnabled(false);
|
jtf1.setEditable(false);
|
jtf2.setEditable(false);
|
implClassText.setEditable(false);
|
shapeText.setEditable(false);
|
jta.setEditable(false);
|
|
jchb1.setEnabled(false);
|
jchb2.setEnabled(false);
|
|
jcb1.setEnabled(false);
|
jcb2.setEnabled(false);
|
jcb3.setEnabled(false);
|
jcb4.setEnabled(false);
|
|
addButton.setEnabled(true);
|
modifyButton.setEnabled(true);
|
deleteButton.setEnabled(true);
|
checkButton.setEnabled(true);
|
saveButton.setEnabled(false);
|
cancleButton.setEnabled(false);
|
|
}
|
|
}
|
});
|
}
|
|
//修改按钮的监听器,点击修改按钮,界面将会被激活,可以对界面进行操作进而进行保存
|
public void addListenerModify(){
|
modifyButton.addActionListener(new ActionListener() {
|
@Override
|
public void actionPerformed(ActionEvent e) {
|
addFlag = false;
|
ArrayList<String> list5 = apNameList;
|
apNameList.removeAll(list5);
|
updateShuXing();
|
int s=jt1.getRowCount();
|
for(int i=0;i<s;i++){
|
tableModel.removeRow(0);
|
}
|
int s1 = jt2.getRowCount();
|
for(int j=0;j<s1;j++){
|
tableModel1.removeRow(0);
|
}
|
|
jchb1.removeAllItems();
|
jchb2.removeAllItems();
|
|
jchb1.addItem("请选择");
|
jchb2.addItem("请选择");
|
|
jbutton1.setEnabled(true);
|
jbutton2.setEnabled(true);
|
jbutton3.setEnabled(true);
|
jbutton4.setEnabled(true);
|
jb1.setEnabled(true);
|
jb2.setEnabled(true);
|
jtf2.setEditable(true);
|
jta.setEditable(true);
|
|
jchb1.setEnabled(true);
|
jchb2.setEnabled(true);
|
|
jcb1.setEnabled(true);
|
jcb2.setEnabled(true);
|
jcb3.setEnabled(true);
|
jcb4.setEnabled(true);
|
|
//splitPane1.updateUI();
|
addButton.setEnabled(false);
|
modifyButton.setEnabled(false);
|
deleteButton.setEnabled(false);
|
checkButton.setEnabled(false);
|
saveButton.setEnabled(true);
|
cancleButton.setEnabled(true);
|
|
//AND BY ZHOUHUI---START
|
//修正当 选择链接类型时点击修改后,界面上没有设置数据的问题
|
//修正当 选择链接类型时点击修改后,实现类和 形状不能修改的问题
|
implClassText.setEditable(true);
|
shapeText.setEditable(true);
|
linkTreeSelection();
|
//AND BY ZHOUHUI---END
|
}
|
});
|
}
|
|
//删除按钮的监听器,点击删除按钮,被选中的链接类型将会被删除
|
public void addListenerDelete(){
|
deleteButton.addActionListener(new ActionListener() {
|
@Override
|
public void actionPerformed(ActionEvent e) {
|
// TODO Auto-generated method stub
|
try {
|
LinkType selectedLT = getSelectedLT();
|
if(selectedLT == null){
|
JOptionPane.showMessageDialog(getThis(), "请选择链接类型", "请选择链接类型", JOptionPane.WARNING_MESSAGE);
|
return;
|
}
|
Object[] options = { "Yes", "No" };
|
int n = JOptionPane
|
.showOptionDialog(getInstance(), "确认是否删除链接类型\""
|
+ selectedLT.name + "\"", "链接类型删除",
|
JOptionPane.YES_NO_OPTION,
|
JOptionPane.QUESTION_MESSAGE, null, options,
|
options[1]);
|
// int n = JOptionPane.showConfirmDialog(null, "您确定要执行删除操作吗?");
|
if(n != JOptionPane.YES_OPTION){
|
return;
|
}
|
|
|
if(hasInstance(selectedLT.name)){
|
JOptionPane.showMessageDialog(null, "该类型已有实例,禁止删除", "禁止删除", JOptionPane.ERROR_MESSAGE);
|
return;
|
}
|
|
try {
|
// String tableName = OmdTools.getLTTableName(selectedLT.name);
|
// String sql = "drop table " + tableName;
|
// boolean flag = DDLToolClient.getService().executeUpdateOracle(sql);
|
// if(!flag){
|
// JOptionPane.showMessageDialog(null, "删除table失败", "删除table失败", JOptionPane.WARNING_MESSAGE);
|
// return;
|
// }else{
|
// JOptionPane.showMessageDialog(null, "删除table成功", "删除table成功", JOptionPane.WARNING_MESSAGE);
|
// }
|
boolean flag = LinkTypeStart.getService().deleteLinkType(selectedLT);
|
if(!flag){
|
JOptionPane.showMessageDialog(null, "删除table失败", "删除table失败", JOptionPane.WARNING_MESSAGE);
|
return;
|
}else{
|
JOptionPane.showMessageDialog(null, "删除table成功", "删除table成功", JOptionPane.WARNING_MESSAGE);
|
}
|
} catch (VCIError e1) {
|
// TODO Auto-generated catch block
|
e1.printStackTrace();
|
}
|
|
} catch (Exception e1) {
|
// TODO Auto-generated catch block
|
e1.printStackTrace();
|
}
|
createPoolTree();
|
scrollPane.updateUI();
|
jtf1.setText("");
|
jtf2.setText("");
|
implClassText.setText("");
|
shapeText.setText("");
|
jta.setText("");
|
ArrayList<String> list5 = apNameList;
|
apNameList.removeAll(list5);
|
updateShuXing();
|
int s=jt1.getRowCount();
|
for(int i=0;i<s;i++){
|
tableModel.removeRow(0);
|
}
|
int s1 = jt2.getRowCount();
|
for(int j=0;j<s1;j++){
|
tableModel1.removeRow(0);
|
}
|
jchb1.removeAllItems();
|
jchb2.removeAllItems();
|
|
jbutton1.setEnabled(false);
|
jbutton2.setEnabled(false);
|
jbutton3.setEnabled(false);
|
jbutton4.setEnabled(false);
|
jb1.setEnabled(false);
|
jb2.setEnabled(false);
|
jtf1.setEditable(false);
|
jtf2.setEditable(false);
|
implClassText.setEditable(false);
|
shapeText.setEditable(false);
|
jta.setEditable(false);
|
|
jchb1.setSelectedItem(null);
|
jchb2.setSelectedItem(null);
|
|
jcb1.setSelected(false);
|
jcb2.setSelected(false);
|
jcb3.setSelected(false);
|
jcb4.setSelected(false);
|
|
jcb1.setEnabled(false);
|
jcb2.setEnabled(false);
|
jcb3.setEnabled(false);
|
jcb4.setEnabled(false);
|
|
addButton.setEnabled(true);
|
modifyButton.setEnabled(true);
|
deleteButton.setEnabled(true);
|
checkButton.setEnabled(true);
|
saveButton.setEnabled(false);
|
cancleButton.setEnabled(false);
|
|
}
|
});
|
|
|
|
}
|
|
//返回按钮的监听方法,点击返回按钮之前的操作如果没有被保存,将会被重置
|
public void addListenerCancle(){
|
cancleButton.addActionListener(new ActionListener() {
|
|
@Override
|
public void actionPerformed(ActionEvent e) {
|
// TODO Auto-generated method stub
|
JOptionPane.showConfirmDialog(null, "您确认取消吗?");
|
createPoolTree();
|
jtf1.setText("");
|
jtf2.setText("");
|
implClassText.setText("");
|
shapeText.setText("");
|
jta.setText("");
|
ArrayList<String> list5 = apNameList;
|
apNameList.removeAll(list5);
|
updateShuXing();
|
int s=jt1.getRowCount();
|
for(int i=0;i<s;i++){
|
tableModel.removeRow(0);
|
}
|
int s1 = jt2.getRowCount();
|
for(int j=0;j<s1;j++){
|
tableModel1.removeRow(0);
|
}
|
|
jchb1.setSelectedItem(null);
|
jchb2.setSelectedItem(null);
|
|
jcb1.setSelected(false);
|
jcb2.setSelected(false);
|
jcb3.setSelected(false);
|
jcb4.setSelected(false);
|
|
// splitPane1.updateUI();
|
jbutton1.setEnabled(false);
|
jbutton2.setEnabled(false);
|
jbutton3.setEnabled(false);
|
jbutton4.setEnabled(false);
|
jb1.setEnabled(false);
|
jb2.setEnabled(false);
|
jtf1.setEditable(false);
|
jtf2.setEditable(false);
|
implClassText.setEditable(false);
|
shapeText.setEditable(false);
|
jta.setEditable(false);
|
|
jchb1.setEnabled(false);
|
jchb2.setEnabled(false);
|
|
jcb1.setEnabled(false);
|
jcb2.setEnabled(false);
|
jcb3.setEnabled(false);
|
jcb4.setEnabled(false);
|
|
addButton.setEnabled(true);
|
modifyButton.setEnabled(true);
|
deleteButton.setEnabled(true);
|
checkButton.setEnabled(true);
|
saveButton.setEnabled(false);
|
cancleButton.setEnabled(false);
|
}
|
});
|
|
}
|
|
/**
|
* 检查类型与数据库中表的一致性
|
*/
|
private void addListenerConsistencyCheck(){
|
btnConsistencyCheck.addActionListener(new ConsistencyCheckListenerForLink());
|
btnCreateView.addActionListener(new ActionListener() {
|
|
@Override
|
public void actionPerformed(ActionEvent e) {
|
try {
|
boolean f = LinkTypeStart.getService().createView();
|
if(f){
|
JOptionPane.showMessageDialog(LinkTypeUI.getInstance(), "创建视图成功", "消息框", JOptionPane.INFORMATION_MESSAGE);
|
return;
|
}else{
|
JOptionPane.showMessageDialog(LinkTypeUI.getInstance(), "创建视图失败", "消息框", JOptionPane.INFORMATION_MESSAGE);
|
return;
|
}
|
} catch (VCIError e1) {
|
e1.printStackTrace();
|
}
|
}
|
});
|
}
|
|
//属性界面的实现方法,此方法完成属性界面的布局
|
public JPanel shuXingPanel(){
|
jb1 = new JButton("增加");
|
jb2 = new JButton("移除");
|
eastPanel2 = new JPanel();
|
eastPanel2.setLayout(new BorderLayout());
|
jp2 = new JPanel();
|
jp2.setBorder(new EmptyBorder(5, 5, 5, 5));
|
jp2.setAutoscrolls(true);
|
jp2.setLayout(new BorderLayout(5, 10));
|
jp3 = new JPanel();
|
jp3.setLayout(new GridBagLayout());
|
GridBagConstraints gbc3 = new GridBagConstraints();
|
gbc3.insets = new Insets(5, 5, 5, 5);
|
gbc3.gridx=0;
|
gbc3.gridy=0;
|
jp3.add(jb1,gbc3);
|
gbc3.gridy=1;
|
jp3.add(jb2,gbc3);
|
jxt = new ApTableForOut(apNameList);
|
jsl = new JScrollPane();
|
jsl.setViewportView(jxt);
|
eastPanel2.add(jsl,BorderLayout.CENTER);
|
eastPanel2.add(jp3,BorderLayout.EAST);
|
jb1.addActionListener(new ActionListener(){
|
|
@Override
|
public void actionPerformed(ActionEvent arg0) {
|
// TODO Auto-generated method stub
|
LinkList dialog = new LinkList(apNameList);
|
dialog.setVisible(true);
|
String addName;
|
if(dialog.getSelectedApNameList() == null){
|
return;
|
}
|
for(int i = 0; i < dialog.getSelectedApNameList().size(); i++){
|
addName = dialog.getSelectedApNameList().get(i);
|
apNameList.add(addName);
|
}
|
updateShuXing();
|
}
|
|
});
|
jb2.addActionListener(new ActionListener() {
|
|
@Override
|
public void actionPerformed(ActionEvent e) {
|
// TODO Auto-generated method stub
|
int selectRow = jxt.getSelectedRow();
|
if(selectRow < 0){
|
JOptionPane.showMessageDialog(null, "请选择要删除的属性", "没有选择属性", JOptionPane.WARNING_MESSAGE);
|
return;
|
}else{
|
String selectFName = (String)jxt.getValueAt(selectRow, 0);
|
apNameList.remove(selectFName);
|
updateShuXing();
|
}
|
}
|
});
|
return eastPanel2;
|
}
|
|
|
//此方法用于更新属性界面,需要用的属性界面的方法都要调用此方法
|
public void updateShuXing(){
|
jxt = new ApTableForOut(apNameList);
|
jsl.setViewportView(jxt);
|
}
|
|
//from,to界面的实现方法,此方法完成from,to界面的布局
|
public JPanel fromAndToPanel(Object[][] p , Object[][] p1){
|
eastPanel3 = new JPanel();
|
// eastPanel3.setAutoscrolls(true);
|
//eastPanel3.setLayout(new BorderLayout());
|
|
jt1 = new JTable();
|
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
|
Dimension size = new Dimension(screenSize.width/4,screenSize.height/6);
|
|
jt1.setPreferredScrollableViewportSize(size);
|
tableModel = new DefaultTableModel();
|
String[] tableHeads = {"From端类型"};
|
tableModel.setColumnCount(tableHeads.length);
|
tableModel.setColumnIdentifiers(tableHeads);
|
tableModel.setDataVector(p, tableHeads);
|
jt1.setModel(tableModel);
|
JScrollPane sp = new JScrollPane();
|
//sp.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);
|
//sp.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
|
sp.setViewportView(jt1);
|
// JScrollPane sp = new JScrollPane(jt1);
|
//eastPanel3.add(sp, BorderLayout.EAST);
|
JPanel jpt2 = new JPanel();
|
jpt2.setLayout(new GridBagLayout());
|
GridBagConstraints gb1 = new GridBagConstraints();
|
jbutton1 = new JButton("添加");
|
jbutton1.addActionListener(new ActionListener() {
|
@Override
|
public void actionPerformed(ActionEvent arg0) {
|
// TODO Auto-generated method stub
|
JXT = new BtmTableForOut(getBtsInTable(jt1), "");
|
final JDialog jdialog = new JDialog();
|
|
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
|
jdialog.setSize(screenSize.width/2,screenSize.height/2);
|
jdialog.setModal(true);
|
jdialog.setLocationRelativeTo(null);
|
jdialog.setLayout(new BorderLayout(5, 5));
|
|
// jdialog.setPreferredSize(new Dimension(300, 500));
|
JScrollPane jslp = new JScrollPane();
|
jslp.setViewportView(JXT);
|
// JTextField field = new JTextField(30);
|
JPanel jPanel = new JPanel();
|
//add by caill start 2015.11.25 将输入框自动过滤事件改为查询按钮点击事件
|
sel2 = new JButton("查询");
|
jPanel.add(jla2);
|
jPanel.add(fieldFrom);
|
jPanel.add(sel2);
|
sel2.addActionListener(new ActionListener() {
|
|
@Override
|
public void actionPerformed(ActionEvent arg0) {
|
// TODO Auto-generated method stub
|
((BtmTableForOut) JXT).initBtmTable(fieldFrom.getText());
|
}
|
});
|
//add by caill end
|
jdialog.add(jPanel,BorderLayout.NORTH);
|
jdialog.add(jslp,BorderLayout.CENTER);
|
JButton jbOK = new JButton("确定");
|
jbOK.addActionListener(new ActionListener() {
|
@Override
|
public void actionPerformed(ActionEvent arg0) {
|
// TODO Auto-generated method stub
|
for(int i = 0; i < JXT.getRowCount(); i++){
|
if(((JCheckBox)JXT.getValueAt(i, 0)).isSelected()){
|
int row = jt1.getRowCount();
|
select = (String) JXT.getValueAt(i, 1);
|
// System.out.println("select_from================="+select);
|
// mainTypeFromList.add(select);
|
tableModel.insertRow(row, new String[]{select});
|
jchb1.addItem(select);
|
}
|
}
|
jdialog.dispose();
|
}
|
});
|
JButton jbcancle = new JButton("返回");
|
jbcancle.addActionListener(new ActionListener() {
|
@Override
|
public void actionPerformed(ActionEvent arg0) {
|
// TODO Auto-generated method stub
|
jdialog.dispose();
|
}
|
});
|
JPanel jpane1 = new JPanel();
|
jpane1.add(jbOK);
|
jpane1.add(jbcancle);
|
jdialog.add(jpane1,BorderLayout.SOUTH);
|
jdialog.setVisible(true);
|
jdialog.pack();
|
//jdialog.setDefaultCloseOperation(JDialog.EXIT_ON_CLOSE);
|
}
|
});
|
jbutton2 = new JButton("删除");
|
jbutton2.addActionListener(new ActionListener() {
|
|
@Override
|
public void actionPerformed(ActionEvent e) {
|
// TODO Auto-generated method stub
|
int row = jt1.getSelectedRow();
|
if(row<0){
|
JOptionPane.showMessageDialog(null, "请选择要移除的业务类型!", "提醒", JOptionPane.WARNING_MESSAGE);
|
return;
|
}
|
else
|
{
|
String select = (String)jt1.getValueAt(row, 0);
|
tableModel.removeRow(row);
|
jchb1.removeItem(select);
|
}
|
|
}
|
});
|
|
gb1.gridx=0;
|
gb1.gridy=0;
|
jpt2.add(jbutton1,gb1);
|
gb1.gridy=1;
|
jpt2.add(jbutton2,gb1);
|
JPanel jpa1 = new JPanel();
|
jpa1.setLayout(new BorderLayout());
|
jpa1.add(sp,BorderLayout.CENTER);
|
jpa1.add(jpt2,BorderLayout.EAST);
|
//jpa1.setAutoscrolls(true);
|
|
jt2 = new JTable();
|
|
//Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
|
//jt2.setPreferredScrollableViewportSize(new Dimension(d.width/4,d.height/4));
|
jt2.setPreferredScrollableViewportSize(size);
|
|
tableModel1 = new DefaultTableModel();
|
String[] tableHeads1 = {"To端类型"};
|
tableModel1.setDataVector(p1, tableHeads1);
|
tableModel1.setColumnCount(tableHeads1.length);
|
tableModel1.setColumnIdentifiers(tableHeads1);
|
jt2.setModel(tableModel1);
|
JScrollPane sp1 = new JScrollPane();
|
sp1.setViewportView(jt2);
|
// eastPanel3.add(sp1, BorderLayout.WEST);
|
JPanel jpt4 = new JPanel();
|
jpt4.setLayout(new GridBagLayout());
|
GridBagConstraints gb2 = new GridBagConstraints();
|
jbutton3 = new JButton("添加");
|
jbutton3.addActionListener(new ActionListener() {
|
@Override
|
public void actionPerformed(ActionEvent e) {
|
// TODO Auto-generated method stub
|
final JXTable JXT = new BtmTableForOut(getBtsInTable(jt2), "");
|
final JDialog jdialog = new JDialog();
|
|
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
|
jdialog.setSize(screenSize.width/2,screenSize.height/2);
|
jdialog.setModal(true);
|
jdialog.setLocationRelativeTo(null);
|
jdialog.setLayout(new BorderLayout(5, 5));
|
|
JScrollPane jslp = new JScrollPane();
|
jslp.setViewportView(JXT);
|
JPanel jPanel = new JPanel();
|
//add by caill start 2015.11.25 将输入框自动过滤事件改为查询按钮点击事件
|
sel3 = new JButton("查询");
|
jPanel.add(jla3);
|
jPanel.add(field_to);
|
jPanel.add(sel3);
|
sel3.addActionListener(new ActionListener() {
|
|
@Override
|
public void actionPerformed(ActionEvent arg0) {
|
// TODO Auto-generated method stub
|
((BtmTableForOut) JXT).initBtmTable(field_to.getText());
|
}
|
});
|
//add by caill end
|
jdialog.add(jPanel,BorderLayout.NORTH);
|
jdialog.add(jslp,BorderLayout.CENTER);
|
JButton jbOK = new JButton("确定");
|
jbOK.addActionListener(new ActionListener() {
|
@Override
|
public void actionPerformed(ActionEvent arg0) {
|
for(int i = 0; i < JXT.getRowCount(); i++){
|
if(((JCheckBox)JXT.getValueAt(i, 0)).isSelected()){
|
int row = jt2.getRowCount();
|
select = (String) JXT.getValueAt(i, 1);
|
// System.out.println("select_from================="+select);
|
// mainTypeFromList.add(select);
|
tableModel1.insertRow(row, new String[]{select});
|
jchb2.addItem(select);
|
}
|
}
|
jdialog.dispose();
|
|
}
|
});
|
JButton jbcancle = new JButton("返回");
|
jbcancle.addActionListener(new ActionListener() {
|
@Override
|
public void actionPerformed(ActionEvent arg0) {
|
// TODO Auto-generated method stub
|
jdialog.dispose();
|
}
|
});
|
JPanel jpane1 = new JPanel();
|
jpane1.add(jbOK);
|
jpane1.add(jbcancle);
|
jdialog.add(jpane1,BorderLayout.SOUTH);
|
jdialog.setVisible(true);
|
jdialog.pack();
|
}
|
});
|
jbutton4 = new JButton("删除");
|
jbutton4.addActionListener(new ActionListener() {
|
|
@Override
|
public void actionPerformed(ActionEvent e) {
|
// TODO Auto-generated method stub
|
int row = jt2.getSelectedRow();
|
if(row<0)
|
{
|
JOptionPane.showMessageDialog(null, "请选择要移除的业务类型!", "提醒", JOptionPane.WARNING_MESSAGE);
|
return;
|
}
|
else
|
{
|
String select = (String)jt2.getValueAt(row, 0);
|
tableModel1.removeRow(row);
|
jchb2.removeItem(select);
|
}
|
}
|
});
|
gb2.gridx=0;
|
gb2.gridy=0;
|
jpt4.add(jbutton3,gb2);
|
gb2.gridy=1;
|
jpt4.add(jbutton4,gb2);
|
JPanel jpa2 = new JPanel();
|
// jpa2.setAutoscrolls(true);
|
jpa2.setLayout(new BorderLayout());
|
|
jpa2.add(sp1,BorderLayout.CENTER);
|
jpa2.add(jpt4,BorderLayout.EAST);
|
|
JXTable jxtab = new JXTable();
|
List<String> list = new ArrayList<String>();
|
int t = jxtab.getRowCount();
|
for(int i = 0 ;i<t;i++){
|
list.add((String)jxtab.getValueAt(i, 0));
|
}
|
ButtonGroup group1 = new ButtonGroup();
|
ButtonGroup group2 = new ButtonGroup();
|
jcb1 = new JRadioButton("1");
|
jcb2 = new JRadioButton("N");
|
jcb3 = new JRadioButton("1");
|
jcb4 = new JRadioButton("N");
|
group1.add(jcb1);
|
group1.add(jcb2);
|
group2.add(jcb3);
|
group2.add(jcb4);
|
JPanel jpa8 = new JPanel();
|
jpa8.setLayout(new BorderLayout());
|
jpa8.add(jcb4,BorderLayout.CENTER);
|
jpa8.add(jcb3,BorderLayout.EAST);
|
JPanel jpa9 = new JPanel();
|
jpa9.setLayout(new BorderLayout());
|
jpa9.add(jcb2,BorderLayout.CENTER);
|
jpa9.add(jcb1,BorderLayout.EAST);
|
jl1 = new JLabel("主类型");
|
jl2 = new JLabel("主类型");
|
jchb1 = new JComboBox();
|
jchb2 = new JComboBox();
|
|
jchb1.setPreferredSize(new Dimension(180,25));
|
jchb2.setPreferredSize(new Dimension(180,25));
|
|
JPanel jpa3 = new JPanel();
|
jpa3.setLayout(new GridBagLayout());
|
GridBagConstraints g = new GridBagConstraints();
|
g.gridx=0;
|
g.gridy=0;
|
jpa3.add(jpa1,g);
|
g.gridy=1;
|
jpa3.add(jpa8,g);
|
g.gridy=2;
|
JPanel jpa6 = new JPanel();
|
jpa6.setLayout(new BorderLayout());
|
jpa6.add(jl1,BorderLayout.CENTER);
|
jpa6.add(jchb1,BorderLayout.EAST);
|
jpa3.add(jpa6,g);
|
|
JPanel jpa4 = new JPanel();
|
jpa4.setLayout(new GridBagLayout());
|
GridBagConstraints g1 = new GridBagConstraints();
|
g1.gridx=0;
|
g1.gridy=0;
|
jpa4.add(jpa2,g1);
|
g1.gridy=1;
|
jpa4.add(jpa9,g1);
|
g1.gridy=2;
|
JPanel jpa7 = new JPanel();
|
jpa7.setLayout(new BorderLayout());
|
jpa7.add(jl2,BorderLayout.CENTER);
|
jpa7.add(jchb2,BorderLayout.EAST);
|
jpa4.add(jpa7,g1);
|
//jpa3.setBorder(BorderFactory.createTitledBorder("from"));
|
//jpa4.setBorder(BorderFactory.createTitledBorder("to"));
|
eastPanel3.setVisible(true);
|
|
JScrollPane scrollPane_from = new JScrollPane();
|
|
scrollPane_from.setViewportView(jpa3);
|
|
JScrollPane scrollPane_to = new JScrollPane();
|
|
scrollPane_to.setViewportView(jpa4);
|
|
//scrollPane_from.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);
|
//scrollPane_from.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
|
|
//scrollPane_to.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS);
|
//scrollPane_to.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
|
|
// splitPane1_from_toJSplitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, scrollPane_from, scrollPane_to);
|
// splitPane1_from_toJSplitPane.setDividerLocation(Toolkit.getDefaultToolkit().getScreenSize().width/2);
|
|
eastPanel3.add(scrollPane_from,BorderLayout.CENTER);
|
eastPanel3.add(scrollPane_to,BorderLayout.EAST);
|
|
return eastPanel3;
|
}
|
|
// 当树的子节点被选中的时候调用此方法显示选中节点的信息
|
public void linkTreeSelection() {
|
try {
|
int d = jt1.getRowCount();
|
if(d>0){
|
for(int d1 = 0;d1<d;d1++){
|
tableModel.removeRow(0);
|
}
|
}
|
int d2 = jt2.getRowCount();
|
if(d2>0){
|
for(int d3=0;d3<d2;d3++){
|
tableModel1.removeRow(0);
|
}
|
}
|
|
jchb1.removeAllItems();
|
jchb2.removeAllItems();
|
Document doc = null;
|
LinkType selectedLT = getSelectedLT();
|
|
if(selectedLT != null){
|
currentLt = selectedLT;
|
jtf1.setText(selectedLT.name);
|
jtf2.setText(selectedLT.tag);
|
implClassText.setText(selectedLT.implClass);
|
shapeText.setText(selectedLT.shape);
|
jta.setText(selectedLT.description);
|
|
String relation = selectedLT.relation;
|
|
if(relation.equals("1:1")){
|
jcb3.setSelected(true);
|
jcb1.setSelected(true);
|
}
|
if(relation.equals("1:N")){
|
jcb3.setSelected(true);
|
jcb2.setSelected(true);
|
}
|
if(relation.equals("N:1")){
|
jcb1.setSelected(true);
|
jcb4.setSelected(true);
|
}
|
if(relation.equals("N:N")){
|
jcb4.setSelected(true);
|
jcb2.setSelected(true);
|
}
|
|
String[] biFroms = selectedLT.btmItemsFrom;
|
for(int i = 0;i<biFroms.length;i++){
|
tableModel.insertRow(i, new String[]{biFroms[i]});
|
jchb1.addItem(biFroms[i]);
|
}
|
|
String[] biTos = selectedLT.btmItemsTo;
|
for(int i = 0;i<biTos.length;i++){
|
tableModel1.insertRow(i, new String[]{biTos[i]});
|
jchb2.addItem(biTos[i]);
|
}
|
String primitivesFrom = selectedLT.primitivesFrom;
|
String primitivesTo = selectedLT.primitivesTo;
|
jchb1.setSelectedItem(primitivesFrom);
|
jchb2.setSelectedItem(primitivesTo);
|
|
String[] aiAttributes = selectedLT.attributes;
|
apNameList = new ArrayList<String>();
|
for(int i=0;i<aiAttributes.length;i++){
|
apNameList.add(aiAttributes[i]);
|
}
|
jxt = new ApTableForOut(apNameList);
|
jsl.setViewportView(jxt);
|
jsl.updateUI();
|
}
|
|
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
|
}
|
|
//整体界面左边的内容,就是显示一棵树,树的内容就是链接类型列表
|
public void createPoolTree() {
|
DefaultMutableTreeNode node1 = new DefaultMutableTreeNode("链接类型列表");
|
try {
|
LinkType[] lts = LinkTypeStart.getService().getLinkTypes();
|
List<LinkType> ltList = Arrays.asList(lts);
|
Collections.sort(ltList, new LinkTypeComparator());
|
if(lts != null){
|
for(LinkType lt : lts){
|
node1.add(new DefaultMutableTreeNode(new LinkTypeWrapper(lt)));
|
}
|
}
|
} catch (VCIError e) {
|
e.printStackTrace();
|
}
|
ltTree = new JTree(node1);
|
ltTree.setCellRenderer(new OmdTreeCellRenderer());
|
scrollPane.setViewportView(ltTree);
|
ltTree.addMouseListener(new MouseAdapter() {
|
public void mouseClicked(MouseEvent mouseevent) {
|
jbutton1.setEnabled(false);
|
jbutton2.setEnabled(false);
|
jbutton3.setEnabled(false);
|
jbutton4.setEnabled(false);
|
jb1.setEnabled(false);
|
jb2.setEnabled(false);
|
|
jtf1.setEditable(false);
|
jtf2.setEditable(false);
|
implClassText.setEditable(false);
|
shapeText.setEditable(false);
|
jta.setEditable(false);
|
|
jchb1.setEnabled(false);
|
jchb2.setEnabled(false);
|
|
jcb1.setEnabled(false);
|
jcb2.setEnabled(false);
|
jcb3.setEnabled(false);
|
jcb4.setEnabled(false);
|
|
addButton.setEnabled(true);
|
modifyButton.setEnabled(true);
|
deleteButton.setEnabled(true);
|
checkButton.setEnabled(true);
|
saveButton.setEnabled(false);
|
cancleButton.setEnabled(false);
|
linkTreeSelection();
|
}
|
});
|
}
|
|
/**
|
* 有实例:true
|
* 无实例:false
|
* @return
|
*/
|
private boolean hasInstance(String ltName){
|
//String tableName = OmdTools.getLTTableName(ltName);
|
|
boolean flag = false;
|
try {
|
flag = LinkTypeStart.getService().hasData(ltName);
|
} catch (VCIError e) {
|
// TODO Auto-generated catch block
|
e.printStackTrace();
|
}
|
|
//boolean flag = DDLToolClient.getService().hasInstanceOralce(tableName);
|
return flag;
|
}
|
|
|
/**
|
* 获取修改链接类型时 增加的属性, 以便将这些属性增加到该业务类型表的属性列中
|
* @param oldNames
|
* @param names
|
* @return
|
*/
|
private ArrayList<String> getAddedApList(LinkType oldLt, LinkType newLt){
|
String[] oldAbInfo = oldLt.attributes;
|
ArrayList<String> oldNameList = new ArrayList<String>();
|
for(int i = 0; i < oldAbInfo.length; i++){
|
oldNameList.add(oldAbInfo[i]);
|
}
|
String[] newAbInfo = newLt.attributes;
|
ArrayList<String> newNameList = new ArrayList<String>();
|
for(int i = 0; i < newAbInfo.length; i++){
|
newNameList.add(newAbInfo[i]);
|
}
|
|
ArrayList<String> addedApList = new ArrayList<String>();
|
|
for(Iterator<String> iterator = newNameList.iterator(); iterator.hasNext();){
|
String newName = iterator.next();
|
if(!oldNameList.contains(newName)){
|
addedApList.add(newName);
|
}
|
}
|
return addedApList;
|
}
|
|
/**
|
* 获取修改链接类型时 减少的属性
|
* @param oldNames
|
* @param names
|
* @return
|
*/
|
private ArrayList<String> getRemovedApList(LinkType oldLt,
|
LinkType newLt) {
|
String[] oldAbInfo = oldLt.attributes;
|
ArrayList<String> oldNameList = new ArrayList<String>();
|
for(int i = 0; i < oldAbInfo.length; i++){
|
oldNameList.add(oldAbInfo[i]);
|
}
|
String[] newAbInfo = newLt.attributes;
|
ArrayList<String> newNameList = new ArrayList<String>();
|
for(int i = 0; i < newAbInfo.length; i++){
|
newNameList.add(newAbInfo[i]);
|
}
|
|
ArrayList<String> removedApList = new ArrayList<String>();
|
|
for(Iterator<String> iterator = oldNameList.iterator(); iterator.hasNext();){
|
String oldName = iterator.next();
|
if(!newNameList.contains(oldName)){
|
removedApList.add(oldName);
|
}
|
}
|
return removedApList;
|
}
|
|
/**
|
* 获取table(from,to)中的bts
|
* @param jt
|
* @return
|
*/
|
private List<String> getBtsInTable(JTable jt){
|
List<String> list = new ArrayList<String>();
|
for(int i = 0; i < jt.getRowCount(); i++){
|
list.add((String) jt.getValueAt(i, 0));
|
}
|
return list;
|
}
|
|
public LinkTypeUI getThis(){
|
return this;
|
}
|
public LinkType getSelectedLT(){
|
DefaultMutableTreeNode node = (DefaultMutableTreeNode) ltTree.getLastSelectedPathComponent();
|
if(node != null){
|
Object userObj = node.getUserObject();
|
if(userObj instanceof LinkTypeWrapper){
|
return ((LinkTypeWrapper)userObj).linkType;
|
}
|
}
|
return null;
|
}
|
|
public List<LinkType> getSelectedLTs(){
|
TreePath[] selectionPaths = ltTree.getSelectionPaths();
|
//未选中, 返回
|
if(selectionPaths == null || selectionPaths.length == 0){
|
return null;
|
}
|
//选中根节点, 返回
|
if(selectionPaths.length == 1 &&
|
!(((DefaultMutableTreeNode)selectionPaths[0].getLastPathComponent()).getUserObject() instanceof LinkTypeWrapper)){
|
return null;
|
}
|
List<LinkType> list = new ArrayList<LinkType>();
|
for(TreePath path : selectionPaths){
|
DefaultMutableTreeNode node = (DefaultMutableTreeNode) path.getLastPathComponent();
|
Object obj = node.getUserObject();
|
if(obj instanceof LinkTypeWrapper){
|
list.add(((LinkTypeWrapper)obj).linkType);
|
}
|
}
|
return list;
|
}
|
}
|