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 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 convertArrayToList(String[] objArray){ if(objArray == null){ return null; } ArrayList objList = new ArrayList(); 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 ltNameList = new ArrayList(); 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 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 getAllLtName() { try { LinkType[] objs = LinkTypeStart.getService().getLinkTypes(); List list = new ArrayList(); for(LinkType obj : objs){ list.add(obj.name); } return list; } catch (VCIError e) { e.printStackTrace(); } return null; } }