-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathTriggers.cs
130 lines (115 loc) · 3.83 KB
/
Triggers.cs
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
using System;
using System.Collections.Generic;
using System.Linq;
namespace TriggerTrigger
{
public class Triggers
{
//XML保存ファイル
string _filepath;
//Trigger一覧
SortedList<string, Trigger> _sortedlist;
//ループ時 使用配列
public List<List<Trigger>> TList = new List<List<Trigger>>();
public Triggers(string filepath)
{
_filepath = filepath;
_sortedlist = new SortedList<string, Trigger>();
}
public Trigger Get(string key)
{
if (_sortedlist.ContainsKey(key))
return _sortedlist[key];
return null;
}
public bool Add(Trigger trigger,bool update=true)
{
if (_sortedlist.ContainsKey(trigger.Key))
return false;
_sortedlist.Add(trigger.Key, trigger);
if(update)
updateTList();
return true;
}
public bool Edit(string key,Trigger trigger)
{
if (key != trigger.Key && _sortedlist.ContainsKey(trigger.Key))
return false;
if (!Remove(key))
return false;
return Add(trigger);
}
public bool Remove(string key)
{
if (!_sortedlist.ContainsKey(key))
return false;
_sortedlist.Remove(key);
updateTList();
return true;
}
public string[] Keys()
{
return _sortedlist.Keys.ToArray();
}
void updateTList()
{
lock (TList)
{
TList.Clear();
List<Trigger> tmpList = new List<Trigger>();
string lastRegex = string.Empty;
foreach (var trigger in _sortedlist.Values)
{
if (!trigger.EnableRegex())
continue;
if (lastRegex != trigger.RegEx)
{
tmpList = new List<Trigger>();
TList.Add(tmpList);
lastRegex = trigger.RegEx;
}
tmpList.Add(trigger);
}
}
}
public void Load()
{
if (!System.IO.File.Exists(_filepath))
return;
try {
using (System.IO.TextReader reader = new System.IO.StreamReader(_filepath))
{
System.Xml.Serialization.XmlSerializer serializer
= new System.Xml.Serialization.XmlSerializer(typeof(List<Trigger>));
List<Trigger> list = serializer.Deserialize(reader) as List<Trigger>;
foreach (var item in list)
{
this.Add(item,false);
}
}
}
catch(Exception e)
{
System.Diagnostics.Debug.WriteLine(e.ToString());
}
updateTList();
}
public void Save()
{
List<Trigger> list = _sortedlist.Values.ToList();
try {
System.Xml.Serialization.XmlSerializerNamespaces ns = new System.Xml.Serialization.XmlSerializerNamespaces();
ns.Add(String.Empty, String.Empty);
using (System.IO.TextWriter writer = new System.IO.StreamWriter(_filepath))
{
System.Xml.Serialization.XmlSerializer serializer
= new System.Xml.Serialization.XmlSerializer(typeof(List<Trigger>));
serializer.Serialize(writer, list,ns);
}
}catch(Exception e)
{
System.Diagnostics.Debug.WriteLine(e.ToString());
}
}
}
}