public void RunCompile() { lock (m_Lock) { UpdateActivitiesTargetResourceDependencies(); var availableResources = new List <IResource <int> >(); if (!ResourceSettings.AreDisabled) { availableResources.AddRange(m_Mapper.Map <IEnumerable <ResourceModel>, IEnumerable <Resource <int> > >(ResourceSettings.Resources)); } GraphCompilation = m_VertexGraphCompiler.Compile(availableResources); Duration = m_VertexGraphCompiler.Duration; UpdateActivitiesAllocatedToResources(); CalculateResourceSeriesSet(); SetCompilationOutput(); CalculateCosts(); IsProjectUpdated = true; // Cyclomatic complexity is calculated against the vertex graph without resource dependencies. CyclomaticComplexity = null; if (!HasCompilationErrors) { IList <IDependentActivity <int, int> > dependentActivities = GraphCompilation.DependentActivities .Select(x => (IDependentActivity <int, int>)x.CloneObject()) .ToList(); if (dependentActivities.Any()) { var vertexGraphCompiler = new VertexGraphCompiler <int, int, IDependentActivity <int, int> >(); foreach (DependentActivity <int, int> dependentActivity in dependentActivities) { dependentActivity.ResourceDependencies.Clear(); vertexGraphCompiler.AddActivity(dependentActivity); } vertexGraphCompiler.TransitiveReduction(); CyclomaticComplexity = vertexGraphCompiler.CyclomaticComplexity; } } HasStaleOutputs = false; } PublishGraphCompiledPayload(); PublishGraphCompilationUpdatedPayload(); }
public CoreViewModel( IProjectManager projectManager, ISettingManager settingManager, IDateTimeCalculator dateTimeCalculator, IEventAggregator eventService) : base(eventService) { m_Lock = new object(); m_ProjectManager = projectManager ?? throw new ArgumentNullException(nameof(projectManager)); m_SettingManager = settingManager ?? throw new ArgumentNullException(nameof(settingManager)); m_DateTimeCalculator = dateTimeCalculator ?? throw new ArgumentNullException(nameof(dateTimeCalculator)); m_EventService = eventService ?? throw new ArgumentNullException(nameof(eventService)); m_VertexGraphCompiler = VertexGraphCompiler <int, IDependentActivity <int> > .Create(); Activities = new ObservableCollection <ManagedActivityViewModel>(); ResourceSeriesSet = new List <ResourceSeriesDto>(); ClearSettings(); }
public int RunCalculateResourcedCyclomaticComplexity() { lock (m_Lock) { int resourcedCyclomaticComplexity = 0; // Cyclomatic complexity is calculated against the transitively reduced // vertex graph, where resource dependencies are taken into account along // with regular dependencies. if (GraphCompilation != null && !HasCompilationErrors && !HasStaleOutputs && !ResourceSettingsDto.AreDisabled) { IList <IDependentActivity <int> > dependentActivities = GraphCompilation.DependentActivities .Select(x => (IDependentActivity <int>)x.WorkingCopy()) .ToList(); if (dependentActivities.Any()) { var vertexGraphCompiler = VertexGraphCompiler <int, IDependentActivity <int> > .Create(); foreach (DependentActivity <int> dependentActivity in dependentActivities) { dependentActivity.Dependencies.UnionWith(dependentActivity.ResourceDependencies); dependentActivity.ResourceDependencies.Clear(); vertexGraphCompiler.AddActivity(dependentActivity); } vertexGraphCompiler.TransitiveReduction(); resourcedCyclomaticComplexity = vertexGraphCompiler.CyclomaticComplexity; } } return(resourcedCyclomaticComplexity); } }
public CoreViewModel( IProjectService projectService, ISettingService settingService, IApplicationCommands applicationCommands, IDateTimeCalculator dateTimeCalculator, IMapper mapper, IEventAggregator eventService) : base(eventService) { m_Lock = new object(); m_UndoStack = new LimitedSizeStack <UndoRedoCommandPair>(c_MaxUndoRedoStackSize); m_RedoStack = new LimitedSizeStack <UndoRedoCommandPair>(c_MaxUndoRedoStackSize); m_ProjectService = projectService ?? throw new ArgumentNullException(nameof(projectService)); m_SettingService = settingService ?? throw new ArgumentNullException(nameof(settingService)); ApplicationCommands = applicationCommands ?? throw new ArgumentNullException(nameof(applicationCommands)); m_DateTimeCalculator = dateTimeCalculator ?? throw new ArgumentNullException(nameof(dateTimeCalculator)); m_Mapper = mapper ?? throw new ArgumentNullException(nameof(mapper)); m_EventService = eventService ?? throw new ArgumentNullException(nameof(eventService)); m_VertexGraphCompiler = new VertexGraphCompiler <int, int, IDependentActivity <int, int> >(); Activities = new ObservableCollection <IManagedActivityViewModel>(); InitializeCommands(); ClearSettings(); }