package com.vci.server.framework.delegate; import java.util.List; import java.util.ArrayList; import org.apache.commons.lang3.StringUtils; import com.vci.common.objects.UserEntity; import com.vci.common.utility.ObjectUtility; import com.vci.corba.common.VCIError; import com.vci.corba.framework.data.AppConfigDetailInfo; import com.vci.corba.common.data.UserEntityInfo; import com.vci.server.base.delegate.BaseDelegate; import com.vci.server.cache.ConfigCacheProvider; import com.vci.server.framework.appConfig.AppConfigCategory; import com.vci.server.framework.appConfig.AppConfigCategoryService; import com.vci.server.framework.appConfig.AppConfigDetail; import com.vci.server.framework.appConfig.AppConfigDetailService; import com.vci.server.framework.appConfig.AppConfigUtils; import com.vci.server.framework.cache.AppConfigDetailCatch; /** * AppConfigDetail Delegate Server * */ public class AppConfigDetailDelegate extends BaseDelegate { AppConfigDetailService service = null; public AppConfigDetailDelegate(UserEntityInfo userEntityInfo) { super(userEntityInfo); service = new AppConfigDetailService(this.getUserEntity()); } /** * 添加、保存 AppConfigDetail 对象 * @param info AppConfigDetailInfo 对象 */ public String saveAppConfigDetail(AppConfigDetailInfo info) throws VCIError{ if (StringUtils.isBlank(info.id)) { String id = ObjectUtility.getNewObjectID36(); info.id = id; } try { //AppConfigDetail cInfo = service.getAppConfigDetailByKey(info.key); AppConfigDetailInfo cInfo = ConfigCacheProvider.getAppConfig(info.key); if (cInfo != null && !cInfo.id.equals("")) { throw new VCIError("106001", new String[]{}); } boolean success = service.saveAppConfigDetail(AppConfigUtils.convertConfigInfoToConfig(info)); if (success) { AppConfigDetailCatch.setAppConfig(info); } } catch (VCIError ex) { throw ex; } catch (Exception ex){ //TODO 在此处设置正确的错误编码 throw new VCIError("106002", new String[]{}); } return info.id; } /** * 修改、更新 AppConfigDetail 对象 * @param info AppConfigDetailInfo 对象 */ public boolean updateAppConfigDetail(AppConfigDetailInfo info) throws VCIError{ boolean res = false; try{ //AppConfigDetail cInfo = service.getAppConfigDetailByKey(info.key); AppConfigDetailInfo cInfo = ConfigCacheProvider.getAppConfig(info.key); if (cInfo != null && !cInfo.id.equals(info.id)) { throw new VCIError("106001", new String[]{}); } res = service.updateAppConfigDetail(AppConfigUtils.convertConfigInfoToConfig(info)); if (res) { AppConfigDetailCatch.setAppConfig(info); } } catch (VCIError ex) { throw ex; } catch (Exception ex){ //TODO 在此处设置正确的错误编码 throw new VCIError("106003", new String[]{}); } return res; } /** * 根据 ID 删除 AppConfigDetail 对象(批量) * @param ids AppConfigDetail 对象的 ID 列表 */ public boolean deleteAppConfigDetail(String[] ids) throws VCIError{ boolean res = false; try{ res = service.deleteAppConfigDetail(ids); if (res) { for (int i = 0; i < ids.length; i++) AppConfigDetailCatch.delConfigById(ids[i]); } }catch(Exception ex){ //TODO 在此处设置正确的错误编码 throw new VCIError("106004", new String[]{}); } return res; } /** * 返回全部的 AppConfigDetail 对象 */ public AppConfigDetailInfo[] getAppConfigDetails() throws VCIError{ return ConfigCacheProvider.getAllConfig(); } /** * 返回全部的 AppConfigDetail 对象 */ public AppConfigDetailInfo[] getAppConfigDetailsByCatId(String clsfId) throws VCIError{ try{ AppConfigDetailInfo[] infos = ConfigCacheProvider.getAllConfig(); List list = new ArrayList(); for (int i = 0; i < infos.length; i++) { if (infos[i].categoryId.equals(clsfId)) { list.add(infos[i]); } } return list.toArray(new AppConfigDetailInfo[0]); }catch(Exception ex){ //TODO 在此处设置正确的错误编码 throw new VCIError("106005", new String[]{}); } } public AppConfigDetailInfo[] getAppConfigDetailsByCategory(String catName) throws VCIError{ try{ AppConfigCategoryService catSrv = new AppConfigCategoryService(new UserEntity()); AppConfigCategory cat = catSrv.getAppConfigCategoryByName(catName); AppConfigDetailInfo[] infos = ConfigCacheProvider.getAllConfig(); List list = new ArrayList(); for (int i = 0; i < infos.length; i++) { if (infos[i].categoryId.equals(cat.getId())) { list.add(infos[i]); } } return list.toArray(new AppConfigDetailInfo[0]); }catch(Exception ex){ //TODO 在此处设置正确的错误编码 throw new VCIError("106005", new String[]{}); } } /** * 根据 ID 返回 AppConfigDetail 对象 * @param id AppConfigDetail */ public AppConfigDetailInfo getAppConfigDetailById(String id) throws VCIError{ try{ return ConfigCacheProvider.getAppConfigById(id); }catch(Exception ex){ //TODO 在此处设置正确的错误编码 throw new VCIError("106006", new String[]{}); } } /** * 根据 Key 返回 AppConfigDetail 对象 * @param key */ public AppConfigDetailInfo getAppConfigDetailByKey(String key) throws VCIError{ try{ return ConfigCacheProvider.getAppConfig(key); }catch(Exception ex){ //TODO 在此处设置正确的错误编码 throw new VCIError("106006", new String[]{}); } } /** * 根据 Name 返回 AppConfigDetail 对象 * @param key */ public AppConfigDetailInfo[] getAppConfigDetailsByName(String name) throws VCIError{ try{ AppConfigDetailInfo[] infos = ConfigCacheProvider.getAllConfig(); List list = new ArrayList(); for (int i = 0; i < infos.length; i++) { if (infos[i].name.equals(name)) { list.add(infos[i]); } } return list.toArray(new AppConfigDetailInfo[0]); }catch(Exception ex){ //TODO 在此处设置正确的错误编码 throw new VCIError("106005", new String[]{}); } } /************************* CORBA & HIBERNATE CONVERT **************************/ /** * 对象转换(批量),从 Hibernate 对象转换到 Corba 对象 * @param objects */ public AppConfigDetailInfo[] convertConfigsToConfigInfos(AppConfigDetail[] objects){ AppConfigDetailInfo[] infos = new AppConfigDetailInfo[objects.length]; int i = 0; for(AppConfigDetail obj : objects){ infos[i++] = AppConfigUtils.convertConfigToConfigInfo(obj); } return infos; } // // /** // * 对象转换,从 Hibernate 对象转换到 Corba 对象 // * @param object // * @return // */ // public AppConfigDetailInfo convertAppConfigDetailToAppConfigDetailInfo(AppConfigDetail object){ // AppConfigDetailInfo info = new AppConfigDetailInfo(); // info.id = object.getId() == null ? "" : object.getId(); // info.name = object.getName() == null ? "" : object.getName(); // info.desc = object.getDesc() == null ? "" : object.getDesc(); // info.key = object.getKey() == null ? "" : object.getKey(); // info.value = object.getValue() == null ? "" : object.getValue(); // info.categoryId = object.getCategoryId() == null ? "" : object.getCategoryId(); // return info; // } // // /** // * 对象转换(批量),从 Corba 对象转换到 Hibernate 对象 // * @param infos // * @return // */ // public AppConfigDetail[] convertAppConfigDetailInfosToAppConfigDetails(AppConfigDetailInfo[] infos){ // AppConfigDetail[] objects = new AppConfigDetail[infos.length]; // int i = 0; // for(AppConfigDetailInfo info : infos){ // objects[i++] = this.convertConfigInfoToConfig(info); // } // return objects; // } // // /** // * 对象转换,从 Corba 对象转换到 Hibernate 对象 // * @param info // * @return // */ // public AppConfigDetail convertConfigInfoToConfig(AppConfigDetailInfo info){ // AppConfigDetail object = new AppConfigDetail(); // object.setId(info.id); // object.setName(info.name); // object.setDesc(info.desc); // object.setKey(info.key); // object.setValue(info.value); // object.setCategoryId(info.categoryId); // return object; // } }