Example #1
0
        private int Process(IdMappings idMappings, string mapFilePath)
        {
            Log.Information("Processing {file}", mapFilePath);
            using var mapFile = new GZipStream(File.OpenRead(mapFilePath), CompressionMode.Decompress);
            var reader = new MapReader(idMappings);

            try
            {
                var mapData = reader.Read(new MapDeserializer(new PositionTrackingStream(mapFile)));
                validator?.Validate(mapData);
                duplicateFinder.Process(mapData, mapFilePath);
            }
            catch (InvalidDataException e)
            {
                Log.Error(e, "Failed to process map {file}. File is most likely corrupted.", mapFilePath);
                return(e.HResult);
            }
            catch (ArgumentException e)
            {
                Log.Error(e, "Failed to process map {file}. File is most likely corrupted.", mapFilePath);
                return(e.HResult);
            }
            catch (InvalidOperationException e)
            {
                Log.Error(e, "Failed to process map {file}. File is most likely corrupted.", mapFilePath);
                return(e.HResult);
            }

            return(0);
        }
Example #2
0
        public async Task <EntityValidationResult <Map> > AddMap(Map map)
        {
            try
            {
                var result           = new EntityValidationResult <Map>();
                var validationResult = _validator.Validate(map);

                result.IsValid = validationResult.IsValid;
                result.Object  = map;

                if (validationResult.IsValid)
                {
                    map.Id = Guid.NewGuid();

                    _mapRepository.Create(map);
                    await _mapRepository.SaveAsync();
                }
                else
                {
                    result.Errors = validationResult.Errors.Select(x => new EntityValidationFailure {
                        PropertyName = x.PropertyName, ErrorMessage = x.ErrorMessage
                    }).ToList();
                }

                return(result);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
Example #3
0
        public Maze Parse(MapTokens map)
        {
            MapDimensions mapDimensions = ParseDimensions(map.MapDimensions);
            IEnumerable <IEnumerable <MapObject> > mapBody = ParseMapBody(map.MapBodyValues);


            MapValidator mapValidator = new MapValidator();

            if (!mapValidator.Validate(mapBody, mapDimensions))
            {
                throw new Exception("Map validation has been fail");
            }

            return(new Maze(mapBody, mapDimensions));
        }