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); } } }
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); }
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; } }
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); }
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; } } }
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); }
public DialogResult ShowDialog(TreeDefaultValueDO tdv) { this.TreeDefault = tdv; this._initialState.SetValues(tdv); return(this.ShowDialog()); }
public TreeDefaultValueDO GetNewTreeDefaultValue() { var tdv = new TreeDefaultValueDO(_database); return(tdv); }
public abstract void ShowEditTreeDefault(TreeDefaultValueDO tdv);
public abstract TreeDefaultValueDO ShowAddTreeDefault(TreeDefaultValueDO newTDV);
public override TreeDefaultValueDO ShowAddTreeDefault() { TreeDefaultValueDO newTDV = new TreeDefaultValueDO(this.ApplicationController.Database); return(this.ShowAddTreeDefault(newTDV)); }
} // 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; }
public TreeDefaultValueDO ShowAddTreeDefault() { TreeDefaultValueDO newTDV = new TreeDefaultValueDO(ViewPresenter.ApplicationController.Database); return(this.ShowEditTreeDefault(newTDV)); }
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); } }
//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) { }
public bool HandleSpeciesChanged(TreeDefaultValueDO tdv) { //if (tree.TreeDefaultValue == tdv) { return true; } SetTreeTDV(tdv); return(TrySave()); }