package com.vci.server.omd.biztype.delegate; import com.vci.corba.omd.atm.AttribItem; import com.vci.corba.omd.btm.BtmItem; import com.vci.server.base.exception.ExceptionLocalHandler; import com.vci.server.base.utility.OmdHelper; import com.vci.server.cache.OMCacheProvider; import com.vci.server.omd.biztype.cache.BizTypeCacheUtil; import com.vci.server.omd.biztype.service.BTMService; import com.vci.server.omd.ddlTool.DDLHelper; import com.vci.server.omd.ddlTool.DDLToolDelegate; import java.util.List; import java.util.ArrayList; import org.apache.commons.lang3.StringUtils; import com.vci.common.exception.VciExceptionTool; import com.vci.corba.common.VCIError; public class BizTypeServerDelegate { private static BizTypeServerDelegate instance; public static BizTypeServerDelegate getInstance() { if (instance == null) { instance = new BizTypeServerDelegate(); } return instance; } protected VCIError getLocalVciError(String key, Throwable e) { VCIError error = new VCIError(key, new String[]{VciExceptionTool.getExceptionStr(e), VciExceptionTool.getExceptionDetail(e)}); VCIError rsError = ExceptionLocalHandler.getInstance().getLocalString(error, "PLMBTM"); return rsError; } public BtmItem[] getAllBtmItem(String filter) throws VCIError { BtmItem[] bts = OMCacheProvider.getBizTypes(); if (StringUtils.isBlank(filter)) return bts; List lstBT = new ArrayList(); for (BtmItem bt : bts) { if (bt.name.startsWith(filter)) { lstBT.add(bt); } } return lstBT.toArray(new BtmItem[0]); } // @Override // public BtmAndApName[] getBtmAndApNameArray(String btmName) throws VCIError { // return BTMServerCacheUtil.getInstance().getBtmAndApNameArray(btmName.toLowerCase()); // } public String[] getBtmApNameArray(String btName) throws VCIError { BtmItem bt = OMCacheProvider.getBizType(btName); if (bt ==null) return new String[0]; return bt.apNameArray; //return BTMServerCacheUtil.getInstance().getBtmApNameArray(btmName.toLowerCase()); } public String[] getBTMNamesByAPName(String apName) throws VCIError { //return BTMServerCacheUtil.getInstance().getBTMNamesByAPName(apName); BtmItem[] bts = OMCacheProvider.getBizTypes(); List lstBTName = new ArrayList(); for (BtmItem bt : bts) { for (int i = 0; i < bt.apNameArray.length; i++) { if (bt.apNameArray[i].equalsIgnoreCase(apName)) { lstBTName.add(bt.name); break; } } } return lstBTName.toArray(new String[0]); } public String[] getBTMNamesByVerName(String verName) throws VCIError { //return BTMServerCacheUtil.getInstance().getBTMNamesByVerName(verName); BtmItem[] bts = OMCacheProvider.getBizTypes(); List lstBTName = new ArrayList(); for (BtmItem bt : bts) { if (bt.revRuleName.equals(verName)) { lstBTName.add(bt.name); } } return lstBTName.toArray(new String[0]); } public String[] getBTMNamesByLCyName(String lcName) throws VCIError { //return BTMServerCacheUtil.getInstance().getBTMNamesByLCyName(lCyName); BtmItem[] bts = OMCacheProvider.getBizTypes(); List lstBTName = new ArrayList(); for (BtmItem bt : bts) { for (int i = 0; i < bt.lifeCycles.length; i++) { if (bt.lifeCycles[i].equalsIgnoreCase(lcName)) { lstBTName.add(bt.name); break; } } } return lstBTName.toArray(new String[0]); } public String[] getChildrenNames(String btmName) throws VCIError { //return BTMServerCacheUtil.getInstance().getChildrenNames(btmName); BtmItem[] bts = OMCacheProvider.getBizTypes(); List lstName = new ArrayList(); for (BtmItem bt : bts) { if (bt.fName.equals(btmName)) { lstName.add(bt.name); getChildrenNames(bts, bt.name, lstName); } } return lstName.toArray(new String[0]); } private void getChildrenNames(BtmItem[] bts, String btmName, List lstBTName) throws VCIError { for (BtmItem bt : bts) { if (bt.fName.equals(btmName)) { lstBTName.add(bt.name); getChildrenNames(bts, bt.name, lstBTName); } } } public BtmItem getBtmItemByName(String btmName) throws VCIError { return OMCacheProvider.getBizType(btmName); } public String[] getImagePaths() throws VCIError { return BizTypeCacheUtil.getImagePaths(); } public BtmItem[] getChildrenBtms(String btmName) throws VCIError { BtmItem[] bts = OMCacheProvider.getBizTypes(); List lstBT = new ArrayList(); for (BtmItem bt : bts) { if (bt.fName.equals(btmName)) { lstBT.add(bt); getChildren(bts, bt.name, lstBT); } } return lstBT.toArray(new BtmItem[0]); } private void getChildren(BtmItem[] bts, String btmName, List lstBT) throws VCIError { for (BtmItem bt : bts) { if (bt.fName.equals(btmName)) { lstBT.add(bt); getChildren(bts, bt.name, lstBT); } } } public boolean deleteBtmItem(BtmItem bt) throws VCIError { try { boolean success = BTMService.getInstance().deleteBtmItem(bt); if (success) { BizTypeCacheUtil.delBizType(bt.name); } return success; } catch (Throwable e) { e.printStackTrace(); throw getLocalVciError("P0010BTM-00003", e); } } // public boolean deleteBtmItemNoCache(BtmItem bt) throws VCIError { // try { // return BTMService.getInstance().deleteBtmItemNoCache(bt); // } catch (Throwable e) { // e.printStackTrace(); // throw getLocalVciError("P0010BTM-00003", e); // } // } public boolean deleteBtmItems(BtmItem[] bts) throws VCIError { try { boolean success = BTMService.getInstance().deleteBtmItems(bts); if (success) { for (BtmItem bt : bts) { BizTypeCacheUtil.delBizType(bt.name); } } return success; } catch (Throwable e) { e.printStackTrace(); throw getLocalVciError("P0010BTM-00003", e); } } public boolean checkRowIsExists(String name) throws VCIError { try { return BTMService.getInstance().checkRowIsExists(name); } catch (Throwable e) { e.printStackTrace(); throw getLocalVciError("P0010BTM-00004", e); } } public boolean addBtmItem(BtmItem btmItem) throws VCIError { try { // 创建业务对象 boolean success = BTMService.getInstance().addBtmItem(btmItem); // 创建对应的数据表 if (success) { success = DDLToolDelegate.getInstance().createBizTypeTable(btmItem); } if (success) { BizTypeCacheUtil.setBizType(btmItem); } return success; } catch (Throwable e) { e.printStackTrace(); throw getLocalVciError("P0010BTM-00005", e); } } public boolean updateBtmItem(BtmItem bt) throws VCIError { try { // 先更新数据表 boolean success = DDLToolDelegate.getInstance().updateBizTypeTable(bt); // 保存业务对象类型对象 if (success) { success = BTMService.getInstance().updateBtmItem(bt); } if (success) { BizTypeCacheUtil.setBizType(bt); } return success; } catch (Throwable e) { e.printStackTrace(); throw getLocalVciError("P0010BTM-00006", e); } } public String getBTMData() throws VCIError { try { return BTMService.getInstance().getBTMData(); } catch (Throwable e) { e.printStackTrace(); throw getLocalVciError("P0010BTM-00009", e); } } /** * 获取表中fields中不能 删除的字段 * * @throws Throwable */ public String[] getUnRemovableFields(String btName, String[] fields) throws VCIError { try { String tableName = OmdHelper.getBTTableName(btName); return BTMService.getInstance().getUnRemovableFields(tableName, fields); } catch (Throwable e) { e.printStackTrace(); throw getLocalVciError("P0010BTM-00016", e); } } public String[] executeRepair(String[] sqlArray) throws VCIError { try { return BTMService.getInstance().executeRepair(sqlArray); } catch (Throwable e) { e.printStackTrace(); throw getLocalVciError("P0010BTM-00016", e); } } public boolean createView() throws VCIError { try { return BTMService.getInstance().createView(); } catch (Throwable e) { e.printStackTrace(); throw getLocalVciError("P0010BTM-00017", e); } } public boolean createTable(String btName) throws VCIError { try { return BTMService.getInstance().createTable(btName); } catch (Throwable e) { e.printStackTrace(); throw getLocalVciError("P0010BTM-00017", e); } } public boolean truncateTable(String btName) throws VCIError { try { String tableName = OmdHelper.getBTTableName(btName); return DDLHelper.truncateTable(tableName); } catch (Throwable e) { e.printStackTrace(); throw getLocalVciError("P0010BTM-00018", e); } } public boolean deleteTable(String btName) throws VCIError { try { String tableName = OmdHelper.getBTTableName(btName); return DDLHelper.deleteTable(tableName); } catch (Throwable e) { e.printStackTrace(); throw getLocalVciError("P0010BTM-00018", e); } } public boolean deleteBtsAndTables(BtmItem[] bts) throws VCIError { try { boolean success = BTMService.getInstance().deleteBtsAndTables(bts); if (success) { for (BtmItem bt : bts) { BizTypeCacheUtil.delBizType(bt.name); } } return success; } catch (Throwable e) { e.printStackTrace(); throw getLocalVciError("P0010BTM-00019", e); } } public boolean xml2DB(String userName) throws VCIError { return BTMService.getInstance().xml2DB(userName); } public boolean checkTable(String btName, String createSql) throws VCIError { String tableName = OmdHelper.getBTTableName(btName); return BTMService.getInstance().checkTable(tableName, createSql); } // public SystemModelData getAllConfigurationData(String[] boTypes) // throws VCIError { // try { // return BTMService.getInstance().getAllConfigurationData(boTypes); // } catch (Throwable e) { // e.printStackTrace(); // throw getLocalVciError("P0010BTM-00014", e); // } // } public String[] btmConsistencyCheck() throws VCIError, Exception { return BTMService.getInstance().btmConsistencyCheck(); } // 检查指定对象是否有数据存在 public boolean hasData(String btName) { return BTMService.getInstance().hasData(btName); } public boolean addIndex(String btName, String[] indexAttrs) throws VCIError { if (indexAttrs.length == 0) return false; String sql = "create unique INDEX "+ indexAttrs[0]+" on " + OmdHelper.getBTTableName(btName) + "(" + indexAttrs[1] + ")\n"; try { return DDLHelper.executeSql(sql); } catch (Throwable e) { throw getLocalVciError("addIndex", e); } // try { // Session session = HibernateSessionFactory.getSession(); // /** // * executeUpdate returns: The Number of entities updated or deleted. // */ // session.createSQLQuery(sql).executeUpdate(); // } catch (Exception e) { // e.printStackTrace(); // return false; // } // return true; } public boolean dropIndex(String btName, String[] indexAttrs) throws VCIError { if (indexAttrs.length == 0) return false; String sql = "drop INDEX "+indexAttrs[0]+" \n"; try { return DDLHelper.executeSql(sql); } catch (Throwable e) { throw getLocalVciError("dropIndex", e); } // try { // Session session = HibernateSessionFactory.getSession(); // /** // * executeUpdate returns: The Number of entities updated or deleted. // */ // session.createSQLQuery(sql).executeUpdate(); // } catch (Exception e) { // e.printStackTrace(); // return false; // } // return true; } public boolean modifyBTAttribute(String btName, String attrName) throws VCIError { AttribItem ai = OMCacheProvider.getAttribute(attrName); if (ai == null) return false; String abSql = DDLHelper.getAbSql(ai); abSql = abSql.substring(0, abSql.lastIndexOf(",")); String sql = "alter table " + OmdHelper.getBTTableName(btName) + " modify( " + abSql + " )"; try { return DDLHelper.executeSql(sql); } catch (Throwable e) { throw getLocalVciError("modifyBTAttribute", e); } } }