hooked up csv deserialization to ui

This commit is contained in:
David Sparer
2018-02-04 11:39:04 -06:00
parent 6522524c0f
commit 3010963283
5 changed files with 61 additions and 10 deletions

View File

@@ -19,7 +19,8 @@ namespace mRemoteNG.App
mRemoteXml,
RemoteDesktopConnection,
RemoteDesktopConnectionManager,
PuttyConnectionManager
PuttyConnectionManager,
mRemoteNGCsv
}
#region Public Methods
@@ -34,8 +35,9 @@ namespace mRemoteNG.App
openFileDialog.Multiselect = true;
var fileTypes = new List<string>();
fileTypes.AddRange(new[] {Language.strFilterAllImportable, "*.xml;*.rdp;*.rdg;*.dat"});
fileTypes.AddRange(new[] {Language.strFilterAllImportable, "*.xml;*.rdp;*.rdg;*.dat;*.csv"});
fileTypes.AddRange(new[] {Language.strFiltermRemoteXML, "*.xml"});
fileTypes.AddRange(new[] {Language.strFiltermRemoteCSV, "*.csv"});
fileTypes.AddRange(new[] {Language.strFilterRDP, "*.rdp"});
fileTypes.AddRange(new[] {Language.strFilterRdgFiles, "*.rdg"});
fileTypes.AddRange(new[] {Language.strFilterPuttyConnectionManager, "*.dat"});
@@ -55,7 +57,10 @@ namespace mRemoteNG.App
switch (DetermineFileType(fileName))
{
case FileType.mRemoteXml:
importer = new mRemoteNGImporter();
importer = new MRemoteNGXmlImporter();
break;
case FileType.mRemoteNGCsv:
importer = new MRemoteNGCsvImporter();
break;
case FileType.RemoteDesktopConnection:
importer = new RemoteDesktopConnectionImporter();
@@ -125,6 +130,8 @@ namespace mRemoteNG.App
{
case ".xml":
return FileType.mRemoteXml;
case ".csv":
return FileType.mRemoteNGCsv;
case ".rdp":
return FileType.RemoteDesktopConnection;
case ".rdg":

View File

@@ -0,0 +1,42 @@
using System;
using System.IO;
using System.Linq;
using mRemoteNG.App;
using mRemoteNG.Config.DataProviders;
using mRemoteNG.Config.Serializers;
using mRemoteNG.Config.Serializers.MiscSerializers;
using mRemoteNG.Container;
using mRemoteNG.Messages;
namespace mRemoteNG.Config.Import
{
public class MRemoteNGCsvImporter : IConnectionImporter
{
public void Import(object filePath, ContainerInfo destinationContainer)
{
var filePathAsString = filePath as string;
if (filePathAsString == null)
{
Runtime.MessageCollector.AddMessage(MessageClass.ErrorMsg, "Unable to import file. File path is null.");
return;
}
if (File.Exists(filePathAsString))
Import(filePathAsString, destinationContainer);
else
Runtime.MessageCollector.AddMessage(MessageClass.ErrorMsg, $"Unable to import file. File does not exist. Path: {filePathAsString}");
}
public void Import(string fileName, ContainerInfo destinationContainer)
{
var dataProvider = new FileDataProvider(fileName);
var xmlString = dataProvider.Load();
var xmlConnectionsDeserializer = new CsvConnectionsDeserializerMremotengFormat();
var connectionTreeModel = xmlConnectionsDeserializer.Deserialize(xmlString);
var rootImportContainer = new ContainerInfo { Name = Path.GetFileNameWithoutExtension(fileName) };
rootImportContainer.AddChildRange(connectionTreeModel.RootNodes.First().Children.ToArray());
destinationContainer.AddChild(rootImportContainer);
}
}
}

View File

@@ -10,7 +10,7 @@ using mRemoteNG.Messages;
namespace mRemoteNG.Config.Import
{
// ReSharper disable once InconsistentNaming
public class mRemoteNGImporter : IConnectionImporter
public class MRemoteNGXmlImporter : IConnectionImporter
{
public void Import(object filePath, ContainerInfo destinationContainer)
{

View File

@@ -210,12 +210,13 @@ namespace mRemoteNG.Config.Serializers
private string GetNodePath(ConnectionInfo connectionInfo)
{
var nodePath = "";
var container = connectionInfo.Parent;
if (container == null) return nodePath;
while (container != _serializationTarget)
var currentItem = connectionInfo;
while (currentItem != _serializationTarget)
{
container = container.Parent;
nodePath += $@"{container.Name}\";
currentItem = currentItem.Parent;
if (currentItem == null)
break;
nodePath += $@"{currentItem.Name}\";
}
nodePath = nodePath.TrimEnd('\\');
return nodePath;

View File

@@ -157,6 +157,7 @@
<Compile Include="Config\DataProviders\FileBackupPruner.cs" />
<Compile Include="Config\DataProviders\InMemoryStringDataProvider.cs" />
<Compile Include="Config\ILoader.cs" />
<Compile Include="Config\Import\MRemoteNGCsvImporter.cs" />
<Compile Include="Config\ISaver.cs" />
<Compile Include="Config\Serializers\CredentialProviderSerializer\CredentialRepositoryListDeserializer.cs" />
<Compile Include="Config\CredentialRepositoryListLoader.cs" />
@@ -210,7 +211,7 @@
<Compile Include="Config\Settings\SettingsSaver.cs" />
<Compile Include="Config\ConfirmCloseEnum.cs" />
<Compile Include="Config\Import\ActiveDirectoryImporter.cs" />
<Compile Include="Config\Import\mRemoteNGImporter.cs" />
<Compile Include="Config\Import\MRemoteNGXmlImporter.cs" />
<Compile Include="Config\Import\PortScanImporter.cs" />
<Compile Include="Config\Import\PuttyConnectionManagerImporter.cs" />
<Compile Include="Config\Import\RemoteDesktopConnectionImporter.cs" />