/// <summary> /// Write parameter row. /// </summary> /// <param name="csvFileWriter"> /// The CSV file writer. /// </param> /// <param name="this.headers"> /// The this.headers. /// </param> /// <param name="engineeringModelShortName"> /// The engineering model short name. /// </param> /// <param name="parameterValueSet"> /// The parameter value set. /// </param> private void WriteParameterRow(CsvFileWriter csvFileWriter, string engineeringModelShortName, ParameterValueSet parameterValueSet) { var elementDefinition = parameterValueSet.GetContainerOfType <ElementDefinition>(); var containerParameter = parameterValueSet.GetContainerOfType <Parameter>(); var fields = new string[this.headers.Count]; fields[this.headers.IndexOf(nameof(EngineeringModel))] = engineeringModelShortName; fields[this.headers.IndexOf(nameof(ElementDefinition))] = elementDefinition.Name; fields[this.headers.IndexOf($"{nameof(ElementDefinition)}.{nameof(ElementDefinition.ShortName)}")] = elementDefinition.ShortName; fields[this.headers.IndexOf(nameof(DomainOfExpertise))] = parameterValueSet.Owner.ShortName; fields[this.headers.IndexOf($"{nameof(ParameterSubscription)}.{nameof(ParameterSubscription.Owner)}")] = ""; fields[this.headers.IndexOf(nameof(Category))] = string.Join(", ", elementDefinition.Category.Select(cat => cat.ShortName).OrderBy(sn => sn)); fields[this.headers.IndexOf(nameof(ParameterGroup))] = parameterValueSet.GetContainerOfType <ParameterGroup>()?.UserFriendlyShortName; fields[this.headers.IndexOf(nameof(ReferenceDataLibrary))] = string.Join(", ", containerParameter.ParameterType.RequiredRdls.Select(x => x.ShortName)); fields[this.headers.IndexOf(nameof(Parameter))] = containerParameter.ParameterType.UserFriendlyShortName; fields[this.headers.IndexOf(nameof(Parameter.UserFriendlyShortName))] = containerParameter.ParameterType.ShortName; fields[this.headers.IndexOf(nameof(ActualFiniteState.ShortName))] = parameterValueSet.ActualState?.ShortName ?? ""; fields[this.headers.IndexOf(nameof(Option.ShortName))] = parameterValueSet.ActualOption?.ShortName ?? ""; fields[this.headers.IndexOf(nameof(ParameterValueSet.ActualValue))] = parameterValueSet.ActualValue?.FirstOrDefault() ?? ""; fields[this.headers.IndexOf(nameof(ParameterValueSet.Published))] = parameterValueSet.Published?.FirstOrDefault() ?? ""; fields[this.headers.IndexOf(nameof(MeasurementScale))] = containerParameter.Scale?.ShortName ?? ""; fields[this.headers.IndexOf(nameof(ParameterSwitchKind))] = parameterValueSet.ValueSwitch.ToString(); fields[this.headers.IndexOf(nameof(ParameterSwitchKind.COMPUTED))] = string.Join("|", parameterValueSet.Computed.Select(x => x ?? "")); fields[this.headers.IndexOf(nameof(ParameterSwitchKind.MANUAL))] = string.Join("|", parameterValueSet.Manual.Select(x => x ?? "")); fields[this.headers.IndexOf(nameof(ParameterSwitchKind.REFERENCE))] = string.Join("|", parameterValueSet.Reference.Select(x => x ?? "")); fields[this.headers.IndexOf(nameof(ParameterValueSet.Formula))] = string.Join("|", parameterValueSet.Formula.Select(s => $"\"{s}\"")); csvFileWriter.WriteRow(fields); }