Files
StructureHelper/StructureHelperLogics/Models/Storages/FileStorageManager.cs
2024-09-06 18:13:21 +05:00

90 lines
2.8 KiB
C#

using System;
using System.Collections.Generic;
using System.IO;
using System.Windows.Forms;
namespace StructureHelperLogics.Models.Storages
{
public class FileStorageManager
{
private readonly Dictionary<Guid, OpenedFile> _openedFiles = new Dictionary<Guid, OpenedFile>();
public void OpenFile()
{
using (OpenFileDialog openFileDialog = new OpenFileDialog())
{
openFileDialog.Filter = "Text Files (*.txt)|*.txt|All Files (*.*)|*.*";
openFileDialog.Multiselect = true;
openFileDialog.Title = "Select Files";
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
foreach (var filePath in openFileDialog.FileNames)
{
var fileId = Guid.NewGuid();
var openedFile = new OpenedFile(fileId, filePath);
_openedFiles[fileId] = openedFile;
Console.WriteLine($"File '{openedFile.FilePath}' opened with ID: {fileId}");
}
}
}
}
public OpenedFile GetFile(Guid fileId)
{
if (_openedFiles.TryGetValue(fileId, out var openedFile))
{
return openedFile;
}
throw new KeyNotFoundException("File not found.");
}
public void CloseFile(Guid fileId)
{
if (_openedFiles.ContainsKey(fileId))
{
_openedFiles.Remove(fileId);
Console.WriteLine($"File with ID: {fileId} has been closed.");
}
else
{
throw new KeyNotFoundException("File not found.");
}
}
public void AddRelatedObjectToFile(Guid fileId, FileRelatedObject relatedObject)
{
var openedFile = GetFile(fileId);
openedFile.AddRelatedObject(relatedObject);
Console.WriteLine($"Added related object to file ID: {fileId}, Related Object: {relatedObject}");
}
public FileRelatedObject GetRelatedObjectFromFile(Guid fileId, Guid objectId)
{
var openedFile = GetFile(fileId);
return openedFile.GetRelatedObject(objectId);
}
public void RemoveRelatedObjectFromFile(Guid fileId, Guid objectId)
{
var openedFile = GetFile(fileId);
openedFile.RemoveRelatedObject(objectId);
Console.WriteLine($"Removed related object with ID: {objectId} from file ID: {fileId}");
}
public void ListOpenedFiles()
{
foreach (var file in _openedFiles.Values)
{
Console.WriteLine($"File ID: {file.Id}, Path: {file.FilePath}, Related Objects Count: {file.RelatedObjects.Count}");
}
}
}
}