Exemplo n.º 1
0
        public void CtorTestwithLogRules()
        {
            var numLogExpected = 10;

            var regionLogRuleMock = new Mock <RegionLogInfo>();

            regionLogRuleMock.Setup(rlr => rlr.GetLogRule(It.IsAny <string>()).GetDefaultLogCount(It.IsAny <float>(), It.IsAny <float>(), It.IsAny <long>()))
            .Returns(numLogExpected);

            using (var ds = CreateDataStore(1, 0))
            {
                var tree = ds.From <Tree>().Read().FirstOrDefault();

                tree.Should().NotBeNull();

                var stratum = tree.Stratum;

                stratum.Should().NotBeNull();

                var cuttingUnit = tree.CuttingUnit;

                cuttingUnit.Should().NotBeNull();

                var tdv = new TreeDefaultValueDO()
                {
                    MerchHeightLogLength = 16
                };

                tree.TreeDefaultValue = tdv;

                var logDs = new ILogDataService(tree, regionLogRuleMock.Object, ds);

                logDs.Logs.Should().HaveCount(10);

                foreach (var log in logDs.Logs)
                {
                    ValidateLog(log);
                }
            }
        }
Exemplo n.º 2
0
        public Tree UserAddTree(Plot plot, Tree templateTree)
        {
            Tree               newTree;
            SampleGroup        assumedSG  = null;
            TreeDefaultValueDO assumedTDV = null;

            if (templateTree != null)
            {
                assumedSG  = templateTree.SampleGroup;
                assumedTDV = templateTree.TreeDefaultValue;
            }

            //extrapolate sample group
            if (assumedSG == null)//if we have a stratum but no sample group, pick the first one
            {
                List <SampleGroup> samplegroups = DataStore.From <SampleGroup>()
                                                  .Where("Stratum_CN = @p1")
                                                  .Read(plot.Stratum.Stratum_CN).ToList();
                if (samplegroups.Count == 1)
                {
                    assumedSG = samplegroups[0];
                }
            }

            newTree = this.CreateNewTreeEntry(plot, assumedSG, assumedTDV, true);

            //if a 3P plot method set Count Measure to empty.
            if (Array.IndexOf(CruiseDAL.Schema.CruiseMethods.THREE_P_METHODS,
                              plot.Stratum.Method) >= 0)
            {
                newTree.CountOrMeasure = string.Empty;
            }

            newTree.TreeCount = 1; //user added trees need a tree count of one because they aren't being tallied
            newTree.TrySave();
            plot.AddTree(newTree);

            return(newTree);
        }
Exemplo n.º 3
0
        public Tree UserAddTree()
        {
            Tree               templateTree = NonPlotTrees.LastOrDefault();
            Stratum            stratum      = null;
            SampleGroup        samplegroup  = null;
            TreeDefaultValueDO tdv          = null;

            if (templateTree != null)
            {
                stratum     = templateTree.Stratum;
                samplegroup = templateTree.SampleGroup;
                tdv         = templateTree.TreeDefaultValue;
            }
            else if (DefaultStratum != null)
            {
                stratum = this.DefaultStratum;

                //var samplegroups = DAL.From<SampleGroupModel>()
                //    .Where("Stratum_CN = ?")
                //    .Read(stratum.Stratum_CN).ToList();
                if (stratum.SampleGroups != null &&
                    stratum.SampleGroups.Count == 1)
                {
                    samplegroup = stratum.SampleGroups[0];
                }
            }

            var newTree = CreateNewTreeEntry(stratum
                                             , samplegroup, tdv, true);

            newTree.TreeCount = 0; //user added trees need a tree count of zero because users seem to be adding counts through tally settings

            DialogService.AskCruiser(newTree);

            newTree.TrySave();
            AddNonPlotTree(newTree);

            return(newTree);
        }
        public static void SetTreeTDV(TreeVM tree, TreeDefaultValueDO tdv)
        {
            tree.TreeDefaultValue = tdv;
            if (tdv != null)
            {
                tree.Species = tdv.Species;

                tree.LiveDead           = tdv.LiveDead;
                tree.Grade              = tdv.TreeGrade;
                tree.FormClass          = tdv.FormClass;
                tree.RecoverablePrimary = tdv.Recoverable;
                //tree.HiddenPrimary = tdv.HiddenPrimary; //#367
            }
            else
            {
                //tree.Species = string.Empty;
                //tree.LiveDead = string.Empty;
                //tree.Grade = string.Empty;
                //tree.FormClass = 0;
                //tree.RecoverablePrimary = 0;
                //tree.HiddenPrimary = 0;
            }
        }
Exemplo n.º 5
0
        public virtual Tree CreateNewTreeEntry(Plot plot, SampleGroup sg, TreeDefaultValueDO tdv, bool isMeasure)
        {
            Debug.Assert(plot.CuttingUnit != null);

            if (plot is FixCNTPlot)
            {
                isMeasure = false;
            }

            var newTree = CreateNewTreeEntryInternal(plot.Stratum, sg, tdv, isMeasure);

            newTree.Plot = plot;
            if (IsReconCruise)
            {
                newTree.TreeNumber = GetNextTreeNumber(plot.Trees);
            }
            else
            {
                newTree.TreeNumber = GetNextPlotTreeNumber(plot.PlotNumber);
            }
            newTree.TreeCount = 1;

            return(newTree);
        }
Exemplo n.º 6
0
        public override void ShowEditTreeDefault(TreeDefaultValueDO tdv)
        {
            TreeDefaultValueDO temp = new TreeDefaultValueDO(tdv);

            try
            {
                using (FormAddTreeDefault dialog = new FormAddTreeDefault(this.ApplicationController.SetupService.GetProductCodes()))
                {
                    if (dialog.ShowDialog(temp) == DialogResult.OK)
                    {
                        try
                        {
                            tdv.SetValues(temp);
                            tdv.Save();

                            RealignTreeSpecies(tdv.DAL, tdv.TreeDefaultValue_CN.Value);
                        }
                        catch (FMSC.ORM.UniqueConstraintException ex)
                        {
                            throw new UserFacingException("Values Conflict With Existing Tree Default", ex);
                        }
                        catch (FMSC.ORM.ConstraintException ex)
                        {
                            throw new UserFacingException("Invalid Values", ex);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                if (!this.ApplicationController.ExceptionHandler.Handel(ex))
                {
                    throw;
                }
            }
        }
Exemplo n.º 7
0
 public SubPop(SampleGroup sg, TreeDefaultValueDO tdv)
 {
     this.SG  = sg;
     this.TDV = tdv;
 }
        DAL CreateDataStore(string salePurpose = null, string saleRegion = "01", IEnumerable <string> methods = null)
        {
            methods = methods ?? new string[] { CruiseMethods.STR, CruiseMethods.FIX };

            var ds = new DAL();

            var sale = new SaleDO()
            {
                DAL        = ds,
                SaleNumber = "12345",
                Region     = saleRegion,
                Forest     = "11",
                District   = "something",
                Purpose    = salePurpose
            };

            sale.Save();

            var cuttingUnit = new CuttingUnitDO()
            {
                DAL  = ds,
                Code = "01"
            };

            cuttingUnit.Save();

            var tdv = new TreeDefaultValueDO()
            {
                DAL            = ds,
                Species        = "something",
                PrimaryProduct = "something",
                LiveDead       = "L"
            };

            tdv.Save();

            int counter = 0;

            foreach (var method in methods)
            {
                var stratum = new StratumDO()
                {
                    DAL    = ds,
                    Code   = counter++.ToString("d2"),
                    Method = method
                };
                stratum.Save();
                stratum.CuttingUnits.Add(cuttingUnit);
                stratum.CuttingUnits.Save();

                var sg = new SampleGroupDO()
                {
                    DAL            = ds,
                    Code           = 1.ToString("d2"),
                    Stratum        = stratum,
                    CutLeave       = "C",
                    UOM            = "something",
                    PrimaryProduct = "something"
                };
                sg.Save();
                sg.TreeDefaultValues.Add(tdv);
                sg.TreeDefaultValues.Save();

                if (CruiseMethods.PLOT_METHODS.Contains(method))
                {
                    var plot = new PlotDO()
                    {
                        DAL = ds, Stratum = stratum, CuttingUnit = cuttingUnit, PlotNumber = 1
                    };
                    plot.Save();

                    var tree = new TreeDO()
                    {
                        DAL              = ds,
                        CuttingUnit      = cuttingUnit,
                        Stratum          = stratum,
                        Plot             = plot,
                        SampleGroup      = sg,
                        TreeDefaultValue = tdv,
                        TreeNumber       = 1
                    };
                    tree.Save();
                }
                else
                {
                    var tree = new TreeDO()
                    {
                        DAL              = ds,
                        CuttingUnit      = cuttingUnit,
                        Stratum          = stratum,
                        SampleGroup      = sg,
                        TreeDefaultValue = tdv,
                        TreeNumber       = 1
                    };
                    tree.Save();
                }

                var countTree = new CountTree()
                {
                    CuttingUnit_CN      = cuttingUnit.CuttingUnit_CN,
                    SampleGroup_CN      = sg.SampleGroup_CN,
                    TreeDefaultValue_CN = tdv.TreeDefaultValue_CN,
                };

                ds.Save(countTree);
            }

            return(ds);
        }
Exemplo n.º 9
0
 public DialogResult ShowDialog(TreeDefaultValueDO tdv)
 {
     this.TreeDefault = tdv;
     this._initialState.SetValues(tdv);
     return(this.ShowDialog());
 }
Exemplo n.º 10
0
        public TreeDefaultValueDO GetNewTreeDefaultValue()
        {
            var tdv = new TreeDefaultValueDO(_database);

            return(tdv);
        }
Exemplo n.º 11
0
 public abstract void ShowEditTreeDefault(TreeDefaultValueDO tdv);
Exemplo n.º 12
0
 public abstract TreeDefaultValueDO ShowAddTreeDefault(TreeDefaultValueDO newTDV);
Exemplo n.º 13
0
        public override TreeDefaultValueDO ShowAddTreeDefault()
        {
            TreeDefaultValueDO newTDV = new TreeDefaultValueDO(this.ApplicationController.Database);

            return(this.ShowAddTreeDefault(newTDV));
        }
Exemplo n.º 14
0
        }   //  end onDelete

        public void updateBiomass(List <VolumeEquationDO> equationList, string currRegion, string currForest)
        {
            //  function only updates biomass equations in a template file
            IEnumerable <TreeDefaultValueDO> treeDef = Global.BL.getTreeDefaults();
            List <BiomassEquationDO>         bioList = Global.BL.getBiomassEquations().ToList();

            if (bioList.Count > 0)
            {
                Global.BL.ClearBiomassEquations();
            }

            //  capture percent removed
            List <PercentRemoved> prList = new List <PercentRemoved>();

            foreach (VolumeEquationDO vdo in equationList)
            {
                PercentRemoved pr = new PercentRemoved();
                if (vdo.CalcBiomass == 1)
                {
                    pr.bioSpecies = vdo.Species;
                    pr.bioProduct = vdo.PrimaryProduct;
                    prList.Add(pr);
                } //  endif biomass flag checked
            }     //  end foreach
            if (prList.Count > 0)
            {
                CapturePercentRemoved cpr = new CapturePercentRemoved();
                cpr.prList = prList;
                cpr.setupDialog();
                cpr.ShowDialog();
                prList = cpr.prList;
            }   //  endif nthRow

            //  new variables for biomass call
            int REGN, SPCD;

            float[]       WF     = new float[3];
            StringBuilder AGTEQ  = new StringBuilder(256);
            StringBuilder LBREQ  = new StringBuilder(256);
            StringBuilder DBREQ  = new StringBuilder(256);
            StringBuilder FOLEQ  = new StringBuilder(256);
            StringBuilder TIPEQ  = new StringBuilder(256);
            StringBuilder WF1REF = new StringBuilder(256);
            StringBuilder WF2REF = new StringBuilder(256);
            StringBuilder MCREF  = new StringBuilder(256);
            StringBuilder AGTREF = new StringBuilder(256);
            StringBuilder LBRREF = new StringBuilder(256);
            StringBuilder DBRREF = new StringBuilder(256);
            StringBuilder FOLREF = new StringBuilder(256);
            StringBuilder TIPREF = new StringBuilder(256);
            const int     strlen = 256;

            //  need an array of component titles
            string[] componentArray = new string[7] {
                "TotalTreeAboveGround", "LiveBranches", "DeadBranches", "Foliage", "PrimaryProd", "SecondaryProd", "StemTip"
            };
            //  convert region to integer and forest to StringBuilder
            REGN = Convert.ToInt16(currRegion);
            StringBuilder FORST = new StringBuilder(256);

            FORST.Append(currForest);

            foreach (VolumeEquationDO el in equationList)
            {
                if (el.CalcBiomass == 1)
                {
                    // find species/product in tree default values for FIA code
                    TreeDefaultValueDO tdo = treeDef.FirstOrDefault(td => td.Species == el.Species && td.PrimaryProduct == el.PrimaryProduct);
                    if (tdo != null)
                    {
                        WF[0] = 0;
                        WF[1] = 0;
                        WF[2] = 0;
                        SPCD  = Convert.ToInt16(tdo.FIAcode);
                        CRZSPDFTCS(ref REGN, FORST, ref SPCD, WF, AGTEQ, LBREQ, DBREQ, FOLEQ, TIPEQ,
                                   WF1REF, WF2REF, MCREF, AGTREF, LBRREF, DBRREF, FOLREF, TIPREF,
                                   strlen, strlen, strlen, strlen, strlen, strlen, strlen, strlen,
                                   strlen, strlen, strlen, strlen, strlen, strlen);

                        //  get percent removed from list
                        float currPC = new float();
                        int   ithRow = prList.FindIndex(
                            delegate(PercentRemoved pr)
                        {
                            return(pr.bioSpecies == el.Species && pr.bioProduct == el.PrimaryProduct);
                        });

                        for (int k = 0; k < 7; k++)
                        {
                            BiomassEquationDO bedo = new BiomassEquationDO();
                            bedo.FIAcode         = tdo.FIAcode;
                            bedo.LiveDead        = tdo.LiveDead;
                            bedo.Product         = el.PrimaryProduct;
                            bedo.Species         = el.Species;
                            bedo.PercentMoisture = WF[2];
                            bedo.PercentRemoved  = currPC;

                            //  switch through component array
                            switch (k)
                            {
                            case 0:         //  Total tree above ground
                                bedo.Component = componentArray[k];
                                bedo.Equation  = AGTEQ.ToString();
                                bedo.MetaData  = AGTREF.ToString();
                                break;

                            case 1:         //  Live branches
                                bedo.Component = componentArray[k];
                                bedo.Equation  = LBREQ.ToString();
                                bedo.MetaData  = LBRREF.ToString();
                                break;

                            case 2:         //  Dead branches
                                bedo.Component = componentArray[k];
                                bedo.Equation  = DBREQ.ToString();
                                bedo.MetaData  = DBRREF.ToString();
                                break;

                            case 3:         //  Foliage
                                bedo.Component = componentArray[k];
                                bedo.Equation  = FOLEQ.ToString();
                                bedo.MetaData  = FOLREF.ToString();
                                break;

                            case 4:         //  Primary product
                                bedo.Component = componentArray[k];
                                bedo.Equation  = "";
                                if (currRegion == "05" || currRegion == "5")
                                {
                                    //  setip array for FFIA codes for applicable species
                                    long[] FIAcodes = new long[8] {
                                        122, 116, 117, 015, 020, 202, 081, 108
                                    };
                                    if (el.PrimaryProduct == "20")
                                    {
                                        for (int j = 0; j < 8; j++)
                                        {
                                            if (tdo.FIAcode == FIAcodes[j])
                                            {
                                                bedo.WeightFactorPrimary = WF[1];
                                            }
                                        }
                                    }
                                    else
                                    {
                                        bedo.WeightFactorPrimary = WF[0];
                                    }
                                }
                                else
                                {
                                    bedo.WeightFactorPrimary = WF[0];
                                }
                                bedo.MetaData = WF1REF.ToString();
                                break;

                            case 5:         //  Secondary product
                                bedo.Component             = componentArray[k];
                                bedo.Equation              = "";
                                bedo.WeightFactorSecondary = WF[1];
                                bedo.MetaData              = WF2REF.ToString();
                                break;

                            case 6:         //  Stem tip
                                bedo.Component = componentArray[k];
                                bedo.Equation  = TIPEQ.ToString();
                                bedo.MetaData  = TIPREF.ToString();
                                break;
                            }   //  end switch

                            bioList.Add(bedo);
                        } //  end for k loop
                    }     //  endif nthRow
                }         //  endif
            }             //  end foreach loop

            //  save list
            Global.BL.SaveBiomassEquations(bioList);
            return;
        }
Exemplo n.º 15
0
        public TreeDefaultValueDO ShowAddTreeDefault()
        {
            TreeDefaultValueDO newTDV = new TreeDefaultValueDO(ViewPresenter.ApplicationController.Database);

            return(this.ShowEditTreeDefault(newTDV));
        }
Exemplo n.º 16
0
        private void _dataGrid_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)
        {
            //check bounds
            if (e.RowIndex > _dataGrid.RowCount - 1 || e.RowIndex < 0)
            {
                return;
            }
            if (e.ColumnIndex > _dataGrid.ColumnCount - 1 || e.ColumnIndex < 0)
            {
                return;
            }

            var row = _dataGrid.Rows[e.RowIndex];

            var cell = row.Cells[e.ColumnIndex];

            if (cell == null)
            {
                return;
            }
            if (cell.ReadOnly)
            {
                return;
            }                             //we don't need to validate readonly columns
            if (cell.FormattedValue == e.FormattedValue)
            {
                return;
            }                                                       //no changes

            var curTree = _dataGrid.Rows[e.RowIndex].DataBoundItem as Tree;

            if (curTree == null)
            {
                return;
            }

            object cellValue = null;

            try
            {
                cellValue = cell.ParseFormattedValue(e.FormattedValue, cell.InheritedStyle, null, null);
            }
            catch
            {
                e.Cancel = true;
                return;
            }

            if (_treeNumberColumn != null && e.ColumnIndex == _treeNumberColumn.Index)
            {
                e.Cancel = !ValicateTreeNumber(curTree, cellValue);
                return;
            }
            else if (_sgColumn != null && cell.ColumnIndex == _sgColumn.Index)
            {
                e.Cancel = !ValidateSampleGroup(curTree, cellValue);
                return;
            }
            else if (_speciesColumn != null && cell.ColumnIndex == _speciesColumn.Index)
            {
                TreeDefaultValueDO tdv = cellValue as TreeDefaultValueDO;
                e.Cancel = !ProcessSpeciesChanged(curTree, tdv);
            }
        }
Exemplo n.º 17
0
        //public TreeDefaultValueDO CheckForExistingRecord(TreeDefaultValueDO tdv)
        //{
        //    CruiseDAL.DAL db = tdv.DAL;
        //    TreeDefaultValueDO tdv2 = db.ReadSingleRow<TreeDefaultValueDO>(CruiseDAL.Schema.TREEDEFAULTVALUE._NAME, "WHERE Species = ? and LiveDead = ? and Chargeable = ? and PrimaryProduct = ?", tdv.Species, tdv.LiveDead, tdv.Chargeable, tdv.PrimaryProduct);
        //    return (tdv2 != null) ? tdv2 : tdv;
        //}

        private void CreateCountRecord(SGType sg, TreeDefaultValueDO tdv)
        {
        }
Exemplo n.º 18
0
 public bool HandleSpeciesChanged(TreeDefaultValueDO tdv)
 {
     //if (tree.TreeDefaultValue == tdv) { return true; }
     SetTreeTDV(tdv);
     return(TrySave());
 }