Skip to content

Commit

Permalink
1945 proposal for parameters in individual (#1950)
Browse files Browse the repository at this point in the history
* WIP #1945. Write tests firt

* WIP #1945. Write tests firt

* Fixes #1945

* REmove empty test file

* Unify model and config in a ModelConfiguration

* Also update NUnit

* Some tests concurrency issue?

* Update config
  • Loading branch information
msevestre authored Apr 3, 2023
1 parent 2318eba commit 79dc461
Show file tree
Hide file tree
Showing 32 changed files with 449 additions and 367 deletions.
22 changes: 22 additions & 0 deletions src/OSPSuite.Core/Domain/Builder/ModelConfiguration.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
namespace OSPSuite.Core.Domain.Builder
{
public class ModelConfiguration
{
public IModel Model { get; }
public SimulationConfiguration SimulationConfiguration { get; }

public ModelConfiguration(IModel model, SimulationConfiguration simulationConfiguration)
{
Model = model;
SimulationConfiguration = simulationConfiguration;
}

public bool ShouldValidate => SimulationConfiguration.ShouldValidate;

public void Deconstruct(out IModel model, out SimulationConfiguration simulationConfiguration)
{
model = Model;
simulationConfiguration = SimulationConfiguration;
}
}
}
2 changes: 1 addition & 1 deletion src/OSPSuite.Core/Domain/CreationResult.cs
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,8 @@ public virtual void Add(ValidationResult validationResult)

public void Deconstruct(out IModel model, out ValidationResult validationResult)
{
validationResult = ValidationResult;
model = Model;
validationResult = ValidationResult;
}
}
}
21 changes: 10 additions & 11 deletions src/OSPSuite.Core/Domain/Services/CalculationMethodTask.cs
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ namespace OSPSuite.Core.Domain.Services
{
public interface ICalculationMethodTask
{
void MergeCalculationMethodInModel(IModel model, SimulationConfiguration simulationConfiguration);
void MergeCalculationMethodInModel(ModelConfiguration modelConfiguration);
}

public class CalculationMethodTask : ICalculationMethodTask
Expand Down Expand Up @@ -42,17 +42,16 @@ public CalculationMethodTask(
_objectPathFactory = objectPathFactory;
}

public void MergeCalculationMethodInModel(IModel model, SimulationConfiguration simulationConfiguration)
public void MergeCalculationMethodInModel(ModelConfiguration modelConfiguration)
{
try
{
_simulationConfiguration = simulationConfiguration;
_allContainers = model.Root.GetAllContainersAndSelf<IContainer>().ToEntityDescriptorMapList();
_allBlackBoxParameters = model.Root.GetAllChildren<IParameter>().Where(p => p.Formula.IsBlackBox()).ToList();
_model = model;
foreach (var calculationMethod in simulationConfiguration.AllCalculationMethods)
(_model, _simulationConfiguration) = modelConfiguration;
_allContainers = _model.Root.GetAllContainersAndSelf<IContainer>().ToEntityDescriptorMapList();
_allBlackBoxParameters = _model.Root.GetAllChildren<IParameter>().Where(p => p.Formula.IsBlackBox()).ToList();
foreach (var calculationMethod in _simulationConfiguration.AllCalculationMethods)
{
var allMoleculesUsingMethod = allMoleculesUsing(calculationMethod, simulationConfiguration.Molecules).ToList();
var allMoleculesUsingMethod = allMoleculesUsing(calculationMethod, _simulationConfiguration.Molecules).ToList();

createFormulaForBlackBoxParameters(calculationMethod, allMoleculesUsingMethod);

Expand All @@ -77,15 +76,15 @@ private void addHelpParametersFor(ICoreCalculationMethod calculationMethod, ILis
{
foreach (var container in allMoleculeContainersFor(containerDescriptor, molecule))
{
var exisitingParameter = container.Parameter(helpParameter.Name);
var existingParameter = container.Parameter(helpParameter.Name);
//does not exist yet
if (exisitingParameter == null)
if (existingParameter == null)
{
var parameter = _parameterMapper.MapFrom(helpParameter, _simulationConfiguration);
container.Add(parameter);
replaceKeyWordsIn(parameter, molecule.Name);
}
else if (!formulasAreTheSameForParameter(exisitingParameter, helpParameter.Formula, molecule.Name))
else if (!formulasAreTheSameForParameter(existingParameter, helpParameter.Formula, molecule.Name))
throw new OSPSuiteException(Error.HelpParameterAlreadyDefinedWithAnotherFormula(calculationMethod.Name, _objectPathFactory.CreateAbsoluteObjectPath(helpParameter).ToString()));
}
}
Expand Down
13 changes: 5 additions & 8 deletions src/OSPSuite.Core/Domain/Services/EventBuilderTask.cs
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,7 @@ public interface IEventBuilderTask
/// <summary>
/// Adds events defined by build configuration to the given model
/// </summary>
/// <param name="model">the model where the observers should be defined</param>
/// <param name="simulationConfiguration">the simulation configuration</param>
void CreateEvents(IModel model, SimulationConfiguration simulationConfiguration);
void CreateEvents(ModelConfiguration modelConfiguration);
}

internal class EventBuilderTask : IEventBuilderTask
Expand All @@ -45,13 +43,12 @@ public EventBuilderTask(
_eventGroupMapper = eventGroupMapper;
}

public void CreateEvents(IModel model, SimulationConfiguration simulationConfiguration)
public void CreateEvents(ModelConfiguration modelConfiguration)
{
try
{
_model = model;
_simulationConfiguration = simulationConfiguration;
_allModelContainerDescriptors = model.Root.GetAllContainersAndSelf<IContainer>().ToEntityDescriptorMapList();
(_model, _simulationConfiguration) = modelConfiguration;
_allModelContainerDescriptors = _model.Root.GetAllContainersAndSelf<IContainer>().ToEntityDescriptorMapList();

_sourceCriteriaTargetContainerCache = new Cache<DescriptorCriteria, IEnumerable<IContainer>>();
_applicationTransportTargetContainerCache = new Cache<DescriptorCriteria, IEnumerable<IContainer>>();
Expand All @@ -67,7 +64,7 @@ public void CreateEvents(IModel model, SimulationConfiguration simulationConfigu

foreach (var eventGroupBuilder in _simulationConfiguration.EventGroups)
{
createEventGroupFrom(eventGroupBuilder, simulationConfiguration.Molecules);
createEventGroupFrom(eventGroupBuilder, _simulationConfiguration.Molecules);
}
}
finally
Expand Down
Loading

0 comments on commit 79dc461

Please sign in to comment.