//Done on background thread static private void UploadFile(string path) { Byte[] contents; try { contents = File.ReadAllBytes(path); } catch (Exception ex) { Debug.Print("Failed to read file contents. " + ex.Message); return; } var db = new FishTaggingDataContext(); var file = new RawDataFile { FileName = Path.GetFileName(path), FolderName = Path.GetDirectoryName(path), Contents = contents }; db.RawDataFiles.InsertOnSubmit(file); try { db.SubmitChanges(); } catch (Exception ex) { Debug.Print("Failed to submit file. " + ex.Message); } }
public void Parse_Address(string dbPath, int pageID) { var db = new RawDataFile(dbPath); var page = db.GetPage(pageID); var record = page.Records.First() as RawPrimaryRecord; var result = RawColumnParser.Parse(record, new IRawType[] { RawType.Int("AddressID"), RawType.NVarchar("AddressLine1"), RawType.NVarchar("AddressLine2"), RawType.NVarchar("City"), RawType.NVarchar("StateProvince"), RawType.NVarchar("CountryRegion"), RawType.NVarchar("PostalCode"), RawType.UniqueIdentifier("rowguid"), RawType.DateTime("ModifiedDate") }); Assert.AreEqual(9, ((Dictionary <string, object>)result).Count); Assert.AreEqual(9, result.AddressID); Assert.AreEqual("8713 Yosemite Ct.", result.AddressLine1); Assert.AreEqual(null, result.AddressLine2); Assert.AreEqual("Bothell", result.City); Assert.AreEqual("Washington", result.StateProvince); Assert.AreEqual("United States", result.CountryRegion); Assert.AreEqual("98011", result.PostalCode); Assert.AreEqual(new Guid("268af621-76d7-4c78-9441-144fd139821a"), result.rowguid); Assert.AreEqual(new DateTime(2002, 07, 01), result.ModifiedDate); }
public void Parse_SalesOrderDetail(string dbPath, int pageID) { var db = new RawDataFile(dbPath); var page = db.GetPage(pageID); var record = page.Records.First() as RawPrimaryRecord; var result = RawColumnParser.Parse(record, new IRawType[] { RawType.Int("SalesOrderID"), RawType.Int("SalesOrderDetailID"), RawType.SmallInt("OrderQty"), RawType.Int("ProductID"), RawType.Money("UnitPrice"), RawType.Money("UnitPriceDiscount"), RawType.UniqueIdentifier("rowguid"), RawType.DateTime("ModifiedDate") }); Assert.AreEqual(8, ((Dictionary <string, object>)result).Count); Assert.AreEqual(71774, result.SalesOrderID); Assert.AreEqual(110562, result.SalesOrderDetailID); Assert.AreEqual(1, result.OrderQty); Assert.AreEqual(836, result.ProductID); Assert.AreEqual(356.898, result.UnitPrice); Assert.AreEqual(0.00, result.UnitPriceDiscount); Assert.AreEqual(new Guid("e3a1994c-7a68-4ce8-96a3-77fdd3bbd730"), result.rowguid); Assert.AreEqual(Convert.ToDateTime("2004-06-01"), result.ModifiedDate); }
public void Parse_Header_2005() { var db = new RawDataFile(AW2005Path); var header = db.GetPage(118).Header; Assert.AreEqual(96, header.RawBytes.Count); Assert.AreEqual(8040, header.FreeCnt); Assert.AreEqual(150, header.FreeData); Assert.AreEqual(33280, header.FlagBits); Assert.AreEqual("(17:858:20)", header.Lsn); Assert.AreEqual(86, header.ObjectID); Assert.AreEqual(PageType.Data, header.Type); Assert.AreEqual(21, header.Pminlen); Assert.AreEqual(256, header.IndexID); Assert.AreEqual(0x4, header.TypeFlagBits); Assert.AreEqual(1, header.SlotCnt); Assert.AreEqual("(0:0)", header.XdesID); Assert.AreEqual(0, header.XactReserved); Assert.AreEqual(0, header.ReservedCnt); Assert.AreEqual(0, header.Level); Assert.AreEqual(1, header.HeaderVersion); Assert.AreEqual(0, header.GhostRecCnt); Assert.AreEqual(0, header.NextPageFileID); Assert.AreEqual(0, header.NextPageID); Assert.AreEqual(0, header.PreviousPageFileID); Assert.AreEqual(0, header.PreviousPageID); Assert.AreEqual(118, header.PageID); Assert.AreEqual(1, header.FileID); Assert.AreEqual(new [] { 0xDA, 0xC1, 0x11, 0x61 }, header.Checksum.ToArray()); }
//Done on background thread private static void UploadFile(string path) { Byte[] contents; try { contents = File.ReadAllBytes(path); } catch (Exception ex) { Debug.Print("Failed to read file contents. "+ ex.Message); return; } var db = new FishTaggingDataContext(); var file = new RawDataFile { FileName = Path.GetFileName(path), FolderName = Path.GetDirectoryName(path), Contents = contents }; db.RawDataFiles.InsertOnSubmit(file); try { db.SubmitChanges(); } catch (Exception ex) { Debug.Print("Failed to submit file. " + ex.Message); } }
public void Parse_Header_2008R2() { var db = new RawDataFile(AW2008R2Path); var header = db.GetPage(184).Header; Assert.AreEqual(96, header.RawBytes.Count); Assert.AreEqual(8038, header.FreeCnt); Assert.AreEqual(152, header.FreeData); Assert.AreEqual(544, header.FlagBits); Assert.AreEqual("(20:577:120)", header.Lsn); Assert.AreEqual(33, header.ObjectID); Assert.AreEqual(PageType.Data, header.Type); Assert.AreEqual(21, header.Pminlen); Assert.AreEqual(256, header.IndexID); Assert.AreEqual(0x0, header.TypeFlagBits); Assert.AreEqual(1, header.SlotCnt); Assert.AreEqual("(0:572)", header.XdesID); Assert.AreEqual(0, header.XactReserved); Assert.AreEqual(0, header.ReservedCnt); Assert.AreEqual(0, header.Level); Assert.AreEqual(1, header.HeaderVersion); Assert.AreEqual(0, header.GhostRecCnt); Assert.AreEqual(0, header.NextPageFileID); Assert.AreEqual(0, header.NextPageID); Assert.AreEqual(0, header.PreviousPageFileID); Assert.AreEqual(0, header.PreviousPageID); Assert.AreEqual(184, header.PageID); Assert.AreEqual(1, header.FileID); Assert.AreEqual(new [] { 0xC8, 0x00, 0xBD, 0xBD }, header.Checksum.ToArray()); }
public void Parse_Header_2008() { var db = new RawDataFile(AW2008Path); var header = db.GetPage(187).Header; Assert.AreEqual(96, header.RawBytes.Count); Assert.AreEqual(8038, header.FreeCnt); Assert.AreEqual(152, header.FreeData); Assert.AreEqual(33280, header.FlagBits); Assert.AreEqual("(30:848:19)", header.Lsn); Assert.AreEqual(31, header.ObjectID); Assert.AreEqual(PageType.Data, header.Type); Assert.AreEqual(21, header.Pminlen); Assert.AreEqual(256, header.IndexID); Assert.AreEqual(0x4, header.TypeFlagBits); Assert.AreEqual(1, header.SlotCnt); Assert.AreEqual("(0:0)", header.XdesID); Assert.AreEqual(0, header.XactReserved); Assert.AreEqual(0, header.ReservedCnt); Assert.AreEqual(0, header.Level); Assert.AreEqual(1, header.HeaderVersion); Assert.AreEqual(0, header.GhostRecCnt); Assert.AreEqual(0, header.NextPageFileID); Assert.AreEqual(0, header.NextPageID); Assert.AreEqual(0, header.PreviousPageFileID); Assert.AreEqual(0, header.PreviousPageID); Assert.AreEqual(187, header.PageID); Assert.AreEqual(1, header.FileID); Assert.AreEqual(new [] { 0xCA, 0x80, 0x15, 0xFC }, header.Checksum.ToArray()); }
public void sysschobjs() { var db = new RawDataFile(AW2012Path); var pages = db.Pages.Where(x => x.Header.ObjectID == SQL2012Sysschobjs.ObjectID && x.Header.Type == PageType.Data); var rows = RawColumnParser.Parse(pages, SQL2012Sysschobjs.Schema).Select(SQL2012Sysschobjs.Row).ToList(); // Aggregates Assert.AreEqual(2291, rows.Count); Assert.AreEqual(48296, (int)rows.Average(x => x.status)); Assert.AreEqual(-394768470, (long)rows.Average(x => x.id)); // Individual rows var testRow = rows.Single(x => x.id == -93184835); Assert.AreEqual("sp_helpsrvrolemember", testRow.name); Assert.AreEqual(Convert.ToDateTime("2011-11-04 21:12:23.257"), testRow.created); testRow = rows.Single(x => x.id == 60); Assert.AreEqual("sysobjvalues", testRow.name); Assert.AreEqual(Convert.ToDateTime("2008-07-09 16:20:00.633"), testRow.modified); testRow = rows.Single(x => x.id == 1977058079); Assert.AreEqual("QueryNotificationErrorsQueue", testRow.name); Assert.AreEqual(Convert.ToDateTime("2008-07-09 16:20:00.913"), testRow.created); }
public void Parse_Address(string dbPath, int pageID) { var db = new RawDataFile(dbPath); var page = db.GetPage(pageID); var record = page.Records.First() as RawPrimaryRecord; var result = RawColumnParser.Parse(record, new IRawType[] { RawType.Int("AddressID"), RawType.NVarchar("AddressLine1"), RawType.NVarchar("AddressLine2"), RawType.NVarchar("City"), RawType.NVarchar("StateProvince"), RawType.NVarchar("CountryRegion"), RawType.NVarchar("PostalCode"), RawType.UniqueIdentifier("rowguid"), RawType.DateTime("ModifiedDate") }); Assert.AreEqual(9, ((Dictionary<string, object>)result).Count); Assert.AreEqual(9, result.AddressID); Assert.AreEqual("8713 Yosemite Ct.", result.AddressLine1); Assert.AreEqual(null, result.AddressLine2); Assert.AreEqual("Bothell", result.City); Assert.AreEqual("Washington", result.StateProvince); Assert.AreEqual("United States", result.CountryRegion); Assert.AreEqual("98011", result.PostalCode); Assert.AreEqual(new Guid("268af621-76d7-4c78-9441-144fd139821a"), result.rowguid); Assert.AreEqual(new DateTime(2002, 07, 01), result.ModifiedDate); }
private void ShowFile(RawDataFile file) { Cursor.Current = Cursors.WaitCursor; var form = new FileContentsForm(file.Contents.ToArray(), file.FileName); Cursor.Current = Cursors.Default; form.Show(this); }
public void Parse_Page(string dbPath, int pageID) { var db = new RawDataFile(dbPath); var page = db.GetPage(pageID); Assert.AreEqual(pageID, page.PageID); Assert.AreEqual(8192, page.RawBytes.Length); Assert.AreEqual(25, page.SlotArray.Count()); Assert.AreEqual(25, page.Records.Count()); }
public void Parse_SalesOrderHeader(string dbPath, int pageID, int customerID) { var db = new RawDataFile(dbPath); var page = db.GetPage(pageID); var record = page.Records.First() as RawPrimaryRecord; var result = RawColumnParser.Parse(record, new IRawType[] { RawType.Int("SalesOrderID"), RawType.TinyInt("RevisionNumber"), RawType.DateTime("OrderDate"), RawType.DateTime("DueDate"), RawType.DateTime("ShipDate"), RawType.TinyInt("Status"), RawType.Bit("OnlineOrderFlag"), RawType.NVarchar("PurchaseOrderNumber"), RawType.NVarchar("AccountNumber"), RawType.Int("CustomerID"), RawType.Int("ShipToAddressID"), RawType.Int("BillToAddressID"), RawType.NVarchar("ShipMethod"), RawType.Varchar("CreditCardApprovalCode"), RawType.Money("SubTotal"), RawType.Money("TaxAmt"), RawType.Money("Freight"), RawType.NVarchar("Comment"), RawType.UniqueIdentifier("rowguid"), RawType.DateTime("ModifiedDate") }); Assert.AreEqual(20, ((Dictionary <string, object>)result).Count); Assert.AreEqual(71774, result.SalesOrderID); Assert.AreEqual(1, result.RevisionNumber); Assert.AreEqual(Convert.ToDateTime("2004-06-01"), result.OrderDate); Assert.AreEqual(Convert.ToDateTime("2004-06-13"), result.DueDate); Assert.AreEqual(Convert.ToDateTime("2004-06-08"), result.ShipDate); Assert.AreEqual(5, result.Status); Assert.AreEqual(false, result.OnlineOrderFlag); Assert.AreEqual("PO348186287", result.PurchaseOrderNumber); Assert.AreEqual("10-4020-000609", result.AccountNumber); Assert.AreEqual(customerID, result.CustomerID); Assert.AreEqual(1092, result.ShipToAddressID); Assert.AreEqual(1092, result.BillToAddressID); Assert.AreEqual("CARGO TRANSPORT 5", result.ShipMethod); Assert.AreEqual(null, result.CreditCardApprovalCode); Assert.AreEqual(880.3484, result.SubTotal); Assert.AreEqual(70.4279, result.TaxAmt); Assert.AreEqual(22.0087, result.Freight); Assert.AreEqual(null, result.Comment); Assert.AreEqual(new Guid("89e42cdc-8506-48a2-b89b-eb3e64e3554e"), result.rowguid); Assert.AreEqual(Convert.ToDateTime("2004-06-08"), result.ModifiedDate); }
public void Parse_Product(string dbPath, int pageID) { var db = new RawDataFile(dbPath); var page = db.GetPage(pageID); var record = page.Records.First() as RawPrimaryRecord; var result = RawColumnParser.Parse(record, new IRawType[] { RawType.Int("ProductID"), RawType.NVarchar("Name"), RawType.NVarchar("ProductNumber"), RawType.NVarchar("Color"), RawType.Money("StandardCost"), RawType.Money("ListPrice"), RawType.NVarchar("Size"), RawType.Decimal("Weight", 8, 2), RawType.Int("ProductCategoryID"), RawType.Int("ProductModelID"), RawType.DateTime("SellStartDate"), RawType.DateTime("SellEndDate"), RawType.DateTime("DiscontinuedDate"), RawType.VarBinary("ThumbNailPhoto"), RawType.NVarchar("ThumbnailPhotoFileName"), RawType.UniqueIdentifier("rowguid"), RawType.DateTime("ModifiedDate") }); Assert.AreEqual(17, ((Dictionary <string, object>)result).Count); Assert.AreEqual(680, result.ProductID); Assert.AreEqual("HL Road Frame - Black, 58", result.Name); Assert.AreEqual("FR-R92B-58", result.ProductNumber); Assert.AreEqual("Black", result.Color); Assert.AreEqual(1059.31, result.StandardCost); Assert.AreEqual(1431.50, result.ListPrice); Assert.AreEqual("58", result.Size); Assert.AreEqual(1016.04, result.Weight); Assert.AreEqual(18, result.ProductCategoryID); Assert.AreEqual(6, result.ProductModelID); Assert.AreEqual(Convert.ToDateTime("1998-06-01"), result.SellStartDate); Assert.AreEqual(null, result.SellEndDate); Assert.AreEqual(null, result.DiscontinuedDate); Assert.AreEqual(1077, result.ThumbNailPhoto.Length); Assert.AreEqual("no_image_available_small.gif", result.ThumbnailPhotoFileName); Assert.AreEqual(new Guid("43dd68d6-14a4-461f-9069-55309d90ea7e"), result.rowguid); Assert.AreEqual(Convert.ToDateTime("2004-03-11 10:01:36.827"), result.ModifiedDate); }
public void Parse_ProductDescription(string dbPath, int pageID) { var db = new RawDataFile(dbPath); var page = db.GetPage(pageID); var record = page.Records.First() as RawPrimaryRecord; var result = RawColumnParser.Parse(record, new IRawType[] { RawType.Int("ProductDescriptionID"), RawType.NVarchar("Description"), RawType.UniqueIdentifier("rowguid"), RawType.DateTime("ModifiedDate") }); Assert.AreEqual(4, ((Dictionary <string, object>)result).Count); Assert.AreEqual(3, result.ProductDescriptionID); Assert.AreEqual("Chromoly steel.", result.Description); Assert.AreEqual(new Guid("301eed3a-1a82-4855-99cb-2afe8290d641"), result.rowguid); Assert.AreEqual(Convert.ToDateTime("2003-06-01"), result.ModifiedDate); }
public void Parse_BuildVersion(string dbPath, int pageID, string databaseVersion, string versionDate) { var db = new RawDataFile(dbPath); var page = db.GetPage(pageID); var record = page.Records.First() as RawPrimaryRecord; var result = RawColumnParser.Parse(record, new IRawType[] { RawType.TinyInt("SystemInformationID"), RawType.NVarchar("Database Version"), RawType.DateTime("VersionDate"), RawType.DateTime("ModifiedDate") }); Assert.AreEqual(4, ((Dictionary <string, object>)result).Count); Assert.AreEqual(1, result.SystemInformationID); Assert.AreEqual(databaseVersion, ((Dictionary <string, object>)result)["Database Version"]); Assert.AreEqual(Convert.ToDateTime(versionDate), result.VersionDate); Assert.AreEqual(Convert.ToDateTime(versionDate), result.ModifiedDate); }
public void Parse_BuildVersion(string dbPath, int pageID, string databaseVersion, string versionDate) { var db = new RawDataFile(dbPath); var page = db.GetPage(pageID); var record = page.Records.First() as RawPrimaryRecord; var result = RawColumnParser.Parse(record, new IRawType[] { RawType.TinyInt("SystemInformationID"), RawType.NVarchar("Database Version"), RawType.DateTime("VersionDate"), RawType.DateTime("ModifiedDate") }); Assert.AreEqual(4, ((Dictionary<string, object>)result).Count); Assert.AreEqual(1, result.SystemInformationID); Assert.AreEqual(databaseVersion, ((Dictionary<string, object>)result)["Database Version"]); Assert.AreEqual(Convert.ToDateTime(versionDate), result.VersionDate); Assert.AreEqual(Convert.ToDateTime(versionDate), result.ModifiedDate); }
public void Parse_Customer(string dbPath, int pageID, string modifiedDate) { var db = new RawDataFile(dbPath); var page = db.GetPage(pageID); var record = page.Records.First() as RawPrimaryRecord; var result = RawColumnParser.Parse(record, new IRawType[] { RawType.Int("CustomerID"), RawType.Bit("NameStyle"), RawType.NVarchar("Title"), RawType.NVarchar("FirstName"), RawType.NVarchar("MiddleName"), RawType.NVarchar("LastName"), RawType.NVarchar("Suffix"), RawType.NVarchar("CompanyName"), RawType.NVarchar("SalesPerson"), RawType.NVarchar("EmailAddress"), RawType.NVarchar("Phone"), RawType.Varchar("PasswordHash"), RawType.Varchar("PasswordSalt"), RawType.UniqueIdentifier("rowguid"), RawType.DateTime("ModifiedDate") }); Assert.AreEqual(15, ((Dictionary <string, object>)result).Count); Assert.AreEqual(1, result.CustomerID); Assert.AreEqual(false, result.NameStyle); Assert.AreEqual("Mr.", result.Title); Assert.AreEqual("Orlando", result.FirstName); Assert.AreEqual("N.", result.MiddleName); Assert.AreEqual("Gee", result.LastName); Assert.AreEqual(null, result.Suffix); Assert.AreEqual("A Bike Store", result.CompanyName); Assert.AreEqual(@"adventure-works\pamela0", result.SalesPerson); Assert.AreEqual("*****@*****.**", result.EmailAddress); Assert.AreEqual("245-555-0173", result.Phone); Assert.AreEqual("L/Rlwxzp4w7RWmEgXX+/A7cXaePEPcp+KwQhl2fJL7w=", result.PasswordHash); Assert.AreEqual("1KjXYs4=", result.PasswordSalt); Assert.AreEqual(new Guid("3f5ae95e-b87d-4aed-95b4-c3797afcb74f"), result.rowguid); Assert.AreEqual(Convert.ToDateTime(modifiedDate), result.ModifiedDate); }
public void Parse_Customer(string dbPath, int pageID, string modifiedDate) { var db = new RawDataFile(dbPath); var page = db.GetPage(pageID); var record = page.Records.First() as RawPrimaryRecord; var result = RawColumnParser.Parse(record, new IRawType[] { RawType.Int("CustomerID"), RawType.Bit("NameStyle"), RawType.NVarchar("Title"), RawType.NVarchar("FirstName"), RawType.NVarchar("MiddleName"), RawType.NVarchar("LastName"), RawType.NVarchar("Suffix"), RawType.NVarchar("CompanyName"), RawType.NVarchar("SalesPerson"), RawType.NVarchar("EmailAddress"), RawType.NVarchar("Phone"), RawType.Varchar("PasswordHash"), RawType.Varchar("PasswordSalt"), RawType.UniqueIdentifier("rowguid"), RawType.DateTime("ModifiedDate") }); Assert.AreEqual(15, ((Dictionary<string, object>)result).Count); Assert.AreEqual(1, result.CustomerID); Assert.AreEqual(false, result.NameStyle); Assert.AreEqual("Mr.", result.Title); Assert.AreEqual("Orlando", result.FirstName); Assert.AreEqual("N.", result.MiddleName); Assert.AreEqual("Gee", result.LastName); Assert.AreEqual(null, result.Suffix); Assert.AreEqual("A Bike Store", result.CompanyName); Assert.AreEqual(@"adventure-works\pamela0", result.SalesPerson); Assert.AreEqual("*****@*****.**", result.EmailAddress); Assert.AreEqual("245-555-0173", result.Phone); Assert.AreEqual("L/Rlwxzp4w7RWmEgXX+/A7cXaePEPcp+KwQhl2fJL7w=", result.PasswordHash); Assert.AreEqual("1KjXYs4=", result.PasswordSalt); Assert.AreEqual(new Guid("3f5ae95e-b87d-4aed-95b4-c3797afcb74f"), result.rowguid); Assert.AreEqual(Convert.ToDateTime(modifiedDate), result.ModifiedDate); }
public void Parse(string dbPath, int pageID, byte secondNullBitmapByte, string title) { var db = new RawDataFile(dbPath); var page = db.GetPage(pageID); var record = (RawPrimaryRecord)page.Records.First(); Assert.AreEqual(true, record.HasNullBitmap); Assert.AreEqual(true, record.HasVariableLengthColumns); Assert.AreEqual(false, record.HasVersioningInformation); Assert.AreEqual(false, record.IsGhostForwardedRecord); Assert.AreEqual(0x30, record.RawStatusByteA); Assert.AreEqual(0x00, record.RawStatusByteB); Assert.AreEqual(false, record.Version); Assert.AreEqual(29, record.FixedLengthData.Count); Assert.AreEqual(15, record.NullBitmapColumnCount); Assert.AreEqual(new[] { 0x40, secondNullBitmapByte }, record.NullBitmapRawBytes.ToArray()); Assert.AreEqual(11, record.NumberOfVariableLengthOffsetArrayEntries); Assert.AreEqual(11, record.VariableLengthOffsetValues.Count()); Assert.AreEqual(6, record.VariableLengthOffsetValues.ToArray()[0].Count); Assert.AreEqual(title, Encoding.Unicode.GetString(record.VariableLengthOffsetValues.ToArray()[0].ToArray())); }
public void Parse_CustomerAddress(string dbPath, int pageID, int customerID, int addressID, string rowguid, string modifiedDate) { var db = new RawDataFile(dbPath); var page = db.GetPage(pageID); var record = page.Records.First() as RawPrimaryRecord; var result = RawColumnParser.Parse(record, new IRawType[] { RawType.Int("CustomerID"), RawType.Int("AddressID"), RawType.NVarchar("AddressType"), RawType.UniqueIdentifier("rowguid"), RawType.DateTime("ModifiedDate") }); Assert.AreEqual(5, ((Dictionary <string, object>)result).Count); Assert.AreEqual(customerID, result.CustomerID); Assert.AreEqual(addressID, result.AddressID); Assert.AreEqual("Main Office", result.AddressType); Assert.AreEqual(new Guid(rowguid), result.rowguid); Assert.AreEqual(Convert.ToDateTime(modifiedDate), result.ModifiedDate); }
public void Parse_ProductCategory(string dbPath, int pageID) { var db = new RawDataFile(dbPath); var page = db.GetPage(pageID); var record = page.Records.First() as RawPrimaryRecord; var result = RawColumnParser.Parse(record, new IRawType[] { RawType.Int("ProductCategoryID"), RawType.Int("ParentProductCategoryID"), RawType.NVarchar("Name"), RawType.UniqueIdentifier("rowguid"), RawType.DateTime("ModifiedDate") }); Assert.AreEqual(5, ((Dictionary <string, object>)result).Count); Assert.AreEqual(1, result.ProductCategoryID); Assert.AreEqual(null, result.ParentProductCategoryID); Assert.AreEqual("Bikes", result.Name); Assert.AreEqual(new Guid("cfbda25c-df71-47a7-b81b-64ee161aa37c"), result.rowguid); Assert.AreEqual(Convert.ToDateTime("1998-06-01"), result.ModifiedDate); }
public void Parse_ProductModel(string dbPath, int pageID) { var db = new RawDataFile(dbPath); var page = db.GetPage(pageID); var record = page.Records.First() as RawPrimaryRecord; var result = RawColumnParser.Parse(record, new IRawType[] { RawType.Int("ProductModelID"), RawType.NVarchar("Name"), RawType.Xml("CatalogDescription"), RawType.UniqueIdentifier("rowguid"), RawType.DateTime("ModifiedDate") }); Assert.AreEqual(5, ((Dictionary <string, object>)result).Count); Assert.AreEqual(1, result.ProductModelID); Assert.AreEqual("Classic Vest", result.Name); Assert.AreEqual(null, result.CatalogDescription); Assert.AreEqual(new Guid("29321d47-1e4c-4aac-887c-19634328c25e"), result.rowguid); Assert.AreEqual(Convert.ToDateTime("2003-06-01"), result.ModifiedDate); }
public void Parse_ProductModelProductDescription(string dbPath, int pageID, string rowguid) { var db = new RawDataFile(dbPath); var page = db.GetPage(pageID); var record = page.Records.First() as RawPrimaryRecord; var result = RawColumnParser.Parse(record, new IRawType[] { RawType.Int("ProductModelID"), RawType.Int("ProductDescriptionID"), RawType.NChar("Culture", 6), RawType.UniqueIdentifier("rowguid"), RawType.DateTime("ModifiedDate") }); Assert.AreEqual(5, ((Dictionary <string, object>)result).Count); Assert.AreEqual(1, result.ProductModelID); Assert.AreEqual(1199, result.ProductDescriptionID); Assert.AreEqual("en".PadRight(6, ' '), result.Culture); Assert.AreEqual(new Guid(rowguid), result.rowguid); Assert.AreEqual(Convert.ToDateTime("2003-06-01"), result.ModifiedDate); }
public void sysallocunits() { var db = new RawDataFile(AW2012Path); var pages = db.Pages.Where(x => x.Header.ObjectID == SQL2012Sysallocunits.ObjectID && x.Header.Type == PageType.Data); var rows = RawColumnParser.Parse(pages, SQL2012Sysallocunits.Schema).Select(SQL2012Sysallocunits.Row).ToList(); // Aggregates Assert.AreEqual(181, rows.Count); Assert.AreEqual(27335730062154916, (long)rows.Average(x => x.auid)); Assert.AreEqual(3, (int)rows.Average(x => x.pcdata)); // Individual rows var testRow = rows.Single(x => x.auid == 562949958533120); Assert.AreEqual(562949958533120, testRow.ownerid); Assert.AreEqual(0, testRow.pcdata); testRow = rows.Single(x => x.auid == 196608); Assert.AreEqual(1, testRow.type); Assert.AreEqual(17, testRow.pcreserved); Assert.AreEqual(13, testRow.pcused); Assert.AreEqual(new byte[] { 0x57, 0x00, 0x00, 0x00, 0x01, 0x00 }, testRow.pgroot); }
public void syscolpars() { var db = new RawDataFile(AW2012Path); var pages = db.Pages.Where(x => x.Header.ObjectID == SQL2012Syscolpars.ObjectID && x.Header.Type == PageType.Data); var rows = RawColumnParser.Parse(pages, SQL2012Syscolpars.Schema).Select(SQL2012Syscolpars.Row).ToList(); // Aggregates Assert.AreEqual(860, rows.Count); Assert.AreEqual(317769461, (int)rows.Average(x => x.id)); Assert.AreEqual(105, (int)rows.Average(x => x.xtype)); Assert.AreEqual(8, (int)rows.Average(x => x.name.Length)); // Individual rows var testRow = rows.Single(x => x.id == 25 && x.colid == 12); Assert.AreEqual("bXVTDocidUseBaseT", testRow.name); Assert.AreEqual(48, testRow.utype); testRow = rows.Single(x => x.id == 73 && x.colid == 13); Assert.AreEqual("enddlgseq", testRow.name); Assert.AreEqual(127, testRow.utype); Assert.AreEqual(null, testRow.idtval); }
public void sysrowsets() { var db = new RawDataFile(AW2012Path); var pages = db.Pages.Where(x => x.Header.ObjectID == SQL2012Sysrowsets.ObjectID && x.Header.Type == PageType.Data); var rows = RawColumnParser.Parse(pages, SQL2012Sysrowsets.Schema).Select(SQL2012Sysrowsets.Row).ToList(); // Aggregates Assert.AreEqual(158, rows.Count); Assert.AreEqual(72057594041729024, rows.Max(x => x.rowsetid)); Assert.AreEqual(196608, rows.Min(x => x.rowsetid)); Assert.AreEqual(20827366792640280, (long)rows.Average(x => x.rowsetid)); Assert.AreEqual(7662, (long)rows.Average(x => x.status)); Assert.AreEqual(2266, (long)rows.Average(x => x.maxleaf)); // Individual rows var testRow = rows.Single(x => x.rowsetid == 562949954535424); Assert.AreEqual(70, testRow.status); Assert.AreEqual(534, testRow.maxint); testRow = rows.Single(x => x.rowsetid == 72057594039697408); Assert.AreEqual(117575457, testRow.idmajor); Assert.AreEqual(1453, testRow.maxleaf); }
public void Parse_CustomerAddress(string dbPath, int pageID, int customerID, int addressID, string rowguid, string modifiedDate) { var db = new RawDataFile(dbPath); var page = db.GetPage(pageID); var record = page.Records.First() as RawPrimaryRecord; var result = RawColumnParser.Parse(record, new IRawType[] { RawType.Int("CustomerID"), RawType.Int("AddressID"), RawType.NVarchar("AddressType"), RawType.UniqueIdentifier("rowguid"), RawType.DateTime("ModifiedDate") }); Assert.AreEqual(5, ((Dictionary<string, object>)result).Count); Assert.AreEqual(customerID, result.CustomerID); Assert.AreEqual(addressID, result.AddressID); Assert.AreEqual("Main Office", result.AddressType); Assert.AreEqual(new Guid(rowguid), result.rowguid); Assert.AreEqual(Convert.ToDateTime(modifiedDate), result.ModifiedDate); }
public void Parse_Product(string dbPath, int pageID) { var db = new RawDataFile(dbPath); var page = db.GetPage(pageID); var record = page.Records.First() as RawPrimaryRecord; var result = RawColumnParser.Parse(record, new IRawType[] { RawType.Int("ProductID"), RawType.NVarchar("Name"), RawType.NVarchar("ProductNumber"), RawType.NVarchar("Color"), RawType.Money("StandardCost"), RawType.Money("ListPrice"), RawType.NVarchar("Size"), RawType.Decimal("Weight", 8, 2), RawType.Int("ProductCategoryID"), RawType.Int("ProductModelID"), RawType.DateTime("SellStartDate"), RawType.DateTime("SellEndDate"), RawType.DateTime("DiscontinuedDate"), RawType.VarBinary("ThumbNailPhoto"), RawType.NVarchar("ThumbnailPhotoFileName"), RawType.UniqueIdentifier("rowguid"), RawType.DateTime("ModifiedDate") }); Assert.AreEqual(17, ((Dictionary<string, object>)result).Count); Assert.AreEqual(680, result.ProductID); Assert.AreEqual("HL Road Frame - Black, 58", result.Name); Assert.AreEqual("FR-R92B-58", result.ProductNumber); Assert.AreEqual("Black", result.Color); Assert.AreEqual(1059.31, result.StandardCost); Assert.AreEqual(1431.50, result.ListPrice); Assert.AreEqual("58", result.Size); Assert.AreEqual(1016.04, result.Weight); Assert.AreEqual(18, result.ProductCategoryID); Assert.AreEqual(6, result.ProductModelID); Assert.AreEqual(Convert.ToDateTime("1998-06-01"), result.SellStartDate); Assert.AreEqual(null, result.SellEndDate); Assert.AreEqual(null, result.DiscontinuedDate); Assert.AreEqual(1077, result.ThumbNailPhoto.Length); Assert.AreEqual("no_image_available_small.gif", result.ThumbnailPhotoFileName); Assert.AreEqual(new Guid("43dd68d6-14a4-461f-9069-55309d90ea7e"), result.rowguid); Assert.AreEqual(Convert.ToDateTime("2004-03-11 10:01:36.827"), result.ModifiedDate); }
public void Parse_ProductCategory(string dbPath, int pageID) { var db = new RawDataFile(dbPath); var page = db.GetPage(pageID); var record = page.Records.First() as RawPrimaryRecord; var result = RawColumnParser.Parse(record, new IRawType[] { RawType.Int("ProductCategoryID"), RawType.Int("ParentProductCategoryID"), RawType.NVarchar("Name"), RawType.UniqueIdentifier("rowguid"), RawType.DateTime("ModifiedDate") }); Assert.AreEqual(5, ((Dictionary<string, object>)result).Count); Assert.AreEqual(1, result.ProductCategoryID); Assert.AreEqual(null, result.ParentProductCategoryID); Assert.AreEqual("Bikes", result.Name); Assert.AreEqual(new Guid("cfbda25c-df71-47a7-b81b-64ee161aa37c"), result.rowguid); Assert.AreEqual(Convert.ToDateTime("1998-06-01"), result.ModifiedDate); }
public void Constructor(string dbPath, int expectedPageCount) { var db = new RawDataFile(dbPath); Assert.AreEqual(expectedPageCount, db.Pages.Count()); }
public void Parse_ProductModel(string dbPath, int pageID) { var db = new RawDataFile(dbPath); var page = db.GetPage(pageID); var record = page.Records.First() as RawPrimaryRecord; var result = RawColumnParser.Parse(record, new IRawType[] { RawType.Int("ProductModelID"), RawType.NVarchar("Name"), RawType.Xml("CatalogDescription"), RawType.UniqueIdentifier("rowguid"), RawType.DateTime("ModifiedDate") }); Assert.AreEqual(5, ((Dictionary<string, object>)result).Count); Assert.AreEqual(1, result.ProductModelID); Assert.AreEqual("Classic Vest", result.Name); Assert.AreEqual(null, result.CatalogDescription); Assert.AreEqual(new Guid("29321d47-1e4c-4aac-887c-19634328c25e"), result.rowguid); Assert.AreEqual(Convert.ToDateTime("2003-06-01"), result.ModifiedDate); }
public void Parse_ProductModelProductDescription(string dbPath, int pageID, string rowguid) { var db = new RawDataFile(dbPath); var page = db.GetPage(pageID); var record = page.Records.First() as RawPrimaryRecord; var result = RawColumnParser.Parse(record, new IRawType[] { RawType.Int("ProductModelID"), RawType.Int("ProductDescriptionID"), RawType.NChar("Culture", 6), RawType.UniqueIdentifier("rowguid"), RawType.DateTime("ModifiedDate") }); Assert.AreEqual(5, ((Dictionary<string, object>)result).Count); Assert.AreEqual(1, result.ProductModelID); Assert.AreEqual(1199, result.ProductDescriptionID); Assert.AreEqual("en".PadRight(6, ' '), result.Culture); Assert.AreEqual(new Guid(rowguid), result.rowguid); Assert.AreEqual(Convert.ToDateTime("2003-06-01"), result.ModifiedDate); }
public void Parse_SalesOrderDetail(string dbPath, int pageID) { var db = new RawDataFile(dbPath); var page = db.GetPage(pageID); var record = page.Records.First() as RawPrimaryRecord; var result = RawColumnParser.Parse(record, new IRawType[] { RawType.Int("SalesOrderID"), RawType.Int("SalesOrderDetailID"), RawType.SmallInt("OrderQty"), RawType.Int("ProductID"), RawType.Money("UnitPrice"), RawType.Money("UnitPriceDiscount"), RawType.UniqueIdentifier("rowguid"), RawType.DateTime("ModifiedDate") }); Assert.AreEqual(8, ((Dictionary<string, object>)result).Count); Assert.AreEqual(71774, result.SalesOrderID); Assert.AreEqual(110562, result.SalesOrderDetailID); Assert.AreEqual(1, result.OrderQty); Assert.AreEqual(836, result.ProductID); Assert.AreEqual(356.898, result.UnitPrice); Assert.AreEqual(0.00, result.UnitPriceDiscount); Assert.AreEqual(new Guid("e3a1994c-7a68-4ce8-96a3-77fdd3bbd730"), result.rowguid); Assert.AreEqual(Convert.ToDateTime("2004-06-01"), result.ModifiedDate); }
public void Parse_SalesOrderHeader(string dbPath, int pageID, int customerID) { var db = new RawDataFile(dbPath); var page = db.GetPage(pageID); var record = page.Records.First() as RawPrimaryRecord; var result = RawColumnParser.Parse(record, new IRawType[] { RawType.Int("SalesOrderID"), RawType.TinyInt("RevisionNumber"), RawType.DateTime("OrderDate"), RawType.DateTime("DueDate"), RawType.DateTime("ShipDate"), RawType.TinyInt("Status"), RawType.Bit("OnlineOrderFlag"), RawType.NVarchar("PurchaseOrderNumber"), RawType.NVarchar("AccountNumber"), RawType.Int("CustomerID"), RawType.Int("ShipToAddressID"), RawType.Int("BillToAddressID"), RawType.NVarchar("ShipMethod"), RawType.Varchar("CreditCardApprovalCode"), RawType.Money("SubTotal"), RawType.Money("TaxAmt"), RawType.Money("Freight"), RawType.NVarchar("Comment"), RawType.UniqueIdentifier("rowguid"), RawType.DateTime("ModifiedDate") }); Assert.AreEqual(20, ((Dictionary<string, object>)result).Count); Assert.AreEqual(71774, result.SalesOrderID); Assert.AreEqual(1, result.RevisionNumber); Assert.AreEqual(Convert.ToDateTime("2004-06-01"), result.OrderDate); Assert.AreEqual(Convert.ToDateTime("2004-06-13"), result.DueDate); Assert.AreEqual(Convert.ToDateTime("2004-06-08"), result.ShipDate); Assert.AreEqual(5, result.Status); Assert.AreEqual(false, result.OnlineOrderFlag); Assert.AreEqual("PO348186287", result.PurchaseOrderNumber); Assert.AreEqual("10-4020-000609", result.AccountNumber); Assert.AreEqual(customerID, result.CustomerID); Assert.AreEqual(1092, result.ShipToAddressID); Assert.AreEqual(1092, result.BillToAddressID); Assert.AreEqual("CARGO TRANSPORT 5", result.ShipMethod); Assert.AreEqual(null, result.CreditCardApprovalCode); Assert.AreEqual(880.3484, result.SubTotal); Assert.AreEqual(70.4279, result.TaxAmt); Assert.AreEqual(22.0087, result.Freight); Assert.AreEqual(null, result.Comment); Assert.AreEqual(new Guid("89e42cdc-8506-48a2-b89b-eb3e64e3554e"), result.rowguid); Assert.AreEqual(Convert.ToDateTime("2004-06-08"), result.ModifiedDate); }
private void openToolStripMenuItem1_Click(object sender, EventArgs e) { var result = openDatabaseDialog.ShowDialog(); file = ""; if (result == DialogResult.OK) { try { var files = openDatabaseDialog.FileNames; file = files[0]; db = new Database(files); refreshTreeview(); } catch (Exception ex) { logException(ex); try { dbf = new RawDataFile(file); var records = dbf.Pages .Where(x => x.Header.ObjectID == 34 && x.Header.Type == PageType.Data) .SelectMany(x => x.Records); var rows = records.Select(x => RawColumnParser.Parse((RawRecord)x, new IRawType[] { RawType.Int("id"), RawType.NVarchar("name"), RawType.Int("nsid"), RawType.TinyInt("nsclass"), RawType.Int("status"), RawType.Char("type", 2), RawType.Int("pid"), RawType.TinyInt("pclass"), RawType.Int("intprop"), RawType.DateTime("created"), RawType.DateTime("modified") })); rawtables = rows .Where(x => x.GetColumnValue("type").ToString().Trim() == "U"); rawrefreshTreeview(); } catch (Exception rawex) { logException(rawex); try { var bestdbf = new RawDataFile(file); var SysschobjsPages = bestdbf.Pages .Where(x => x.Header.ObjectID == 34 && x.Header.Type == PageType.Data); var bestRecords = RawColumnParser.BestEffortParse(SysschobjsPages, new IRawType[] { RawType.Int("id"), RawType.NVarchar("name"), RawType.Int("nsid"), RawType.TinyInt("nsclass"), RawType.Int("status"), RawType.Char("type", 2), RawType.Int("pid"), RawType.TinyInt("pclass"), RawType.Int("intprop"), RawType.DateTime("created"), RawType.DateTime("modified") }); rawtables = bestRecords .Where(x => x.GetColumnValue("type").ToString().Trim() == "U"); var syscolparspages = bestdbf.Pages.Where(x => x.Header.ObjectID == 41 && x.Header.Type == PageType.Data); var syscolparsrecords = syscolparspages.SelectMany(x => x.Records).Select(x => (RawPrimaryRecord)x); var syscolparsrows = RawColumnParser.BestEffortParse(syscolparspages, new IRawType[] { RawType.Int("id"), RawType.SmallInt("number"), RawType.Int("colid"), RawType.NVarchar("name"), RawType.TinyInt("xtype"), RawType.Int("utype"), RawType.SmallInt("length"), RawType.TinyInt("prec"), RawType.TinyInt("scale"), RawType.Int("collationid"), RawType.Int("status"), RawType.SmallInt("maxinrow"), RawType.Int("xmlns"), RawType.Int("dflt"), RawType.Int("chk"), RawType.VarBinary("idtval") }); rawcolumns = syscolparsrows.Select(x => new { ObjectID = (int?)x.GetColumnValue("id"), ColumnID = (int?)x.GetColumnValue("colid"), Number = (short?)x.GetColumnValue("number"), TypeID = (byte?)x.GetColumnValue("xtype"), Length = (short?)x.GetColumnValue("length"), Name = x.GetColumnValue("name") }); rawrefreshTreeview(); } catch (Exception bestrawex) { logException(bestrawex); } } } } }
public void Parse_ProductDescription(string dbPath, int pageID) { var db = new RawDataFile(dbPath); var page = db.GetPage(pageID); var record = page.Records.First() as RawPrimaryRecord; var result = RawColumnParser.Parse(record, new IRawType[] { RawType.Int("ProductDescriptionID"), RawType.NVarchar("Description"), RawType.UniqueIdentifier("rowguid"), RawType.DateTime("ModifiedDate") }); Assert.AreEqual(4, ((Dictionary<string, object>)result).Count); Assert.AreEqual(3, result.ProductDescriptionID); Assert.AreEqual("Chromoly steel.", result.Description); Assert.AreEqual(new Guid("301eed3a-1a82-4855-99cb-2afe8290d641"), result.rowguid); Assert.AreEqual(Convert.ToDateTime("2003-06-01"), result.ModifiedDate); }