-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathGeneratorNames.cs
More file actions
300 lines (273 loc) · 10.4 KB
/
GeneratorNames.cs
File metadata and controls
300 lines (273 loc) · 10.4 KB
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
// Copyright (c) Knowledge & Experience. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
using Kae.CIM.MetaModel.CIMofCIM;
using Kae.XTUML.Tools.Generator.CodeOfDomainModel.Csharp.template;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
namespace Kae.XTUML.Tools.Generator.CodeOfDomainModel.Csharp
{
internal class GeneratorNames
{
public static string GetDomainFacadeClassName(string domainName)
{
return $"CIM{domainName}Lib";
}
public static string GetDomainClassBaseInterfaceName()
{
return "DomainClassDef";
}
public static string GetDomainClassName(CIMClassO_OBJ objDef)
{
return $"DomainClass{objDef.Attr_Key_Lett}";
}
public static string GetDomainClassImplName(CIMClassO_OBJ objDef)
{
return $"DomainClass{objDef.Attr_Key_Lett}Base";
}
public static string GetSubRelInterfaceName(CIMClassR_REL relDef)
{
return $"SubClassR{relDef.Attr_Numb}";
}
public static string GetRelID(CIMClassR_REL relDef)
{
return $"R{relDef.Attr_Numb}";
}
public static string GetSubRelClassMethodName(CIMClassR_REL relDef)
{
return $"GetSubR{relDef.Attr_Numb}";
}
public static string GetGetSuperClassMethodName(CIMClassR_REL relDef)
{
return $"GetSuperClassR{relDef.Attr_Numb}";
}
public static string GetSubClassFactoryClassName(CIMClassR_SUPER superDef)
{
var relDef = superDef.LinkedToR212().CIMSuperClassR_REL();
return $"SubClass{GetRelID(relDef)}Factory";
}
public static string GetTakeEventMethodName()
{
return "TakeEvent";
}
public static string GetAttrPropertyName(CIMClassO_ATTR attrDef)
{
return $"Attr_{attrDef.Attr_Name}";
}
public static string GetAttrPropertyLocalName(CIMClassO_ATTR attrDef)
{
return $"attr_{attrDef.Attr_Name}";
}
public static string GetTfrOpName(CIMClassO_TFR tfrDef)
{
string tfrName = tfrDef.Attr_Name;
return $"{tfrName.Substring(0, 1)}{tfrName.Substring(1)}";
}
public static string GetEventEnumLabelName(CIMClassO_OBJ objDef, CIMClassSM_EVT evtDef)
{
return $"{objDef.Attr_Key_Lett}_{evtDef.Attr_Numb}";
}
public static string GetEventClassName(CIMClassO_OBJ objDef, CIMClassSM_EVT evtDef)
{
return $"{objDef.Attr_Key_Lett}_{evtDef.Attr_Numb}_{ToProgramAvailableString(evtDef.Attr_Mning)}";
}
public static string GetStateEnumLabelName(CIMClassSM_STATE stateDef, bool isDecl = false)
{
var name = ToProgramAvailableString(stateDef.Attr_Name);
if (Regex.Match(name, @"^[0-9]").Success)
{
string[] replace = { "Zero", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine" };
int numOfBegin = int.Parse(name.Substring(0, 1));
name = $"{replace[numOfBegin]}{name.Substring(1)}";
if (isDecl)
{
name = $"/* {numOfBegin} */ {name}";
}
}
return name;
}
public static string GetStateActionMethodName(CIMClassSM_STATE stateDef)
{
return $"Action{ToProgramAvailableString(stateDef.Attr_Name)}";
}
public static string GetStateArgsInterfaceName(CIMClassSM_STATE stateDef)
{
return $"IEventArgs{ToProgramAvailableString(stateDef.Attr_Name)}";
}
public static string GetPropertyStateVariableName(CIMClassO_ATTR attrDef)
{
return $"stateof_{attrDef.Attr_Name}";
}
public static string GetLinkedInstanceClassName()
{
return "LinkedInstance";
}
public static string ToProgramAvailableString(string content)
{
string result = "";
if (string.IsNullOrEmpty(content))
{
return result;
}
var frags = content.Split(new char[] { ' ' });
foreach (var frag in frags)
{
result += frag.Substring(0, 1).ToUpper() + frag.Substring(1);
}
return result;
}
public enum RelLinkMethodType
{
Linked,
Link,
Unlink
}
public static string GetRelationshipMethodName(CIMClassR_REL relDef, string side, string phrase, RelLinkMethodType methodType)
{
string result = "";
string prefix = "Unknown";
switch (methodType)
{
case RelLinkMethodType.Link:
prefix = "Link";
break;
case RelLinkMethodType.Unlink:
prefix = "Unlink";
break;
case RelLinkMethodType.Linked:
prefix = "Linked";
break;
}
result = $"{prefix}R{relDef.Attr_Numb}";
if (!string.IsNullOrEmpty(side))
{
result += side;
}
if (!string.IsNullOrEmpty(phrase))
{
result += ToProgramAvailableString(phrase);
}
return result;
}
public static string GetSuperTypeMethodName(CIMClassR_SUBSUP subSupDef)
{
var relDef = subSupDef.CIMSuperClassR_REL();
var targetObjDef = subSupDef.LinkedFromR212().CIMSuperClassR_RTO().LinkedToR109().LinkedToR104();
return $"GetSuperTypeR{relDef.Attr_Numb}{targetObjDef.Attr_Key_Lett}";
}
public static string GetComplexDataTypeName(CIMClassS_SDT sdtDef)
{
return $"DomainType{sdtDef.CIMSuperClassS_DT().Attr_Name}";
}
public static string GetEnumDataTypeName(CIMClassS_EDT edtDef)
{
return $"DomainType{edtDef.CIMSuperClassS_DT().Attr_Name}";
}
public static string DescripToCodeComment(string indent, string descrip)
{
string result = "";
if (!string.IsNullOrEmpty(descrip))
{
int numOfDigit = 1;
int lineOfDescrip = 0;
using (var reader = new StringReader(descrip))
{
string line = "";
while ((line = reader.ReadLine()) != null)
{
lineOfDescrip++;
}
}
while (lineOfDescrip > 0)
{
lineOfDescrip /= 10;
numOfDigit++;
}
using (var writer = new StringWriter())
{
using (var reader = new StringReader(descrip))
{
lineOfDescrip = 1;
string line = "";
while ((line = reader.ReadLine()) != null)
{
string lineIndex = $"{lineOfDescrip}";
while (lineIndex.Length < numOfDigit)
{
lineIndex = $" {lineIndex}";
}
string xformed = line;
xformed = $"// {lineIndex} : {line}";
writer.WriteLine($"{indent}{xformed}");
lineOfDescrip++;
}
}
result = writer.ToString();
}
}
return result;
}
public static string GetStateMachineClassName(CIMClassO_OBJ objDef)
{
return $"DomainClass{objDef.Attr_Key_Lett}StateMachine";
}
public static string GetRelLocalVariableName(CIMClassR_REL relDef, CIMClassO_OBJ targetObjDef, string txtPhrase)
{
return $"relR{relDef.Attr_Numb}{targetObjDef.Attr_Key_Lett}{ToProgramAvailableString(txtPhrase)}";
}
public static void GetChangedStoreVariable(ref string className, ref string varName)
{
className = "IList<ChangedState>";
varName = "changedStates";
}
public static string GetExternalEntityWrappterClassName(CIMClassS_EE eeDef, bool isAzureDigitalTwins, bool fullName = true)
{
var eeImplInfo = DomainOperations.GetExternalEntityConstructorName(eeDef, isAzureDigitalTwins);
string name = $"{eeDef.Attr_Key_Lett}Wrapper";
if (fullName)
{
if (!string.IsNullOrEmpty(eeImplInfo.Namespace))
{
name = $"{eeImplInfo.Namespace}.{name}";
}
else
{
name = "ExternalEntities." + name;
}
}
if (eeDef.Attr_Name == "Time" && eeDef.Attr_Key_Lett == "TIM")
{
name = "Kae.DomainModel.Csharp.Framework.ExternalEntities.TIM.TIMWrapper";
}
else if (eeDef.Attr_Name == "Random" && eeDef.Attr_Key_Lett == "RND")
{
name = "Kae.DomainModel.Csharp.Framework.ExternalEntities.RND.RNDWrapper";
}
else if (eeDef.Attr_Name == "String Utility" && eeDef.Attr_Key_Lett == "STR")
{
name = "Kae.DomainModel.Csharp.Framework.ExternalEntities.STR.STRWrapper";
}
else if (eeDef.Attr_Name == "Extended Timer" && eeDef.Attr_Key_Lett == "ETMR")
{
name = "Kae.DomainModel.Csharp.Framework.ExternalEntities.ETMR.ETMRWrapper";
}
return name;
}
public static string GetExternalEntityImplClassName(CIMClassS_EE eeDef)
{
return $"{eeDef.Attr_Key_Lett}Impl";
}
public static string GetExternalEntityEntryClassName(CIMClassS_EE eeDef)
{
return $"{eeDef.Attr_Key_Lett}ExternalEntityEntry";
}
public static string GetExternalEntityWrapperRefVarName(CIMClassS_EE eeDef)
{
return $"_ee{eeDef.Attr_Key_Lett}Ref_";
}
}
}