Anul 3 Semestrul 2
This commit is contained in:
@@ -0,0 +1,57 @@
|
||||
using System;
|
||||
using FileCompression.Enums;
|
||||
using FileCompression.Services;
|
||||
using FileCompression.Services.Strategies;
|
||||
|
||||
namespace FileCompression;
|
||||
|
||||
public class Compressor
|
||||
{
|
||||
private static Compressor? _compressor;
|
||||
private static readonly Lock _lock = new();
|
||||
|
||||
private static readonly StrategyContext StrategyContext = new();
|
||||
private Compressor()
|
||||
{
|
||||
}
|
||||
|
||||
public static Compressor Instance
|
||||
{
|
||||
get
|
||||
{
|
||||
lock (_lock)
|
||||
{
|
||||
if (_compressor == null)
|
||||
{
|
||||
_compressor = new Compressor();
|
||||
}
|
||||
return _compressor;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void Compress(string sourcePath, string destinationPath, CompressionMode mode)
|
||||
{
|
||||
if (string.IsNullOrEmpty(sourcePath))
|
||||
{
|
||||
throw new ArgumentNullException(nameof(sourcePath), "Source path cannot be null or empty.");
|
||||
}
|
||||
|
||||
if (string.IsNullOrEmpty(destinationPath))
|
||||
{
|
||||
throw new ArgumentNullException(nameof(destinationPath), "Destination path cannot be null or empty.");
|
||||
}
|
||||
|
||||
if (File.Exists(destinationPath))
|
||||
{
|
||||
File.Delete(destinationPath);
|
||||
}
|
||||
|
||||
StrategyContext.SetStrategy(CompressorFactory.CreateCompressorStrategy(mode));
|
||||
var compressor = CompressorFactory.CreateCompressor(sourcePath, destinationPath, mode, StrategyContext);
|
||||
compressor.Compress();
|
||||
Console.WriteLine($"Compressed {sourcePath} to {destinationPath} using {mode} mode.");
|
||||
Console.WriteLine($"Compression completed successfully.");
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user