Skip to content

Commit

Permalink
WIP #1953
Browse files Browse the repository at this point in the history
  • Loading branch information
msevestre committed Apr 4, 2023
1 parent 295515a commit c24a489
Showing 1 changed file with 60 additions and 0 deletions.
60 changes: 60 additions & 0 deletions src/OSPSuite.Core/Domain/ModuleConfiguration.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
using System.Collections.Generic;
using System.Linq;
using OSPSuite.Core.Domain.Builder;
using OSPSuite.Utility.Visitor;

namespace OSPSuite.Core.Domain
{
public class ModuleConfiguration : IVisitable<IVisitor>
{
public Module Module { get; }

/// <summary>
/// Reference to selected molecule start value in the Module (can be null if none is used)
/// </summary>
public MoleculeStartValuesBuildingBlock SelectedMoleculeStartValues { get; }

/// <summary>
/// Reference to selected parameter start value in the Module (can be null if none is used)
/// </summary>
public ParameterStartValuesBuildingBlock SelectedParameterStartValues { get; }

public ModuleConfiguration(Module module, MoleculeStartValuesBuildingBlock selectedMoleculeStartValueBuilding = null, ParameterStartValuesBuildingBlock selectedParameterStartValues = null)
{
Module = module;
SelectedMoleculeStartValues = selectedMoleculeStartValueBuilding ?? module.MoleculeStartValuesCollection.FirstOrDefault();
SelectedParameterStartValues = selectedParameterStartValues ?? module.ParameterStartValuesCollection.FirstOrDefault();
}

public void AcceptVisitor(IVisitor visitor)
{
Module.AcceptVisitor(visitor);
}

public virtual IEnumerable<IMoleculeBuilder> AllPresentMolecules()
{
if (Module.Molecule == null || SelectedMoleculeStartValues == null)
return Enumerable.Empty<IMoleculeBuilder>();

return Module.Molecule.AllPresentFor(SelectedMoleculeStartValues);
}

public virtual IEnumerable<MoleculeStartValue> AllPresentMoleculeValues()
{
if (Module.Molecule == null)
return Enumerable.Empty<MoleculeStartValue>();

return AllPresentMoleculeValuesFor(Module.Molecule.Select(x => x.Name));
}

public virtual IEnumerable<MoleculeStartValue> AllPresentMoleculeValuesFor(IEnumerable<string> moleculeNames)
{
if (SelectedMoleculeStartValues == null)
return Enumerable.Empty<MoleculeStartValue>();

return SelectedMoleculeStartValues
.Where(msv => moleculeNames.Contains(msv.MoleculeName))
.Where(msv => msv.IsPresent);
}
}
}

0 comments on commit c24a489

Please sign in to comment.