mirror of
https://github.com/mRemoteNG/mRemoteNG.git
synced 2026-02-17 22:11:48 +08:00
hooked up csv deserialization to ui
This commit is contained in:
@@ -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":
|
||||
|
||||
42
mRemoteV1/Config/Import/MRemoteNGCsvImporter.cs
Normal file
42
mRemoteV1/Config/Import/MRemoteNGCsvImporter.cs
Normal 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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)
|
||||
{
|
||||
@@ -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;
|
||||
|
||||
@@ -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" />
|
||||
|
||||
Reference in New Issue
Block a user