Bladeren bron

Reading cron fragment file

Lukas Angerer 5 jaren geleden
bovenliggende
commit
d1ca7a3c7a
3 gewijzigde bestanden met toevoegingen van 30 en 7 verwijderingen
  1. 15 2
      CronAlarm/CronFragmentHandler.cs
  2. 2 4
      CronAlarm/ICrontFragmentHandler.cs
  3. 13 1
      CronAlarm/Pages/AlertSelection.razor.cs

+ 15 - 2
CronAlarm/CronFragmentHandler.cs

@@ -1,11 +1,24 @@
-using System;
+using CronAlarm.Config;
+using System;
 using System.Collections.Generic;
+using System.IO;
 using System.Linq;
-using System.Threading.Tasks;
 
 namespace CronAlarm
 {
     public class CronFragmentHandler : ICrontFragmentHandler
     {
+        private readonly CronFragment _cronFragment;
+
+        public CronFragmentHandler(CronFragment fragment)
+        {
+            _cronFragment = fragment;
+        }
+
+        public IEnumerable<string> GetExpressions()
+        {
+            var lines = File.ReadAllLines(_cronFragment.FilePath);
+            return lines.Select(line => string.Join(" ", line.Split(' ', StringSplitOptions.RemoveEmptyEntries).Take(5)));
+        }
     }
 }

+ 2 - 4
CronAlarm/ICrontFragmentHandler.cs

@@ -1,11 +1,9 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Threading.Tasks;
+using System.Collections.Generic;
 
 namespace CronAlarm
 {
     public interface ICrontFragmentHandler
     {
+        IEnumerable<string> GetExpressions();
     }
 }

+ 13 - 1
CronAlarm/Pages/AlertSelection.razor.cs

@@ -12,11 +12,18 @@ namespace CronAlarm.Pages
         [Inject]
         private Alerts Config { get; set; }
 
+        [Inject]
+        private ICrontFragmentHandler CronFragmentHandler { get; set; }
+
         private IDictionary<string, int> SelectedOptions { get; set; } = new Dictionary<string, int>();
 
         public AlertSelection()
         {
-            SelectedOptions["Weekdays"] = 1;
+        }
+
+        protected override void OnInitialized()
+        {
+            Reset();
         }
 
         private void ToggleOption(string group, int index)
@@ -42,7 +49,12 @@ namespace CronAlarm.Pages
 
         private void Reset()
         {
+            var current = CronFragmentHandler.GetExpressions().ToHashSet();
 
+            foreach (var group in Config.Groups)
+            {
+                SelectedOptions[group.Name] = group.IndexedOptions.Select(item => item.ToTuple()).FirstOrDefault(item => current.Contains(item.Item2.Pattern))?.Item1 ?? -1;
+            }
         }
     }
 }