ClearCanvas.ImageServer.Core.Edit.UpdateStudyCommand.RestoreFilesystem C# (CSharp) Method

RestoreFilesystem() private method

private RestoreFilesystem ( ) : void
return void
		private void RestoreFilesystem()
		{
			if (!RequiresRollback || !_initialized || _backupDir == null)
				return;

			if (NewStudyPath == _oldStudyPath)
			{
				// Study folder was not changed. Files were overwritten.

				// restore header
				Platform.Log(LogLevel.Info, "Restoring old study header...");

				FileUtils.Copy(Path.Combine(_backupDir, _study.StudyInstanceUid + ".xml"), _oldStudyLocation.GetStudyXmlPath(), true);
				FileUtils.Copy(Path.Combine(_backupDir, _study.StudyInstanceUid + ".xml.gz"),
				               _oldStudyLocation.GetCompressedStudyXmlPath(), true);

				// restore updated SOPs
				Platform.Log(LogLevel.Info, "Restoring old study folder... {0} sop need to be restored", _updatedSopList.Count);
				int restoredCount = 0;
				foreach (InstanceInfo sop in _updatedSopList)
				{
					string backupSopPath = Path.Combine(_backupDir, sop.SopInstanceUid + ServerPlatform.DicomFileExtension);

					FileUtils.Copy(backupSopPath,_oldStudyLocation.GetSopInstancePath(sop.SeriesInstanceUid, sop.SopInstanceUid), true);

					restoredCount++;
					Platform.Log(ServerPlatform.InstanceLogLevel, "Restored SOP {0} [{1} of {2}]", sop.SopInstanceUid, restoredCount,
					             _updatedSopList.Count);

					SimulateErrors();
				}

				if (restoredCount > 0)
					Platform.Log(LogLevel.Info, "{0} SOP(s) have been restored.", restoredCount);
			}
			else
			{
				// Different study folder was used. Original folder must be kept around 
				// because we are rolling back.
				_deleteOriginalFolder = false;
			}
		}