private void ProcessConfigurationTable() { foreach (var aTable in this.Analysis.Configuration.Tables) { var sourceTable = this.tablesForKey.ValueOrDefault(aTable.Key) as AnalysisMetaInfoTableInfo; if (sourceTable == null) { continue; } var dataSourceTable = sourceTable.DataSourceTable; var table = new AnalysisTable(this.Analysis, aTable, dataSourceTable.InfoAreaPositionInResult()); this.tableDictByIndex.SetObjectForKey(table, aTable.TableNumber); this.tableDictByKey.SetObjectForKey(table, aTable.Key); var numberOfFields = dataSourceTable.NumberOfFields(); this.fieldIndex = sourceTable.FirstFieldIndex; var sourceFieldDict = new Dictionary <string, object>(); for (var index = 0; index < numberOfFields; index++) { var sourceField = dataSourceTable.FieldAtIndex(index); var fieldInfo = new AnalysisMetaInfoFieldInfo(sourceTable, sourceField, this.fieldIndex++); sourceFieldDict.SetObjectForKey(fieldInfo, fieldInfo.Key); } for (var index = 0; index < numberOfFields; index++) { var sourceField = dataSourceTable.FieldAtIndex(index); var fieldKey = AnalysisMetaInfoFieldInfo.KeyForTableFieldId(sourceTable, sourceField.FieldId); var fieldInfo = sourceFieldDict.ValueOrDefault(fieldKey) as AnalysisMetaInfoFieldInfo; if (fieldInfo == null) { continue; } var subFieldIndices = sourceField.SubFieldIndices(); if (subFieldIndices?.Count > 0) { foreach (var subFieldIndex in subFieldIndices) { var subFieldKey = AnalysisMetaInfoFieldInfo.KeyForTableFieldId(sourceTable, subFieldIndex.ToInt()); var subFieldInfo = sourceFieldDict.ValueOrDefault(subFieldKey) as AnalysisMetaInfoFieldInfo; if (subFieldInfo != null) { fieldInfo.AddSubField(subFieldInfo); } } } } this.ProcessConfigurationFields(aTable, sourceFieldDict, table); var tableResultColumn = new AnalysisTableResultColumn(table); this.resultColumns.SetObjectForKey(tableResultColumn, table.Key); } }
/// <summary> /// Adds subfield id /// </summary> /// <param name="subField">Sub field</param> public void AddSubField(AnalysisMetaInfoFieldInfo subField) { if (this.subFieldArray == null) { this.subFieldArray = new List <object> { subField }; } else { this.subFieldArray.Add(subField); } }