Skip to content

Commit

Permalink
Fixes #2638 by reverting to namespace
Browse files Browse the repository at this point in the history
  • Loading branch information
msevestre committed May 26, 2023
1 parent f93c4da commit 863f595
Showing 1 changed file with 75 additions and 74 deletions.
149 changes: 75 additions & 74 deletions src/PKSim.Core/Snapshots/Mappers/DiseaseStateMapper.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,103 +9,104 @@
using SnapshotDiseaseState = PKSim.Core.Snapshots.DiseaseState;
using ModelOriginData = PKSim.Core.Model.OriginData;

namespace PKSim.Core.Snapshots.Mappers;

public class DiseaseStateContext : SnapshotContext
namespace PKSim.Core.Snapshots.Mappers
{
public ModelOriginData OriginData { get; }

public DiseaseStateContext(ModelOriginData originData, SnapshotContext baseContext) : base(baseContext)
public class DiseaseStateContext : SnapshotContext
{
OriginData = originData;
}
}
public ModelOriginData OriginData { get; }

public class DiseaseStateMapper : SnapshotMapperBase<ModelOriginData, SnapshotDiseaseState, DiseaseStateContext>
{
private readonly IDiseaseStateRepository _diseaseStateRepository;
private readonly ParameterMapper _parameterMapper;
private readonly IDimensionRepository _dimensionRepository;

public DiseaseStateMapper(
IDiseaseStateRepository diseaseStateRepository,
ParameterMapper parameterMapper,
IDimensionRepository dimensionRepository
)
{
_diseaseStateRepository = diseaseStateRepository;
_parameterMapper = parameterMapper;
_dimensionRepository = dimensionRepository;
public DiseaseStateContext(ModelOriginData originData, SnapshotContext baseContext) : base(baseContext)
{
OriginData = originData;
}
}

public override Task<SnapshotDiseaseState> MapToSnapshot(ModelOriginData originData)
public class DiseaseStateMapper : SnapshotMapperBase<ModelOriginData, SnapshotDiseaseState, DiseaseStateContext>
{
var diseaseState = originData?.DiseaseState;
if (diseaseState == null || diseaseState.IsHealthy)
return Task.FromResult<SnapshotDiseaseState>(null);
private readonly IDiseaseStateRepository _diseaseStateRepository;
private readonly ParameterMapper _parameterMapper;
private readonly IDimensionRepository _dimensionRepository;

public DiseaseStateMapper(
IDiseaseStateRepository diseaseStateRepository,
ParameterMapper parameterMapper,
IDimensionRepository dimensionRepository
)
{
_diseaseStateRepository = diseaseStateRepository;
_parameterMapper = parameterMapper;
_dimensionRepository = dimensionRepository;
}

var snapshot = new SnapshotDiseaseState
public override Task<SnapshotDiseaseState> MapToSnapshot(ModelOriginData originData)
{
Name = diseaseState.Name,
};
var diseaseState = originData?.DiseaseState;
if (diseaseState == null || diseaseState.IsHealthy)
return Task.FromResult<SnapshotDiseaseState>(null);

if (originData.DiseaseStateParameters.Any())
snapshot.Parameters = originData.DiseaseStateParameters.Select(namedParameterFrom).ToArray();
var snapshot = new SnapshotDiseaseState
{
Name = diseaseState.Name,
};

return Task.FromResult(snapshot);
}
if (originData.DiseaseStateParameters.Any())
snapshot.Parameters = originData.DiseaseStateParameters.Select(namedParameterFrom).ToArray();

public override Task<ModelOriginData> MapToModel(SnapshotDiseaseState diseaseStateSnapshot, DiseaseStateContext diseaseStateContext)
{
var originData = diseaseStateContext.OriginData;
return Task.FromResult(snapshot);
}

if (diseaseStateSnapshot == null)
return Task.FromResult(originData);
public override Task<ModelOriginData> MapToModel(SnapshotDiseaseState diseaseStateSnapshot, DiseaseStateContext diseaseStateContext)
{
var originData = diseaseStateContext.OriginData;

var diseaseState = _diseaseStateRepository.AllFor(originData.Population).FindByName(diseaseStateSnapshot.Name);
if (diseaseState == null)
throw new PKSimException(PKSimConstants.Error.CannotFindDiseaseState(diseaseStateSnapshot.Name, originData.Population.DisplayName));
if (diseaseStateSnapshot == null)
return Task.FromResult(originData);

originData.DiseaseState = diseaseState;
diseaseState.Parameters.Each(x =>
{
var diseaseStateParameter = new OriginDataParameter {Name = x.Name, Value = x.Value, Unit = x.DisplayUnitName()};
var snapshotParameter = diseaseStateSnapshot.Parameters.FindByName(x.Name);
if (snapshotParameter != null)
var diseaseState = _diseaseStateRepository.AllFor(originData.Population).FindByName(diseaseStateSnapshot.Name);
if (diseaseState == null)
throw new PKSimException(PKSimConstants.Error.CannotFindDiseaseState(diseaseStateSnapshot.Name, originData.Population.DisplayName));

originData.DiseaseState = diseaseState;
diseaseState.Parameters.Each(x =>
{
diseaseStateParameter.Value = baseParameterValueFrom(snapshotParameter, x.Value);
diseaseStateParameter.Unit = snapshotParameter.Unit;
}
var diseaseStateParameter = new OriginDataParameter {Name = x.Name, Value = x.Value, Unit = x.DisplayUnitName()};
var snapshotParameter = diseaseStateSnapshot.Parameters.FindByName(x.Name);
if (snapshotParameter != null)
{
diseaseStateParameter.Value = baseParameterValueFrom(snapshotParameter, x.Value);
diseaseStateParameter.Unit = snapshotParameter.Unit;
}
originData.AddDiseaseStateParameter(diseaseStateParameter);
});
originData.AddDiseaseStateParameter(diseaseStateParameter);
});


return Task.FromResult(originData);
}
return Task.FromResult(originData);
}

private Parameter namedParameterFrom(OriginDataParameter parameter)
{
return parameterFrom(parameter, _dimensionRepository.DimensionForUnit(parameter.Unit)).WithName(parameter.Name);
}
private Parameter namedParameterFrom(OriginDataParameter parameter)
{
return parameterFrom(parameter, _dimensionRepository.DimensionForUnit(parameter.Unit)).WithName(parameter.Name);
}

private Parameter parameterFrom(OriginDataParameter parameter, IDimension dimension)
{
if (parameter == null)
return null;
private Parameter parameterFrom(OriginDataParameter parameter, IDimension dimension)
{
if (parameter == null)
return null;

return _parameterMapper.ParameterFrom(parameter.Value, parameter.Unit, dimension);
}
return _parameterMapper.ParameterFrom(parameter.Value, parameter.Unit, dimension);
}

private double baseParameterValueFrom(Parameter snapshot, double defaultValueInBaseUnit) =>
baseParameterValueFrom(snapshot, _dimensionRepository.DimensionForUnit(snapshot.Unit), defaultValueInBaseUnit);
private double baseParameterValueFrom(Parameter snapshot, double defaultValueInBaseUnit) =>
baseParameterValueFrom(snapshot, _dimensionRepository.DimensionForUnit(snapshot.Unit), defaultValueInBaseUnit);

private double baseParameterValueFrom(Parameter snapshot, IDimension dimension, double defaultValueInBaseUnit)
{
if (snapshot?.Value == null)
return defaultValueInBaseUnit;
private double baseParameterValueFrom(Parameter snapshot, IDimension dimension, double defaultValueInBaseUnit)
{
if (snapshot?.Value == null)
return defaultValueInBaseUnit;

var unit = dimension.Unit(ModelValueFor(snapshot.Unit));
return dimension.UnitValueToBaseUnitValue(unit, snapshot.Value.Value);
var unit = dimension.Unit(ModelValueFor(snapshot.Unit));
return dimension.UnitValueToBaseUnitValue(unit, snapshot.Value.Value);
}
}
}

0 comments on commit 863f595

Please sign in to comment.