コード例 #1
0
        public void InsertPlot_Stratum(Plot_Stratum plotStratum)
        {
            if (plotStratum is null)
            {
                throw new ArgumentNullException(nameof(plotStratum));
            }

            var plot_stratum_CN = Database.ExecuteScalar2 <long?>(
                $@"INSERT INTO Plot_Stratum (
    CruiseID,
    CuttingUnitCode,
    PlotNumber,
    StratumCode,
    IsEmpty,
    KPI,
    ThreePRandomValue,
    CreatedBy
) VALUES (
    '{CruiseID}',
    @CuttingUnitCode,
    @PlotNumber,
    @StratumCode,
    @IsEmpty,
    @KPI,
    @ThreePRandomValue,
    '{DeviceID}'
);
SELECT last_insert_rowid();",
                plotStratum);

            plotStratum.InCruise        = true;
            plotStratum.Plot_Stratum_CN = plot_stratum_CN;
        }
        public void DeletePlot_Stratum()
        {
            var unitCode    = "u1";
            var stratumCode = "st1";
            var plotNumber  = 1;
            var plotID      = Guid.NewGuid().ToString();

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

                var stratumPlot = new Plot_Stratum()
                {
                    CuttingUnitCode = unitCode,
                    PlotNumber      = plotNumber,
                    StratumCode     = stratumCode,
                };

                database.Execute("INSERT INTO Plot (CruiseID, PlotID, CuttingUnitCode, PlotNumber) VALUES " +
                                 $"('{CruiseID}', '{plotID}', '{unitCode}', {plotNumber});");

                datastore.InsertPlot_Stratum(stratumPlot);

                var echo = datastore.GetPlot_Stratum(unitCode, stratumCode, plotNumber);
                echo.Should().NotBeNull("where's my echo");

                datastore.DeletePlot_Stratum(echo.CuttingUnitCode, echo.StratumCode, echo.PlotNumber);
            }
        }
コード例 #3
0
        public void ThreePPNT_FieldCheck()
        {
            var init = new DatabaseInitializer();

            using var db = init.CreateDatabase();

            var stratum = init.PlotStrata.First();
            var unit    = init.Units.First();

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

            db.Insert(plot);

            var plotStratum = new Plot_Stratum()
            {
                CruiseID        = init.CruiseID,
                PlotNumber      = plot.PlotNumber,
                CuttingUnitCode = unit,
                StratumCode     = stratum.StratumCode,
            };

            db.Insert(plotStratum);

            plotStratum.AverageHeight = 1;
            plotStratum.KPI           = 1;
            plotStratum.TreeCount     = 1;
            db.Update(plotStratum);
        }
        public void UpdatePlot_Stratum()
        {
            var unitCode    = "u1";
            var stratumCode = "st1";
            var plotNumber  = 1;
            var plotID      = Guid.NewGuid().ToString();
            var cruiseID    = CruiseID;

            using (var database = CreateDatabase())
            {
                var datastore = new CuttingUnitDatastore(database, cruiseID, TestDeviceInfoService.TEST_DEVICEID, new SamplerInfoDataservice(database, CruiseID, TestDeviceInfoService.TEST_DEVICEID));

                var stratumPlot = new Plot_Stratum()
                {
                    CuttingUnitCode = unitCode,
                    PlotNumber      = plotNumber,
                    StratumCode     = stratumCode,
                    IsEmpty         = false,
                };

                database.Execute($"INSERT INTO Plot (CruiseID, PlotID, CuttingUnitCode, PlotNumber) VALUES " +
                                 $"('{cruiseID}', '{plotID}', '{unitCode}', {plotNumber})");

                datastore.InsertPlot_Stratum(stratumPlot);

                stratumPlot.IsEmpty = true;
                datastore.UpdatePlot_Stratum(stratumPlot);

                var ourStratumPlot = datastore.GetPlot_Stratum(unitCode, stratumCode, plotNumber);

                ourStratumPlot.IsEmpty.Should().Be(true);
            }
        }
 private void ValidatePlot_Stratum(Plot_Stratum ps, bool inCruise)
 {
     ps.CuttingUnitCode.Should().NotBeNullOrWhiteSpace();
     ps.StratumCode.Should().NotBeNullOrWhiteSpace();
     ps.PlotNumber.Should().BeGreaterThan(0);
     ps.InCruise.Should().Be(inCruise);
 }
コード例 #6
0
 public void UpdatePlot_Stratum(Plot_Stratum stratumPlot)
 {
     Database.Execute2(
         "UPDATE Plot_Stratum SET " +
         "IsEmpty = @IsEmpty, " +
         "KPI = @KPI " +
         "WHERE " +
         "Plot_Stratum_CN = @Plot_Stratum_CN;",
         stratumPlot);
 }
コード例 #7
0
        public void Sync_Plot_Stratum_Update()
        {
            var fromPath = base.GetTempFilePath(".crz3", "Sync_Plot_Add_fromFile");
            var toPath   = base.GetTempFilePath(".crz3", "Sync_Plot_Add_toFile");

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

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

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

            var plot = new Plot()
            {
                CruiseID        = cruiseID,
                PlotID          = Guid.NewGuid().ToString(),
                CuttingUnitCode = Units[0],
                PlotNumber      = 1,
            };

            fromDb.Insert(plot);

            var plotStratum = new Plot_Stratum()
            {
                CruiseID        = cruiseID,
                PlotNumber      = plot.PlotNumber,
                CuttingUnitCode = plot.CuttingUnitCode,
                StratumCode     = PlotStrata[0].StratumCode,
            };

            fromDb.Insert(plotStratum);

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

            plotStratum.KPI = Rand.Double();
            plotStratum.ThreePRandomValue = Rand.Int();
            toDb.Update(plotStratum);

            var syncer = new CruiseSyncer();

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

            var plotStratumAgain = toDb
                                   .From <Plot_Stratum>()
                                   .Where("Plot_Stratum_CN = @p1")
                                   .Query(plotStratum.Plot_Stratum_CN)
                                   .FirstOrDefault();

            plotStratumAgain.Should().BeEquivalentTo(plotStratum, config => config.Excluding(x => x.Modified_TS));
        }
コード例 #8
0
        public void IsTreeNumberAvalible_Plot_nummberAcrossStrata()
        {
            var init       = new DatastoreInitializer();
            var unit       = init.Units[0];
            var stratum    = init.PlotStrata[0].StratumCode;
            var altStratum = init.PlotStrata[1].StratumCode;
            var plotNumber = 1;

            using var db = init.CreateDatabase();

            db.Execute("UPDATE Cruise SET UseCrossStrataPlotTreeNumbering = 1 WHERE CruiseID = @p1;", init.CruiseID);

            var ds = new CuttingUnitDatastore(db, init.CruiseID, init.DeviceID, new SamplerInfoDataservice(db, init.CruiseID, init.DeviceID));

            var newPlot = new Plot()
            {
                CruiseID        = init.CruiseID,
                CuttingUnitCode = unit,
                PlotNumber      = plotNumber,
                PlotID          = Guid.NewGuid().ToString(),
            };

            db.Insert(newPlot);

            var newPlotStratum = new Plot_Stratum()
            {
                CruiseID        = init.CruiseID,
                CuttingUnitCode = unit,
                PlotNumber      = newPlot.PlotNumber,
                StratumCode     = stratum,
            };

            db.Insert(newPlotStratum);

            ds.IsTreeNumberAvalible(unit, 1, newPlotStratum.PlotNumber, newPlotStratum.StratumCode).Should().BeTrue();
            ds.IsTreeNumberAvalible(unit, 1, newPlotStratum.PlotNumber, altStratum).Should().BeTrue();

            db.Insert(new Tree()
            {
                CruiseID        = init.CruiseID,
                TreeID          = Guid.NewGuid().ToString(),
                TreeNumber      = 1,
                CuttingUnitCode = unit,
                StratumCode     = stratum,
                SampleGroupCode = init.SampleGroups[0].SampleGroupCode,
                PlotNumber      = plotNumber,
            });

            ds.IsTreeNumberAvalible(unit, 1, newPlotStratum.PlotNumber, newPlotStratum.StratumCode).Should().BeFalse();
            ds.IsTreeNumberAvalible(unit, 1, newPlotStratum.PlotNumber, altStratum).Should().BeFalse();
        }
コード例 #9
0
        public void Sync_Plot_Stratum_Add()
        {
            var fromPath = base.GetTempFilePath(".crz3", "Sync_Plot_Add_fromFile");
            var toPath   = base.GetTempFilePath(".crz3", "Sync_Plot_Add_toFile");

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

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

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

            var newPlot = new Plot()
            {
                CruiseID        = cruiseID,
                PlotID          = Guid.NewGuid().ToString(),
                CuttingUnitCode = Units[0],
                PlotNumber      = 1,
            };

            fromDb.Insert(newPlot);

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

            var newPlotStratum = new Plot_Stratum()
            {
                CruiseID        = cruiseID,
                PlotNumber      = newPlot.PlotNumber,
                CuttingUnitCode = newPlot.CuttingUnitCode,
                StratumCode     = PlotStrata[0].StratumCode,
            };

            fromDb.Insert(newPlotStratum);

            var syncer = new CruiseSyncer();

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

            toDb.GetRowCount("Plot", "WHERE PlotID = @p1", newPlot.PlotID)
            .Should().Be(1);
            toDb.ExecuteScalar2 <int>("SELECT COUNT(*) FROM Plot_Stratum WHERE CruiseID = @CruiseID AND PlotNumber = @PlotNumber AND CuttingUnitCode = @CuttingUnitCode", newPlotStratum)
            .Should().Be(1);
        }
        public void UpdatePlot()
        {
            var random      = new Bogus.Randomizer();
            var unitCode    = "u1";
            var stratumCode = "st1";
            var plotNumber  = 1;
            var plotID      = Guid.NewGuid().ToString();
            var cruiseID    = CruiseID;

            using (var database = CreateDatabase())
            {
                var datastore = new CuttingUnitDatastore(database, cruiseID, TestDeviceInfoService.TEST_DEVICEID, new SamplerInfoDataservice(database, CruiseID, TestDeviceInfoService.TEST_DEVICEID));

                var stratumPlot = new Plot_Stratum()
                {
                    CuttingUnitCode = unitCode,
                    PlotNumber      = plotNumber,
                    StratumCode     = stratumCode,
                    IsEmpty         = false,
                };

                database.Execute($"INSERT INTO Plot (CruiseID, PlotID, CuttingUnitCode, PlotNumber) VALUES " +
                                 $"('{cruiseID}', '{plotID}', '{unitCode}', {plotNumber})");

                var plot = datastore.GetPlot(unitCode, plotNumber);

                var slope = random.Double();
                plot.Slope = slope;

                var aspect = random.Double();
                plot.Aspect = aspect;

                var remarks = random.String2(24);
                plot.Remarks = remarks;

                datastore.UpdatePlot(plot);

                var plotAgain = datastore.GetPlot(unitCode, plotNumber);

                plotAgain.Slope.Should().Be(slope);
                plotAgain.Aspect.Should().Be(aspect);
                plotAgain.Remarks.Should().Be(remarks);
            }
        }
        public void InsertStratumPlot()
        {
            var plotNumber  = 1;
            var stratumCode = "st1";
            var unitCode    = "u1";
            var isEmpty     = true;
            var kpi         = 101;
            var plotID      = Guid.NewGuid().ToString();
            var cruiseID    = CruiseID;

            //var remarks = "something";

            using (var database = CreateDatabase())
            {
                var datastore = new CuttingUnitDatastore(database, cruiseID, TestDeviceInfoService.TEST_DEVICEID, new SamplerInfoDataservice(database, CruiseID, TestDeviceInfoService.TEST_DEVICEID));

                var stratumPlot = new Plot_Stratum()
                {
                    CuttingUnitCode = unitCode,
                    PlotNumber      = plotNumber,
                    StratumCode     = stratumCode,
                    IsEmpty         = isEmpty,
                    KPI             = kpi,
                    //Remarks = remarks
                };

                database.Execute($"INSERT INTO Plot (CruiseID, PlotID, CuttingUnitCode, PlotNumber) VALUES " +
                                 $"('{cruiseID}', '{plotID}', '{unitCode}', {plotNumber})");

                datastore.InsertPlot_Stratum(stratumPlot);

                datastore.IsPlotNumberAvalible(unitCode, plotNumber).Should().BeFalse("we just took that plot number");

                var plotStratumAgain = datastore.GetPlot_Stratum(unitCode, stratumCode, plotNumber);
                plotStratumAgain.Should().NotBeNull();
                plotStratumAgain.PlotNumber.Should().Be(plotNumber);
                //ourStratumPlot.Remarks.Should().Be(remarks);
                plotStratumAgain.KPI.Should().Be(kpi);
                plotStratumAgain.IsEmpty.Should().Be(isEmpty);
                plotStratumAgain.StratumCode.Should().Be(stratumCode);
            }
        }
コード例 #12
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);
        }
コード例 #13
0
        public void Sync_TallyLedger_With_PlotTree_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);

            var plot = new Plot()
            {
                CruiseID        = cruiseID,
                PlotID          = Guid.NewGuid().ToString(),
                CuttingUnitCode = Units[0],
                PlotNumber      = 1,
            };

            fromDb.Insert(plot);

            var plotStratum = new Plot_Stratum()
            {
                CruiseID        = cruiseID,
                PlotNumber      = plot.PlotNumber,
                CuttingUnitCode = plot.CuttingUnitCode,
                StratumCode     = PlotStrata[0].StratumCode,
            };

            fromDb.Insert(plotStratum);

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

            var newPlotTree = new Tree()
            {
                TreeID          = Guid.NewGuid().ToString(),
                CruiseID        = cruiseID,
                CuttingUnitCode = plot.CuttingUnitCode,
                PlotNumber      = plot.PlotNumber,
                StratumCode     = plotStratum.StratumCode,
                SampleGroupCode = SampleGroups[0].SampleGroupCode,
                SpeciesCode     = Species[0],
                TreeNumber      = 1,
            };

            fromDb.Insert(newPlotTree);

            var newTallyLedger = new TallyLedger()
            {
                CruiseID        = cruiseID,
                TallyLedgerID   = Guid.NewGuid().ToString(),
                CuttingUnitCode = newPlotTree.CuttingUnitCode,
                StratumCode     = newPlotTree.StratumCode,
                PlotNumber      = newPlotTree.PlotNumber,
                SampleGroupCode = newPlotTree.SampleGroupCode,
                TreeID          = newPlotTree.TreeID,
                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);
        }