/// <summary> /// Aktualisiert einen Auftrag oder legt einen Auftrag neu an. /// </summary> /// <param name="job">Der neue oder veränderte Auftrag.</param> /// <param name="scheduleIdentifier">Die eindeutige Kennung der veränderten Aufzeichnung.</param> public void Update( VCRJob job, Guid? scheduleIdentifier ) { // Report if (job != null) Tools.ExtendedLogging( "Updating Job {0}", job.UniqueID ); // Load default profile name job.SetProfile(); // Validate job.Validate( scheduleIdentifier ); // Cleanup schedules job.CleanupExceptions(); // Remove from archive - if job has been recovered job.Delete( ArchiveDirectory ); // Try to store to disk - actually this is inside the lock because the directory virtually is part of our map lock (m_Jobs) if (job.Save( JobDirectory ).GetValueOrDefault()) m_Jobs[job.UniqueID.Value] = job; else throw new ArgumentException( string.Format( Properties.Resources.SaveJobFailed, job.UniqueID ), "job" ); }
/// <summary> /// Löscht einen aktiven oder archivierten Auftrag. /// </summary> /// <param name="job">Der zu löschende Auftrag.</param> public void Delete( VCRJob job ) { // Check unique identifier if (!job.UniqueID.HasValue) throw new InvalidJobDataException( Properties.Resources.BadUniqueID ); // Report Tools.ExtendedLogging( "Deleting Job {0}", job.UniqueID ); // Must synchronize lock (m_Jobs) { // Load from the map var internalJob = this[job.UniqueID.Value]; // See if this is active if (internalJob != null) { // Delete it internalJob.Delete( JobDirectory ); // Remove from map m_Jobs.Remove( internalJob.UniqueID.Value ); // Save to file internalJob.Save( ArchiveDirectory ); } else { // Report Tools.ExtendedLogging( "Job not found in Active Directory - trying Archive" ); // Must be archived job.Delete( ArchiveDirectory ); } } }