public void DeleteTreeDefaultValue(TreeDefaultValue tdv) { Database.Execute2("DELETE FROM TreeDefaultValue WHERE CruiseID = @CruiseID AND ifnull(SpeciesCode, '') = ifnull(@SpeciesCode, '') AND ifnull(PrimaryProduct, '') = ifnull(@PrimaryProduct, '')", new { CruiseID, tdv.SpeciesCode, tdv.PrimaryProduct, }); }
public void SyncDesign_Test_PullTreeDefaults() { var(master, compDbs) = MakeFiles(numComponents: 2); var components = compDbs.Select((x, i) => { return(new ComponentFile() { Database = x, Component_CN = i }); }) .ToArray(); var commandBuilders = MergeComponentsPresenter.MakeCommandBuilders(master) .ToDictionary(x => x.ClientTableName); var comp1 = compDbs.First(); var comp1TDV1 = new TreeDefaultValue() { TreeDefaultValue_CN = 1000, Species = "nsp1", PrimaryProduct = "01", LiveDead = "L", }; comp1.Insert(comp1TDV1); MergeSyncWorker.SyncDesign( master, components, new System.Threading.CancellationToken(), (IProgress <int>)null, TestMergeLogWriter); var mastTDV1 = master.From <TreeDefaultValue>().Where($"Species = 'nsp1'").Query().FirstOrDefault(); mastTDV1.Should().NotBeNull(); ValidateTDVSame(mastTDV1, comp1TDV1); // because there should be no conflict with the CN values between the master and the component // the synced tdv should have the same cn value mastTDV1.TreeDefaultValue_CN.Should().Be(comp1TDV1.TreeDefaultValue_CN); var comp2 = compDbs.ElementAt(1); var comp2TDV1 = comp2.From <TreeDefaultValue>().Where("Species = 'nsp1'").Query().FirstOrDefault(); ValidateTDVSame(comp2TDV1, comp2TDV1); comp2TDV1.TreeDefaultValue_CN.Should().Be(comp1TDV1.TreeDefaultValue_CN); void ValidateTDVSame(TreeDefaultValue tdv1, TreeDefaultValue tdv2) { tdv1.Species.Should().Be(tdv2.Species); tdv1.PrimaryProduct.Should().Be(tdv2.PrimaryProduct); tdv1.LiveDead.Should().Be(tdv2.LiveDead); } }
public void SyncTreeDefaultValues_Add() { var fromPath = base.GetTempFilePath(".crz3", "SyncTreeDefaultValues_Add_fromFile"); var toPath = base.GetTempFilePath(".crz3", "SyncTreeDefaultValues_Add_toFile"); var syncOptions = new CruiseSyncOptions() { Processing = SyncFlags.Insert, }; var init = new DatabaseInitializer() { TreeDefaults = null, }; var cruiseID = init.CruiseID; var saleID = init.SaleID; using var fromDb = init.CreateDatabaseFile(fromPath); fromDb.CopyTo(toPath, true); using var toDb = new CruiseDatastore_V3(toPath); var tdv = new TreeDefaultValue { CruiseID = cruiseID, SpeciesCode = "sp1", PrimaryProduct = "01", }; fromDb.Insert(tdv); var syncer = new CruiseSyncer(); syncer.Sync(cruiseID, fromDb, toDb, syncOptions); toDb.From <TreeDefaultValue>().Count().Should().Be(1); }
public void UpsertTreeDefaultValue(TreeDefaultValue tdv) { var changes = Database.Execute2( @"INSERT INTO TreeDefaultValue ( CruiseID, SpeciesCode, PrimaryProduct, CullPrimary, CullPrimaryDead, HiddenPrimary, HiddenPrimaryDead, TreeGrade, TreeGradeDead, CullSecondary, HiddenSecondary, Recoverable, MerchHeightLogLength, MerchHeightType, FormClass, BarkThicknessRatio, AverageZ, ReferenceHeightPercent, CreatedBy ) VALUES ( @CruiseID, @SpeciesCode, @PrimaryProduct, @CullPrimary, @CullPrimaryDead, @HiddenPrimary, @HiddenPrimaryDead, @TreeGrade, @TreeGradeDead, @CullSecondary, @HiddenSecondary, @Recoverable, @MerchHeightLogLength, @MerchHeightType, @FormClass, @BarkThicknessRatio, @AverageZ, @ReferenceHeightPercent, @DeviceID) ON CONFLICT (CruiseID, ifnull(SpeciesCode, '') COLLATE NOCASE, ifnull(PrimaryProduct, '') COLLATE NOCASE) DO UPDATE SET CullPrimary = @CullPrimary, CullPrimaryDead = @CullPrimaryDead, HiddenPrimary = @HiddenPrimary, HiddenPrimaryDead = @HiddenPrimaryDead, TreeGrade = @TreeGrade, TreeGradeDead = @TreeGradeDead, CullSecondary = @CullSecondary, HiddenSecondary = @HiddenSecondary, Recoverable = @Recoverable, MerchHeightLogLength = @MerchHeightLogLength, MerchHeightType = @MerchHeightType, FormClass = @FormClass, BarkThicknessRatio = @BarkThicknessRatio, AverageZ = @AverageZ, ReferenceHeightPercent = @ReferenceHeightPercent, CreatedBy = @DeviceID WHERE CruiseID = @CruiseID AND ifnull(SpeciesCode, '') = ifnull(@SpeciesCode, '') AND ifnull(PrimaryProduct, '') = ifnull(@PrimaryProduct, '');", new { CruiseID, tdv.SpeciesCode, tdv.PrimaryProduct, tdv.CullPrimary, tdv.CullPrimaryDead, tdv.HiddenPrimary, tdv.HiddenPrimaryDead, tdv.TreeGrade, tdv.TreeGradeDead, tdv.CullSecondary, tdv.HiddenSecondary, tdv.Recoverable, tdv.MerchHeightLogLength, tdv.MerchHeightType, tdv.FormClass, tdv.BarkThicknessRatio, tdv.AverageZ, tdv.ReferenceHeightPercent, DeviceID, }); if (changes == 0) { throw new Exception("Expected changes to be greater than 0"); } }
public void AddTreeDefaultValue(TreeDefaultValue tdv) { Database.Execute2( @"INSERT INTO TreeDefaultValue ( CruiseID, SpeciesCode, PrimaryProduct, CullPrimary, CullPrimaryDead, HiddenPrimary, HiddenPrimaryDead, TreeGrade, TreeGradeDead, CullSecondary, HiddenSecondary, Recoverable, MerchHeightLogLength, MerchHeightType, FormClass, BarkThicknessRatio, AverageZ, ReferenceHeightPercent, CreatedBy ) VALUES ( @CruiseID, @SpeciesCode, @PrimaryProduct, @CullPrimary, @CullPrimaryDead, @HiddenPrimary, @HiddenPrimaryDead, @TreeGrade, @TreeGradeDead, @CullSecondary, @HiddenSecondary, @Recoverable, @MerchHeightLogLength, @MerchHeightType, @FormClass, @BarkThicknessRatio, @AverageZ, @ReferenceHeightPercent, @DeviceID );", new { CruiseID, tdv.SpeciesCode, tdv.PrimaryProduct, tdv.CullPrimary, tdv.CullPrimaryDead, tdv.HiddenPrimary, tdv.HiddenPrimaryDead, tdv.TreeGrade, tdv.TreeGradeDead, tdv.CullSecondary, tdv.HiddenSecondary, tdv.Recoverable, tdv.MerchHeightLogLength, tdv.MerchHeightType, tdv.FormClass, tdv.BarkThicknessRatio, tdv.AverageZ, tdv.ReferenceHeightPercent, DeviceID, }); }
public void SyncDesign_Test_PullTreeDefaults_master_has_cn_conflict() { var(master, comps) = MakeFiles(numComponents: 2); var compVMs = comps.Select((x, i) => { return(new ComponentFile() { Database = x, Component_CN = i }); }) .ToArray(); var comp1 = comps.First(); var comp1TDV1 = new TreeDefaultValue() { TreeDefaultValue_CN = 1000, Species = "nsp1", PrimaryProduct = "01", LiveDead = "L", }; comp1.Insert(comp1TDV1); var mastTDV2 = new TreeDefaultValue() { TreeDefaultValue_CN = 1000, Species = "nsp2", PrimaryProduct = "01", LiveDead = "L", }; master.Insert(mastTDV2); MergeSyncWorker.SyncDesign( master, compVMs, new System.Threading.CancellationToken(), (IProgress <int>)null, TestMergeLogWriter); var mastTDV1 = master.From <TreeDefaultValue>().Where($"Species = 'nsp1'").Query().FirstOrDefault(); mastTDV1.Should().NotBeNull(); ValidateTDVSame(mastTDV1, comp1TDV1); mastTDV1.TreeDefaultValue_CN.Should().NotBe(comp1TDV1.TreeDefaultValue_CN); var comp2 = comps.ElementAt(1); var comp2TDV1 = comp2.From <TreeDefaultValue>().Where("Species = 'nsp1'").Query().FirstOrDefault(); ValidateTDVSame(comp2TDV1, comp2TDV1); comp2TDV1.TreeDefaultValue_CN.Should().NotBe(comp1TDV1.TreeDefaultValue_CN); var comp1TDV1Again = comp1.From <TreeDefaultValue>().Where("Species = 'nsp1'").Query().FirstOrDefault(); ValidateTDVSame(comp2TDV1, mastTDV1); comp1TDV1Again.TreeDefaultValue_CN.Should().Be(mastTDV1.TreeDefaultValue_CN); void ValidateTDVSame(TreeDefaultValue tdv1, TreeDefaultValue tdv2) { tdv1.Species.Should().Be(tdv2.Species); tdv1.PrimaryProduct.Should().Be(tdv2.PrimaryProduct); tdv1.LiveDead.Should().Be(tdv2.LiveDead); } }