aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/PPC/Tango.PPC.Common/Synchronization/IMachineDataSynchronizer.cs
blob: bfd527a053977ba68694a3051d86e911c2cf5a53 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Tango.Core;

namespace Tango.PPC.Common.Synchronization
{
    public interface IMachineDataSynchronizer
    {
        event EventHandler SynchronizationStarted;
        event EventHandler<SynchronizationEndedEventArgs> SynchronizationEnded;
        event EventHandler<SynchronizationStatusChangedEventArgs> CurrentStatusChanged;
        int MaxJobs { get; set; }
        int MaxJobRuns { get; set; }
        int MaxMachinesEvents { get; set; }
        SynchronizationStatus CurrentStatus { get; }
        SynchronizationStatus LastStatus { get; }
        SynchronizedObservableCollection<SynchronizationStatus> StatusHistory { get; }
        TimeSpan Interval { get; set; }
        bool IsEnabled { get; set; }
        bool IsSynchronizing { get; }
        Task Synchronize();
    }
}
class="k">get; set; } public int CountOfSet { get; set; } public LogViewerManager() { LogFile = null; ; } /// <summary> /// Create LogFile by given path. /// </summary> /// <param name="file">The file.</param> public void InitLogFile(String file) { LogFile = GetLogFile(file); } /// <summary> /// Gets set of log files by path. /// </summary> public LogFile GetLogFile(string filePath) { if (!File.Exists(filePath)) { throw new IOException("File not found."); } if (Path.GetExtension(filePath) != ".log") { throw new IOException("Invalid log file extension. extension must be *.log"); } var directoryName = Path.GetDirectoryName(filePath); var logfileName = Path.GetFileNameWithoutExtension(filePath); String fileName = logfileName; int index = logfileName.IndexOf("-"); if (index >= 0) { fileName = logfileName.Substring(0, index); } int indexPos = logfileName.IndexOf(FileLogger.FILE_SET_EXTENSION); if (indexPos > 0) { logfileName = logfileName.Substring(0, indexPos); } String dateString = System.IO.Path.GetFileNameWithoutExtension(filePath).Replace($"{fileName}-", "").Replace("_session", ""); indexPos = dateString.IndexOf(FileLogger.FILE_SET_EXTENSION); int indexOfFile = 0; CountOfSet = 0; if (indexPos > 0) { string fileNameIndex = dateString.Substring(indexPos + FileLogger.FILE_SET_EXTENSION.Length); string[] fileEntries = Directory.GetFiles(directoryName, $"{logfileName}*{Path.GetExtension(filePath)}").Where(x => Path.GetFileName(x).StartsWith(logfileName)).OrderBy(x => x).ToArray(); CountOfSet = fileEntries.Length; int.TryParse(fileNameIndex, out indexOfFile); dateString = dateString.Substring(0, indexPos); } DateTime date = DateTime.ParseExact(dateString, "dd-MM-yyyy_HH-mm-ss", CultureInfo.InvariantCulture); return (new LogFile() { DateTime = date, File = filePath, FileName = logfileName, PartOfSet = indexOfFile > 0, SetStartIndex = indexOfFile, SetCount = CountOfSet }); } /// <summary> /// Parses the this LogFile. /// </summary> public List<LogItemBase> Parse() { IsEmbeddedLog = false; FileName = ""; List<LogItemBase> logItems = new List<LogItemBase>(); if (LogFile == null) return logItems; FileName = LogFile.FileName; IsEmbeddedLog = FileName.StartsWith("Embedded"); if (IsEmbeddedLog) { _parser = new EmbeddedLogViewerParser(); } else { _parser = new ApplicationLogViewerParser(); } if (LogFile.PartOfSet) { string extension = Path.GetExtension(LogFile.File); var directoryName = Path.GetDirectoryName(LogFile.File); string[] fileEntries = Directory.GetFiles(directoryName, $"{FileName}*{extension}").Where(x => Path.GetFileName(x).StartsWith(FileName)).OrderBy(x => x).ToArray(); foreach (var file in fileEntries) { _parser.Parse(file, LogFile.DateTime, ref logItems); } } else { _parser.Parse(LogFile.File, LogFile.DateTime, ref logItems); } return logItems; } } }