private void createEventGroupStructure(IEventGroupBuilder eventGroupBuilder, IEventGroup eventGroup, IBuildConfiguration buildConfiguration) { foreach (var childBuilder in eventGroupBuilder.Children) { //nothing to do for these entities that should not be copied in the model structure if (doesNotBelongIntoModel(childBuilder)) { continue; } if (childBuilder.IsAnImplementationOf <IEventGroupBuilder>()) { var childEventGroup = MapFrom(childBuilder.DowncastTo <IEventGroupBuilder>(), buildConfiguration); eventGroup.Add(childEventGroup); if (childBuilder.IsAnImplementationOf <IApplicationBuilder>()) { createApplication(childBuilder.DowncastTo <IApplicationBuilder>(), childEventGroup, buildConfiguration); } } else if (childBuilder.IsAnImplementationOf <IEventBuilder>()) { eventGroup.Add(_eventMapper.MapFrom(childBuilder.DowncastTo <IEventBuilder>(), buildConfiguration)); } else if (childBuilder.IsAnImplementationOf <IParameter>()) { eventGroup.Add(_parameterMapper.MapFrom(childBuilder.DowncastTo <IParameter>(), buildConfiguration)); } else if (childBuilder.IsAnImplementationOf <IContainer>()) { eventGroup.Add(_containerMapper.MapFrom(childBuilder.DowncastTo <IContainer>(), buildConfiguration)); } else { eventGroup.Add(_cloneManagerForModel.Clone(childBuilder)); } } }
private IContainer createMoleculePropertiesFor(INeighborhoodBuilder neighborhoodBuilder, string moleculeName, IContainer rootContainer, IBuildConfiguration buildConfiguration, IEnumerable <string> moleculeNamesWithCopyPropertiesRequired) { //Create a new model container from the neighborhood container var moleculePropertiesContainer = _containerMapper.MapFrom(neighborhoodBuilder.MoleculeProperties, buildConfiguration); moleculePropertiesContainer.ContainerType = ContainerType.Molecule; //Assigment molecule properties subcontainer name from <MOLECULE_PROPERTIES> //to concrete molecule name moleculePropertiesContainer.Name = moleculeName; _keywordReplacerTask.ReplaceIn(moleculePropertiesContainer, rootContainer, moleculeName); //remove children if molecule properties should not be copied if (!moleculeNamesWithCopyPropertiesRequired.Contains(moleculeName)) { moleculePropertiesContainer.RemoveChildren(); } return(moleculePropertiesContainer); }