Beispiel #1
0
        public HttpResponseMessage SaveCitation(int fileId, Citation citation)
        {
            HttpResponseMessage httpResponseMessage;

            try
            {
                Check.IsNotNull(citation, "citation");

                DM.File file = this.fileService.GetFileByFileId(fileId);
                if (null == file)
                {
                    diagnostics.WriteErrorTrace(TraceEventId.Exception, "File is null");
                    return(Request.CreateErrorResponse(HttpStatusCode.NotFound, MessageStrings.Invalid_File_Id));
                }

                file.Citation   = JsonConvert.SerializeObject(citation);
                file.ModifiedOn = DateTime.UtcNow;
                fileService.UpdateFile(file);
                httpResponseMessage = Request.CreateResponse(HttpStatusCode.OK, true);
            }
            catch (ArgumentException ex)
            {
                diagnostics.WriteErrorTrace(TraceEventId.Exception, ex);
                message             = string.Format(CultureInfo.CurrentCulture, MessageStrings.Argument_Error_Message_Template, ex.ParamName);
                httpResponseMessage = Request.CreateErrorResponse(HttpStatusCode.BadRequest, message);
            }

            return(httpResponseMessage);
        }
Beispiel #2
0
        /// <summary>
        /// Method to update file level metadata.
        /// </summary>
        /// <param name="modifiedFile">modifiedFile</param>
        private void UpdateFileLevelMetadata(File modifiedFile)
        {
            if (modifiedFile.FileMetadataFields != null)
            {
                foreach (var fileMetaData in modifiedFile.FileMetadataFields)
                {
                    //first update the existing records
                    if (fileMetaData.FileMetadataFieldId != 0 && !string.IsNullOrEmpty(fileMetaData.MetadataValue))
                    {
                        Context.SetEntityState<FileMetadataField>(fileMetaData, EntityState.Modified);
                    }
                }

                List<FileMetadataField> ToBeDeletedfileMetaDataList = new List<FileMetadataField>();
                foreach (var fileMetaData in modifiedFile.FileMetadataFields)
                {
                    if (string.IsNullOrEmpty(fileMetaData.MetadataValue))
                    {
                        ToBeDeletedfileMetaDataList.Add(fileMetaData);
                    }
                }

                foreach (var deleteFileMetaData in ToBeDeletedfileMetaDataList)
                {
                    Context.SetEntityState<FileMetadataField>(deleteFileMetaData, EntityState.Deleted);
                    Context.FileMetadataFields.Remove(deleteFileMetaData);
                }
            }
        }
Beispiel #3
0
        public HttpResponseMessage GetCitation(int fileId, int repositoryId)
        {
            DM.File file = fileService.GetFileByFileId(fileId);
            if (file == null)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.NotFound, MessageStrings.FileNotFound));
            }

            DM.Repository repository = this.repositoryService.GetRepositoryById(repositoryId);
            if (repository == null)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.NotFound, MessageStrings.Repository_Not_Found));
            }
            else if (repository.BaseRepository.BaseRepositoryId != 1)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.NotImplemented, string.Format(MessageStrings.CitationNotSupportedMessage, repository.BaseRepository.Name)));
            }

            Citation citation = new Citation()
            {
                PublicationYear = DateTime.Now.Year.ToString(),
                Title           = file.Title,
                Publisher       = string.Concat(this.user.LastName, ", ", this.user.FirstName)
            };

            if (!string.IsNullOrWhiteSpace(file.Citation))
            {
                citation = JsonConvert.DeserializeObject <Citation>(file.Citation);
            }

            return(Request.CreateResponse(HttpStatusCode.OK, citation));
        }
Beispiel #4
0
        public async Task <HttpResponseMessage> GetColumnLevelMetadataFromFile(int fileId)
        {
            DM.File file = fileService.GetFileByFileId(fileId);
            if (file == null)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.NotFound, MessageStrings.FileNotFound));
            }

            ColumnLevelMetadataViewModel columnLevelMetadataViewModel = new ColumnLevelMetadataViewModel();

            try
            {
                columnLevelMetadataViewModel.SheetList = await this.fileService.GetDocumentSheetDetails(file);
            }
            catch (FileFormatException ex)
            {
                diagnostics.WriteErrorTrace(TraceEventId.Exception, ex);
                return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, ex.Message));
            }

            columnLevelMetadataViewModel.TypeList = this.fileService.RetrieveFileColumnTypes();
            columnLevelMetadataViewModel.UnitList = this.fileService.RetrieveFileColumnUnits();

            try
            {
                columnLevelMetadataViewModel.MetadataList = await this.fileService.GetColumnLevelMetadataFromFile(file);
            }
            catch (FileFormatException ex)
            {
                diagnostics.WriteErrorTrace(TraceEventId.Exception, ex);
                return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, ex.Message));
            }

            return(Request.CreateResponse(HttpStatusCode.OK, columnLevelMetadataViewModel));
        }
        public void Allow_Publish_For_Impersonated_Repository()
        {
            // construct the model
            // construct the model
            AuthToken authToken = new AuthToken()
            {
                UserId = 1,
                RespositoryId = 2
            };

            File fakeFile = new File() { Name = "test1", FileId = 100, RepositoryId = 1, CreatedBy = 1, Status = FileStatus.None.ToString() };
            PublishMessage model = new PublishMessage() { RepositoryId = 1, AuthToken = authToken, FileId = fakeFile.FileId, UserId = 1 };
            this.repository = new Repository() { BaseRepositoryId = 2, Name = "test", IsImpersonating = true, AccessToken = "accessToken", RefreshToken = "refreshToken", TokenExpiresOn = DateTime.UtcNow.AddHours(1), BaseRepository = new BaseRepository { Name = "SkyDrive" } };
            SkyDriveFileService skyDriveFileService = this.GetSkyDriveFileService();
            IFileProcesser fileProcessor = new StubIFileProcesser()
            {
                DownloadDocumentFile = file => new DataDetail() { FileNameToDownLoad = "abc.xyz" }
            };

            string fileIdentifier;
            using (ShimsContext.Create())
            {
                ShimFileFactory.GetFileTypeInstanceStringIBlobDataRepositoryIFileRepositoryIRepositoryService = (fileExtension, blobDataRepository, fileDataRepository, repositoryService) => fileProcessor;
                fileIdentifier = skyDriveFileService.PublishFile(model);
            }

            Assert.IsFalse(string.IsNullOrEmpty(fileIdentifier));
        }
Beispiel #6
0
        /// <summary>
        /// Extension method for Datafile class to set the data from the File type.
        /// </summary>
        /// <param name="dataFile">DataFile object.</param>
        /// <param name="file">File object.</param>
        public static void SetValuesFrom(this DataFile dataFile, File file)
        {
            Check.IsNotNull<DataFile>(dataFile, "dataFile");
            Check.IsNotNull<File>(file, "file");

            dataFile.ContentType = file.MimeType;
            dataFile.CreatedBy = file.CreatedBy;
            dataFile.FileExtentsion = System.IO.Path.GetExtension(file.Name);
            dataFile.FileInfo = file;
            dataFile.FileName = file.Name;
        }
Beispiel #7
0
        public async Task <HttpResponseMessage> GetColumnLevelMetadata(int fileId)
        {
            ////HttpResponseMessage response = await GetColumnLevelMetadataFromFile(fileId);
            ////return response;

            DM.File file = fileService.GetFileByFileId(fileId);
            if (file == null)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.NotFound, MessageStrings.FileNotFound));
            }

            ////List<ColumnLevelMetadata> columnLevelMetadataList = await response.Content.ReadAsAsync<List<ColumnLevelMetadata>>();

            List <ColumnLevelMetadata> columnLevelMetadataList = new List <ColumnLevelMetadata>();

            if (file.FileColumns != null && file.FileColumns.Any())
            {
                foreach (FileColumn fileColumn in file.FileColumns)
                {
                    ColumnLevelMetadata columnLevelMetadata = new ColumnLevelMetadata()
                    {
                        Id = fileColumn.FileColumnId,
                        SelectedEntityName = fileColumn.EntityName,
                        EntityDescription  = fileColumn.EntityDescription,
                        Name           = fileColumn.Name,
                        Description    = fileColumn.Description,
                        SelectedTypeId = fileColumn.FileColumnTypeId.Value,
                        SelectedUnitId = fileColumn.FileColumnUnitId
                    };

                    columnLevelMetadataList.Add(columnLevelMetadata);
                }
            }

            ColumnLevelMetadataViewModel columnLevelMetadataViewModel = new ColumnLevelMetadataViewModel();

            columnLevelMetadataViewModel.MetadataList = columnLevelMetadataList;
            try
            {
                columnLevelMetadataViewModel.SheetList = await this.fileService.GetDocumentSheetDetails(file);
            }
            catch (FileFormatException ex)
            {
                diagnostics.WriteErrorTrace(TraceEventId.Exception, ex);
                return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, ex.Message));
            }

            columnLevelMetadataViewModel.TypeList = this.fileService.RetrieveFileColumnTypes();
            columnLevelMetadataViewModel.UnitList = this.fileService.RetrieveFileColumnUnits();

            return(Request.CreateResponse(HttpStatusCode.OK, columnLevelMetadataViewModel));
        }
Beispiel #8
0
        public HttpResponseMessage GetPostFileDetails(int fileId, int repositoryId)
        {
            Func <DM.File, bool> fileByFileIdAndUserIdFilter = f => f.FileId == fileId && f.CreatedBy == this.user.UserId && (f.isDeleted == null || f.isDeleted == false);

            DM.File file = fileService.GetFiles(fileByFileIdAndUserIdFilter).FirstOrDefault();
            if (file == null)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.NotFound, MessageStrings.FileNotFound));
            }

            bool   isAdmin       = this.user.UserRoles.Any(ur => ur.Role.Name.Equals(Roles.Administrator.ToString(), StringComparison.OrdinalIgnoreCase));
            string fileExtension = Path.GetExtension(file.Name).Replace(".", string.Empty);
            IEnumerable <DM.Repository> repositoryList = this.repositoryService.GetRepositoriesByRoleAndFileExtension(isAdmin, fileExtension);

            if (repositoryList.FirstOrDefault(r => r.RepositoryId == repositoryId) == null)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.NotFound, MessageStrings.Repository_Not_Found));
            }

            PostPageViewModel postPageViewModel = new PostPageViewModel();

            postPageViewModel.FileId       = fileId;
            postPageViewModel.FileName     = file.Name;
            postPageViewModel.RepositoryId = repositoryId;
            foreach (DM.Repository dmRepository in repositoryList)
            {
                Models.Repository repository = new Models.Repository()
                {
                    Id               = dmRepository.RepositoryId,
                    Name             = dmRepository.Name,
                    BaseRepositoryId = dmRepository.BaseRepositoryId,
                    IsImpersonating  = dmRepository.IsImpersonating.HasValue && dmRepository.IsImpersonating.Value == true,
                    UserAgreement    = dmRepository.UserAgreement
                };

                postPageViewModel.RepositoryList.Add(repository);
            }

            return(Request.CreateResponse <PostPageViewModel>(HttpStatusCode.OK, postPageViewModel));
        }
Beispiel #9
0
        public File UpdateFile(File modifiedFile)
        {
            Check.IsNotNull<File>(modifiedFile, "modifiedFile");

            File updatedFile = null;
            if (Context.GetEntityState(modifiedFile) == EntityState.Detached)
            {
                updatedFile = Context.Files.Attach(modifiedFile);
            }
            else
            {
                updatedFile = modifiedFile;
            }

            //set metadata fields
            UpdateFileLevelMetadata(modifiedFile);

            //set file column
            UpdateColumnLevelMetadata(modifiedFile);

            Context.SetEntityState<File>(updatedFile, EntityState.Modified);
            return updatedFile;
        }
 private void AddFile(File fileToAdd)
 {
     IFileRepository repository = new FileRepository(testDBContext);
     repository.AddFile(fileToAdd);
     testDBContext.Commit();
 }
        private void AddDefaultData()
        {
            User newUser = new User()
            {
                NameIdentifier = "s0Me1De9Tf!Er$tRing",
                FirstName = "TestFirstName",
                MiddleName = "TestMiddleName",
                LastName = "TestLastName",
                IdentityProvider = "Windows Live",
                Organization = "TestOrganization",
                EmailId = "*****@*****.**",
                CreatedOn = DateTime.Now,
                ModifiedOn = DateTime.Now,
                IsActive = true,
                UserAttributes = null
            };

            // User with userid 1
            AddUser(newUser);

            //  RepositoryType repoType1 = new RepositoryType() { IsActive = true, Name = "type1", RepositoryTypeId = 1, Repositories = null };

            // Adding new repository types
            // AddRepositoryType(repoType1);

            BaseRepository baseRepo = new BaseRepository() { BaseRepositoryId = 1, Name = "Merrit" };

            AddBaseRepository(baseRepo);

            Repository repositoryObject = new Repository()
            {
                AllowedFileTypes = "xlsx,nc,csv",
                CreatedBy = 1,
                // Files = null,
                CreatedOn = DateTime.Now,
                HttpDeleteUriTemplate = "http://google.com",
                HttpGetUriTemplate = "http://google.com",
                HttpIdentifierUriTemplate = "http://google.com",
                HttpPostUriTemplate = "http://google.com",
                ImpersonatingPassword = "******",
                ImpersonatingUserName = "******",
                IsActive = true,
                IsImpersonating = true,
                ModifiedBy = 1,
                ModifiedOn = DateTime.Now,
                Name = "Repository1",
                RepositoryId = 1,
                UserAgreement = "Test Agreement1",
                BaseRepositoryId = 1
            };

            AddRepository(repositoryObject);

            File fileToAdd = new File() { Citation = "Citation 1", CreatedBy = 1, CreatedOn = DateTime.Now, Description = "Document 1", FileAttributes = null, FileColumns = null, FileId = 1, FileQualityChecks = null, Identifier = "asdahgsdfsghadfsghad", isDeleted = false, MimeType = "Mime type 1", ModifiedBy = 1, ModifiedOn = DateTime.Now, Name = "Document One", Repository = null, RepositoryId = 1, Size = 20.90, Status = "Uploaded", Title = "Document 1" };

            File fileToAdd1 = new File() { Citation = "Citation 2", CreatedBy = 1, CreatedOn = DateTime.Now, Description = "Document 2", FileAttributes = null, FileColumns = null, FileId = 2, FileQualityChecks = null, Identifier = "wrwe23423ewr", isDeleted = false, MimeType = "Mime type 2", ModifiedBy = 1, ModifiedOn = DateTime.Now, Name = "Document Two", Repository = null, RepositoryId = 1, Size = 20.90, Status = "Uploaded", Title = "Document 2" };

            AddFile(fileToAdd);
            AddFile(fileToAdd1);

            FileColumnUnit fileUnit = new FileColumnUnit()
            {
                Name = "Text",
                Status = true
            };
            AddFileColumnUnit(fileUnit);

            FileColumnType fileType = new FileColumnType()
            {
                Name = "Acre",
                Status = true
            };

            AddFileColumnType(fileType);
        }
        public void Return_ErrorCode_When_Adapter_Returns_Failure()
        {
            // construct the model
            AuthToken authToken = new AuthToken()
            {
                AccessToken = "accessToken",
                RefreshToken = "refreshToken",
                TokenExpiresOn = DateTime.UtcNow.AddHours(-1),
                RespositoryId = 1
            };

            File fakeFile = new File() { Name = "test1", FileId = 100, RepositoryId = 1, CreatedBy = 1, Status = FileStatus.None.ToString() };
            PublishMessage model = new PublishMessage() { RepositoryId = 3, AuthToken = authToken, FileId = fakeFile.FileId, UserId = 1 };
            this.repository = new Repository() { BaseRepositoryId = 2, Name = "test", IsImpersonating = false, BaseRepository = new BaseRepository { Name = "SkyDrive" } };
            this.userAuthToken = null;
            var fileProvider = this.GetSkyDriveFileService();
            this.skyDriveAdapter = new Microsoft.Research.DataOnboarding.RepositoryAdapters.Interfaces.Fakes.StubIRepositoryAdapter()
            {
                PostFilePublishFileModel = (publishFileModel) =>
                {
                    OperationStatus status = OperationStatus.CreateFailureStatus("error");
                    return status;
                },
            };
            IFileProcesser fileProcessor = new StubIFileProcesser()
            {
                DownloadDocumentFile = file => new DataDetail() { FileNameToDownLoad = "abc.xyz" }
            };

            string fileIdentifier;
            using (ShimsContext.Create())
            {
                ShimFileFactory.GetFileTypeInstanceStringIBlobDataRepositoryIFileRepositoryIRepositoryService = (fileExtension, blobDataRepository, fileDataRepository, repositoryService) => fileProcessor;
                ShimSkyDriveFileService.AllInstances.GetOrUpdateAuthTokensRepositoryAuthToken = (skyDriveFileService, repository, at) => new AuthToken();
                fileIdentifier = fileProvider.PublishFile(model);
            }

            Assert.IsTrue(string.IsNullOrEmpty(fileIdentifier));
        }
Beispiel #13
0
        /// <summary>
        /// Method to update column level metadata.
        /// </summary>
        /// <param name="modifiedFile">File object</param>
        private void UpdateColumnLevelMetadata(File modifiedFile)
        {
            List<FileColumn> fileColumnsToBeDeleted = new List<FileColumn>();
            if (modifiedFile.FileColumns != null)
            {
                foreach (var fileColumn in modifiedFile.FileColumns)
                {
                    if (!string.IsNullOrWhiteSpace(fileColumn.EntityDescription))
                    {
                        if (fileColumn.FileColumnId != 0)
                        {
                            var updatedFileColumn = Context.FileColumns.Attach(fileColumn);
                            Context.SetEntityState<FileColumn>(fileColumn, EntityState.Modified);
                        }
                        else
                        {
                            var addedFileColumn = Context.FileColumns.Add(fileColumn);
                            Context.SetEntityState<FileColumn>(addedFileColumn, EntityState.Added);
                        }
                    }
                    else
                    {
                        fileColumnsToBeDeleted.Add(fileColumn);
                    }
                }

                foreach (var deleteFileColumn in fileColumnsToBeDeleted)
                {
                    Context.SetEntityState<FileColumn>(deleteFileColumn, EntityState.Deleted);
                    Context.FileColumns.Remove(deleteFileColumn);
                }
            }
        }
Beispiel #14
0
 /// <summary>
 /// Method to add file information to database
 /// </summary>
 /// <param name="newFile">File object</param>
 /// <returns>returns file object</returns>
 public File AddFile(File newFile)
 {
     Check.IsNotNull<File>(newFile, "newFile");
     return Context.Files.Add(newFile);
 }
        public void Error_When_CheckIfFileExistsOnExternalRepository_Returns_Failure_AND_Exceeds_Maximum_Retries()
        {
            this.deletedMessage = null;
            this.fileUpdated = false;
            int startCount = 2;

            VerifyFileMessage message = new VerifyFileMessage() { RepositoryId = 1, FileId = 1, RetryCount = startCount };
            VerifyFileQueueService queueService = this.GetVerifyFileQueueService();

            this.fileService = new StubIFileService()
            {
                CheckIfFileExistsOnExternalRepositoryVerifyFileMessage = (verifyMessage) =>
                {
                    return OperationStatus.CreateFailureStatus(string.Empty);
                },
                GetFileByFileIdInt32 = (fileId) =>
                {
                    this.file = new File() { FileId = 1 };
                    return file;
                },
                UpdateFileFile = (file) =>
                {
                    this.file = file;
                    return true;
                },
            };

            using (ShimsContext.Create())
            {
                ShimConfigReader<int>.GetRepositoryConfigValuesStringString = (baseRepositoryName, SettingName) =>
                {
                    return 3;
                };

                queueService.ProcessMessage(message);
            }

            Assert.IsTrue(this.file.Status == FileStatus.Error.ToString());
            Assert.IsTrue(this.deletedMessage == message);
            Assert.IsFalse(this.isDeletedFromBlob);
        }
Beispiel #16
0
        public void Initialize()
        {
            List<QualityCheckColumnRule> lstCol = new List<QualityCheckColumnRule>();
            QualityCheckColumnRule colRule = new QualityCheckColumnRule() { Description = "Column 1 desc", ErrorMessage = "error msg", HeaderName = "Column 1", IsActive = true, IsRequired = true, Order = 1, QualityCheck = null, QualityCheckColumnRuleId = 1, QualityCheckColumnTypeId = 1, QualityCheckId = 1, Range = "" };
            QualityCheckColumnRule colRule1 = new QualityCheckColumnRule() { Description = "Column 2 desc", ErrorMessage = "error msg1", HeaderName = "Column 2", IsActive = true, IsRequired = true, Order = 2, QualityCheck = null, QualityCheckColumnRuleId = 2, QualityCheckColumnTypeId = 2, QualityCheckId = 1, Range = "" };
            lstCol.Add(colRule);
            lstCol.Add(colRule1);

            // Unit of work code
            this.unitOfWork =
                new StubIUnitOfWork()
                {
                    Commit = () => { return; }
                };

            // User repository
            this.userRepository = new StubIUserRepository()
            {
                GetUserbyUserIdInt32 = (userId) =>
                    {
                        List<UserRole> userRoles = new List<UserRole>();
                        userRoles.Add(new UserRole() { Role = null, RoleId = 1, UserId = userId, UserRoleId = 1 });
                        User userNew = new User() { CreatedOn = DateTime.UtcNow, EmailId = "*****@*****.**", FirstName = "First", IdentityProvider = "identity", IsActive = true, LastName = "Last", MiddleName = "midele", ModifiedOn = DateTime.UtcNow, NameIdentifier = "nameIdentifier", Organization = "Test Org", UserAttributes = null, UserId = userId, UserRoles = userRoles };
                        return userNew;
                    }
            };

            // file Service implementation
            this.fileService = new StubIFileService()
            {
                GetFileByFileIdInt32 = (fileId) =>
                    {
                        File fileToAdd = new File() { Citation = "Citation 1", CreatedBy = 1, CreatedOn = DateTime.Now, Description = "Document 1", FileAttributes = null, FileColumns = null, FileId = fileId, FileQualityChecks = null, Identifier = "asdahgsdfsghadfsghad", isDeleted = false, MimeType = "Mime type 1", ModifiedBy = 1, ModifiedOn = DateTime.Now, Name = "Document One", Repository = null, RepositoryId = null, Size = 20.90, Status = "Uploaded", Title = "Document 1" };
                        return null;
                    }
            };

            // Quality check repository implementation
            this.qcRepository = new StubIQualityCheckRepository()
            {
                RetrieveQualityCheckRules = () =>
                    {
                        List<QualityCheck> lstQCRule = new List<QualityCheck>();
                        lstQCRule.Add(new QualityCheck() { CreatedBy = 1, CreatedOn = DateTime.UtcNow, Description = "Test Rule", EnforceOrder = true, FileQualityChecks = null, IsActive = true, IsVisibleToAll = true, ModifiedBy = 1, ModifiedOn = DateTime.UtcNow, Name = "Test Rule", QualityCheckColumnRules = lstCol, QualityCheckId = 1 });
                        // lstQCRule.Add(new QualityCheck() { CreatedBy = 1, CreatedOn = DateTime.UtcNow, Description = "Test Rule1", EnforceOrder = true, FileQualityChecks = null, IsActive = true, IsVisibleToAll = true, ModifiedBy = 1, ModifiedOn = DateTime.UtcNow, Name = "Test Rule1", QualityCheckColumnRules = lstCol, QualityCheckId = 1 });

                        return lstQCRule;
                    },
                RetrieveQCColumnTypes = () =>
                    {
                        List<QualityCheckColumnType> qcTypes = new List<QualityCheckColumnType>();
                        qcTypes.Add(new QualityCheckColumnType() { Description = "No check", Name = "None", QualityCheckColumnTypeId = 1 });
                        qcTypes.Add(new QualityCheckColumnType() { Description = "Number type", Name = "Numeric", QualityCheckColumnTypeId = 2 });
                        return qcTypes;
                    },
                GetQualityCheckByIDInt32 = (qualityCheckId) =>
                    {
                        QualityCheck qc = new QualityCheck() { CreatedBy = 1, CreatedOn = DateTime.UtcNow, Description = "Get by id desc", EnforceOrder = true, FileQualityChecks = null, IsActive = true, IsVisibleToAll = true, ModifiedBy = 1, ModifiedOn = DateTime.UtcNow, Name = "Get by id Rule", QualityCheckColumnRules = lstCol, QualityCheckId = qualityCheckId };
                        return qc;
                    },
                AddQualityCheckRuleQualityCheck = (qualityCheck) =>
                    {
                        qualityCheck.QualityCheckId = 2;
                        return qualityCheck;
                    },
                UpdateQualityCheckRuleQualityCheck = (qualityCheck) =>
                     {
                         qualityCheck.Name = "Updated rule From rep";
                         return qualityCheck;
                     },
                DeleteQualityCheckRuleInt32 = (qualityCheckId) =>
                      {
                          QualityCheck qc = new QualityCheck() { CreatedBy = 1, CreatedOn = DateTime.UtcNow, Description = "Delete", EnforceOrder = true, FileQualityChecks = null, IsActive = true, IsVisibleToAll = true, ModifiedBy = 1, ModifiedOn = DateTime.UtcNow, Name = "Delete Rule", QualityCheckColumnRules = lstCol, QualityCheckId = qualityCheckId };
                          return qc;
                      },
                DeleteColumnRulesInt32 = (qualityCheckId) =>
                    {
                        return true;
                    },
                AddFileQualityCheckFileQualityCheck = (fileQualityCheck) =>
                    {
                        fileQualityCheck.Status = true;
                        return fileQualityCheck;
                    },
                GetQualityCheckByNameString = (ruleName) =>
                    {
                        QualityCheck qc = new QualityCheck() { CreatedBy = 1, CreatedOn = DateTime.UtcNow, Description = "Get by rule name", EnforceOrder = true, FileQualityChecks = null, IsActive = true, IsVisibleToAll = true, ModifiedBy = 1, ModifiedOn = DateTime.UtcNow, Name = ruleName, QualityCheckColumnRules = lstCol, QualityCheckId = 10 };
                        return qc;
                    }
            };

            qcService = new QCS.QCService(this.qcRepository, this.unitOfWork, this.userRepository, this.fileService, this.blobRepository);
        }
Beispiel #17
0
 public DataDetail()
 {
     FileDetail = new File();
 }
        /// <summary>
        /// Reuturns the VerifyFileQueueService instance.
        /// </summary>
        /// <returns>VerifyFileQueueService instance.</returns>
        private VerifyFileQueueService GetVerifyFileQueueService()
        {
            this.fileService = new StubIFileService()
            {
                CheckIfFileExistsOnExternalRepositoryVerifyFileMessage = (message) =>
                    {
                        return OperationStatus.CreateSuccessStatus();
                    },
                GetFileByFileIdInt32 = (fileId) =>
                    {
                        this.file = new File() { FileId = 1 };
                        return file;
                    },
                UpdateFileFile = (file) =>
                    {
                        this.file = file;
                        return true;
                    },
            };

            this.fileServiceFactory = new StubIFileServiceFactory()
            {
                GetFileServiceString = (instanceName) =>
                {
                    return this.fileService;
                }

            };

            this.repositoryService = new StubIRepositoryService()
            {
                GetRepositoryByIdInt32 = (repositoryId) =>
                {
                    return new Repository() { BaseRepository = new BaseRepository() { Name = "SkyDrive", BaseRepositoryId = 2 }, RepositoryId = 1, Name = "test" };
                }
            };

            this.queueRepository = new StubIQueueRepository()
            {
                DeleteFromQueueBaseMessage = (message) =>
                {
                    this.deletedMessage = message;
                },
                UpdateMessageBaseMessage = (message) =>
                {
                    this.updatedQueueContent = true;
                }
            };

            this.blobRepository = new StubIBlobDataRepository()
            {
                DeleteFileString = (filename) =>
                    {
                        this.isDeletedFromBlob = true;
                        return this.isDeletedFromBlob;
                    }
            };

            VerifyFileQueueService queueService = new VerifyFileQueueService(this.fileServiceFactory, this.repositoryService, this.queueRepository, this.blobRepository);
            return queueService;
        }
Beispiel #19
0
        public HttpResponseMessage GetFileLevelMetadata(int fileId, int repositoryId)
        {
            List <FileLevelMetadata> fileLevelMetadataList = new List <FileLevelMetadata>();

            DM.File file = fileService.GetFileByFileId(fileId);
            if (file == null)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.NotFound, MessageStrings.FileNotFound));
            }

            DM.Repository repository = this.repositoryService.GetRepositoryById(repositoryId);
            if (repository == null)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.NotFound, MessageStrings.Repository_Not_Found));
            }

            if (repository.RepositoryMetadata == null || !repository.RepositoryMetadata.Any())
            {
                return(Request.CreateErrorResponse(HttpStatusCode.NotFound, MessageStrings.NoMetadataFould));
            }

            RepositoryMetadata repositoryMetadata = repository.RepositoryMetadata.FirstOrDefault(m => m.IsActive == true);

            if (repositoryMetadata == null || repositoryMetadata.RepositoryMetadataFields == null || !repositoryMetadata.RepositoryMetadataFields.Any())
            {
                return(Request.CreateErrorResponse(HttpStatusCode.NotFound, MessageStrings.NoMetadataFould));
            }

            file.RepositoryId = repositoryId;
            foreach (RepositoryMetadataField repositoryMetadataField in repositoryMetadata.RepositoryMetadataFields)
            {
                FileLevelMetadata fileLevelMetadata = new FileLevelMetadata()
                {
                    RepositoryMetadataId      = repositoryMetadataField.RepositoryMetadataId,
                    RepositoryMetadataFieldId = repositoryMetadataField.RepositoryMetadataFieldId,
                    MetaDataTypeId            = repositoryMetadataField.MetadataTypeId,
                    FieldName   = repositoryMetadataField.Name,
                    Description = repositoryMetadataField.Description,
                    IsRequired  = repositoryMetadataField.IsRequired,
                    Datatype    = repositoryMetadataField.MetadataTypeId.ToString()
                };

                if (!string.IsNullOrWhiteSpace(repositoryMetadataField.Range))
                {
                    float[] range = repositoryMetadataField.Range.Split(new string[] { Constants.RangeSeparator }, StringSplitOptions.RemoveEmptyEntries).Select(v => Convert.ToSingle(v)).ToArray();
                    fileLevelMetadata.RangeValues = range;
                }

                FileMetadataField fileMetadataField = null;
                // first try to get the values from the database
                if (file.FileMetadataFields != null && file.FileMetadataFields.Any())
                {
                    fileMetadataField = file.FileMetadataFields.Where(p => p.RepositoryMetadataFieldId == repositoryMetadataField.RepositoryMetadataFieldId).FirstOrDefault();
                }

                if (fileMetadataField != null)
                {
                    fileLevelMetadata.FileMetadataFieldId = fileMetadataField.FileMetadataFieldId;
                    fileLevelMetadata.FieldValue          = fileMetadataField.MetadataValue;
                }

                fileLevelMetadataList.Add(fileLevelMetadata);
            }

            return(Request.CreateResponse(HttpStatusCode.OK, fileLevelMetadataList));
        }
        public void Error_When_PublishFile_Throws_Exception_AND_Exceeds_Maximum_Retries()
        {
            this.addedMessage = null;
            this.deletedMessage = null;
            this.fileUpdated = false;

            int startCount = 0;
            PublishMessage message = new PublishMessage() { RepositoryId = 1, FileId = 1, RetryCount = startCount };

            PublishQueueService publishQueueService = this.GetPublishQueueService();

            this.fileService = new StubIFileService()
            {
                PublishFilePublishMessage = (publishMessage) =>
                {
                    throw new Exception("test");
                },
                GetFileByFileIdInt32 = (fileId) =>
                {
                    this.file = new File() { FileId = 1 };
                    return file;
                },
                UpdateFileFile = (file) =>
                {
                    this.file = file;
                    return true;
                },
            };

            using (ShimsContext.Create())
            {
                ShimConfigReader<int>.GetRepositoryConfigValuesStringString = (baseRepositoryName, SettingName) =>
                {
                    return 3;
                };

                publishQueueService.ProcessMessage(message);
            }

            Assert.IsTrue(this.file.Status == FileStatus.Error.ToString());
            Assert.IsTrue(this.deletedMessage == message);
        }
Beispiel #21
0
        public void Initialize()
        {
            // Unit of work code
            this.unitOfWork =
                new StubIUnitOfWork()
                {
                    Commit = () => { return; }
                };

            // User repository
            this.userRepository = new StubIUserRepository()
            {
                GetUserbyUserIdInt32 = (userId) =>
                {
                    List<UserRole> userRoles = new List<UserRole>();
                    userRoles.Add(new UserRole() { Role = null, RoleId = 1, UserId = userId, UserRoleId = 1 });
                    User userNew = new User() { CreatedOn = DateTime.UtcNow, EmailId = "*****@*****.**", FirstName = "First", IdentityProvider = "identity", IsActive = true, LastName = "Last", MiddleName = "midele", ModifiedOn = DateTime.UtcNow, NameIdentifier = "nameIdentifier", Organization = "Test Org", UserAttributes = null, UserId = userId, UserRoles = userRoles };
                    return userNew;
                }
            };

            // File repository implementation
            this.fileRepository = new StubIFileRepository()
            {
                GetFilesByRepositoryInt32 = (repositoryId) =>
                    {
                        File fileToAdd = new File() { Citation = "Citation 1", CreatedBy = 1, CreatedOn = DateTime.Now, Description = "Document 1", FileAttributes = null, FileColumns = null, FileId = 1, FileQualityChecks = null, Identifier = "asdahgsdfsghadfsghad", isDeleted = false, MimeType = "Mime type 1", ModifiedBy = 1, ModifiedOn = DateTime.Now, Name = "Document One", Repository = null, RepositoryId = 1, Size = 20.90, Status = "Uploaded", Title = "Document 1" };
                        File fileToAdd1 = new File() { Citation = "Citation 2", CreatedBy = 1, CreatedOn = DateTime.Now, Description = "Document 2", FileAttributes = null, FileColumns = null, FileId = 2, FileQualityChecks = null, Identifier = "wrwe23423ewr", isDeleted = false, MimeType = "Mime type 2", ModifiedBy = 1, ModifiedOn = DateTime.Now, Name = "Document Two", Repository = null, RepositoryId = 1, Size = 20.90, Status = "Posted", Title = "Document 2" };

                        List<File> lstFiles = new List<File>();

                        lstFiles.Add(fileToAdd);
                        lstFiles.Add(fileToAdd);

                        return lstFiles;
                    },
                DeleteFileInt32StringBooleanBoolean = (fileId, status, isFileData, isHardDelete) =>
                    {
                        return true;
                    },
                UpdateFileFile = (modifiedFile) =>
                    {
                        return null;
                    }
            };

            // Repository details fake implementation
            this.repositoryDetails = new StubIRepositoryDetails()
            {
                RetrieveRepositories = () =>
                    {
                        Repository repositoryObject = new Repository()
                        {
                            AllowedFileTypes = "xlsx,nc,csv",
                            CreatedBy = 1,
                            /// Files = null,
                            CreatedOn = DateTime.Now,
                            HttpDeleteUriTemplate = "http://test.com",
                            HttpGetUriTemplate = "http://test.com",
                            HttpIdentifierUriTemplate = "http://test.com",
                            HttpPostUriTemplate = "http://test.com",
                            ImpersonatingPassword = "******",
                            ImpersonatingUserName = "******",
                            IsActive = true,
                            IsImpersonating = true,
                            ModifiedBy = 1,
                            ModifiedOn = DateTime.Now,
                            Name = "Repository1",
                            RepositoryId = 1,
                            UserAgreement = "Test Agreement1",
                            BaseRepositoryId = 1,
                            IsVisibleToAll = true
                        };

                        Repository repositoryObject1 = new Repository()
                        {
                            AllowedFileTypes = "xlsx,csv",
                            CreatedBy = 1,
                            //Files = null,
                            CreatedOn = DateTime.Now,
                            HttpDeleteUriTemplate = "http://gmail.com",
                            HttpGetUriTemplate = "http://gmail.com",
                            HttpIdentifierUriTemplate = "http://gmail.com",
                            HttpPostUriTemplate = "http://gmail.com",
                            ImpersonatingPassword = "******",
                            ImpersonatingUserName = "******",
                            IsActive = true,
                            IsImpersonating = true,
                            ModifiedBy = 1,
                            ModifiedOn = DateTime.Now,
                            Name = "Repository2",
                            RepositoryId = 2,
                            UserAgreement = "Test Agreement1",
                            BaseRepositoryId = 1,
                            IsVisibleToAll = true
                        };

                        List<Repository> lstRep = new List<Repository>();
                        lstRep.Add(repositoryObject);
                        lstRep.Add(repositoryObject1);
                        return lstRep;
                    },
                RetrieveRepositoryTypes = () =>
                    {
                        List<BaseRepository> lstBaseRep = new List<BaseRepository>();
                        lstBaseRep.Add(new BaseRepository() { BaseRepositoryId = 1, Name = "Merritt" });
                        lstBaseRep.Add(new BaseRepository() { BaseRepositoryId = 2, Name = "Sky" });
                        return lstBaseRep;
                    },
                AddRepositoryRepository = (repository) =>
                    {
                        repository.RepositoryId = 10;
                        repository.Name = "From add method";
                        return repository;
                    },
                UpdateRepositoryRepository = (repository) =>
                    {
                        repository.Name = "From update method";
                        return repository;
                    },
                GetRepositoryByIdInt32 = (repositoryId) =>
                    {
                        Repository repositoryObject = new Repository()
                        {
                            AllowedFileTypes = "xlsx,nc,csv",
                            CreatedBy = 1,
                            /// Files = null,
                            CreatedOn = DateTime.Now,
                            HttpDeleteUriTemplate = "http://test.com",
                            HttpGetUriTemplate = "http://test.com",
                            HttpIdentifierUriTemplate = "http://test.com",
                            HttpPostUriTemplate = "http://test.com",
                            ImpersonatingPassword = "******",
                            ImpersonatingUserName = "******",
                            IsActive = true,
                            IsImpersonating = true,
                            ModifiedBy = 1,
                            ModifiedOn = DateTime.Now,
                            Name = "Get by id method",
                            RepositoryId = repositoryId,
                            UserAgreement = "Test Agreement1",
                            BaseRepositoryId = 1,
                            IsVisibleToAll = true
                        };

                        return repositoryObject;
                    },
                GetBaseRepositoryNameInt32 = (baseRepositoryId) =>
                {
                    return "base rep Name";
                },
                DeleteRepositoryInt32 = (repositoryId) =>
                    {
                        Repository repositoryObject = new Repository()
                        {
                            AllowedFileTypes = "xlsx,nc,csv",
                            CreatedBy = 1,
                            /// Files = null,
                            CreatedOn = DateTime.Now,
                            HttpDeleteUriTemplate = "http://test.com",
                            HttpGetUriTemplate = "http://test.com",
                            HttpIdentifierUriTemplate = "http://test.com",
                            HttpPostUriTemplate = "http://test.com",
                            ImpersonatingPassword = "******",
                            ImpersonatingUserName = "******",
                            IsActive = true,
                            IsImpersonating = true,
                            ModifiedBy = 1,
                            ModifiedOn = DateTime.Now,
                            Name = "Delete rep method",
                            RepositoryId = repositoryId,
                            UserAgreement = "Test Agreement1",
                            BaseRepositoryId = 1,
                            IsVisibleToAll = true
                        };

                        return repositoryObject;
                    },
                GetRepositoryByNameString = (repositoryName) =>
                    {
                        Repository repositoryObject = new Repository()
                        {
                            AllowedFileTypes = "xlsx,nc,csv",
                            CreatedBy = 1,
                            /// Files = null,
                            CreatedOn = DateTime.Now,
                            HttpDeleteUriTemplate = "http://test.com",
                            HttpGetUriTemplate = "http://test.com",
                            HttpIdentifierUriTemplate = "http://test.com",
                            HttpPostUriTemplate = "http://test.com",
                            ImpersonatingPassword = "******",
                            ImpersonatingUserName = "******",
                            IsActive = true,
                            IsImpersonating = true,
                            ModifiedBy = 1,
                            ModifiedOn = DateTime.Now,
                            Name = repositoryName,
                            RepositoryId = 12,
                            UserAgreement = "Test Agreement1",
                            BaseRepositoryId = 1,
                            IsVisibleToAll = true
                        };

                        return repositoryObject;
                    }
            };

            this.repsoitoryService = new RepositoriesService.RepositoryService(repositoryDetails, unitOfWork, userRepository, fileRepository);
        }
 private void AddFile(File fileToAdd)
 {
     testDBContext.Files.Add(fileToAdd);
     testDBContext.Commit();
 }
        public void Allow_Download()
        {
            BaseRepository baseRepository = new BaseRepository()
            {
                BaseRepositoryId = 2,
                Name = "SkyDrive"
            };

            this.repository = new Repository() { BaseRepositoryId = 2, Name = "test", IsImpersonating = false, BaseRepository = baseRepository };
            RepositoryCredentials repositoryCredentials = new RepositoryCredentials();
            File file = new File()
            {
                FileId = 1
            };

            User user = new User()
            {
                UserId = 1
            };
          
            var fileProvider = this.GetSkyDriveFileService();
            this.skyDriveAdapter = new Microsoft.Research.DataOnboarding.RepositoryAdapters.Interfaces.Fakes.StubIRepositoryAdapter()
            {
                PostFilePublishFileModel = (publishFileModel) =>
                    {
                        OperationStatus status = OperationStatus.CreateFailureStatus("error");
                        return status;
                    },
                DownloadFileStringStringString = (identifier, accessToken, fileName) =>
                    {
                        return new DataFile();
                    }
            };

            DataFile result;
            using (ShimsContext.Create())
            {
                ShimSkyDriveFileService.AllInstances.GetOrUpdateAuthTokensRepositoryAuthToken = (skyDriveFileService, repository, authToken) => new AuthToken();
                result = fileProvider.DownLoadFileFromRepository(file, this.repository, user, repositoryCredentials);
            }

            Assert.IsNotNull(result);
        }
        /// <summary>
        /// Reuturns the PublishQueueServicer instance.
        /// </summary>
        /// <param name="nullMessageHandler">Indicates if the handler has to be returned or not.</param>
        /// <returns>MessaeRouter instance.</returns>
        private PublishQueueService GetPublishQueueService()
        {
            this.fileService = new StubIFileService()
            {
                PublishFilePublishMessage = (publishMessage) =>
                    {
                        return "successfull";
                    },
                GetFileByFileIdInt32 = (fileId) =>
                    {
                        this.file = new File() { FileId = 1 };
                        return file;
                    },
                UpdateFileFile = (file) =>
                    {
                        this.file = file;
                        return true;
                    },
            };

            this.fileServiceFactory = new StubIFileServiceFactory()
            {
                GetFileServiceString = (instanceName) =>
                    {
                        return this.fileService;
                    }

            };

            this.repositoryService = new StubIRepositoryService()
            {
                GetRepositoryByIdInt32 = (repositoryId) =>
                    {
                        return new Repository() { BaseRepository = new BaseRepository() { Name = "SkyDrive", BaseRepositoryId = 2 }, RepositoryId = 1, Name = "test" };
                    }
            };

            this.queueRepository = new StubIQueueRepository()
            {
                AddMessageToQueueBaseMessage = (message) =>
                    {
                        this.addedMessage = message;
                    },
                DeleteFromQueueBaseMessage = (message) =>
                    {
                        this.deletedMessage = message;
                    },
                UpdateMessageBaseMessage = (message) =>
                    {
                        this.updatedQueueContent = true;
                    }
            };

            PublishQueueService publishQueueService = new PublishQueueService(this.fileServiceFactory, this.repositoryService, this.queueRepository);
            return publishQueueService;
        }
Beispiel #25
0
        /// <summary>
        /// Downloads the File from Repository
        /// </summary>
        /// <param name="file">File object.</param>
        /// <param name="repository">Repository instance.</param>
        /// <param name="user">User instance.</param>
        /// <param name="credentials">credentials required by the repository.</param>
        /// <returns>DataFile containing the file data.</returns>
        public override DataFile DownLoadFileFromRepository(File file, Repository repository, User user, RepositoryCredentials credentials)
        {
            // construct the AuthToken object
            AuthToken authToken = new AuthToken()
            {
                UserId = user.UserId,
                RespositoryId = repository.RepositoryId
            };

            if (credentials != null)
            {
                authToken.AccessToken = credentials[WindowsLiveAuthenticationCredentialKeys.AccessToken];
                authToken.RefreshToken = credentials[WindowsLiveAuthenticationCredentialKeys.RefreshToken];
                
                if (credentials[WindowsLiveAuthenticationCredentialKeys.TokenExpiresOn] != null)
                {
                    DateTime tokenExpiryDate;
                    if (DateTime.TryParse(credentials[WindowsLiveAuthenticationCredentialKeys.TokenExpiresOn], out tokenExpiryDate))
                    {
                        authToken.TokenExpiresOn = tokenExpiryDate;
                    };
                }
            }
            
            this.RepositoryAdapter = this.RepositoryAdapterFactory.GetRepositoryAdapter(repository.BaseRepository.Name);

            // Retreive the AuthToken from database or save the token to database if access token is present in the credentials.
            authToken = this.GetOrUpdateAuthTokens(repository, authToken);
           
            DataFile dataFile = this.RepositoryAdapter.DownloadFile(file.Identifier, authToken.AccessToken, file.Name);
            return dataFile;           
        }