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); }
/// <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); } } }
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)); }
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)); }
/// <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; }
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)); }
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)); }
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)); }
/// <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); } } }
/// <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); }
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); }
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; }
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); }
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; }
/// <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; }