public POPDO(POPDO obj) : this() { SetValues(obj); }
public void SetValues(POPDO obj) { if(obj == null) { return; } CutLeave = obj.CutLeave; Stratum = obj.Stratum; SampleGroup = obj.SampleGroup; PrimaryProduct = obj.PrimaryProduct; SecondaryProduct = obj.SecondaryProduct; STM = obj.STM; UOM = obj.UOM; FirstStageTrees = obj.FirstStageTrees; MeasuredTrees = obj.MeasuredTrees; TalliedTrees = obj.TalliedTrees; SumKPI = obj.SumKPI; SumMeasuredKPI = obj.SumMeasuredKPI; StageOneSamples = obj.StageOneSamples; StageTwoSamples = obj.StageTwoSamples; Stg1GrossXPP = obj.Stg1GrossXPP; Stg1GrossXsqrdPP = obj.Stg1GrossXsqrdPP; Stg1NetXPP = obj.Stg1NetXPP; Stg1NetXsqrdPP = obj.Stg1NetXsqrdPP; Stg1ValueXPP = obj.Stg1ValueXPP; Stg1ValueXsqrdPP = obj.Stg1ValueXsqrdPP; Stg2GrossXPP = obj.Stg2GrossXPP; Stg2GrossXsqrdPP = obj.Stg2GrossXsqrdPP; Stg2NetXPP = obj.Stg2NetXPP; Stg2NetXsqrdPP = obj.Stg2NetXsqrdPP; Stg2ValueXPP = obj.Stg2ValueXPP; Stg2ValueXsqrdPP = obj.Stg2ValueXsqrdPP; Stg1GrossXSP = obj.Stg1GrossXSP; Stg1GrossXsqrdSP = obj.Stg1GrossXsqrdSP; Stg1NetXSP = obj.Stg1NetXSP; Stg1NetXsqrdSP = obj.Stg1NetXsqrdSP; Stg1ValueXSP = obj.Stg1ValueXSP; Stg1ValueXsqrdSP = obj.Stg1ValueXsqrdSP; Stg2GrossXSP = obj.Stg2GrossXSP; Stg2GrossXsqrdSP = obj.Stg2GrossXsqrdSP; Stg2NetXSP = obj.Stg2NetXSP; Stg2NetXsqrdSP = obj.Stg2NetXsqrdSP; Stg2ValueXSP = obj.Stg2ValueXSP; Stg2ValueXsqrdSP = obj.Stg2ValueXsqrdSP; Stg1GrossXRP = obj.Stg1GrossXRP; Stg1GrossXsqrdRP = obj.Stg1GrossXsqrdRP; Stg1NetXRP = obj.Stg1NetXRP; Stg1NetXRsqrdRP = obj.Stg1NetXRsqrdRP; Stg1ValueXRP = obj.Stg1ValueXRP; Stg1ValueXsqrdRP = obj.Stg1ValueXsqrdRP; Stg2GrossXRP = obj.Stg2GrossXRP; Stg2GrossXsqrdRP = obj.Stg2GrossXsqrdRP; Stg2NetXRP = obj.Stg2NetXRP; Stg2NetXsqrdRP = obj.Stg2NetXsqrdRP; Stg2ValueXRP = obj.Stg2ValueXRP; Stg2ValueXsqrdRP = obj.Stg2ValueXsqrdRP; }
//--------------------------------------------------------------------------------------------------------- private int getSampleGroupStats(StratumDO currentStratum, StratumStatsDO currentStratumStats, float totalAcres) { int n1, n2, measTrees, sumKpi, talliedTrees, freq, kz, insTrees; double st1x, st1x2, st2x, st2x2, cv1, cv2, sampErr, sumNetVol; float treesPerAcre; double comberr2 = 0; double totalVolume = 0; // for each sample group sampleGroups = new List<SampleGroupDO>(cdDAL.Read<SampleGroupDO>("SampleGroup", "Where Stratum_CN = ?", currentStratum.Stratum_CN)); foreach (SampleGroupDO sg in sampleGroups) { // create samplegroupstats currentSgStats = new SampleGroupStatsDO(cdDAL); //set foriegn key currentSgStats.StratumStats = currentStratumStats; currentSgStats.SgSet = 1; currentSgStats.Code = sg.Code; currentSgStats.CutLeave = sg.CutLeave; currentSgStats.UOM = sg.UOM; currentSgStats.PrimaryProduct = sg.PrimaryProduct; currentSgStats.SecondaryProduct = sg.SecondaryProduct; currentSgStats.DefaultLiveDead = sg.DefaultLiveDead; currentSgStats.Description = sg.Description; // get POP data selectedPOP = cdDAL.ReadSingleRow<POPDO>("POP", "WHERE Stratum = ? AND SampleGroup = ?", currentStratum.Code, sg.Code); // calculate statistics (based on method) if (selectedPOP == null) { MessageBox.Show("Cruise Not Processed. Please Process Cruise Before Continuing.", "Warning"); return(-1); } n1 = Convert.ToInt32(selectedPOP.StageOneSamples); n2 = Convert.ToInt32(selectedPOP.StageTwoSamples); measTrees = Convert.ToInt32(selectedPOP.MeasuredTrees); talliedTrees = Convert.ToInt32(selectedPOP.TalliedTrees); sumKpi = Convert.ToInt32(selectedPOP.SumKPI); st1x = selectedPOP.Stg1NetXPP; st1x2 = selectedPOP.Stg1NetXsqrdPP; st2x = selectedPOP.Stg2NetXPP; st2x2 = selectedPOP.Stg2NetXsqrdPP; // trees per plot // find CVs cv1 = statClass.getCV(st1x, st1x2, n1); if (stage == 12 || stage == 22) cv2 = statClass.getCV(st2x, st2x2, n2); else cv2 = 0; // find errors stage 11=tree,single 12=tree,2 stage 21=plot,single 22=plot,2 stage if (stage == 11 || stage == 21) sampErr = statClass.getSampleError(cv1, n1, 0); else if (stage == 12 || stage == 22) sampErr = statClass.getTwoStageError(cv1, cv2, n1, n2); else sampErr = 0; currentSgStats.CV1 = Convert.ToSingle(cv1); currentSgStats.CV2 = Convert.ToSingle(cv2); currentSgStats.SampleSize1 = n1; currentSgStats.SampleSize2 = n2; if (stage == 11 || stage == 10) { currentSgStats.ReconTrees = n1; currentSgStats.ReconPlots = 0; } else if (stage == 12) { currentSgStats.ReconPlots = n1; currentSgStats.ReconTrees = n2; } else if (stage == 21 || stage == 22) { currentSgStats.ReconTrees = measTrees; currentSgStats.ReconPlots = n1; } // calculate frequency currentSgStats.SgError = Convert.ToSingle(sampErr); // get LCD data selectedLCD = cdDAL.Read<LCDDO>("LCD", "WHERE Stratum = ? AND SampleGroup = ?", currentStratum.Code, sg.Code); sumExpFac = 0; sumNetVol = 0; //foreach (SampleGroupDO sg in Owner.histSampleGroup) foreach (LCDDO lcd in selectedLCD) { // sum volume double expFac = lcd.SumExpanFactor; sumExpFac += expFac; // sum trees double netVol = lcd.SumNCUFT; sumNetVol += netVol; } comberr2 += (sampErr * sumNetVol) * (sampErr * sumNetVol); totalVolume += sumNetVol; // find volume/acre and trees/acre if (stage < 20) { treesPerAcre = Convert.ToSingle(Math.Round((sumExpFac / totalAcres), 2)); currentSgStats.TreesPerAcre = treesPerAcre; currentSgStats.VolumePerAcre = Convert.ToSingle(Math.Round((sumNetVol / totalAcres), 2)); } else { treesPerAcre = Convert.ToSingle(Math.Round((sumExpFac), 2)); currentSgStats.TreesPerAcre = treesPerAcre; currentSgStats.VolumePerAcre = Convert.ToSingle(Math.Round((sumNetVol), 2)); if (stage == 21) currentSgStats.TreesPerPlot = Convert.ToSingle(Math.Round((Convert.ToSingle((float)measTrees / (float)n1)), 1)); else currentSgStats.TreesPerPlot = Convert.ToSingle(Math.Round((Convert.ToSingle((float)talliedTrees / (float)n1)), 1)); } currentSgStats.TPA_Def = (long)(treesPerAcre * totalAcres); // find frequency/KZ/BigBAF values if ((stage == 11 || stage == 12 || stage == 22) && measTrees > 0) { freq = Convert.ToInt32((talliedTrees / measTrees)); kz = Convert.ToInt32((sumKpi / measTrees)); if (currentStratum.Method == "S3P") { currentSgStats.SamplingFrequency = Convert.ToInt32((talliedTrees / n1)); currentSgStats.KZ = kz; } else { currentSgStats.SamplingFrequency = freq; currentSgStats.KZ = kz; } } // find insurance trees if (stage == 11 || stage == 12) insTrees = getInsuranceTrees(sg); else insTrees = 0; currentSgStats.InsuranceFrequency = insTrees; // save samplegroupstats row currentSgStats.Save(); // loop through TDV information sg.TreeDefaultValues.Populate(); foreach (TreeDefaultValueDO tdv in sg.TreeDefaultValues) { currentSgStats.TreeDefaultValueStats.Add(tdv); } currentSgStats.Save(); currentSgStats.TreeDefaultValueStats.Save(); } return (0); }