Ejemplo n.º 1
0
        public void Load()
        {
            var xml     = XElement.Load(_configuration.CalculationMethodRepositoryFile);
            int version = _xmlSerializationService.VersionFrom(xml);

            _xmlSerializationService.Deserialize <ICoreCalculationMethodRepository>(xml, _context.CurrentProject, version).All().Each(_calculationMethodRepository.AddCalculationMethod);
        }
        public IEnumerable <T> LoadMany <T>(string fileName, bool resetIds = false)
        {
            _projectConverterLogger.Clear();

            XElement xelRoot = XElement.Load(fileName);

            if (string.IsNullOrEmpty(fileName))
            {
                return(Enumerable.Empty <T>());
            }

            var possibleElementsToDeserialize = retrieveElementsToDeserializeFromFile <T>(xelRoot, fileName).ToList();

            var selection = possibleElementsToDeserialize.Count > 1
            ? selectToDeserialize(possibleElementsToDeserialize, _objectTypeResolver.TypeFor <T>())
            : possibleElementsToDeserialize;

            if (!selection.Any())
            {
                return(Enumerable.Empty <T>());
            }

            var deserializedObjects = new List <T>();
            int version             = _xmlSerializationService.VersionFrom(xelRoot);
            var currentProject      = _context.CurrentProject;

            selection.Each(element => deserializedObjects.Add(_xmlSerializationService.Deserialize <T>(element, currentProject, version)));

            var notificationMessages = _projectConverterLogger.AllMessages().ToList();

            if (notificationMessages.Any())
            {
                _context.PublishEvent(new ShowNotificationsEvent(notificationMessages));
            }

            _postSerializationSteps.PerformPostDeserializationFor(deserializedObjects, version, resetIds);

            return(deserializedObjects);
        }