Пример #1
0
        internal static void Save(Stream stream, SaveFilter filter)
        {
            if (filter == SaveFilter.SaveWorld)
            {
                lock (Game.Workspace.Locker)
                {
                    if (Game.Workspace.PlaceId != string.Empty)
                    {
                        Inst.Serialize(Game.Workspace, stream);
                        stream.Position = 0;
                        Engine.SavePlace?.Invoke(Game.Workspace.PlaceId, stream);
                    }
                    else
                    {
                        Game.DataModel.Logger.Warn($"Workspace.Place is empty: cannot save.");
                    }
                }
            }

            if (filter == SaveFilter.SaveGame)
            {
                Inst.Serialize(Game.DataModel, stream, includeWorkspaceInGame: false);
                stream.Position = 0;
                Engine.SaveGame?.Invoke(stream);
            }

            if (filter == SaveFilter.SaveTogether)
            {
                Inst.Serialize(Game.DataModel, stream, includeWorkspaceInGame: true);
            }
        }
Пример #2
0
        /// <summary>
        /// Saves the given <see cref="ConnectionTreeModel"/>.
        /// If <see cref="useDatabase"/> is true, <see cref="connectionFileName"/> is ignored
        /// </summary>
        /// <param name="connectionTreeModel"></param>
        /// <param name="useDatabase"></param>
        /// <param name="saveFilter"></param>
        /// <param name="connectionFileName"></param>
        /// <param name="forceSave">Bypasses safety checks that prevent saving if a connection file isn't loaded.</param>
        /// <param name="propertyNameTrigger">
        /// Optional. The name of the property that triggered
        /// this save.
        /// </param>
        public void SaveConnections(ConnectionTreeModel connectionTreeModel,
                                    bool useDatabase,
                                    SaveFilter saveFilter,
                                    string connectionFileName,
                                    bool forceSave             = false,
                                    string propertyNameTrigger = "")
        {
            if (connectionTreeModel == null)
            {
                return;
            }

            if (!forceSave && !IsConnectionsFileLoaded)
            {
                return;
            }

            if (_batchingSaves)
            {
                _saveRequested = true;
                return;
            }

            try
            {
                Runtime.MessageCollector.AddMessage(MessageClass.InformationMsg, "Saving connections...");
                RemoteConnectionsSyncronizer?.Disable();

                var previouslyUsingDatabase = UsingDatabase;

                var saver = useDatabase
                    ? (ISaver <ConnectionTreeModel>) new SqlConnectionsSaver(saveFilter,
                                                                             _localConnectionPropertiesSerializer,
                                                                             _localConnectionPropertiesDataProvider)
                    : new XmlConnectionsSaver(connectionFileName, saveFilter);

                saver.Save(connectionTreeModel, propertyNameTrigger);

                if (UsingDatabase)
                {
                    LastSqlUpdate = DateTime.Now;
                }

                UsingDatabase      = useDatabase;
                ConnectionFileName = connectionFileName;
                RaiseConnectionsSavedEvent(connectionTreeModel, previouslyUsingDatabase, UsingDatabase,
                                           connectionFileName);
                Runtime.MessageCollector.AddMessage(MessageClass.InformationMsg, "Successfully saved connections");
            }
            catch (Exception ex)
            {
                Runtime.MessageCollector?.AddExceptionMessage(
                    string.Format(Language.strConnectionsFileCouldNotSaveAs,
                                  connectionFileName), ex, logOnly: false);
            }
            finally
            {
                RemoteConnectionsSyncronizer?.Enable();
            }
        }
Пример #3
0
 public DataTableSerializer(SaveFilter saveFilter,
                            ICryptographyProvider cryptographyProvider,
                            SecureString encryptionKey)
 {
     _saveFilter           = saveFilter.ThrowIfNull(nameof(saveFilter));
     _cryptographyProvider = cryptographyProvider.ThrowIfNull(nameof(cryptographyProvider));
     _encryptionKey        = encryptionKey.ThrowIfNull(nameof(encryptionKey));
 }
Пример #4
0
 public SqlConnectionsSaver(SaveFilter saveFilter)
 {
     if (saveFilter == null)
     {
         throw new ArgumentNullException(nameof(saveFilter));
     }
     _saveFilter = saveFilter;
 }
Пример #5
0
 public void Setup()
 {
     _saveFilter          = new SaveFilter();
     _dataTableSerializer = new DataTableSerializer(
         _saveFilter,
         new LegacyRijndaelCryptographyProvider(),
         new SecureString());
 }
Пример #6
0
        public void Setup()
        {
            _cryptographyProvider = new CryptographyProviderFactory().CreateAeadCryptographyProvider(BlockCipherEngines.AES, BlockCipherModes.GCM);
            var saveFilter = new SaveFilter();

            _documentCompiler    = new XmlConnectionsDocumentCompiler(_cryptographyProvider, saveFilter);
            _connectionTreeModel = SetupConnectionTreeModel();
        }
        public CsvConnectionsSerializerMremotengFormat(SaveFilter saveFilter, ICredentialRepositoryList credentialRepositoryList)
        {
            saveFilter.ThrowIfNull(nameof(saveFilter));
            credentialRepositoryList.ThrowIfNull(nameof(credentialRepositoryList));

            _saveFilter = saveFilter;
            _credentialRepositoryList = credentialRepositoryList;
        }
        public void Setup()
        {
            var connectionTreeModel = SetupConnectionTreeModel();
            var cryptoProvider      = new CryptographyProviderFactory().CreateAeadCryptographyProvider(BlockCipherEngines.AES, BlockCipherModes.GCM);
            var saveFilter          = new SaveFilter();

            _originalDocument  = new XmlConnectionsDocumentCompiler(cryptoProvider, saveFilter).CompileDocument(connectionTreeModel, false, false);
            _documentEncryptor = new XmlConnectionsDocumentEncryptor(cryptoProvider);
        }
Пример #9
0
        public void SerializerRespectsSaveFilterSettings(string valueThatShouldntExist)
        {
            var saveFilter     = new SaveFilter(true);
            var serializer     = new CsvConnectionsSerializerMremotengFormat(saveFilter, _credentialRepositoryList);
            var connectionInfo = BuildConnectionInfo();
            var csv            = serializer.Serialize(connectionInfo);

            Assert.That(csv, Does.Not.Match(valueThatShouldntExist));
        }
Пример #10
0
        public static void ExportToFile(ConnectionInfo selectedNode, ConnectionTreeModel connectionTreeModel)
        {
            try
            {
                var saveFilter = new SaveFilter();

                using (var exportForm = new ExportForm())
                {
                    if (selectedNode?.GetTreeNodeType() == TreeNodeType.Container)
                    {
                        exportForm.SelectedFolder = selectedNode as ContainerInfo;
                    }
                    else if (selectedNode?.GetTreeNodeType() == TreeNodeType.Connection)
                    {
                        if (selectedNode.Parent.GetTreeNodeType() == TreeNodeType.Container)
                        {
                            exportForm.SelectedFolder = selectedNode.Parent;
                        }
                        exportForm.SelectedConnection = selectedNode;
                    }

                    if (exportForm.ShowDialog(FrmMain.Default) != DialogResult.OK)
                    {
                        return;
                    }

                    ConnectionInfo exportTarget;
                    switch (exportForm.Scope)
                    {
                    case ExportForm.ExportScope.SelectedFolder:
                        exportTarget = exportForm.SelectedFolder;
                        break;

                    case ExportForm.ExportScope.SelectedConnection:
                        exportTarget = exportForm.SelectedConnection;
                        break;

                    default:
                        exportTarget = connectionTreeModel.RootNodes.First(node => node is RootNodeInfo);
                        break;
                    }

                    saveFilter.SaveUsername     = exportForm.IncludeUsername;
                    saveFilter.SavePassword     = exportForm.IncludePassword;
                    saveFilter.SaveDomain       = exportForm.IncludeDomain;
                    saveFilter.SaveInheritance  = exportForm.IncludeInheritance;
                    saveFilter.SaveCredentialId = exportForm.IncludeAssignedCredential;

                    SaveExportFile(exportForm.FileName, exportForm.SaveFormat, saveFilter, exportTarget);
                }
            }
            catch (Exception ex)
            {
                Runtime.MessageCollector.AddExceptionMessage("App.Export.ExportToFile() failed.", ex);
            }
        }
        public void InheritanceNotSerialiedWhenFiltered(string attributeName, ConnectionInfo connectionInfo)
        {
            var saveFilter = new SaveFilter(true);

            _connectionNodeSerializer = new XmlConnectionNodeSerializer(_cryptographyProvider, "myPassword1".ConvertToSecureString(), saveFilter);
            var returnVal       = _connectionNodeSerializer.SerializeConnectionInfo(connectionInfo);
            var targetAttribute = returnVal.Attribute(XName.Get(attributeName));

            Assert.That(targetAttribute?.Value, Is.EqualTo(false.ToString()));
        }
        public void AttributesNotSerializedWhenFiltered(string attributeName, ConnectionInfo connectionInfo)
        {
            var saveFilter     = new SaveFilter(true);
            var cryptoProvider = new CryptographyProviderFactory().CreateAeadCryptographyProvider(BlockCipherEngines.AES, BlockCipherModes.GCM);

            _connectionNodeSerializer = new XmlConnectionNodeSerializer(cryptoProvider, "myPassword1".ConvertToSecureString(), saveFilter);
            var returnVal       = _connectionNodeSerializer.SerializeConnectionInfo(connectionInfo);
            var targetAttribute = returnVal.Attribute(XName.Get(attributeName));

            Assert.That(targetAttribute?.Value, Is.EqualTo(string.Empty));
        }
Пример #13
0
 public SqlConnectionsSaver(
     SaveFilter saveFilter,
     ISerializer <IEnumerable <LocalConnectionPropertiesModel>, string> localPropertieSerializer,
     IDataProvider <string> localPropertiesDataProvider)
 {
     if (saveFilter == null)
     {
         throw new ArgumentNullException(nameof(saveFilter));
     }
     _saveFilter = saveFilter;
     _localPropertiesSerializer = localPropertieSerializer.ThrowIfNull(nameof(localPropertieSerializer));
     _dataProvider = localPropertiesDataProvider.ThrowIfNull(nameof(localPropertiesDataProvider));
 }
Пример #14
0
        public XmlConnectionsDocumentCompiler(ICryptographyProvider cryptographyProvider, SaveFilter saveFilter)
        {
            if (cryptographyProvider == null)
            {
                throw new ArgumentNullException(nameof(cryptographyProvider));
            }
            if (saveFilter == null)
            {
                throw new ArgumentNullException(nameof(saveFilter));
            }

            _cryptographyProvider = cryptographyProvider;
            _saveFilter           = saveFilter;
        }
        public XmlConnectionsSaver(string connectionFileName, SaveFilter saveFilter)
        {
            if (string.IsNullOrEmpty(connectionFileName))
            {
                throw new ArgumentException($"Argument '{nameof(connectionFileName)}' cannot be null or empty");
            }
            if (saveFilter == null)
            {
                throw new ArgumentNullException(nameof(saveFilter));
            }

            _connectionFileName = connectionFileName;
            _saveFilter         = saveFilter;
        }
Пример #16
0
        private static void SaveExportFile(string fileName,
                                           SaveFormat saveFormat,
                                           SaveFilter saveFilter,
                                           ConnectionInfo exportTarget)
        {
            try
            {
                ISerializer <ConnectionInfo, string> serializer;
                switch (saveFormat)
                {
                case SaveFormat.mRXML:
                    var cryptographyProvider     = new CryptoProviderFactoryFromSettings().Build();
                    var rootNode                 = exportTarget.GetRootParent() as RootNodeInfo;
                    var connectionNodeSerializer = new XmlConnectionNodeSerializer27(
                        cryptographyProvider,
                        rootNode?.PasswordString
                        .ConvertToSecureString() ??
                        new RootNodeInfo(RootNodeType
                                         .Connection)
                        .PasswordString
                        .ConvertToSecureString(),
                        saveFilter);
                    serializer = new XmlConnectionsSerializer(cryptographyProvider, connectionNodeSerializer);
                    break;

                case SaveFormat.mRCSV:
                    serializer =
                        new CsvConnectionsSerializerMremotengFormat(saveFilter, Runtime.CredentialProviderCatalog);
                    break;

                default:
                    throw new ArgumentOutOfRangeException(nameof(saveFormat), saveFormat, null);
                }

                var serializedData   = serializer.Serialize(exportTarget);
                var fileDataProvider = new FileDataProvider(fileName);
                fileDataProvider.Save(serializedData);
            }
            catch (Exception ex)
            {
                Runtime.MessageCollector.AddExceptionStackTrace($"Export.SaveExportFile(\"{fileName}\") failed.", ex);
            }
            finally
            {
                Runtime.ConnectionsService.RemoteConnectionsSyncronizer?.Enable();
            }
        }
Пример #17
0
        public XmlConnectionNodeSerializer26(ICryptographyProvider cryptographyProvider, SecureString encryptionKey, SaveFilter saveFilter)
        {
            if (cryptographyProvider == null)
            {
                throw new ArgumentNullException(nameof(cryptographyProvider));
            }
            if (encryptionKey == null)
            {
                throw new ArgumentNullException(nameof(encryptionKey));
            }
            if (saveFilter == null)
            {
                throw new ArgumentNullException(nameof(saveFilter));
            }

            _cryptographyProvider = cryptographyProvider;
            _encryptionKey        = encryptionKey;
            _saveFilter           = saveFilter;
        }
Пример #18
0
 public static string ToString(SaveFilter saveFilter)
 {
     return string.Format("{0} ({1})|{1}", saveFilter._name, saveFilter.Extensions);
 }
 public DataTableSerializer(SaveFilter saveFilter)
 {
     _saveFilter = saveFilter;
 }
Пример #20
0
        public async Task <SaveFilterViewModel> SaveFilterById(int id, int userId, Language language, string deviceId)
        {
            SaveFilter saveFilter = null;
            Guest      guest      = new Guest();
            var        user       = await _repository.FilterAsNoTracking <User>(u => u.Id == userId).FirstOrDefaultAsync();

            if (user == null)
            {
                guest = await _repository.FilterAsNoTracking <Guest>(g => g.DeviceId == deviceId).FirstOrDefaultAsync();

                if (guest == null)
                {
                    throw new Exception(_optionsBinder.Error().UserNotFound);
                }
                saveFilter = await _repository.FilterAsNoTracking <SaveFilter>(sf => sf.Id == id).FirstOrDefaultAsync();

                if (saveFilter.GuestId != guest.Id)
                {
                    throw new Exception(_optionsBinder.Error().NotParticipating);
                }
            }
            else
            {
                saveFilter = await _repository.FilterAsNoTracking <SaveFilter>(sf => sf.Id == id).FirstOrDefaultAsync();

                if (saveFilter.UserId != user.Id)
                {
                    throw new Exception(_optionsBinder.Error().NotParticipating);
                }
            }
            return(await _repository.FilterAsNoTracking <SaveFilter>(sf => sf.Id == id)
                   .Select(sf => new SaveFilterViewModel
            {
                Id = sf.Id,
                SaveFilterName = sf.SaveFilterName,
                Search = sf.Search,
                AnnouncementType = sf.AnnouncementType,
                AnnouncementEstateType = sf.AnnouncementEstateType,
                AnnouncementRentType = sf.AnnouncementRentType,
                AnnouncementResidentialType = sf.AnnouncementResidentialType,
                CityName = sf.CityName,
                CountryName = sf.CountryName,
                FurnishingStatus = sf.FurnishingStatus,
                LandCategory = sf.LandCategory,
                Features = sf.Features.Select(f => f.FeatureType).ToList(),
                BathroomCount = sf.BathroomCount,
                BedroomCount = sf.BedroomCount,
                PriceFrom = sf.PriceFrom,
                PriceTo = sf.PriceTo,
                MinArea = sf.MinArea,
                MaxArea = sf.MaxArea,
                FilterCount = sf.FilterCount,
                CityId = sf.CityId,
                CountryId = sf.CountryId,
                SittingCount = sf.SittingCount,
                SaleType = sf.SaleType,
                BuildingAge = sf.BuildingAge,
                ConstructionStatus = sf.ConstructionStatus,
                OwnerShip = sf.OwnerShip,
                CommercialType = sf.CommercialType,
                LandType = sf.LandType,
                MaxMeterPrice = sf.MaxMeterPrice,
                MinMeterPrice = sf.MinMeterPrice,
                FacadeType = sf.FacadeType
            }).FirstOrDefaultAsync());
        }
Пример #21
0
        public async Task <bool> Edit(UpdateSaveFilterModel model, int userId, int id, Language language, string deviceId)
        {
            SaveFilter saveFilter = null;
            Guest      guest      = new Guest();
            var        user       = await _repository.FilterAsNoTracking <User>(u => u.Id == userId).FirstOrDefaultAsync();

            if (user == null)
            {
                guest = await _repository.FilterAsNoTracking <Guest>(g => g.DeviceId == deviceId).FirstOrDefaultAsync();

                if (guest == null)
                {
                    throw new Exception(_optionsBinder.Error().UserNotFound);
                }
                saveFilter = await _repository.FilterAsNoTracking <SaveFilter>(sf => sf.Id == id).FirstOrDefaultAsync();

                if (saveFilter.GuestId != guest.Id)
                {
                    throw new Exception(_optionsBinder.Error().NotParticipating);
                }
            }
            else
            {
                saveFilter = await _repository.FilterAsNoTracking <SaveFilter>(sf => sf.Id == id).FirstOrDefaultAsync();

                if (saveFilter.UserId != user.Id)
                {
                    throw new Exception(_optionsBinder.Error().NotParticipating);
                }
            }
            var filterCount = 0;

            if (string.IsNullOrEmpty(model.SaveFilterName))
            {
                throw new Exception(_optionsBinder.Error().FilterName);
            }
            if (!string.IsNullOrEmpty(model.Search))
            {
                saveFilter.Search = model.Search;
                filterCount      += 1;
            }
            if (model.AnnouncementType.HasValue)
            {
                if (saveFilter.Description == null)
                {
                    saveFilter.Description = model.AnnouncementType.ToString();
                }
                saveFilter.AnnouncementType = model.AnnouncementType;
                filterCount += 1;
            }
            if (model.AnnouncementEstateType.HasValue)
            {
                if (saveFilter.Description == null)
                {
                    saveFilter.Description = model.AnnouncementEstateType.ToString();
                }
                saveFilter.AnnouncementEstateType = model.AnnouncementEstateType;
                filterCount += 1;
            }
            if (model.AnnouncementRentType.HasValue)
            {
                saveFilter.AnnouncementRentType = model.AnnouncementRentType;
                filterCount += 1;
            }
            if (model.AnnouncementResidentialType.HasValue)
            {
                saveFilter.AnnouncementResidentialType = model.AnnouncementResidentialType;
                filterCount += 1;
            }
            if (model.LandType.HasValue)
            {
                saveFilter.LandType = model.LandType;
                filterCount        += 1;
            }
            if (model.ConstructionStatus.HasValue)
            {
                saveFilter.ConstructionStatus = model.ConstructionStatus;
                filterCount += 1;
            }
            if (model.LandCategory.HasValue)
            {
                saveFilter.LandCategory = model.LandCategory;
                filterCount            += 1;
            }
            if (model.FurnishingStatus.HasValue)
            {
                saveFilter.FurnishingStatus = model.FurnishingStatus;
                filterCount += 1;
            }
            if (model.SaleType.HasValue)
            {
                saveFilter.SaleType = model.SaleType;
                filterCount        += 1;
            }
            if (model.BuildingAge.HasValue)
            {
                saveFilter.BuildingAge = model.BuildingAge;
                filterCount           += 1;
            }
            if (model.CommercialType.HasValue)
            {
                saveFilter.CommercialType = model.CommercialType;
                filterCount += 1;
            }
            if (model.FacadeType.HasValue)
            {
                saveFilter.FacadeType = model.FacadeType;
                filterCount          += 1;
            }
            if (model.OwnerShip.HasValue)
            {
                saveFilter.OwnerShip = model.OwnerShip;
                filterCount         += 1;
            }
            if (model.SittingCount.HasValue)
            {
                saveFilter.SittingCount = model.SittingCount;
                filterCount            += 1;
            }
            if (model.CountryId.HasValue)
            {
                saveFilter.CountryId   = model.CountryId;
                saveFilter.CountryName = model.CountryName;
                filterCount           += 1;
            }
            if (model.CityId.HasValue)
            {
                saveFilter.CityId   = model.CityId;
                saveFilter.CityName = model.CountryName;
                filterCount        += 1;
            }
            if (model.PriceFrom > 0 || model.PriceTo > 0)
            {
                saveFilter.PriceTo   = model.PriceTo;
                saveFilter.PriceFrom = model.PriceFrom;
                filterCount         += 1;
            }
            if (model.MinArea > 0 || model.MaxArea > 0)
            {
                saveFilter.MinArea = model.MinArea;
                saveFilter.MaxArea = model.MaxArea;
                filterCount       += 1;
            }
            if (model.MaxMeterPrice.HasValue || model.MinMeterPrice.HasValue)
            {
                saveFilter.MinMeterPrice = model.MinMeterPrice;
                saveFilter.MaxMeterPrice = model.MaxMeterPrice;
                filterCount += 1;
            }
            if (model.BathroomCount != 0 && model.BathroomCount.HasValue)
            {
                saveFilter.BathroomCount = model.BathroomCount;
                filterCount += 1;
            }
            if (model.BedroomCount != 0 && model.BedroomCount.HasValue)
            {
                saveFilter.BedroomCount = model.BedroomCount;
                filterCount            += 1;
            }
            saveFilter.SaveFilterName = model.SaveFilterName;

            var features = await _repository
                           .Filter <SaveFilterFeature>(x => x.SaveFilterId == saveFilter.Id).ToListAsync();

            _repository.HardDeleteRange(features);
            if (model.Features.Count() != 0)
            {
                foreach (var item in model.Features)
                {
                    _repository.Create(new SaveFilterFeature
                    {
                        FeatureType  = item,
                        SaveFilterId = saveFilter.Id
                    });
                }
                filterCount += 1;
            }
            _repository.Update(saveFilter);
            await _repository.SaveChangesAsync();

            return(true);
        }
Пример #22
0
 public void Teardown()
 {
     _saveFilter          = null;
     _dataTableSerializer = null;
 }
Пример #23
0
 public XmlConnectionNodeSerializer(ICryptographyProvider cryptographyProvider, SecureString encryptionKey, SaveFilter saveFilter)
 {
     _cryptographyProvider = cryptographyProvider;
     _encryptionKey        = encryptionKey;
     _saveFilter           = saveFilter;
 }
 public void Setup()
 {
     _saveFilter          = new SaveFilter();
     _dataTableSerializer = new DataTableSerializer(_saveFilter);
 }
Пример #25
0
        private static void SaveExportFile(string fileName, ConnectionsSaver.Format saveFormat, SaveFilter saveFilter, ConnectionInfo exportTarget)
        {
            try
            {
                ISerializer <string> serializer;
                switch (saveFormat)
                {
                case ConnectionsSaver.Format.mRXML:
                    serializer = new XmlConnectionsSerializer();
                    ((XmlConnectionsSerializer)serializer).SaveFilter = saveFilter;
                    break;

                case ConnectionsSaver.Format.mRCSV:
                    serializer = new CsvConnectionsSerializerMremotengFormat();
                    ((CsvConnectionsSerializerMremotengFormat)serializer).SaveFilter = saveFilter;
                    break;

                default:
                    throw new ArgumentOutOfRangeException(nameof(saveFormat), saveFormat, null);
                }
                var serializedData   = serializer.Serialize(exportTarget);
                var fileDataProvider = new FileDataProvider(fileName);
                fileDataProvider.Save(serializedData);
            }
            catch (Exception ex)
            {
                Runtime.MessageCollector.AddExceptionStackTrace($"Export.SaveExportFile(\"{fileName}\") failed.", ex);
            }
            finally
            {
                Runtime.RemoteConnectionsSyncronizer?.Enable();
            }
        }
Пример #26
0
        private static void SaveExportFile(string fileName, ConnectionsSaver.Format saveFormat, SaveFilter saveFilter, ConnectionInfo exportTarget)
        {
            try
            {
                ISerializer <string> serializer;
                switch (saveFormat)
                {
                case ConnectionsSaver.Format.mRXML:
                    var factory = new CryptographyProviderFactory();
                    var cryptographyProvider = factory.CreateAeadCryptographyProvider(mRemoteNG.Settings.Default.EncryptionEngine, mRemoteNG.Settings.Default.EncryptionBlockCipherMode);
                    cryptographyProvider.KeyDerivationIterations = Settings.Default.EncryptionKeyDerivationIterations;
                    serializer = new XmlConnectionsSerializer(cryptographyProvider)
                    {
                        Export     = true,
                        SaveFilter = saveFilter
                    };
                    break;

                case ConnectionsSaver.Format.mRCSV:
                    serializer = new CsvConnectionsSerializerMremotengFormat
                    {
                        SaveFilter = saveFilter
                    };
                    break;

                default:
                    throw new ArgumentOutOfRangeException(nameof(saveFormat), saveFormat, null);
                }
                var serializedData   = serializer.Serialize(exportTarget);
                var fileDataProvider = new FileDataProvider(fileName);
                fileDataProvider.Save(serializedData);
            }
            catch (Exception ex)
            {
                Runtime.MessageCollector.AddExceptionStackTrace($"Export.SaveExportFile(\"{fileName}\") failed.", ex);
            }
            finally
            {
                Runtime.RemoteConnectionsSyncronizer?.Enable();
            }
        }
Пример #27
0
        internal static void Save(SaveFilter filter)
        {
            var stream = new MemoryStream(1024);

            Save(stream, filter);
        }
Пример #28
0
        /// <summary>
        /// Serializes the DataModel and/or Workspace.
        /// </summary>
        public void SaveGame(SaveFilter filter)
        {
            Logger.Info($"Saving DataModel. ({filter})");

            Save(filter);
        }