using System; using System.Collections.Generic; using System.Linq; using System.Reflection; using System.Text; using System.Threading.Tasks; using Tango.CSV; using Tango.DispenserAnalyzer.UI.Models; using System.Windows.Controls; using System.Windows.Media; using System.IO; using System.Text.RegularExpressions; namespace Tango.DispenserAnalyzer.UI.Analysis { public class AnalysisService { public static dynamic GetAnalyzer(String fileName) { string filename = Path.GetFileNameWithoutExtension(fileName); var analyzerTypes = typeof(AnalysisService).Assembly.GetTypes().Where(x => typeof(IBaseAnalyzer).IsAssignableFrom(x)).ToList(); var analyzerType = analyzerTypes.FirstOrDefault(x => filename.StartsWith(x.GetCustomAttribute().Name, StringComparison.OrdinalIgnoreCase) ); if(analyzerType == null) {//in case name of test is not first word analyzerType = analyzerTypes.FirstOrDefault(x => filename.IndexOf(x.GetCustomAttribute().Name, StringComparison.OrdinalIgnoreCase) >= 0); } return (analyzerType != null) ? Activator.CreateInstance(analyzerType) : null; } public static string GetTestName(String fileName) { var analyzerTypes = typeof(AnalysisService).Assembly.GetTypes().Where(x => typeof(IBaseAnalyzer).IsAssignableFrom(x)).ToList(); var analyzerType = analyzerTypes.FirstOrDefault(x => fileName.IndexOf(x.GetCustomAttribute().Name, StringComparison.OrdinalIgnoreCase) >= 0); return analyzerType.GetCustomAttribute().Name; } public static string GetDispenserNumber(String fileName) { string filename = Path.GetFileNameWithoutExtension(fileName); return GetUntilOrEmpty(filename," "); } public static string GetUntilOrEmpty( string text, string stopAt = "-") { if (!String.IsNullOrWhiteSpace(text)) { int charLocation = text.IndexOf(stopAt, StringComparison.Ordinal); if (charLocation > 0) { return text.Substring(0, charLocation); } } return String.Empty; } public static string GetDateTimeString(string text) { Regex regex = new Regex(@"\d{2}-\d{2}-\d{2}\s\d{2}-\d{2}"); Match m = regex.Match(text); if (m.Success) return m.Value; return ""; //if (m.Success) //{ // DateTime dt = DateTime.ParseExact(m.Value, "yyyy-MM-dd-hh-mm-ss", CultureInfo.InvariantCulture); //} } } }