/// <summary>
        /// Calculate all statistics from a file read result
        /// </summary>
        /// <param name="readResult"></param>
        public void CalculateStatistics(FileReadResult <decimal> readResult)
        {
            if (readResult.ReadResult != ReadResult.FileReadOk)
            {
                return;
            }

            ArithmeticMean    = Calculator.ArithmeticMean(readResult.ReadLines);
            StandardDeviation = Calculator.StandardDeviation(readResult.ReadLines);
            Frequency         = Calculator.Frequency(GetBins(readResult), readResult.ReadLines);
        }
Exemplo n.º 2
0
    public static async Task <FileReadResult> ReadFileFromStreamingAssetsWithPlatform(string fileName)
    {
        await UniTask.SwitchToMainThread();

        var finalPath      = GetPlatformPathToStreamingAssets(fileName);
        var fileReadResult = new FileReadResult();

        UnityWebRequest loadFile = null;

        try
        {
            loadFile = UnityWebRequest.Get(finalPath);
            await loadFile.SendWebRequest();
        }
        catch (Exception e)
        {
            fileReadResult.IsError = true;
            Debug.LogError($"UnityWebRequest {fileName}");
        }

        if (loadFile != null && loadFile.isDone)
        {
            if (loadFile.isNetworkError || loadFile.isHttpError)
            {
                fileReadResult = new FileReadResult()
                {
                    error   = loadFile.error,
                    IsError = true,
                };
            }
            else
            {
                fileReadResult = new FileReadResult()
                {
                    text = loadFile.downloadHandler.text,
                    data = loadFile.downloadHandler.data,
                };
            }
        }

        return(fileReadResult);
    }
        /// <summary>
        /// Get a list of valid bins to calculate frequencies
        /// </summary>
        /// <param name="readResult"></param>
        /// <returns></returns>
        private List <Bin> GetBins(FileReadResult <decimal> readResult)
        {
            var allBins = new List <Bin>();
            var min     = readResult.ReadLines.Min();
            var max     = readResult.ReadLines.Max();

            min = min - min % 10m;
            max = max - max % 10m + 10m;

            while (min < max)
            {
                allBins.Add(new Bin
                {
                    LowerValue = min,
                    UpperValue = min + 10m
                });

                min += 10m;
            }

            return(allBins);
        }
Exemplo n.º 4
0
        public FileReadResult Read(string filename)
        {
            try
            {
                var fileContent = File.ReadAllText(filename);

                var parts = fileContent.Split(new[] { MATRIX_DELIMITER }, StringSplitOptions.RemoveEmptyEntries);
                if (!Enum.TryParse(parts.First(), out MatrixOperation operation))
                {
                    throw new ArgumentException($"Нераспознаная операция '{parts.First()}'");
                }

                var result = new FileReadResult
                {
                    Operation = operation,
                    Matrices  = parts.Skip(1).Select(x => _matrixSerializer.Deserialize(x)).ToList()
                };
                return(result);
            }
            catch (Exception ex)
            {
                throw new FileLoadException($"Ошибка при чтении файла [ {filename} ].", filename, ex);
            }
        }
Exemplo n.º 5
0
        public ICollection <Matrix> Process(FileReadResult fileContent)
        {
            var operation = fileContent.Operation;

            if (operation == MatrixOperation.transpose)
            {
                return(fileContent.Matrices.Select(x =>
                {
                    var t = x.Transpose();
                    _logger.Add("\r\n" + x.ToString());
                    _logger.Add("T()");
                    _logger.Add("\r\n" + t.ToString());
                    return t;
                }).ToList());
            }

            var func = _operationResolver.Resolve(operation);

            var matrixArray   = fileContent.Matrices.ToArray();
            var currentMatrix = matrixArray[0];

            var stringBuilder = new StringBuilder();

            stringBuilder.Append($"\r\n" + currentMatrix);
            for (var i = 1; i < matrixArray.Length; i++)
            {
                stringBuilder.Append($"\r\n {operation} \r\n {matrixArray[i]}");
                currentMatrix = func.Invoke(currentMatrix, matrixArray[i]);
            }
            stringBuilder.Append($"\r\n = \r\n {currentMatrix}");
            _logger.Add(stringBuilder.ToString());

            return(new List <Matrix> {
                currentMatrix
            });
        }
Exemplo n.º 6
0
 public static ReadResult ReadFile(string FileName, bool GenerateHash = false, FileReadResult Delegate = null, FileProgressHandler FileProgress = null)
 {
     if (File.Exists(FileName))
     {
         FileStream FS;
         try
         {
             FS = File.OpenRead(FileName);
         }
         catch
         {
             return(ReadResult.ErrorOpening);
         }
         Thread T = new Thread(reader)
         {
             IsBackground = true,
             Name         = "File reader for " + FileName,
             Priority     = ThreadPriority.BelowNormal
         };
         T.Start(new ThreadArgs()
         {
             FileName     = FileName,
             FS           = FS,
             GenerateHash = GenerateHash,
             T            = T,
             Delegate     = Delegate,
             FileProgress = FileProgress
         });
         return(ReadResult.Reading);
     }
     return(ReadResult.FileNotFound);
 }
Exemplo n.º 7
0
        public CodeSnippetCollection ReadCollection(string filename, out FileReadResult readResult)
        {
            SecureString password = _passwordHelper.Password;

            string usbKeyId = null;

            readResult = FileReadResult.Succes;
            string        _fileData       = string.Empty;
            SecureString  _usbKeyPassword = null;
            VersionNumber _minimalVersion = new VersionNumber(3, 0, 0, 0);

            CodeSnippetCollection _resultCollection = new CodeSnippetCollection();

            FileHeader _header = null;

            try
            {
                EncryptedBinaryFile <CodeSnippetCollection, FileHeader> _readHeader = new EncryptedBinaryFile <CodeSnippetCollection, FileHeader>(filename, null);
                _header = _readHeader.ReadHeader();
                if (!_header.Identifier.Equals(Constants.FILEHEADERIDENTIFIER))
                {
                    readResult = FileReadResult.ErrorUnknownIdentifier;
                    return(null);
                }

                VersionNumber _fileVersion = new VersionNumber(_header.Version);
                if (_fileVersion < _minimalVersion)
                {
                    readResult = FileReadResult.ErrorVersionToOld;
                    return(null);
                }
            }
            catch
            {
                readResult = FileReadResult.ErrorReadingFile;
                return(null);
            }

            EncryptedBinaryFile <CodeSnippetCollection, FileHeader> _reader = new EncryptedBinaryFile <CodeSnippetCollection, FileHeader>(filename, null);

            switch (_header.FileEncyptionMode)
            {
            case FileEncyptionMode.DefaultEncryption:
                _reader = new EncryptedBinaryFile <CodeSnippetCollection, FileHeader>(filename, null);
                try
                {
                    _passwordHelper.ClearPassWord();
                    _resultCollection = _reader.Read();
                    return(_resultCollection);    // SUCCES
                }
                catch
                {
                    readResult = FileReadResult.ErrorReadingFile;
                    return(null);
                }

            case FileEncyptionMode.PasswordEncryption:

retryPassword:
                _reader = new EncryptedBinaryFile <CodeSnippetCollection, FileHeader>(filename, password);
                try
                {
                    _resultCollection = _reader.Read();

                    _passwordHelper.Password = password;
                    _passwordHelper.UsbKeyId = null;
                    _passwordHelper.ShowKey();

                    return(_resultCollection);    // SUCCES
                }
                catch (FileLoadException)
                {
                    _passwordHelper.ClearPassWord();
                    readResult = FileReadResult.ErrorReadingFile;
                    return(null);
                }
                catch (FileNotFoundException)
                {
                    _passwordHelper.ClearPassWord();
                    readResult = FileReadResult.ErrorReadingFile;
                    return(null);
                }
                catch (Exception)
                {
                    goto setPassword;
                }

setPassword:
                FormSetPassword _formSet = new FormSetPassword();
                DialogResult _dg = _formSet.ShowDialog();
                if (_dg == DialogResult.OK)
                {
                    password = _formSet.Password;
                    goto retryPassword;
                }
                else
                {
                    readResult = FileReadResult.OpenCanceled;
                    return(null);
                }

            case FileEncyptionMode.UsbKEYEncryption:
                bool _canceled;

                usbKeyId = _header.UsbKeyId;
                byte[] _key = _passwordHelper.GetUsbKey(_header.UsbKeyId, false, out _canceled);
                if (_canceled)
                {
                    readResult = FileReadResult.OpenCanceled;
                    return(null);
                }

                _usbKeyPassword = StringCipher.ToSecureString(Utils.ByteArrayToString(_key));

                _reader = new EncryptedBinaryFile <CodeSnippetCollection, FileHeader>(filename, _usbKeyPassword);
                try
                {
                    _resultCollection = _reader.Read();

                    _passwordHelper.Password = null;
                    _passwordHelper.UsbKeyId = _header.UsbKeyId;
                    _passwordHelper.ShowKey();

                    return(_resultCollection);    // SUCCES
                }
                catch
                {
                    _passwordHelper.ClearPassWord();
                    readResult = FileReadResult.ErrorReadingFile;
                    return(null);
                }
            }

            _passwordHelper.ClearPassWord();
            readResult = FileReadResult.ErrorReadingFile;
            return(null);
        }