コード例 #1
0
        public void Persist_UnSuccessful()
        {
            var projectUid = Guid.NewGuid();

            var csvExportUserPreference = new CSVExportUserPreferences();
            var requestArgument         = new CSVExportRequestArgument
                                          (
                projectUid, new FilterSet(new CombinedFilter()), null,
                CoordType.Northeast, OutputTypes.PassCountLastPass,
                csvExportUserPreference, new List <CSVExportMappedMachine>(), false, false
                                          )
            {
                TRexNodeID = Guid.NewGuid()
            };

            var dataRows = new List <string>()
            {
                "string one", "string two"
            };

            var    csvExportFileWriter = new CSVExportFileWriter(requestArgument);
            Action act = () => csvExportFileWriter.PersistResult(dataRows);

            act.Should().Throw <ArgumentNullException>();
            var projectDir = Path.Combine(Path.GetTempPath(), projectUid.ToString());

            if (Directory.Exists(projectDir))
            {
                Directory.Delete(projectDir, true);
            }
        }
コード例 #2
0
        public void Persist_UnSuccessful_NoAWS()
        {
            var projectUid = Guid.NewGuid();

            var csvExportUserPreference = new CSVExportUserPreferences();
            var requestArgument         = new CSVExportRequestArgument
                                          (
                projectUid, new FilterSet(new CombinedFilter()), "the filename",
                CoordType.Northeast, OutputTypes.PassCountLastPass,
                csvExportUserPreference, new List <CSVExportMappedMachine>(), false, false
                                          )
            {
                TRexNodeID = Guid.NewGuid()
            };

            var originalConfiguration = DIContext.Obtain <IConfigurationStore>();
            var moqConfiguration      = DIContext.Obtain <Mock <IConfigurationStore> >();

            moqConfiguration.Setup(c => c.GetValueString("AWS_TEMPORARY_BUCKET_NAME")).Returns((string)null);
            moqConfiguration.Setup(c => c.GetValueString("AWS_TEMPORARY_BUCKET_NAME", It.IsAny <string>())).Returns((string)null);

            DIBuilder
            .Continue()
            .Add(x => x.AddSingleton <IConfigurationStore>(moqConfiguration.Object))
            .Complete();

            Action act = () => new CSVExportFileWriter(requestArgument);

            act.Should().Throw <ServiceException>();

            DIBuilder
            .Continue()
            .Add(x => x.AddSingleton <IConfigurationStore>(originalConfiguration))
            .Complete();
        }
コード例 #3
0
        public void CreateHeaders_VedaFinalPass()
        {
            var projectUid = Guid.NewGuid();

            var csvExportUserPreference = new CSVExportUserPreferences();
            var requestArgument         = new CSVExportRequestArgument
                                          (
                projectUid, new FilterSet(new CombinedFilter()), "the filename",
                CoordType.Northeast, OutputTypes.VedaFinalPass,
                csvExportUserPreference, new List <CSVExportMappedMachine>(), false, false
                                          )
            {
                TRexNodeID = Guid.NewGuid()
            };

            var dataRows = new List <string>()
            {
                "string one", "string two"
            };

            var mockTransferProxy = new Mock <ITransferProxy>();

            mockTransferProxy.Setup(t => t.UploadToBucket(It.IsAny <Stream>(), It.IsAny <string>(), It.IsAny <string>()));
            var mockTransferProxyFactory = new Mock <ITransferProxyFactory>();

            mockTransferProxyFactory.Setup(x => x.NewProxy(It.IsAny <TransferProxyType>())).Returns(mockTransferProxy.Object);

            DIBuilder
            .Continue()
            .Add(x => x.AddSingleton(mockTransferProxyFactory.Object))
            .Complete();

            var csvExportFileWriter = new CSVExportFileWriter(requestArgument, true);

            csvExportFileWriter.PersistResult(dataRows);

            var localExportPath = FilePathHelper.GetTempFolderForExport(requestArgument.ProjectID, "");
            var uniqueFileName  = requestArgument.FileName + "__" + requestArgument.TRexNodeID;

            var firstFile = Path.Combine(localExportPath, uniqueFileName, requestArgument.FileName + CSV_extension);

            if (!FileSystem.Exists(firstFile))
            {
                Assert.True(true, $"firstFile: {firstFile} should exist");
            }

            string header;

            using (var fs = new StreamReader(firstFile)) header = fs.ReadLine();
            header.Should().NotBeNullOrEmpty();
            header.Should().Be("Time,CellN_m,CellE_m,Elevation_m,PassCount,LastRadioLtncy,DesignName,Machine,Speed_km/h,LastGPSMode,GPSAccTol_m,TargPassCount,TotalPasses,Lift,LastCMV,TargCMV,LastMDP,TargMDP,LastRMV,LastFreq_Hz,LastAmp_mm,TargThickness_m,MachineGear,VibeState,LastTemp,_c");

            var projectDir = localExportPath.Remove(localExportPath.Length - 7);

            if (Directory.Exists(projectDir))
            {
                Directory.Delete(projectDir, true);
            }
        }
コード例 #4
0
        public CSVExportFormatter(CSVExportUserPreferences userPreference, OutputTypes outputType, bool isRawDataAsDBaseRequired = false)
        {
            UserPreference           = userPreference;
            OutputType               = outputType;
            IsRawDataAsDBaseRequired = isRawDataAsDBaseRequired;
            NullString               = isRawDataAsDBaseRequired ? string.Empty : "?";

            SetupUserPreferences(userPreference);

            _nfiUser = NumberFormatInfo.GetInstance(CultureInfo.InvariantCulture).Clone() as NumberFormatInfo;
            _nfiUser.NumberDecimalSeparator = userPreference.DecimalSeparator ?? _nfiUser.NumberDecimalSeparator;
            _nfiUser.NumberGroupSeparator   = userPreference.ThousandsSeparator ?? _nfiUser.NumberGroupSeparator;
            _nfiUser.NumberDecimalDigits    = DefaultDecimalPlaces;
            _nfiDefault = _nfiUser.Clone() as NumberFormatInfo; // the dp will be altered on this
        }
コード例 #5
0
        private ISiteModel SetupSiteAndRequestArgument(CoordType coordType, OutputTypes outputType, bool isRawDataAsDBaseRequired, string tagFileDirectory,
                                                       out CSVExportRequestArgument requestArgument)
        {
            // tagFileDirectory: "Dimensions2018-CaseMachine" - extents match the CSIB constant
            //                   "ElevationMappingMode-KettlewellDrive"
            var tagFiles  = Directory.GetFiles(Path.Combine("TestData", "TAGFiles", tagFileDirectory), "*.tag").ToArray();
            var siteModel = DITAGFileAndSubGridRequestsFixture.BuildModel(tagFiles, out _);
            var csvExportUserPreference = new CSVExportUserPreferences();

            requestArgument = new CSVExportRequestArgument
                              (
                siteModel.ID, new FilterSet(new CombinedFilter()), "the filename",
                coordType, outputType, csvExportUserPreference, new List <CSVExportMappedMachine>(), false, isRawDataAsDBaseRequired
                              );
            return(siteModel);
        }
コード例 #6
0
        public void Persist_Successful()
        {
            var projectUid = Guid.NewGuid();

            var csvExportUserPreference = new CSVExportUserPreferences();
            var requestArgument         = new CSVExportRequestArgument
                                          (
                projectUid, new FilterSet(new CombinedFilter()), "the filename",
                CoordType.Northeast, OutputTypes.PassCountLastPass,
                csvExportUserPreference, new List <CSVExportMappedMachine>(), false, false
                                          )
            {
                TRexNodeID = Guid.NewGuid()
            };

            var dataRows = new List <string> {
                "string one", "string two"
            };

            var mockTransferProxy = new Mock <ITransferProxy>();

            mockTransferProxy.Setup(t => t.UploadToBucket(It.IsAny <Stream>(), It.IsAny <string>(), It.IsAny <string>()));
            var mockTransferProxyFactory = new Mock <ITransferProxyFactory>();

            mockTransferProxyFactory.Setup(x => x.NewProxy(It.IsAny <TransferProxyType>())).Returns(mockTransferProxy.Object);

            DIBuilder
            .Continue()
            .Add(x => x.AddSingleton(mockTransferProxyFactory.Object))
            .Complete();

            var csvExportFileWriter = new CSVExportFileWriter(requestArgument);
            var s3FullPath          = csvExportFileWriter.PersistResult(dataRows);

            s3FullPath.Should().NotBeNull();
            s3FullPath.Should().Be($"project/{requestArgument.ProjectID}/TRexExport/{requestArgument.FileName}__{requestArgument.TRexNodeID}.zip");

            var projectDir = Path.Combine(Path.GetTempPath(), projectUid.ToString());

            if (Directory.Exists(projectDir))
            {
                Directory.Delete(projectDir, true);
            }
        }
コード例 #7
0
        /// <summary>
        /// Use values direct from UserPreferenceData where possible.
        /// This method provides differences required for export format
        /// </summary>
        /// <param name="newUserPreference"></param>
        private void SetupUserPreferences(CSVExportUserPreferences newUserPreference)
        {
            switch (newUserPreference.Units)
            {
            case UnitsTypeEnum.Metric:
            {
                DistanceConversionFactor = 1.0;
                SpeedUnitString          = "km/h";
                SpeedConversionFactor    = 1000;
                DistanceUnitString       = "m";
                break;
            }

            case UnitsTypeEnum.Imperial:
            {
                DistanceConversionFactor = ImperialFeetToMeters;
                SpeedUnitString          = "mph";
                SpeedConversionFactor    = ImperialFeetToMeters * 5280;
                DistanceUnitString       = "ft";
                break;
            }

            default: // case UnitsTypeEnum.US: // USSurveyFeet
            {
                DistanceConversionFactor = USFeetToMeters;
                SpeedUnitString          = "mph";
                SpeedConversionFactor    = USFeetToMeters * 5280;
                DistanceUnitString       = "FT";
                break;
            }
            }

            if (OutputType == OutputTypes.VedaAllPasses || OutputType == OutputTypes.VedaFinalPass ||
                string.IsNullOrEmpty(UserPreference.DateSeparator) || string.IsNullOrEmpty(UserPreference.TimeSeparator) || string.IsNullOrEmpty(UserPreference.DecimalSeparator))
            {
                ExportDateTimeFormatString = "yyyy-MMM-dd HH:mm:ss.fff";
            }
            else
            {
                ExportDateTimeFormatString = $"yyyy{UserPreference.DateSeparator}MMM{UserPreference.DateSeparator}dd HH{UserPreference.TimeSeparator}mm{UserPreference.TimeSeparator}ss{UserPreference.DecimalSeparator}fff";
            }
        }