예제 #1
0
        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);
            }
        }
예제 #2
0
 /// <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);
     }
 }