public ISNMPProcessStrategy EditProcess(EnumProcessingType PreviousProcessType, EnumProcessingType NewProcessType) { ISNMPProcessStrategy ProcessProfile = null; //Validation if (Processes == null && NewProcessType == EnumProcessingType.None) { return(null); } switch (NewProcessType) { case EnumProcessingType.None: break; case EnumProcessingType.TopologyDiscovery: if (!Processes.ContainsKey(NewProcessType)) { ProcessProfile = new TopologyBuilderStrategy(this, ChangeTrackerHandler); ProcessProfile.TargetDeviceSettings = Processes[PreviousProcessType].TargetDeviceSettings; Processes.Add(NewProcessType, ProcessProfile); } else { ProcessProfile = Processes[NewProcessType]; //MJE - Pending of double-checking ((List <ISNMPDeviceSettingDTO>)ProcessProfile.TargetDeviceSettings).AddRange(Processes[PreviousProcessType].TargetDeviceSettings); ProcessProfile.TargetDeviceSettings = ProcessProfile.TargetDeviceSettings.Distinct().ToList(); } Processes.Remove(PreviousProcessType); break; case EnumProcessingType.PrinterConsumption: break; default: break; } return(ProcessProfile); }
public ISNMPProcessStrategy BuildProcess(string SettingID, EnumProcessingType ProcessType) { ISNMPProcessStrategy ProcessProfile = null; ISNMPDeviceSettingDTO DeviceProfile = DeviceSettings?[SettingID]; switch (ProcessType) { case EnumProcessingType.None: break; case EnumProcessingType.TopologyDiscovery: //Get existing strategy if (!Processes.ContainsKey(ProcessType)) { ProcessProfile = new TopologyBuilderStrategy(this, ChangeTrackerHandler); Processes.Add(ProcessType, ProcessProfile); } else { ProcessProfile = Processes[ProcessType]; } //Add device setting if found if (DeviceProfile != null) { ProcessProfile.TargetDeviceSettings.Add(DeviceProfile); } ChangeTrackerHandler(ProcessProfile, typeof(ISNMPProcessStrategy)); break; case EnumProcessingType.PrinterConsumption: break; default: break; } return(ProcessProfile); }