/
Item.cs
318 lines (283 loc) · 8.35 KB
/
Item.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
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
using System;
using System.Collections;
using System.Text;
using Built.Data.Box.Utilities;
using Built.Text;
namespace Built.Data.Box
{
public class Item : Hashtable
{
// Fields
protected HashAdapter Adapter = null;
protected string IdField = "ID";
protected ArrayList SortFields = null;
protected string StreamName = "";
protected bool useAutoId = true;
// Methods
protected Field AddField(string fieldName)
{
Field field = new Field(fieldName);
this[fieldName] = field;
return field;
}
protected Field AddField(string fieldName, string aka)
{
Field field = new Field(fieldName);
this[fieldName] = field;
if (this.Adapter != null)
{
this.Adapter.mapKey(aka, fieldName);
}
return field;
}
protected Field AddIdField(string fieldName)
{
this.IdField = fieldName;
this[this.IdField] = new Field(fieldName);
return (Field)this[this.IdField];
}
protected Field AddIdField(string fieldName, string aka)
{
this.IdField = fieldName;
Field field = new Field(fieldName);
this[this.IdField] = field;
if (this.IsUsingAdapter)
{
this.Adapter.mapKey(aka, fieldName);
this.IdField = aka;
}
return field;
}
protected void AddSortField(string fieldName)
{
this.getSortList().Add(fieldName);
}
public int appropriate(Hashtable dataset)
{
int num = 0;
if ((dataset != null) && (dataset.Count > 0))
{
if (this.Adapter != null)
{
foreach (string str in this.Adapter.Keys)
{
if (dataset.ContainsKey(str))
{
((Field)this.Adapter[str]).Renew(dataset[str].ToString());
num++;
}
}
return num;
}
this.assimilate(dataset);
}
return num;
}
public int assimilate(Hashtable dataset)
{
int num = 0;
if ((dataset != null) && (dataset.Count > 0))
{
foreach (string str in this.Keys)
{
if (dataset.ContainsKey(str))
{
((Field)this[str]).Renew(dataset[str].ToString());
num++;
}
}
}
return num;
}
public Hashtable export()
{
return new Hashtable(this);
}
public static string[] FieldList(string field1)
{
return new string[] { field1 };
}
public static string[] FieldList(string field1, string field2)
{
return new string[] { field1, field2 };
}
public static string[] FieldList(string field1, string field2, string field3)
{
return new string[] { field1, field2, field3 };
}
public static string[] FieldList(string field1, string field2, string field3, string field4)
{
return new string[] { field1, field2, field3, field4 };
}
public static string[] FieldList(string field1, string field2, string field3, string field4, string field5)
{
return new string[] { field1, field2, field3, field4, field5 };
}
public HashAdapter getAdapter()
{
return this.Adapter;
}
public Hashtable getBoxView()
{
Hashtable adapter = this;
if (this.Adapter != null)
{
adapter = this.Adapter;
}
return adapter;
}
public ArrayList getFieldNames()
{
ArrayList list = new ArrayList();
foreach (string str in this.getBoxView().Keys)
{
list.Add(str);
}
return list;
}
protected string GetFieldValue(string fieldName)
{
Field field = (Field)this[fieldName];
return field.ToString();
}
public string getIdField()
{
return this.IdField;
}
public ArrayList getSortList()
{
if (this.SortFields == null)
{
this.SortFields = new ArrayList();
}
return this.SortFields;
}
public string getStreamName()
{
return this.StreamName;
}
public string getXml()
{
StringTheory theory = new StringTheory("<%islandName%>%body%</%islandName%>\n");
StringTheory val = new StringTheory();
StringTheory theory3 = new StringTheory();
foreach (string str in this.getFieldNames())
{
val.Renew(" <%fieldName%>%fieldValue%</%fieldName%>\n");
val.Replace("%fieldName%", str.ToLower());
val.Replace("%fieldValue%", ((Field)this[str]).getValue());
theory3.Append(val);
}
theory.Replace("%islandName%", this.StreamName.ToLower());
theory.Replace("%body%", theory3);
return theory.ToString();
}
public bool isNew()
{
Field field;
if (this.IsUsingAdapter)
{
HashAdapter adapter = (HashAdapter)this.getBoxView();
field = (Field)adapter[this.IdField];
}
else
{
field = (Field)this[this.IdField];
}
return field.IsEmpty();
}
private void ListAppend(ArrayList list, object[] array)
{
if (array != null)
{
for (int i = 0; i < array.Length; i++)
{
list.Add(array[i]);
}
}
}
public void reset()
{
foreach (string str in this.Keys)
{
((Field)this[str]).Reset();
}
}
protected void SetFieldValue(string fieldName, string fieldValue)
{
((Field)this[fieldName]).setValue(fieldValue);
}
protected void SetStreamName(string name)
{
this.StreamName = name;
}
public void showContents()
{
foreach (string str in this.getFieldNames())
{
Console.WriteLine(str + " -> " + this[str]);
}
}
public void sortBy(string[] fields)
{
this.getSortList().Clear();
this.ListAppend(this.getSortList(), fields);
}
protected void UseAdapter()
{
this.Adapter = new HashAdapter();
this.Adapter.setTarget(this);
}
// Properties
public string Id
{
get
{
string str = "";
Hashtable hashtable = this.getBoxView();
if (hashtable.ContainsKey(this.IdField))
{
str = hashtable[this.IdField].ToString();
}
return str;
}
set
{
((Field)this.getBoxView()[this.IdField]).setValue(value);
}
}
public bool IsUsingAdapter
{
get
{
return (this.Adapter != null);
}
}
public bool Touched
{
get
{
foreach (string str in this.getBoxView().Keys)
{
Field field = (Field)this.getBoxView()[str];
if (field.Touched())
{
return true;
}
}
return false;
}
}
public bool UsesAutoId
{
get
{
return this.useAutoId;
}
set
{
this.useAutoId = value;
}
}
}
}