diff --git a/mRemoteV1/Config/Serializers/CsvConnectionsSerializerMremotengFormat.cs b/mRemoteV1/Config/Serializers/CsvConnectionsSerializerMremotengFormat.cs index f68a0147f..9a4f36055 100644 --- a/mRemoteV1/Config/Serializers/CsvConnectionsSerializerMremotengFormat.cs +++ b/mRemoteV1/Config/Serializers/CsvConnectionsSerializerMremotengFormat.cs @@ -1,6 +1,5 @@ using System; using System.Linq; -using mRemoteNG.App; using mRemoteNG.Connection; using mRemoteNG.Container; using mRemoteNG.Security; @@ -17,17 +16,15 @@ namespace mRemoteNG.Config.Serializers public string Serialize(ConnectionTreeModel connectionTreeModel) { - var rootNode = (RootNodeInfo)connectionTreeModel.RootNodes.First(node => node is RootNodeInfo); - return SerializeToCsv(rootNode); + var rootNode = connectionTreeModel.RootNodes.First(node => node is RootNodeInfo); + return Serialize(rootNode); } - private string SerializeToCsv(RootNodeInfo rootNodeInfo) + public string Serialize(ConnectionInfo serializationTarget) { - if (Runtime.IsConnectionsFileLoaded == false) - return ""; _csv = ""; WriteCsvHeader(); - SerializeNodesRecursive(rootNodeInfo); + SerializeNodesRecursive(serializationTarget); return _csv; } @@ -47,15 +44,21 @@ namespace mRemoteNG.Config.Serializers _csv += csvHeader; } - private void SerializeNodesRecursive(ContainerInfo containerInfo) + private void SerializeNodesRecursive(ConnectionInfo node) { - foreach (var child in containerInfo.Children) + var nodeAsContainer = node as ContainerInfo; + if (nodeAsContainer != null) { - if (child is ContainerInfo) - SerializeNodesRecursive((ContainerInfo)child); - else - SerializeConnectionInfo(child); + foreach (var child in nodeAsContainer.Children) + { + if (child is ContainerInfo) + SerializeNodesRecursive((ContainerInfo) child); + else + SerializeConnectionInfo(child); + } } + else + SerializeConnectionInfo(node); } private void SerializeConnectionInfo(ConnectionInfo con) diff --git a/mRemoteV1/Config/Serializers/CsvConnectionsSerializerRemoteDesktop2008Format.cs b/mRemoteV1/Config/Serializers/CsvConnectionsSerializerRemoteDesktop2008Format.cs index 3deafaf30..af50e4176 100644 --- a/mRemoteV1/Config/Serializers/CsvConnectionsSerializerRemoteDesktop2008Format.cs +++ b/mRemoteV1/Config/Serializers/CsvConnectionsSerializerRemoteDesktop2008Format.cs @@ -15,29 +15,32 @@ namespace mRemoteNG.Config.Serializers public string Serialize(ConnectionTreeModel connectionTreeModel) { - var rootNode = (RootNodeInfo)connectionTreeModel.RootNodes.First(node => node is RootNodeInfo); - return SerializeToCsv(rootNode); + var rootNode = connectionTreeModel.RootNodes.First(node => node is RootNodeInfo); + return Serialize(rootNode); } - private string SerializeToCsv(RootNodeInfo rootNodeInfo) + public string Serialize(ConnectionInfo serializationTarget) { - if (Runtime.IsConnectionsFileLoaded == false) - return ""; - _csv = ""; - SerializeNodesRecursive(rootNodeInfo); + SerializeNodesRecursive(serializationTarget); return _csv; } - private void SerializeNodesRecursive(ContainerInfo containerInfo) + private void SerializeNodesRecursive(ConnectionInfo node) { - foreach (var child in containerInfo.Children) + var nodeAsContainer = node as ContainerInfo; + if (nodeAsContainer != null) { - if (child is ContainerInfo) - SerializeNodesRecursive((ContainerInfo)child); - else if (child.Protocol == ProtocolType.RDP) - SerializeConnectionInfo(child); + foreach (var child in nodeAsContainer.Children) + { + if (child is ContainerInfo) + SerializeNodesRecursive((ContainerInfo)child); + else if (child.Protocol == ProtocolType.RDP) + SerializeConnectionInfo(child); + } } + else if (node.Protocol == ProtocolType.RDP) + SerializeConnectionInfo(node); } private void SerializeConnectionInfo(ConnectionInfo con) diff --git a/mRemoteV1/Config/Serializers/DataTableSerializer.cs b/mRemoteV1/Config/Serializers/DataTableSerializer.cs index 8f99873a5..9252b45f1 100644 --- a/mRemoteV1/Config/Serializers/DataTableSerializer.cs +++ b/mRemoteV1/Config/Serializers/DataTableSerializer.cs @@ -25,17 +25,17 @@ namespace mRemoteNG.Config.Serializers public DataTable Serialize(ConnectionTreeModel connectionTreeModel) { var rootNode = (RootNodeInfo)connectionTreeModel.RootNodes.First(node => node is RootNodeInfo); - SerializeToDataTable(rootNode); - return _dataTable; + return Serialize(rootNode); } - private void SerializeToDataTable(RootNodeInfo rootNodeInfo) + public DataTable Serialize(ConnectionInfo serializationTarget) { _dataTable = new DataTable(TableName); CreateSchema(); SetPrimaryKey(); _currentNodeIndex = 0; - SerializeNodesRecursive(rootNodeInfo); + SerializeNodesRecursive(serializationTarget); + return _dataTable; } private void CreateSchema() diff --git a/mRemoteV1/Config/Serializers/ISerializer.cs b/mRemoteV1/Config/Serializers/ISerializer.cs index cd19809a6..116ec562b 100644 --- a/mRemoteV1/Config/Serializers/ISerializer.cs +++ b/mRemoteV1/Config/Serializers/ISerializer.cs @@ -1,9 +1,12 @@ -using mRemoteNG.Tree; +using mRemoteNG.Connection; +using mRemoteNG.Tree; namespace mRemoteNG.Config.Serializers { public interface ISerializer { TFormat Serialize(ConnectionTreeModel connectionTreeModel); + + TFormat Serialize(ConnectionInfo serializationTarget); } } \ No newline at end of file diff --git a/mRemoteV1/Config/Serializers/SqlConnectionsSerializer.cs b/mRemoteV1/Config/Serializers/SqlConnectionsSerializer.cs index 7beb7febb..47c0ea48d 100644 --- a/mRemoteV1/Config/Serializers/SqlConnectionsSerializer.cs +++ b/mRemoteV1/Config/Serializers/SqlConnectionsSerializer.cs @@ -39,6 +39,11 @@ namespace mRemoteNG.Config.Serializers throw new NotImplementedException(); } + public string Serialize(ConnectionInfo serializationTarget) + { + throw new NotImplementedException(); + } + private bool VerifyDatabaseVersion(SqlConnection sqlConnection) { bool isVerified = false; diff --git a/mRemoteV1/Config/Serializers/XmlConnectionsSerializer.cs b/mRemoteV1/Config/Serializers/XmlConnectionsSerializer.cs index 647617ba2..39afb7443 100644 --- a/mRemoteV1/Config/Serializers/XmlConnectionsSerializer.cs +++ b/mRemoteV1/Config/Serializers/XmlConnectionsSerializer.cs @@ -31,34 +31,20 @@ namespace mRemoteNG.Config.Serializers public string Serialize(ConnectionTreeModel connectionTreeModel) { var rootNode = (RootNodeInfo)connectionTreeModel.RootNodes.First(node => node is RootNodeInfo); - return SerializeToXml(rootNode); + return Serialize(rootNode); } - private string SerializeToXml(RootNodeInfo rootNodeInfo) + public string Serialize(ConnectionInfo serializationTarget) { var xml = ""; try { - if (!Runtime.IsConnectionsFileLoaded) - return ""; - - //TreeNode treeNode; - //if (ConnectionTreeNode.GetNodeType(rootTreeNode) == TreeNodeType.Root) - //{ - // treeNode = (TreeNode)rootTreeNode.Clone(); - //} - //else - //{ - // treeNode = new TreeNode("mR|Export (" + MiscTools.DBDate(DateTime.Now) + ")"); - // treeNode.Nodes.Add(Convert.ToString(rootTreeNode.Clone())); - //} - var memoryStream = new MemoryStream(); using (_xmlTextWriter = new XmlTextWriter(memoryStream, Encoding.UTF8)) { SetXmlTextWriterSettings(); _xmlTextWriter.WriteStartDocument(); - SaveNodesRecursive(rootNodeInfo); + SaveNodesRecursive(serializationTarget); _xmlTextWriter.Flush(); var streamReader = new StreamReader(memoryStream, Encoding.UTF8, true); @@ -79,28 +65,27 @@ namespace mRemoteNG.Config.Serializers _xmlTextWriter.Indentation = 4; } - private void SaveNodesRecursive(RootNodeInfo rootNodeInfo) - { - SerializeRootNodeInfo(rootNodeInfo); - foreach (var child in rootNodeInfo.Children) - SaveNodesRecursive(child); - _xmlTextWriter.WriteEndElement(); - } - - private void SaveNodesRecursive(ConnectionInfo connectionInfo) + private void SaveNodesRecursive(ConnectionInfo node) { try { - var containerInfo = connectionInfo as ContainerInfo; - if (containerInfo != null) + var nodeAsRoot = node as RootNodeInfo; + var nodeAsContainer = node as ContainerInfo; + if (nodeAsRoot != null) { - SerializeContainerInfo(containerInfo); - foreach (var child in containerInfo.Children) + SerializeRootNodeInfo(nodeAsRoot); + foreach (var child in nodeAsRoot.Children) + SaveNodesRecursive(child); + } + else if (nodeAsContainer != null) + { + SerializeContainerInfo(nodeAsContainer); + foreach (var child in nodeAsContainer.Children) SaveNodesRecursive(child); } else { - SerializeConnectionInfo(connectionInfo); + SerializeConnectionInfo(node); } _xmlTextWriter.WriteEndElement(); }