public void SetP4FileWithExistingFileTest(int no) { using var service = new Service(context); var f = ReadFile($@"..\..\..\..\AngularApp\Files\demo{no}.txt"); var p4File = new P4File { FileName = $"demo{no}.txt", Content = f.Item1, Hash = f.Item2, CreatedDate = DateTime.Now }; var file = service.SetP4File(p4File); Assert.Null(file); }
public static FileData ToFileData(this P4File file) { if (file == null) { throw new ApplicationException("Ez a fájl már feltöltésre került!"); } return(new FileData { Id = file.Id, Name = file.FileName, CreateDate = file.CreatedDate, Content = file.Content != null && file.Content.Length > 0 ? System.Text.Encoding.ASCII.GetString(file.Content) : string.Empty }); }
public void SetP4FileTest(int no) { using var service = new Service(context); var f = ReadFile($@"..\..\..\..\AngularApp\Files\demo{no}.txt"); var p4File = new P4File { Id = no, FileName = $"demo{no}.{(no == 3 ? txt : p4)}", Content = f.Item1, Hash = f.Item2, CreatedDate = Convert.ToDateTime("2019.11.23") }; var file = service.SetP4File(p4File); Assert.Equal(p4File.Id, file.Id); Assert.Equal(Path.GetFileNameWithoutExtension(p4File.FileName), file.FileName); Assert.Equal(p4File.Hash, file.Hash); Assert.Equal(p4File.Content, file.Content); Assert.Equal(p4File.CreatedDate, file.CreatedDate); }
/// <summary> /// Async method to get meta data of files from perforce server. /// </summary> /// <param name="fileData"></param> /// <returns></returns> private async Task <P4FileTrunkRevisions> ProcessHistoryCompares(P4File fileData) { P4FileTrunkRevisions revs = null; if (fileData == null) { return(null); } try { revs = new P4FileTrunkRevisions(fileData); } catch (Exception e) { return(null); } P4Execute executer = new P4Execute(); string filePathNoVersion = Path.Combine(fileData.CurrentPath.FilePath.ToString(), fileData.FileName); int highestVersion = Int32.Parse(fileData.FileMetaData.HeadRevision); for (int version = highestVersion; version > 0; version--) { P4ExecutingParameters exePar = new P4ExecutingParameters("CMD.EXE", "fstat", null, new List <string> { "-Osl", "\"" + filePathNoVersion.ToString() + "#" + version + "\"" }); string data = executer.ExecuteCommand(exePar); if (ValidateReceivedData(data, new[] { "...", "depotFile" })) { revs = UpdateFileData(revs, data); } if (version == highestVersion) { revs.CurrentFile = revs.OlderRevisions[0]; } if (!_filters.FindMatch) { break; } //Put to dictionary } return(revs != null ? revs : null); }
public P4File SetP4File(P4File file) { if (file.FileName == null || file.FileName.Trim().Length == 0) { throw new ApplicationException("A fájl név megadása kötelező!"); } if (file.Content == null) { throw new ApplicationException("A tartalom megadása kötelező!"); } var hash = CreateHash(file.Content); if (hash != string.Empty) { if (!context.P4Files.Any(x => x.Hash == hash)) { file.FileName = Path.GetFileNameWithoutExtension(file.FileName); file.Hash = hash; file.CreatedDate = DateTime.Now; context.Add(file); context.SaveChanges(); return(file); } else { return(null); } } else { throw new ApplicationException("A hash képzése nem sikerült!"); } }
/// <summary> /// Stores metadata in meta data object related to a p4File. /// </summary> /// <param name="revs"></param> /// <param name="data"></param> /// <returns></returns> private P4FileTrunkRevisions UpdateFileData(P4FileTrunkRevisions revs, string data) { P4File oldFile = new P4File(); P4Path path = new P4Path(); P4FileMetaData metaData = new P4FileMetaData(); string[] dataArray = data.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries); for (int i = 0; i < dataArray.Length; i++) { if (dataArray[i].Contains("depotFile")) { string p = dataArray[i].Substring(dataArray[i].IndexOf("/")); metaData.DepotFile = p.Trim(); path.FilePath = Path.GetDirectoryName(p); oldFile.CurrentPath = path; oldFile.FileName = Path.GetFileName(p); continue; } if (dataArray[i].Contains("headAction")) { string p = dataArray[i].Substring(dataArray[i].IndexOf("headAction") + 10); metaData.HeadAction = p.Trim(); } if (dataArray[i].Contains("headType")) { string p = dataArray[i].Substring(dataArray[i].IndexOf("headType") + 8); metaData.HeadType = p.Trim(); continue; } if (dataArray[i].Contains("headTime")) { string p = dataArray[i].Substring(dataArray[i].IndexOf("headTime") + 8); metaData.HeadTime = p.Trim(); continue; } if (dataArray[i].Contains("headRev")) { string p = dataArray[i].Substring(dataArray[i].IndexOf("headRev") + 7); metaData.HeadRevision = p.Trim(); continue; } if (dataArray[i].Contains("headChange")) { string p = dataArray[i].Substring(dataArray[i].IndexOf("headChange") + 10); metaData.HeadChange = p.Trim(); continue; } if (dataArray[i].Contains("headModTime")) { string p = dataArray[i].Substring(dataArray[i].IndexOf("headModTime") + 11); metaData.HeadModTime = p.Trim(); continue; } if (dataArray[i].Contains("haveRev")) { string p = dataArray[i].Substring(dataArray[i].IndexOf("haveRev") + 7); metaData.HaveRevision = p.Trim(); continue; } if (dataArray[i].Contains("fileSize")) { string p = dataArray[i].Substring(dataArray[i].IndexOf("fileSize") + 8); metaData.Filesize = p.Trim(); continue; } if (dataArray[i].Contains("digest")) { string p = dataArray[i].Substring(dataArray[i].IndexOf("digest") + 6); metaData.Digest = p.Trim(); continue; } if (dataArray[i].Contains("isMapped")) { string p = dataArray[i].Substring(dataArray[i].IndexOf("isMapped") + 8); metaData.IsMapped = p.Trim(); continue; } metaData.ExtraHeadProperties = dataArray[i]; } if (string.IsNullOrEmpty(metaData.Digest)) { P4Execute executer = new P4Execute(); P4ExecutingParameters exePar = new P4ExecutingParameters("CMD.EXE", "fstat", null, new List <string> { "-T digest -Ol ", "\"" + metaData.DepotFile + "#" + metaData.HeadRevision + "\"" }); string digest = executer.ExecuteCommand(exePar); if (digest.Contains("digest")) { string p = digest.Substring(digest.IndexOf("digest") + 6); metaData.Digest = p.Trim(); } } oldFile.CurrentPath = path; oldFile.FileMetaData = metaData; revs.OlderRevisions.Add(oldFile); return(revs); }