Esempio n. 1
0
        public void UpdateStratumCodeCascade()
        {
            var init = new DatabaseInitializer();

            using var db = init.CreateDatabase();

            var tree = new Tree
            {
                CruiseID        = init.CruiseID,
                TreeID          = Guid.NewGuid().ToString(),
                TreeNumber      = 1,
                CuttingUnitCode = "u1",
                StratumCode     = "st1",
                SampleGroupCode = "sg1",
            };

            db.Insert(tree);

            var tl = new TallyLedger
            {
                CruiseID        = init.CruiseID,
                TallyLedgerID   = Guid.NewGuid().ToString(),
                CuttingUnitCode = "u1",
                StratumCode     = "st1",
                SampleGroupCode = "sg1",
                TreeID          = tree.TreeID,
            };

            db.Insert(tl);

            var unitStratum = db.From <CuttingUnit_Stratum>().Where("StratumCode = 'st1'").Query().First();

            var stratum = db.From <Stratum>().Where("StratumCode = 'st1'").Query().Single();

            stratum.StratumCode = "st101";
            db.Update(stratum);

            var unitStratumAgain = db.From <CuttingUnit_Stratum>().Where("CuttingUnit_Stratum_CN = @p1").Query(unitStratum.CuttingUnit_Stratum_CN).Single();

            unitStratumAgain.StratumCode.Should().Be(stratum.StratumCode);

            var tlAgain = db.From <TallyLedger>().Query().First();

            tlAgain.StratumCode.Should().Be(stratum.StratumCode);

            var treeAgain = db.From <Tree>().Query().First();

            treeAgain.StratumCode.Should().Be(stratum.StratumCode);
        }
Esempio n. 2
0
        public void Update_Tree_Species_Cascades_To_TallyLedger_TallyBySg()
        {
            var init = new DatabaseInitializer();

            using var db = init.CreateDatabase();

            var tree = new Tree
            {
                CruiseID        = init.CruiseID,
                TreeID          = Guid.NewGuid().ToString(),
                TreeNumber      = 1,
                CuttingUnitCode = "u1",
                StratumCode     = "st1",
                SampleGroupCode = "sg1",
                //SpeciesCode = "sp1",
                //LiveDead = "L",
            };

            db.Insert(tree);

            var tl = new TallyLedger
            {
                CruiseID        = init.CruiseID,
                TallyLedgerID   = Guid.NewGuid().ToString(),
                CuttingUnitCode = "u1",
                StratumCode     = "st1",
                SampleGroupCode = "sg1",
                //SpeciesCode = "sp1",
                //LiveDead = "L",
                TreeID = tree.TreeID,
            };

            db.Insert(tl);


            tree.SpeciesCode = "sp2";
            tree.LiveDead    = "D";
            db.Update(tree);

            var tlAgain = db.From <TallyLedger>().Query().First();

            tlAgain.SpeciesCode.Should().Be(tree.SpeciesCode);
            tlAgain.LiveDead.Should().Be(tree.LiveDead);
        }
Esempio n. 3
0
        public void Sync_TallyLedger_Add()
        {
            var fromPath = base.GetTempFilePath(".crz3", "Sync_Unit_Add_fromFile");
            var toPath   = base.GetTempFilePath(".crz3", "Sync_Unit_Add_toFile");

            var syncOptions = new CruiseSyncOptions()
            {
                Design        = SyncFlags.Insert,
                FieldData     = SyncFlags.Insert,
                TreeDataFlags = SyncFlags.Insert,
                TreeFlags     = SyncFlags.Insert,
            };

            var cruiseID = Guid.NewGuid().ToString();
            var saleID   = Guid.NewGuid().ToString();

            using var fromDb = CreateDatabaseFile(fromPath, cruiseID, saleID);

            fromDb.CopyTo(toPath, true);
            using var toDb = new CruiseDatastore_V3(toPath);

            var newTallyLedger = new TallyLedger()
            {
                CruiseID        = cruiseID,
                TallyLedgerID   = Guid.NewGuid().ToString(),
                CuttingUnitCode = Units[0],
                StratumCode     = SampleGroups[0].StratumCode,
                SampleGroupCode = SampleGroups[0].SampleGroupCode,
                TreeCount       = 1,
            };

            fromDb.Insert(newTallyLedger);

            var syncer = new CruiseSyncer();

            syncer.Sync(cruiseID, fromDb, toDb, syncOptions);

            toDb.GetRowCount("TallyLedger", "WHERE TallyLedgerID = @p1", newTallyLedger.TallyLedgerID)
            .Should().Be(1);
        }
        public void InsertTallyLedger()
        {
            string unitCode    = UnitStrata[0].CuttingUnitCode;
            string stratum     = UnitStrata[0].StratumCode;
            string sampleGroup = Subpops[0].SampleGroupCode;
            string species     = Subpops[0].SpeciesCode;
            string liveDead    = Subpops[0].LiveDead;

            int treeCountDiff = 1;
            int kpi           = 1;

            using (var database = CreateDatabase())
            {
                var datastore = new TallyDataservice(database, CruiseID, TestDeviceInfoService.TEST_DEVICEID, new SamplerInfoDataservice(database, CruiseID, TestDeviceInfoService.TEST_DEVICEID));
                var tpds      = new TallyPopulationDataservice(database, CruiseID, TestDeviceInfoService.TEST_DEVICEID);

                var pop = tpds.GetTallyPopulation(unitCode, stratum, sampleGroup, species, liveDead);
                pop.Should().NotBeNull();
                VerifyTallyPopulation(pop);
                pop.TreeCount.Should().Be(0);
                pop.SumKPI.Should().Be(0);

                var tallyLedger = new TallyLedger(unitCode, pop);
                tallyLedger.TreeCount = treeCountDiff;
                tallyLedger.KPI       = 1;

                datastore.InsertTallyLedger(tallyLedger);

                database.ExecuteScalar <int>("SELECT count(*) FROM TallyLedger;").Should().Be(1);
                database.ExecuteScalar <int>("SELECT sum(TreeCount) FROM TallyLedger;").Should().Be(treeCountDiff);

                var popAfter = tpds.GetTallyPopulation(unitCode, stratum, sampleGroup, species, liveDead);
                popAfter.TreeCount.Should().Be(treeCountDiff);
                popAfter.SumKPI.Should().Be(kpi);
            }
        }
Esempio n. 5
0
        public void InsertTallyLedger(TallyLedger tallyLedger)
        {
            if (tallyLedger is null)
            {
                throw new ArgumentNullException(nameof(tallyLedger));
            }

            var tallyLedgerID = tallyLedger.TallyLedgerID ?? Guid.NewGuid().ToString();

            Database.Execute2(
                @"INSERT INTO TallyLedger (
    TallyLedgerID,
    CruiseID,
    CuttingUnitCode,
    StratumCode,
    SampleGroupCode,
    PlotNumber,
    SpeciesCode,
    LiveDead,
    TreeCount,
    KPI,
    ThreePRandomValue,
    TreeID,
    CreatedBy,
    Reason,
    Signature,
    Remarks,
    EntryType
) VALUES (
    @TallyLedgerID,
    @CruiseID,
    @CuttingUnitCode,
    @StratumCode,
    @SampleGroupCode,
    @PlotNumber,
    @SpeciesCode,
    @LiveDead,
    @TreeCount,
    @KPI,
    @ThreePRandomValue,
    @TreeID,
    @CreatedBy,
    @Reason,
    @Signature,
    @Remarks,
    @EntryType
);",
                new
            {
                CruiseID,
                TallyLedgerID = tallyLedgerID,
                tallyLedger.CuttingUnitCode,
                tallyLedger.StratumCode,
                tallyLedger.SampleGroupCode,
                tallyLedger.PlotNumber,
                tallyLedger.SpeciesCode,
                tallyLedger.LiveDead,
                tallyLedger.TreeCount,
                tallyLedger.KPI,
                tallyLedger.ThreePRandomValue,
                tallyLedger.TreeID,
                tallyLedger.CreatedBy,
                tallyLedger.Reason,
                tallyLedger.Signature,
                tallyLedger.Remarks,
                tallyLedger.EntryType,
            });

            tallyLedger.TallyLedgerID = tallyLedgerID;
        }
Esempio n. 6
0
        public void UpdatePlotNumberCascade()
        {
            var init = new DatabaseInitializer();

            using var db = init.CreateDatabase();

            var plot = new Plot
            {
                CruiseID        = init.CruiseID,
                PlotID          = Guid.NewGuid().ToString(),
                PlotNumber      = 1,
                CuttingUnitCode = "u1",
            };

            db.Insert(plot);

            var plotStratum = new Plot_Stratum
            {
                CruiseID        = init.CruiseID,
                PlotNumber      = 1,
                StratumCode     = "st1",
                CuttingUnitCode = "u1",
            };

            db.Insert(plotStratum);

            var tree = new Tree
            {
                CruiseID        = init.CruiseID,
                TreeID          = Guid.NewGuid().ToString(),
                TreeNumber      = 1,
                CuttingUnitCode = "u1",
                PlotNumber      = 1,
                StratumCode     = "st1",
                SampleGroupCode = "sg1",
            };

            db.Insert(tree);

            var tl = new TallyLedger
            {
                CruiseID        = init.CruiseID,
                TallyLedgerID   = Guid.NewGuid().ToString(),
                CuttingUnitCode = "u1",
                PlotNumber      = 1,
                StratumCode     = "st1",
                SampleGroupCode = "sg1",
                TreeID          = tree.TreeID,
            };

            db.Insert(tl);

            plot.PlotNumber = 2;
            db.Update(plot);

            var tlAgain = db.From <TallyLedger>().Query().First();

            tlAgain.PlotNumber.Should().Be(plot.PlotNumber);

            var treeAgain = db.From <Tree>().Query().First();

            treeAgain.PlotNumber.Should().Be(plot.PlotNumber);
        }
        public void CountTree_TreeBased_SingleTallyPop_SingleUnit()
        {
            var fromPath = GetTempFilePath(" CountTree_TreeBased_SingleTallyPop_SingleUnit_MigrateFromV3ToV2.crz3");
            var toPath   = GetTempFilePath(" CountTree_TreeBased_SingleTallyPop_SingleUnit_MigrateFromV3ToV2.cruise");

            var init = new DatabaseInitializer()
            {
                Units  = new[] { "u1" },
                Strata = new[] { new Stratum {
                                     StratumCode = "st1", Method = "STR"
                                 } },
                UnitStrata = new[] { new CuttingUnit_Stratum {
                                         StratumCode = "st1", CuttingUnitCode = "u1"
                                     } },
                SampleGroups = new[] { new SampleGroup {
                                           StratumCode = "st1", SampleGroupCode = "sg1", SamplingFrequency = 101, TallyBySubPop = false
                                       } },
                Subpops = new[] { new SubPopulation {
                                      StratumCode = "st1", SampleGroupCode = "sg1", SpeciesCode = "sp1", LiveDead = "L"
                                  } },
            };

            var expectedCountTreeCount = 1;

            using var fromdb = init.CreateDatabaseFile(fromPath);
            using var todb   = new DAL(toPath, true);

            var unit    = "u1";
            var stratum = "st1";
            var sg      = "sg1";

            var tallyLedgers = new TallyLedger[]
            {
                new TallyLedger {
                    CruiseID = init.CruiseID, CuttingUnitCode = "u1", StratumCode = "st1", SampleGroupCode = "sg1", TreeCount = 101, SpeciesCode = "sp1", LiveDead = "L"
                },
            };

            foreach (var tl in tallyLedgers)
            {
                tl.TallyLedgerID = Guid.NewGuid().ToString();
                fromdb.Insert(tl);
            }

            var tallyPops = fromdb.From <TallyPopulation>().Query().ToArray();

            tallyPops.Should().NotBeEmpty();

            var downMigrator = new DownMigrator();

            downMigrator.MigrateFromV3ToV2(init.CruiseID, fromdb, todb);

            var tls = fromdb.From <TallyLedger>().Query().ToArray();

            tls.Should().HaveCount(1);

            var countTrees = todb.From <V2.Models.CountTree>().Query().ToArray();

            countTrees.Should().HaveCount(expectedCountTreeCount);
            countTrees.Should().OnlyContain(x => x.TreeCount > 0);
        }