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);
        }
Exemple #5
0
        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);
        }