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<BtmItem> lstBT = new ArrayList<BtmItem>();
|
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<String> lstBTName = new ArrayList<String>();
|
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<String> lstBTName = new ArrayList<String>();
|
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<String> lstBTName = new ArrayList<String>();
|
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<String> lstName = new ArrayList<String>();
|
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<String> 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<BtmItem> lstBT = new ArrayList<BtmItem>();
|
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<BtmItem> 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);
|
}
|
}
|
}
|