package com.vci.client.omd.inter.impl;
|
|
import java.util.ArrayList;
|
import java.util.Iterator;
|
import java.util.List;
|
|
import com.vci.corba.omd.atm.AttribItem;
|
import com.vci.corba.omd.ltm.LinkType;
|
import com.vci.client.omd.attribpool.ui.APClient;
|
import com.vci.client.omd.linktype.LinkTypeStart;
|
import com.vci.client.omd.linktype.util.Tool;
|
import com.vci.corba.common.VCIError;
|
|
/**
|
* 实现属性池提供的接口, 实现属性池的查看使用范围功能
|
* @author Administrator
|
*
|
*/
|
public class InterAPForLTImpl implements InterAPForLinkType{
|
|
/**
|
* 返回使用指定属性的业务类型名列表
|
*/
|
@Override
|
public ArrayList<String> getUsedNameList(String abItemName){
|
String[] ltNameArray = null;
|
try {
|
ltNameArray = LinkTypeStart.getService().getLTNamesByAPName(abItemName);
|
} catch (VCIError e) {
|
e.printStackTrace();
|
}
|
return convertArrayToList(ltNameArray);
|
}
|
|
/**
|
*
|
* @param objArray
|
* @return
|
*/
|
private ArrayList<String> convertArrayToList(String[] objArray){
|
if(objArray == null){
|
return null;
|
}
|
ArrayList<String> objList = new ArrayList<String>();
|
for(int i = 0; i < objArray.length; i++){
|
String obj = objArray[i];
|
objList.add(obj);
|
}
|
return objList;
|
}
|
|
|
/**
|
* 修改属性, 对应的修改业务类型和链接类型中该属性字段
|
*/
|
@Override
|
public boolean alterAp(String apName) {
|
String[] ltNames = null;
|
ArrayList<String> ltNameList = new ArrayList<String>();
|
AttribItem abItem = null;
|
try {
|
abItem = APClient.getService().getAttribItemByName(apName);
|
} catch (VCIError e) {
|
// TODO Auto-generated catch block
|
e.printStackTrace();
|
}
|
if(abItem == null || abItem.equals("")){
|
return true;
|
}
|
try {
|
ltNames = LinkTypeStart.getService().getLTNamesByAPName(apName);
|
} catch (VCIError e) {
|
e.printStackTrace();
|
}
|
if(ltNames == null || ltNames.length <= 0){
|
return true;
|
}
|
String abSql = Tool.getInstance().getAbSql(abItem);
|
abSql = abSql.substring(0, abSql.lastIndexOf(","));
|
ltNameList = Tool.getInstance().convertArrayToList(ltNames);
|
for(Iterator<String> i = ltNameList.iterator(); i.hasNext();){
|
String linkName = i.next();
|
|
try {
|
boolean success = LinkTypeStart.getService().modifyLTAttribute(linkName, apName);
|
if (!success)
|
return false;
|
|
} catch (VCIError e) {
|
// TODO Auto-generated catch block
|
e.printStackTrace();
|
}
|
// String sql = "alter table " + OmdTools.getLTTableName(linkName) + " modify( " + abSql + " )";
|
// DDLToolClient.getService().executeUpdateOracle(sql);
|
// DDLToolClient.getService().alterTableDDLOracle(sql + ";");
|
}
|
|
return true;
|
}
|
|
/**
|
* 判断在业务类型和连接类型中, 该属性是否已生成数据
|
* 当使用该属性的业务类型有数据, 即判定该属性有数据
|
*/
|
@Override
|
public boolean hasInstance(String apName) {
|
String[] ltNames = null;
|
try {
|
ltNames = LinkTypeStart.getService().getLTNamesByAPName(apName);
|
} catch (VCIError e) {
|
e.printStackTrace();
|
}
|
|
if(ltNames == null || ltNames.length == 0){
|
return false;
|
}
|
|
for(int i = 0; i < ltNames.length; i++){
|
String ltName = ltNames[i];
|
|
boolean flag;
|
try {
|
flag = LinkTypeStart.getService().hasData(ltName);
|
if(flag){
|
return flag;
|
}
|
} catch (VCIError e) {
|
// TODO Auto-generated catch block
|
e.printStackTrace();
|
}
|
//boolean flag = DDLToolClient.getService().hasInstanceOralce(ltName);
|
}
|
|
return false;
|
}
|
|
/**
|
* 返回所有的链接类型名
|
*/
|
@Override
|
public List<String> getAllLtName() {
|
try {
|
LinkType[] objs = LinkTypeStart.getService().getLinkTypes();
|
List<String> list = new ArrayList<String>();
|
for(LinkType obj : objs){
|
list.add(obj.name);
|
}
|
return list;
|
} catch (VCIError e) {
|
e.printStackTrace();
|
}
|
return null;
|
}
|
|
}
|