Add PhotosynthesisType and start SSH work
modified: Core.Tests/Core.Tests.csproj modified: Core.Tests/Parsers/FluxnetSiteCsvParserTests.cs new file: Core.Tests/Remote/PiscalSshClientTests.cs modified: Core/Core.csproj modified: Core/DAL/LeafWebContext.cs modified: Core/DAL/LeafWebInitializer.cs modified: Core/Models/LeafInput.cs new file: Core/Models/PhotosynthesisType.cs new file: Core/Remote/IPiscalClient.cs Get Piscal
This commit is contained in:
@@ -48,6 +48,7 @@
|
|||||||
<Compile Include="Parsers\FluxnetSiteCsvParserTests.cs" />
|
<Compile Include="Parsers\FluxnetSiteCsvParserTests.cs" />
|
||||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
<Compile Include="Parsers\LeafInputCsvParserTests.cs" />
|
<Compile Include="Parsers\LeafInputCsvParserTests.cs" />
|
||||||
|
<Compile Include="Remote\PiscalSshClientTests.cs" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Content Include="Parsers\LeafInputData\LeafInput-valid.csv">
|
<Content Include="Parsers\LeafInputData\LeafInput-valid.csv">
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
using System;
|
using System;
|
||||||
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
using LeafWeb.Core.Parsers;
|
using LeafWeb.Core.Parsers;
|
||||||
@@ -34,6 +35,17 @@ namespace LeafWeb.Core.Tests.Parsers
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void Parse_Find_Misencoded_Characters_test()
|
||||||
|
{
|
||||||
|
var fileInfo = new FileInfo(@"C:\Users\poprhythm\Documents\code\LeafWeb\Core\DAL\InitialData\fluxnet_site_list_all_October2015_with_joins_corrected.csv");
|
||||||
|
var parser = new FluxnetSiteCsvParser(fileInfo);
|
||||||
|
foreach (var fns in parser.Parse().Where(f => Regex.IsMatch(f.SiteName, @"[^\x00-\x7F]") || f.SiteName.Contains("?")))
|
||||||
|
{
|
||||||
|
Console.WriteLine($"{fns.FluxnetId} / {fns.SiteName}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void Parse_Find_Duplicate_Ids()
|
public void Parse_Find_Duplicate_Ids()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -0,0 +1,17 @@
|
|||||||
|
using LeafWeb.Core.Models;
|
||||||
|
using NUnit.Framework;
|
||||||
|
|
||||||
|
namespace LeafWeb.Core.Tests.Remote
|
||||||
|
{
|
||||||
|
[TestFixture]
|
||||||
|
public class PiscalSshClientTests
|
||||||
|
{
|
||||||
|
[Test]
|
||||||
|
public void Client()
|
||||||
|
{
|
||||||
|
var leafInputFile = new LeafInputFile {Filename = "blah", Id = 1};
|
||||||
|
var client = new PiscalSshClient();
|
||||||
|
client.SubmitLeafInputFile(leafInputFile);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -67,6 +67,8 @@
|
|||||||
<Compile Include="DAL\DataService.cs" />
|
<Compile Include="DAL\DataService.cs" />
|
||||||
<Compile Include="DAL\LeafWebContext.cs" />
|
<Compile Include="DAL\LeafWebContext.cs" />
|
||||||
<Compile Include="DAL\LeafWebInitializer.cs" />
|
<Compile Include="DAL\LeafWebInitializer.cs" />
|
||||||
|
<Compile Include="Models\PhotosynthesisType.cs" />
|
||||||
|
<Compile Include="Remote\IPiscalClient.cs" />
|
||||||
<Compile Include="Models\CntrlComparison.cs" />
|
<Compile Include="Models\CntrlComparison.cs" />
|
||||||
<Compile Include="Models\CntrlComparisonFittingInfo.cs" />
|
<Compile Include="Models\CntrlComparisonFittingInfo.cs" />
|
||||||
<Compile Include="Models\CntrlComparisonPhotosyntheticInfo.cs" />
|
<Compile Include="Models\CntrlComparisonPhotosyntheticInfo.cs" />
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ namespace LeafWeb.Core.DAL
|
|||||||
public DbSet<LeafInputFile> LeafInputFiles { get; set; }
|
public DbSet<LeafInputFile> LeafInputFiles { get; set; }
|
||||||
public DbSet<LeafInputStatus> LeafInputStatus { get; set; }
|
public DbSet<LeafInputStatus> LeafInputStatus { get; set; }
|
||||||
public DbSet<FluxnetSite> FluxnetSites { get; set; }
|
public DbSet<FluxnetSite> FluxnetSites { get; set; }
|
||||||
|
public DbSet<PhotosynthesisType> PhotosynthesisTypes { get; set; }
|
||||||
|
|
||||||
protected override void OnModelCreating(DbModelBuilder modelBuilder)
|
protected override void OnModelCreating(DbModelBuilder modelBuilder)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
using System.Data.Entity;
|
using System.Data.Entity;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using LeafWeb.Core.Models;
|
||||||
using LeafWeb.Core.Parsers;
|
using LeafWeb.Core.Parsers;
|
||||||
using LeafWeb.Core.Utility;
|
using LeafWeb.Core.Utility;
|
||||||
|
|
||||||
@@ -18,6 +19,16 @@ namespace LeafWeb.Core.DAL
|
|||||||
|
|
||||||
// add to context
|
// add to context
|
||||||
fluxnetSites.ForEach(s => context.FluxnetSites.Add(s));
|
fluxnetSites.ForEach(s => context.FluxnetSites.Add(s));
|
||||||
|
|
||||||
|
var photosynthesisTypes = new []
|
||||||
|
{
|
||||||
|
new PhotosynthesisType {Id = "C3_photosynthesis_leafweb", Name = "C3 Photosynthesis"},
|
||||||
|
new PhotosynthesisType {Id = "C4_photosynthesis_leafweb", Name = "C4 Photosynthesis"},
|
||||||
|
new PhotosynthesisType {Id = "CAM_photosynthesis_leafweb", Name = "CAM Photosynthesis"}
|
||||||
|
};
|
||||||
|
|
||||||
|
context.PhotosynthesisTypes.AddRange(photosynthesisTypes);
|
||||||
|
|
||||||
context.SaveChanges();
|
context.SaveChanges();
|
||||||
|
|
||||||
base.Seed(context);
|
base.Seed(context);
|
||||||
|
|||||||
@@ -23,6 +23,8 @@ namespace LeafWeb.Core.Models
|
|||||||
[Required(ErrorMessage = "")]
|
[Required(ErrorMessage = "")]
|
||||||
public string SiteId { get; set; }
|
public string SiteId { get; set; }
|
||||||
|
|
||||||
|
public virtual PhotosynthesisType Photosynthesis { get; set; }
|
||||||
|
|
||||||
[DataType(DataType.Date)]
|
[DataType(DataType.Date)]
|
||||||
[Required]
|
[Required]
|
||||||
public DateTime Created { get; set; }
|
public DateTime Created { get; set; }
|
||||||
|
|||||||
@@ -0,0 +1,14 @@
|
|||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
|
|
||||||
|
namespace LeafWeb.Core.Models
|
||||||
|
{
|
||||||
|
public class PhotosynthesisType
|
||||||
|
{
|
||||||
|
[Key]
|
||||||
|
[DatabaseGenerated(DatabaseGeneratedOption.None)]
|
||||||
|
public string Id { get; set; }
|
||||||
|
|
||||||
|
public string Name { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,59 @@
|
|||||||
|
using System;
|
||||||
|
using System.IO;
|
||||||
|
using System.Text;
|
||||||
|
using LeafWeb.Core.Models;
|
||||||
|
using Renci.SshNet;
|
||||||
|
|
||||||
|
namespace LeafWeb.Core
|
||||||
|
{
|
||||||
|
public interface IPiscalClient
|
||||||
|
{
|
||||||
|
void SubmitLeafInputFile(LeafInputFile file);
|
||||||
|
void RetrieveLeafInputResult();
|
||||||
|
}
|
||||||
|
|
||||||
|
public class PiscalSshClient : IPiscalClient
|
||||||
|
{
|
||||||
|
private SshClient GetSshClient()
|
||||||
|
{
|
||||||
|
return new SshClient("40.76.47.173", "piscaladmin", "password");
|
||||||
|
}
|
||||||
|
private ScpClient GetScpClient()
|
||||||
|
{
|
||||||
|
return new ScpClient("40.76.47.173", "piscaladmin", "password");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void SubmitLeafInputFile(LeafInputFile file)
|
||||||
|
{
|
||||||
|
using (var scp = GetScpClient())
|
||||||
|
using (var stream = new MemoryStream(file.Contents))
|
||||||
|
{
|
||||||
|
scp.Connect();
|
||||||
|
scp.Upload(stream, file.Filename);
|
||||||
|
}
|
||||||
|
|
||||||
|
using (var ssh = GetSshClient())
|
||||||
|
{
|
||||||
|
ssh.Connect();
|
||||||
|
var cmd = ssh.CreateCommand("ps");
|
||||||
|
cmd.Execute();
|
||||||
|
//var extendedData = Encoding.ASCII.GetString(cmd.ExtendedOutputStream.ToArray());
|
||||||
|
var extendedData = new StreamReader(cmd.ExtendedOutputStream, Encoding.ASCII).ReadToEnd();
|
||||||
|
ssh.Disconnect();
|
||||||
|
|
||||||
|
Console.Write(cmd.Result);
|
||||||
|
Console.Write(extendedData);
|
||||||
|
//Assert.AreEqual("12345\n", cmd.Result);
|
||||||
|
//Assert.AreEqual("654321\n", extendedData);
|
||||||
|
}
|
||||||
|
// copy file
|
||||||
|
|
||||||
|
// begin processing
|
||||||
|
}
|
||||||
|
|
||||||
|
public void RetrieveLeafInputResult()
|
||||||
|
{
|
||||||
|
throw new System.NotImplementedException();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user