Пример #1
0
        public double[] DataComplex(int channelNo, int shotNo, int start, int end, double stepD)
        {
            try
            {
                int step   = (int)Math.Ceiling(stepD);
                int length = (end - start) / step;

                string fileDirectory;
                if (shotNo < 0)
                {
                    throw new Exception("读取数据炮号应大于或等于0!");
                }
                else if (shotNo == 0)
                {
                    fileDirectory = DataFileParentDirectory + "\\" + CurrentShotNo.ToString() + "\\";
                }
                else
                {
                    fileDirectory = DataFileParentDirectory + "\\" + shotNo.ToString() + "\\";
                }
                dataReader = DataFileFactory.GetReader(fileDirectory, dataFileName);
                double[] data = dataReader.LoadDataFromFileComplexRam(channelNo, (ulong)start, (ulong)step, (ulong)length, 1);
                return(data);
            }
            catch
            {
                return(null);
            }
        }
Пример #2
0
 public double[] Data(int channelNo, int shotNo, int start, int length)
 {
     try
     {
         string fileDirectory;
         if (shotNo < 0)
         {
             throw new Exception("读取数据炮号应大于或等于0!");
         }
         else if (shotNo == 0)
         {
             fileDirectory = DataFileParentDirectory + "\\" + CurrentShotNo.ToString() + "\\";
         }
         else
         {
             fileDirectory = DataFileParentDirectory + "\\" + shotNo.ToString() + "\\";
         }
         dataReader = DataFileFactory.GetReader(fileDirectory, dataFileName);
         double[] data = dataReader.LoadDataFromFile(channelNo, (ulong)start, (ulong)length);
         return(data);
     }
     catch
     {
         return(null);
     }
 }
        public async Task Given_AddData_When_UserDoesNotExistAndFileTypeIsInput_Then_ShouldSucceed()
        {
            var command   = GetAddDataCommand(FileType.Input);
            var user      = UserFactory.GetUser();
            var modelFile = DataFileFactory.GetModelFile(user);

            userServiceMock.Setup(service => service.GetByUsername(It.IsAny <string>()))
            .ReturnsAsync(Maybe <User> .None);
            userServiceMock.Setup(service => service.AddUser(It.IsAny <AddUserCommand>()))
            .ReturnsAsync(Result.Success(user));
            dataFileReadRepositoryMock.Setup(repository => repository.Find(It.IsAny <Expression <Func <DataFile, bool> > >()))
            .ReturnsAsync(new List <DataFile> {
                modelFile
            });
            fileStorageServiceMock.Setup(service => service.SaveFile(It.IsAny <SaveFileCommand>()))
            .Returns(Task.CompletedTask);
            dataFileWriteRepositoryMock.Setup(repository => repository.Create(It.IsAny <DataFile>()))
            .Returns(Task.CompletedTask);
            dataFileWriteRepositoryMock.Setup(repository => repository.Commit())
            .Returns(Task.CompletedTask);

            var result = await SystemUnderTest.AddData(command);

            result.IsSuccess.Should().BeTrue();
        }
        public async Task Given_GetData_ShouldReturnStream()
        {
            var query    = GetGetFilteredDataQuery();
            var user     = UserFactory.GetUser();
            var dataFile = DataFileFactory.GetDataFile(user);

            var fileInfo = new FileInfo()
            {
                Filepath = $"{basePath}{testDataPath}{csvExampleFilename}",
                Filename = "Filename"
            };

            dataFileReadRepositoryMock.Setup(repository => repository.Find(It.IsAny <Expression <Func <DataFile, bool> > >()))
            .ReturnsAsync(new List <DataFile>()
            {
                dataFile
            });
            fileStorageServiceMock.Setup(service => service.GetFileInfo(It.IsAny <GetFileQuery>()))
            .Returns(Result.Success(fileInfo));

            var stream = await SystemUnderTest.GetData(query);

            stream.Should().NotBeNull();
            dataFileReadRepositoryMock.Verify(repository => repository.Find(It.IsAny <Expression <Func <DataFile, bool> > >()), Times.Once);
            fileStorageServiceMock.Verify(service => service.GetFileInfo(It.IsAny <GetFileQuery>()), Times.Once);
        }
Пример #5
0
        public IHttpActionResult Integrate(Integration instructions)
        {
            // EXTRACT
            string          baseDir         = Path.GetFullPath(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"ParseThese"));
            string          downloadDir     = Path.GetFullPath(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, @"Downloads"));
            List <DataFile> sourceDataFiles = new List <DataFile>();
            List <DataFile> targetDataFiles = new List <DataFile>();

            // Iterate over sources
            foreach (var s in instructions.Sources)
            {
                if (!File.Exists($@"{baseDir}\{s.Path}"))
                {
                    continue;
                }
                switch (s.Type.ToLower())
                {
                case "csv":
                    sourceDataFiles.Add(DataFileFactory.ExtractCsv(s));
                    break;
                    // TODO: Parse other filetypes
                }
            }

            // Iterate over targets
            foreach (var s in instructions.Targets)
            {
                if (!File.Exists($@"{baseDir}\{s.Path}"))
                {
                    continue;
                }
                switch (s.Type.ToLower())
                {
                case "csv":
                    targetDataFiles.Add(DataFileFactory.ExtractCsv(s));
                    break;
                    // TODO: Parse other filetypes
                }
            }

            // TRANSFORM
            foreach (var df in sourceDataFiles)
            {
                foreach (var tf in targetDataFiles)
                {
                    var mappingList = instructions.Mappings.Where(m => m.Source.StartsWith(df.Info.Name) && m.Target.StartsWith(tf.Info.Name)).ToList();
                    if (mappingList.Count == 0)
                    {
                        continue;
                    }

                    string[]  cols     = mappingList.Select(m => m.Source.Split('.')[1]).ToArray();
                    DataTable selected = df.SelectColumns(cols);

                    foreach (var m in mappingList)
                    {
                        selected.Columns[m.Source.Split('.')[1]].ColumnName = m.Target.Split('.')[1];
                    }

                    Arithmetic operation = new Arithmetic(tf);
                    operation.SetValue("AreaCode", 0, Convert.ToInt32(operation.Average("AreaCode")));

                    //TODO: Support more than just COPY
                    tf.Data.Merge(selected);
                }
            }

            // LOAD
            foreach (var tf in targetDataFiles)
            {
                tf.Save();
            }

            // Return the target file(s)
            if (File.Exists($@"{downloadDir}\data.zip"))
            {
                File.Delete($@"{downloadDir}\data.zip");
            }
            using (ZipArchive zip = ZipFile.Open($@"{downloadDir}\data.zip", ZipArchiveMode.Create))
            {
                foreach (var tf in targetDataFiles)
                {
                    zip.CreateEntryFromFile(tf.FullPath, tf.Info.Path);
                }
            }

            return(Ok(new Download()
            {
                Zip = @"downloads\data.zip"
            }));

            //FileHttpResponseMessage result = new FileHttpResponseMessage("data.zip", HttpStatusCode.OK);
            //var stream = new FileStream($@"{baseDir}\data.zip", FileMode.Open);
            //result.Content = new StreamContent(stream);
            //result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/zip");
            //result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
            //{
            //    FileName = "data.zip"
            //};
            //return result;
        }