package com.vci.client.omd.btm.ui;
|
|
import java.awt.BorderLayout;
|
import java.awt.Dimension;
|
import java.awt.FlowLayout;
|
import java.awt.Toolkit;
|
import java.awt.event.ActionEvent;
|
import java.awt.event.ActionListener;
|
import java.util.ArrayList;
|
import java.util.List;
|
import javax.swing.JButton;
|
import javax.swing.JDialog;
|
import javax.swing.JOptionPane;
|
import javax.swing.JPanel;
|
import javax.swing.JScrollPane;
|
import javax.swing.table.JTableHeader;
|
import org.jdesktop.swingx.JXTable;
|
import org.jdesktop.swingx.decorator.HighlighterFactory;
|
|
import com.vci.corba.omd.atm.AttribItem;
|
import com.vci.corba.omd.btm.BtmItem;
|
import com.vci.corba.omd.etm.EnumItem;
|
import com.vci.corba.omd.lcm.Bound;
|
import com.vci.corba.omd.lcm.LifeCycle;
|
import com.vci.corba.omd.ltm.LinkType;
|
import com.vci.corba.omd.stm.StatePool;
|
import com.vci.client.common.providers.ServiceProvider;
|
import com.vci.client.omd.attribpool.ui.APClient;
|
import com.vci.client.omd.lifecycle.LifeCycleStart;
|
import com.vci.client.omd.statepool.StatePoolStart;
|
import com.vci.client.omd.versionrule.VRClientStart;
|
import com.vci.corba.common.VCIError;
|
import com.vci.corba.omd.vrm.VersionRule;
|
import com.vci.omd.objects.OtherInfo;
|
|
public class DeleteTypeDialog extends JDialog{
|
|
/**
|
*
|
*/
|
private static final long serialVersionUID = 2315167245802578900L;
|
|
private List<BtmItem> bts;
|
private List<LinkType> ltNames;
|
private List<String> exceptBts, exceptAbs, exceptEnums, exceptRev, exceptLCs, exceptStates;
|
private JPanel centerPanel;
|
private JPanel southPanel;
|
private JButton btnDelete;
|
private JButton btnCancel;
|
private JXTable table;
|
private TableModelWithCheckBox model;
|
private final int TABLE_HEADER_HEIGHT = 25;
|
private final int ROW_HEIGHT = 30;
|
|
public DeleteTypeDialog(List<BtmItem> bts, List<LinkType> ltNames, List<String> exceptBts){
|
this.bts = bts;
|
this.ltNames = ltNames;
|
this.exceptBts = exceptBts;
|
initUI();
|
addListener();
|
initData();
|
}
|
|
private void initUI(){
|
this.setTitle("清楚类型框");
|
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
|
this.setSize(screenSize.width/2, screenSize.height/2);
|
this.setModal(true);
|
this.setLocationRelativeTo(null);
|
this.setResizable(false);
|
this.setLayout(new BorderLayout());
|
|
centerPanel = new JPanel();
|
centerPanel.setLayout(new BorderLayout());
|
southPanel = new JPanel();
|
southPanel.setLayout(new FlowLayout(FlowLayout.RIGHT));
|
this.add(centerPanel, BorderLayout.CENTER);
|
this.add(southPanel, BorderLayout.SOUTH);
|
|
table = new JXTable();
|
model = new TableModelWithCheckBox();
|
model.setColumnCount(2);
|
model.setColumnIdentifiers(new String[]{"模块名 ", "清除状态"});
|
table.setModel(model);
|
table.setHorizontalScrollEnabled(true);
|
table.setAutoscrolls(true);
|
table.setSortable(false);
|
table.setHighlighters(HighlighterFactory.createAlternateStriping());
|
table.setRowHeight(ROW_HEIGHT);
|
//设置表头高度
|
JTableHeader tableHeader = table.getTableHeader();
|
Dimension size = tableHeader.getPreferredSize();
|
size.height = TABLE_HEADER_HEIGHT;
|
tableHeader.setPreferredSize(size);
|
|
|
centerPanel.add(new JScrollPane(table), BorderLayout.CENTER);
|
|
btnDelete = new JButton("清除");
|
btnCancel = new JButton("关闭");
|
southPanel.add(btnDelete);
|
southPanel.add(btnCancel);
|
}
|
|
private void initData(){
|
// 重新设置table的Cell的可编辑性
|
model.setInitFlag(false);
|
model.setRowCount(7);
|
table.setValueAt("业务类型", 0, 0);
|
table.setValueAt("未清除", 0, 1);
|
table.setValueAt("链接类型", 1, 0);
|
table.setValueAt("未清除", 1, 1);
|
table.setValueAt("属性池", 2, 0);
|
table.setValueAt("未清除", 2, 1);
|
table.setValueAt("枚举类型", 3, 0);
|
table.setValueAt("未清除", 3, 1);
|
table.setValueAt("生命周期", 4, 0);
|
table.setValueAt("未清除", 4, 1);
|
table.setValueAt("状态池", 5, 0);
|
table.setValueAt("未清除", 5, 1);
|
table.setValueAt("版本规则", 6, 0);
|
table.setValueAt("未清除", 6, 1);
|
// 重新设置table的Cell的可编辑性
|
model.setInitFlag(true);
|
}
|
|
private void addListener() {
|
btnDelete.addActionListener(new ActionListener() {
|
|
@Override
|
public void actionPerformed(ActionEvent e) {
|
int option = JOptionPane.showConfirmDialog(getInstance(), "确认删除所选类型数据?该操作不可回滚", "删除确认框", JOptionPane.YES_NO_OPTION);
|
if(option != JOptionPane.YES_OPTION){
|
return;
|
}
|
List<BtmItem> delBtList = getDelBtList();
|
List<String> delAbList = getDelAbList();
|
List<EnumItem> delEnumList = getDelEnumList();
|
List<LifeCycle> delLCList = getDelLCList();
|
List<StatePool> delStateList = getDelSPList();
|
List<VersionRule> delVRList = getDelVRList();
|
try {
|
BtmClient.getService().deleteBtsAndTables(delBtList.toArray(new BtmItem[0]));
|
updateTable(0, 1, "成功");
|
} catch (VCIError e1) {
|
e1.printStackTrace();
|
updateTable(0, 1, "失败");
|
}
|
try {
|
ServiceProvider.getOMDService().getLinkTypeService().deleteLtsAndTables(ltNames.toArray(new LinkType[0]));
|
updateTable(1, 1, "成功");
|
} catch (VCIError e1) {
|
e1.printStackTrace();
|
updateTable(1, 1, "失败");
|
}
|
try {
|
AttribItem[] abs = APClient.getService().getAttribItemsByNames(delAbList.toArray(new String[0]));
|
APClient.getService().deleteAbItems(abs);
|
updateTable(2, 1, "成功");
|
} catch (VCIError e1) {
|
e1.printStackTrace();
|
updateTable(2, 1, "失败");
|
}
|
try {
|
ServiceProvider.getOMDService().getEnumService().deleteEmItems(delEnumList.toArray(new EnumItem[0]));
|
updateTable(3, 1, "成功");
|
} catch (VCIError e1) {
|
e1.printStackTrace();
|
updateTable(3, 1, "失败");
|
}
|
try {
|
LifeCycleStart.getService().deleteLifeCycles(delLCList.toArray(new LifeCycle[0]));
|
updateTable(4, 1, "成功");
|
} catch (VCIError e1) {
|
e1.printStackTrace();
|
updateTable(4, 1, "失败");
|
}
|
try {
|
StatePoolStart.getService().deleteStatePools(delStateList.toArray(new StatePool[0]));
|
updateTable(5, 1, "成功");
|
} catch (VCIError e1) {
|
e1.printStackTrace();
|
updateTable(5, 1, "失败");
|
}
|
try {
|
VRClientStart.getService().deleteVersionRules(delVRList.toArray(new VersionRule[0]));
|
updateTable(6, 1, "成功");
|
} catch (VCIError e1) {
|
e1.printStackTrace();
|
updateTable(6, 1, "失败");
|
}
|
JOptionPane.showMessageDialog(getInstance(), "清楚数据完成", "清楚数据完成", JOptionPane.INFORMATION_MESSAGE);
|
}
|
|
});
|
|
btnCancel.addActionListener(new ActionListener() {
|
|
@Override
|
public void actionPerformed(ActionEvent e) {
|
dipose_();
|
}
|
});
|
}
|
|
/**
|
* 获取需要删除的状态池
|
* @return
|
*/
|
private List<StatePool> getDelSPList() {
|
List<StatePool> list = new ArrayList<StatePool>();
|
StatePool[] states = null;
|
try {
|
states = StatePoolStart.getService().getStatePools();
|
} catch (VCIError e) {
|
e.printStackTrace();
|
}
|
if(states != null){
|
for(StatePool state : states){
|
String name = state.name;
|
if(name != null && !name.equals("") && !exceptStates.contains(name)){
|
list.add(state);
|
}
|
}
|
}
|
return list;
|
}
|
|
/**
|
* 获取需要删除的生命周期
|
* @return
|
*/
|
private List<LifeCycle> getDelLCList() {
|
List<LifeCycle> list = new ArrayList<LifeCycle>();
|
exceptLCs = new ArrayList<String>();
|
exceptStates = new ArrayList<String>();
|
for(String btName : exceptBts){
|
try {
|
BtmItem bt = BtmClient.getService().getBtmItemByName(btName);
|
String lcName = bt.lifeCycle;
|
if(lcName != null && !lcName.equals("") && !exceptLCs.contains(lcName)){
|
exceptLCs.add(lcName);
|
}
|
} catch (VCIError e) {
|
e.printStackTrace();
|
}
|
}
|
|
LifeCycle[] lcs = null;
|
try {
|
lcs = LifeCycleStart.getService().getLifeCycles();
|
} catch (VCIError e) {
|
e.printStackTrace();
|
}
|
if(lcs != null){
|
for(LifeCycle lc : lcs){
|
String name = lc.name;
|
if(name != null && !name.equals("") && !exceptLCs.contains(name)){
|
list.add(lc);
|
}else{
|
//保留的状态池
|
Bound[] bounds = lc.bounds;
|
for(Bound bound : bounds){
|
String sName = bound.name;
|
exceptStates.add(sName);
|
}
|
}
|
}
|
}
|
return list;
|
}
|
|
/**
|
* 获取需要删除的版本规则
|
* @return
|
*/
|
private List<VersionRule> getDelVRList() {
|
List<VersionRule> list = new ArrayList<VersionRule>();
|
exceptRev = new ArrayList<String>();
|
for(String btName : exceptBts){
|
try {
|
BtmItem bt = BtmClient.getService().getBtmItemByName(btName);
|
String revName = bt.revRuleName;
|
if(revName != null && !revName.equals("") && !exceptRev.contains(revName)){
|
exceptRev.add(revName);
|
}
|
} catch (VCIError e) {
|
e.printStackTrace();
|
}
|
}
|
VersionRule[] revs = null;
|
try {
|
revs = VRClientStart.getService().getVersionRules();
|
} catch (VCIError e) {
|
e.printStackTrace();
|
}
|
if(revs != null){
|
for(VersionRule rev : revs){
|
String name = rev.name;
|
if(name != null && !name.equals("") && !exceptRev.contains(name)){
|
list.add(rev);
|
}
|
}
|
}
|
return list;
|
}
|
|
/**
|
* 获取需要删除的枚举
|
* @return
|
*/
|
private List<EnumItem> getDelEnumList() {
|
List<EnumItem> list = new ArrayList<EnumItem>();
|
try {
|
//依据保留的类型构造保留的属性
|
exceptEnums = new ArrayList<String>();
|
EnumItem[] emItems = ServiceProvider.getOMDService().getEnumService().getEmItems("", 0, 0);
|
AttribItem[] abs = APClient.getService().getAttribItemsByNames(exceptAbs.toArray(new String[0]));
|
for(AttribItem ab : abs){
|
OtherInfo otherInfo = OtherInfo.getOtherInfoByText(ab.other);
|
String enumName = otherInfo.getEnumName();
|
if(enumName != null && !enumName.equals("") && !exceptEnums.contains(enumName)){
|
exceptEnums.add(enumName);
|
}
|
}
|
for(EnumItem em : emItems){
|
if(!exceptEnums.contains(em.name)){
|
list.add(em);
|
}
|
}
|
} catch (VCIError e) {
|
e.printStackTrace();
|
}
|
return list;
|
}
|
|
/**
|
* 获取需要删除的属性
|
*/
|
private List<String> getDelAbList() {
|
List<String> list = new ArrayList<String>();
|
AttribItem[] attribItems = null;
|
try {
|
attribItems = APClient.getService().getAttribItems("", 0, 0);
|
} catch (VCIError e) {
|
e.printStackTrace();
|
}
|
//依据保留的类型构造保留的属性
|
exceptAbs = new ArrayList<String>();
|
for(String except : exceptBts){
|
String[] btmApNameArray = null;
|
try {
|
btmApNameArray = BtmClient.getService().getBtmApNameArray(except);
|
} catch (VCIError e) {
|
e.printStackTrace();
|
}
|
if(btmApNameArray != null){
|
for(String abName : btmApNameArray){
|
if(!exceptAbs.contains(abName)){
|
exceptAbs.add(abName);
|
}
|
}
|
}
|
}
|
//构造可删除的属性
|
if(attribItems != null){
|
for(AttribItem ab : attribItems){
|
String abName = ab.name;
|
if(!exceptAbs.contains(abName)){
|
list.add(abName);
|
}
|
}
|
}
|
return list;
|
}
|
|
/**
|
* 获取需要删除的业务类型
|
*/
|
private List<BtmItem> getDelBtList() {
|
List<BtmItem> list = new ArrayList<BtmItem>();
|
for(BtmItem bt : bts){
|
boolean exceptFlag = false;
|
for(String except : exceptBts){
|
if(except.equalsIgnoreCase(bt.name)){
|
exceptFlag = true;
|
break;
|
}
|
}
|
if(!exceptFlag){
|
list.add(bt);
|
}
|
}
|
return list;
|
}
|
|
/**
|
* 更新table单元格的值
|
* @param row
|
* @param column
|
* @param value
|
*/
|
private void updateTable(int row, int column, String value) {
|
// 重新设置table的Cell的可编辑性
|
model.setInitFlag(false);
|
table.setValueAt(value, row, column);
|
model.setInitFlag(true);
|
table.updateUI();
|
}
|
|
private void dipose_(){
|
this.dispose();
|
}
|
|
|
private JDialog getInstance(){
|
return this;
|
}
|
|
}
|