90 lines
2.8 KiB
C#
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}");
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|