37 lines
1.1 KiB
C#
37 lines
1.1 KiB
C#
using System;
|
|
using FileCompression.Interfaces;
|
|
|
|
namespace FileCompression.Services.Strategies;
|
|
|
|
public class StrategyContext
|
|
{
|
|
private ICompressionStrategy? _compressionStrategy;
|
|
public StrategyContext()
|
|
{
|
|
}
|
|
public StrategyContext(ICompressionStrategy compressionStrategy)
|
|
{
|
|
_compressionStrategy = compressionStrategy;
|
|
}
|
|
public void SetStrategy(ICompressionStrategy compressionStrategy)
|
|
{
|
|
_compressionStrategy = compressionStrategy;
|
|
}
|
|
public void CompressFile(string sourcePath, string destinationPath, string basePath)
|
|
{
|
|
if (_compressionStrategy == null)
|
|
{
|
|
throw new InvalidOperationException("Compression strategy is not set.");
|
|
}
|
|
_compressionStrategy.CompressFile(sourcePath, destinationPath, basePath);
|
|
}
|
|
public void CompressDirectory(string sourcePath, string destinationPath, string basePath)
|
|
{
|
|
if (_compressionStrategy == null)
|
|
{
|
|
throw new InvalidOperationException("Compression strategy is not set.");
|
|
}
|
|
_compressionStrategy.CompressDirectory(sourcePath, destinationPath, basePath);
|
|
}
|
|
}
|