From cff6a0d96f0511b1a76af22cfabff15af3938eab Mon Sep 17 00:00:00 2001 From: James Kolpack Date: Thu, 19 May 2016 07:45:53 -0400 Subject: [PATCH] Add parsing for LeafInputData after retrieving CleanedInput files --- Core.Tests/Core.Tests.csproj | 3 + Core.Tests/Parsers/LeafInputCsvParserTests.cs | 24 ++- .../LeafInputData/LeafInput-cleaned.csv | 32 ++++ Core/Core.csproj | 7 + Core/DAL/LeafWebContext.cs | 4 + Core/Entities/LeafGasComparisonFittingInfo.cs | 6 + Core/Entities/LeafInput.cs | 1 + Core/Entities/LeafInputData.cs | 12 ++ Core/Entities/LeafInputDataCurve.cs | 2 +- Core/Entities/LeafInputDataPhotosynthetic.cs | 6 +- Core/Entities/LeafInputDataSite.cs | 6 +- Core/Entities/LeafOutputFile.cs | 10 +- .../201605191138068_LeafInputData.Designer.cs | 29 ++++ .../201605191138068_LeafInputData.cs | 141 ++++++++++++++++++ .../201605191138068_LeafInputData.resx | 126 ++++++++++++++++ Core/Parsers/LeafInputCsvParser.cs | 4 + Web/Controllers/ResultsController.cs | 3 +- Web/Services/PiscalQueue/FinishComplete.cs | 25 ++++ 18 files changed, 433 insertions(+), 8 deletions(-) create mode 100644 Core.Tests/Parsers/LeafInputData/LeafInput-cleaned.csv create mode 100644 Core/Migrations/201605191138068_LeafInputData.Designer.cs create mode 100644 Core/Migrations/201605191138068_LeafInputData.cs create mode 100644 Core/Migrations/201605191138068_LeafInputData.resx diff --git a/Core.Tests/Core.Tests.csproj b/Core.Tests/Core.Tests.csproj index 5a54943..d84dda2 100644 --- a/Core.Tests/Core.Tests.csproj +++ b/Core.Tests/Core.Tests.csproj @@ -70,6 +70,9 @@ PreserveNewest + + PreserveNewest + PreserveNewest diff --git a/Core.Tests/Parsers/LeafInputCsvParserTests.cs b/Core.Tests/Parsers/LeafInputCsvParserTests.cs index f82d046..2507f4a 100644 --- a/Core.Tests/Parsers/LeafInputCsvParserTests.cs +++ b/Core.Tests/Parsers/LeafInputCsvParserTests.cs @@ -13,7 +13,29 @@ namespace LeafWeb.Core.Tests.Parsers public class LeafInputCsvParserTests { private const string ContentDirectory = @"Parsers\LeafInputData\"; - + + [Test] + public void Parse_Cleaned() + { + var fileInfo = FileUtility.GetContentFile(ContentDirectory, "LeafInput-cleaned.csv"); + var leafInput = new LeafInputCsvParser(fileInfo); + var input = leafInput.Parse(); + Assert.That(input.InvestigatorName, Is.EqualTo("Valid Cleaned")); + + var site = input.Site; + Assert.That(site.SiteId, Is.Null); + Assert.That(site.Latitude, Is.EqualTo(-20.75d)); + + var photosynthetic = input.Photosynthetic; + Assert.That(photosynthetic.GammaStar, Is.EqualTo(0)); + + var data = input.Data; + Assert.That(data.Count(), Is.GreaterThan(2)); + var dataItem = data.First(); + Assert.That(dataItem.Obs, Is.EqualTo(10)); + Assert.That(dataItem.Photo, Is.EqualTo(10.49195882)); + } + [Test] public void Parse_Valid() { diff --git a/Core.Tests/Parsers/LeafInputData/LeafInput-cleaned.csv b/Core.Tests/Parsers/LeafInputData/LeafInput-cleaned.csv new file mode 100644 index 0000000..462e5b0 --- /dev/null +++ b/Core.Tests/Parsers/LeafInputData/LeafInput-cleaned.csv @@ -0,0 +1,32 @@ +Investigator name: Valid Cleaned +Contact information: validcleaned@yahoo.com.br +Site name in full: NA +Vegetation type: NA +Soil type: NA +Major species: NA +Sample leaf light environment: Full Sun +"Water_stress_assessment:_No_water_stress, plants_irrigated_every_day" +Instrument used: Licor-6400XT +Extra info: +SiteID,Latitude(Degrees),Longitude(Degrees),Elevation,SampleYear,SampleDayOfYear,GrowSeasonStart,GrowSeasonEnd,StandAge,CanopyHeight,LeafAreaIndex,SpeciesSampled,AveTimeResolution,SampleHeight,LeafAge,SpecificLeafArea,LfNitrogenContent,LfCarbonContent,LfPhosphContent +NoUnit,NorthPositive,EastPositive,m,NoUnit,DayOfYear,DayOfYear,DayOfYear,Year,m,m2/m2,NoBlankSpace,Minutes,m,days,cm2/g,%,%,% +-9999,-20.75,-42.88,648,2009,-9999,-9999,-9999,-9999,-9999,-9999,CoffeaArabica,-9999,-9999,-9999,140,3.48,-9999,-9999 +Gamma*,Kc,Ko,Alpha,Rd,gi +Pa,Pa,Pa,NoUnit,umol/m2/s,umol/m2/s/Pa +-9999,-9999,-9999,-9999,-9999,-9999 +Obs,HHMMSS,FTime,Photo,!AdjPhoto,!StomCond,!Ci,!Trmmol,!VpdL,Area,StmRat,BLCond,Tair,!Tleaf,TBlk,CO2R,CO2S,H2OR,H2OS,RH_R,RH_S,Flow,!PARi,PARo,Press,CsMch,HsMch,StableF,Status,PhiPS2,OxygenPress +NoUnit,HHMMSS,Second,umol/m2/s,umol/m2/s,mol/m2/s,umol/mol,mmol/m2/s,kPa,cm2,NA,mol/m2/s,oC,oC,oC,umol/mol,umol/mol,mmol/mol,mmol/mol,%,%,umol/s,umol/m2/s,umol/m2/s,Kpa,umol/mol,mmol/mol,NA,NA,NA,KPA +10,-9999,-9999,10.49195882,11.05941043,0.244883469,212.5041051,2.63076876,1.036135144,2,0,4.644859791,23.52121258,23.53769627,23.3545414,300.0483063,292.5618317,18.24994297,19.96389828,58.95560608,64.49247513,300.8535187,993.0888855,0.049617826,94.00339508,-2.052112579,-0.246214688,0.425,111115,0.180769687,21 +10,-9999,-9999,6.613751647,7.414357534,0.200000749,130.8730299,2.24618742,1.072960558,2,0,4.644859791,23.57428112,23.68962097,23.40673904,200.1022598,195.4142136,18.39681854,19.86024399,59.23092155,63.94262123,300.8801514,992.5410278,0.049735996,93.98853455,-1.348773956,-0.243325055,0.475,111115,0.163288942,21 +10,-9999,-9999,4.431079608,5.349146841,0.170652088,92.42684697,2.00393304,1.114947396,2,0,4.644859791,23.58453674,23.90329285,23.41538334,149.6127335,146.4719864,18.51102257,19.8167675,59.56615295,63.76787758,300.8583466,992.1625671,0.054449931,93.9954071,-1.367557526,-0.230450451,0.375,111115,0.147352806,21 +10,-9999,-9999,1.523393138,2.556557599,0.159880602,70.4656295,1.965014975,1.163792845,2,0,4.644859791,23.59998169,24.21637478,23.43008366,99.656147,98.51480789,18.61892796,19.89914742,59.85464211,63.97018967,300.8723236,991.761908,0.039717828,93.9906868,-0.692935944,-0.232964337,0.575,111115,0.130597749,21 +10,-9999,-9999,0.894293187,1.987936699,0.167650406,52.50296582,2.025541888,1.145843431,2,0,4.644859791,23.62822838,24.19524651,23.45776844,74.00842819,73.31520309,18.72938271,20.0488924,60.108358,64.34307251,300.8590363,991.5204651,0.045964496,93.99226608,-0.604091644,-0.238077939,0.575,111115,0.122154858,21 +10,-9999,-9999,-0.495843139,0.655970767,0.176641615,42.05656346,2.078428704,1.118051438,2,0,4.644859791,23.63969841,24.11649742,23.46931267,48.81573753,49.07753906,18.83879395,20.19250221,60.41828194,64.75978699,300.871344,991.50896,0.042428688,93.99311447,-0.591835022,-0.238228619,0.7,111115,0.11011836,21 +10,-9999,-9999,14.01214221,14.34608078,0.188886895,258.1956724,2.081065547,1.052338661,2,0,4.644859791,23.63486118,23.77918701,23.46806164,399.7125275,389.8589264,18.8980257,20.25335598,60.6206089,64.96820526,300.8738037,991.5494934,0.06246434,93.98490219,-3.991065979,-0.239916623,0.35,111115,0.183856114,21 +10,-9999,-9999,19.20963114,19.06936549,0.167346311,390.2278007,1.923908779,1.090216329,2,0,4.644859791,23.6730854,23.97962074,23.50691929,600.9658813,587.4440186,18.97605591,20.22919121,60.72654266,64.73679276,300.8435883,990.6557251,0.06564644,93.97809906,-4.053321838,-0.263443768,0.6,111115,0.224674063,21 +10,-9999,-9999,22.68315779,22.07166985,0.140898278,513.7169863,1.709378251,1.143940773,2,0,4.644859791,23.72432709,24.24497566,23.55486546,799.7560669,783.7866455,19.05482311,20.1682272,60.79165916,64.34382095,300.861908,990.5349609,0.044432433,93.97946396,-6.789344788,-0.258801281,0.625,111115,0.241833394,21 +10,-9999,-9999,25.21838506,24.1313968,0.128254365,657.3239246,1.569373475,1.150702993,2,0,4.644859791,23.77119751,24.27973061,23.60147991,999.7003906,981.9117737,19.14113102,20.16335564,60.89594879,64.14807434,300.8594788,990.3832764,0.037125352,93.98093872,-10.22812653,-0.260886014,0.65,111115,0.250284039,21 +10,-9999,-9999,27.03077557,25.46461001,0.120765245,816.0761447,1.52318325,1.183928533,2,0,4.644859791,23.80861893,24.49090347,23.63921146,1200.733826,1181.568982,19.23064556,20.22269268,61.04207878,64.19104309,300.8688538,990.2308533,0.058457612,93.97930527,-14.02487946,-0.262095273,0.575,111115,0.252074273,21 +10,-9999,-9999,28.6322564,26.59017955,0.117258539,984.2999029,1.510964689,1.208454852,2,0,4.644859791,23.86426582,24.66598072,23.69386177,1400.285156,1379.865356,19.32225647,20.30630074,61.13061714,64.24388199,300.8569305,990.0950989,0.060696683,93.9834198,-17.98886871,-0.264069378,0.65,111115,0.25113703,21 +10,-9999,-9999,29.59434444,27.07367747,0.111042426,1152.036476,1.451859088,1.224292598,2,0,4.644859791,23.92603722,24.77762184,23.75417137,1600.474329,1579.277905,19.41603336,20.36147785,61.19426117,64.17406006,300.8736847,989.9327454,0.052446734,93.97519684,-22.0407486,-0.271241009,0.65,111115,0.252735204,21 +10,-9999,-9999,30.43679512,26.95968124,0.103627708,1515.947025,1.36954251,1.235421377,2,0,4.644859791,23.97047672,24.84818077,23.79694042,1999.831714,1977.797449,19.49336185,20.38523922,61.27052002,64.07382736,300.8539337,989.8097778,0.061404274,93.96966782,-31.06003571,-0.273886502,0.625,111115,0.248197252,21 diff --git a/Core/Core.csproj b/Core/Core.csproj index d8ca2de..bfde1a4 100644 --- a/Core/Core.csproj +++ b/Core/Core.csproj @@ -99,6 +99,10 @@ 201605161458209_LeafOutputFileType.cs + + + 201605191138068_LeafInputData.cs + @@ -152,6 +156,9 @@ 201605161458209_LeafOutputFileType.cs + + 201605191138068_LeafInputData.cs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 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 + + + dbo + + \ No newline at end of file diff --git a/Core/Parsers/LeafInputCsvParser.cs b/Core/Parsers/LeafInputCsvParser.cs index bb4cb21..40bf7fa 100644 --- a/Core/Parsers/LeafInputCsvParser.cs +++ b/Core/Parsers/LeafInputCsvParser.cs @@ -13,6 +13,10 @@ namespace LeafWeb.Core.Parsers { } + public LeafInputCsvParser(byte[] fileContents) : base(fileContents) + { + } + public LeafInputData Parse() { // First 10 lines diff --git a/Web/Controllers/ResultsController.cs b/Web/Controllers/ResultsController.cs index 8119282..07d52df 100644 --- a/Web/Controllers/ResultsController.cs +++ b/Web/Controllers/ResultsController.cs @@ -1,5 +1,6 @@ using System.Linq; using System.Web.Mvc; +using LeafWeb.Core.Entities; using LeafWeb.Core.Utility; using LeafWeb.Web.Attributes; using LeafWeb.Web.ViewModels.Results; @@ -26,7 +27,7 @@ namespace LeafWeb.Web.Controllers if (leafInput == null) return View("DownloadNotFound"); - var zip = leafInput.GetOutputFileZip(); + var zip = leafInput.GetOutputFileZip(LeafOutputFileType.ToUser); var filename = leafInput.Identifier.FilterValidFilename() + ".zip"; diff --git a/Web/Services/PiscalQueue/FinishComplete.cs b/Web/Services/PiscalQueue/FinishComplete.cs index ebe9dcf..e0503f8 100644 --- a/Web/Services/PiscalQueue/FinishComplete.cs +++ b/Web/Services/PiscalQueue/FinishComplete.cs @@ -1,5 +1,7 @@ +using System; using System.Linq; using LeafWeb.Core.Entities; +using LeafWeb.Core.Parsers; namespace LeafWeb.Web.Services.PiscalQueue { @@ -16,7 +18,13 @@ namespace LeafWeb.Web.Services.PiscalQueue foreach (var outputFile in leafOutputFiles) { if (leafInput.OutputFiles.All(file => file.Filename != outputFile.Filename)) + { DataService.AddLeafOutputFile(outputFile); + + // parse cleaned input file data + if (outputFile.FileType == LeafOutputFileType.CleanedInput) + AddLeafInputData(outputFile, leafInput); + } else Logger.Warn("LeafInput: {0}, RetrieveOutputFiles duplicate file name: {1}", leafInput.Id, outputFile.Filename); } @@ -34,5 +42,22 @@ namespace LeafWeb.Web.Services.PiscalQueue HangfireStartup.TriggerPiscalProcessQueue(); } + + private void AddLeafInputData(LeafOutputFile outputFile, LeafInput leafInput) + { + try + { + var parser = new LeafInputCsvParser(outputFile.Contents); + var data = parser.Parse(); + data.LeafInput = leafInput; + data.LeafOutputFile = outputFile; + leafInput.LeafInputData.Add(data); + DataService.UpdateLeafInput(leafInput); + } + catch (Exception e) + { + Logger.Error(e, $"LeafInput: {leafInput.Id}, while parsing CleanedInput file: {outputFile.Filename}"); + } + } } } \ No newline at end of file