/// <summary> /// 复制变量组 /// </summary> /// <param name="sourse">源</param> /// <param name="destination">目标</param> /// <param name="pasteMode">粘贴模式,0:默认模式,重复则返回,1:如果重复则替换,2:如果重复则两个变量都保留,3:如果重复则放弃</param> private void CopyGroup(VariableGroup sourse, VariableGroup destination, uint pasteMode) { if (sourse == null) { return; } string groupName = sourse.Name; if ((pasteMode == 2) && IsExistName(sourse.Name, destination))//同时保留两个 { groupName = GetDefaultName(destination, sourse.Name); } AddGroup(groupName, destination.AbsolutePath); VariableGroup var = VariableRepository.FindGroupByPath(destination.AbsolutePath == null ? groupName : destination.AbsolutePath + "." + groupName); if (var == null) { throw new ArgumentNullException(Resource1.VariableRepository_CopyGroup_destinationIsNotExist); } foreach (var childVariable in sourse.ChildVariables) { var varVariable = new AnalogVariable(var); ObjectCopier.CopyProperties(varVariable, childVariable); AddVariable(varVariable); } foreach (var variableGroup in sourse.ChildGroups) { CopyGroup(variableGroup, var, pasteMode); } }
/// <summary> /// 修改变量属性 /// </summary> /// <param name="variable">修改前变量</param> /// <param name="newVariable">修改后变量</param> /// <returns>修改后的变量,修改失败返回null</returns> public virtual VariableBase EditVariable(VariableBase variable, VariableBase newVariable) { if (variable.Name != newVariable.Name && IsExistName(newVariable.Name, variable.ParentGroup)) { throw new Exception(Resource1.VariableUnitOfWork_EditVariable_AvarialeNameExist); } ObjectCopier.CopyProperties(variable, newVariable); RealTimeRepositoryBase.RtDbContext.SaveAllChanges(); return(variable); }
/// <summary> /// 修改报警 /// </summary> public void EditAlarmGroup(string name, AlarmGroup newAlarmGroup) { CheckAlarmGroupSetIsNull(); if (!IsExistAlarmGroupName(newAlarmGroup.Name)) { throw new Exception("报警组名称已存在,不能修改"); } var alarmGroup = FindAlarmGroupByName(name); if (alarmGroup == null) { throw new Exception("需要修改的报警组不存在"); } ObjectCopier.CopyProperties(alarmGroup, newAlarmGroup); RealTimeRepositoryBase.RtDbContext.SaveAllChanges(); }
/// <summary> /// 修改报警 /// </summary> public void EditAlarm(string name, AlarmBase newAlarmBase) { CheckAlarmSetIsNull(); if (!IsExistAlarmName(newAlarmBase.Name)) { throw new Exception("报警名称已存在,不能修改"); } AlarmBase alarm = FindAlarmByName(name); if (alarm == null) { throw new Exception("需要修改的报警不存在"); } ObjectCopier.CopyProperties(alarm, newAlarmBase); RealTimeRepositoryBase.RtDbContext.SaveAllChanges(); }