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}");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
84
StructureHelperLogics/Models/Storages/OpenedFile.cs
Normal file
84
StructureHelperLogics/Models/Storages/OpenedFile.cs
Normal file
@@ -0,0 +1,84 @@
|
||||
using StructureHelperCommon.Infrastructures.Interfaces;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace StructureHelperLogics.Models.Storages
|
||||
{
|
||||
public class OpenedFile
|
||||
{
|
||||
public Guid Id { get; }
|
||||
public string FilePath { get; }
|
||||
public List<ISaveable> RelatedObjects { get; } // List of related objects
|
||||
|
||||
public OpenedFile(Guid id, string filePath)
|
||||
{
|
||||
Id = id;
|
||||
FilePath = filePath;
|
||||
RelatedObjects = new List<ISaveable>();
|
||||
}
|
||||
|
||||
public void AddRelatedObject(ISaveable relatedObject)
|
||||
{
|
||||
RelatedObjects.Add(relatedObject);
|
||||
}
|
||||
|
||||
public void RemoveRelatedObject(Guid objectId)
|
||||
{
|
||||
RelatedObjects.RemoveAll(o => o.Id == objectId);
|
||||
}
|
||||
|
||||
public ISaveable GetRelatedObject(Guid objectId)
|
||||
{
|
||||
return RelatedObjects.Find(o => o.Id == objectId);
|
||||
}
|
||||
}
|
||||
|
||||
class Program
|
||||
{
|
||||
[STAThread] // Required for OpenFileDialog
|
||||
static void Main()
|
||||
{
|
||||
var fileStorageManager = new FileStorageManager();
|
||||
|
||||
// Open files and add them to the storage
|
||||
fileStorageManager.OpenFile();
|
||||
|
||||
// List all opened files
|
||||
Console.WriteLine("\nOpened Files:");
|
||||
fileStorageManager.ListOpenedFiles();
|
||||
|
||||
// Example: Adding related objects to the first opened file (if any)
|
||||
var openedFiles = new List<Guid>(fileStorageManager._openedFiles.Keys);
|
||||
if (openedFiles.Count > 0)
|
||||
{
|
||||
var firstFileId = openedFiles[0];
|
||||
var relatedObject = new FileRelatedObject("Sample Object", "This is a sample description");
|
||||
fileStorageManager.AddRelatedObjectToFile(firstFileId, relatedObject);
|
||||
|
||||
Console.WriteLine("\nAfter Adding Related Object:");
|
||||
fileStorageManager.ListOpenedFiles();
|
||||
|
||||
// Retrieve related object
|
||||
var retrievedObject = fileStorageManager.GetRelatedObjectFromFile(firstFileId, relatedObject.Id);
|
||||
Console.WriteLine($"\nRetrieved Related Object: {retrievedObject}");
|
||||
|
||||
// Remove related object
|
||||
fileStorageManager.RemoveRelatedObjectFromFile(firstFileId, relatedObject.Id);
|
||||
|
||||
Console.WriteLine("\nAfter Removing Related Object:");
|
||||
fileStorageManager.ListOpenedFiles();
|
||||
}
|
||||
|
||||
// Close all files
|
||||
foreach (var fileId in openedFiles)
|
||||
{
|
||||
fileStorageManager.CloseFile(fileId);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user