FileWork examples were added
This commit is contained in:
89
StructureHelperLogics/Models/Storages/FileStorageManager.cs
Normal file
89
StructureHelperLogics/Models/Storages/FileStorageManager.cs
Normal file
@@ -0,0 +1,89 @@
|
||||
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}");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user