private int ArchiveTableXml(FileInfo path, TableXsd tableXsd, ITable table, IEnumerable <IEnumerable <IDataObjectBase> > dataRows, int tableNo, object syncRoot) { if (path == null) { throw new ArgumentNullException(nameof(path)); } if (tableXsd == null) { throw new ArgumentNullException(nameof(tableXsd)); } if (dataRows == null) { throw new ArgumentNullException(nameof(dataRows)); } if (table == null) { throw new ArgumentNullException(nameof(table)); } if (tableNo < 1) { throw new DeliveryEngineRepositoryException(Resource.GetExceptionMessage(ExceptionMessage.IllegalValue, tableNo, "tableNo")); } if (syncRoot == null) { throw new ArgumentNullException(nameof(syncRoot)); } ReadOnlyObservableCollection <IFilter> fieldFilters = table.FieldFilters; using (var tableXml = new TableXml(tableXsd, path, _fileIndex, tableNo)) { var rowCount = 0; foreach (var dataRow in dataRows) { tableXml.AddRow(); foreach (var dataObject in dataRow.Where(m => ExcludeField(m.Field, fieldFilters) == false)) { var genericMethodForValue = dataObject.GetType() .GetMethod("GetTargetValue", new Type[] { }) .MakeGenericMethod(dataObject.Field.DatatypeOfTarget); var value = genericMethodForValue.Invoke(dataObject, null); tableXml.AddField(dataObject.Field.ColumnId, value); } tableXml.CloseRow(); rowCount++; } tableXml.Persist(syncRoot); return(rowCount); } }
public void Deserialize_SampleFile_TableAndPerspectiveLoaded() { int testNr = 0; // Create an instance of the XmlSerializer specifying type and namespace. TestSuiteXml ts = DeserializeSample(); // Check the properties of the object. Assert.That(ts.Tests[testNr].Systems[0], Is.TypeOf <StructureXml>()); Assert.That(((StructureXml)ts.Tests[testNr].Systems[0]).Item, Is.TypeOf <TableXml>()); TableXml item = (TableXml)((StructureXml)ts.Tests[testNr].Systems[0]).Item; Assert.That(item.Caption, Is.EqualTo("table")); Assert.That(item.Perspective, Is.EqualTo("perspective")); Assert.That(item.ConnectionString, Is.EqualTo("connectionString")); }