/// <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); } } }