/// <summary> /// Iterates through the process model and creates the parsed solidity structure /// BFS algorithm is used to go through the model. /// !!! This approach is not very efficient and may create further issues if expanded upon. /// I have chosen it for simplicity, better solution would probably be recreating the given process model /// into a graph with references as links between each element. That would allow more flexibility for the converter /// objects, which is quite limited in the current implementation. /// </summary> /// <param name="process">The BPMN process model</param> void IterateProcess() { var flagged = new HashSet <string>(); var toVisit = new Queue <ProcessElement>(); //Find the startEvent var startEvent = FindStartEvent(); toVisit.Enqueue(startEvent); flagged.Add(startEvent.Id); //BFS - go through every element while (toVisit.Count > 0) { var current = toVisit.Dequeue(); var nextElements = new List <ElementConverter>(); //Iterate through all outgoing sequence flow ids of this element foreach (var outSequenceFlowId in current.Outgoing) { //Convert the sequence flow id to its target element var nextElement = GetSequenceFlowTarget(outSequenceFlowId); nextElements.Add(ConverterFactory.CreateConverter(nextElement)); //Add to queue if not visited yet and flag it if (!flagged.Contains(nextElement.Id)) { toVisit.Enqueue(nextElement); flagged.Add(nextElement.Id); } } //Create converter for the current element and use it to generate code elements var elementConverter = ConverterFactory.CreateConverter(current); var elementCode = elementConverter.GetElementCode(nextElements, SeqFlowIdToObject(current.Outgoing), dataModel); solidityContract.AddComponents(elementCode); } }
private static List <T> GetDataFileConverted <T>(SaveGameFile savegame, DataFileType type) { var fileFacts = DataFileFacts.GetDataFileFacts().First(x => x.Type == type); var bytes = DataFileLoaders.GetDataFileBytes(savegame, fileFacts.Type, fileFacts.DataSize); var converter = ConverterFactory.CreateConverter <T>(); var collect = ConvertToCMObject <T>(bytes, converter).ToList(); return(collect); }
public HeaderedFileContentMapper(string?membername, Type targetType, SimpleConverter <string>?converter) : base(membername, targetType) { _converter = converter; if (_converter == null && TargetMember != null) { _converter = ConverterFactory.CreateConverter(TargetMember, MemberType); } }
public XmlMapper(string?membername, Type targetType, SimpleConverter <string>?converter, XmlElementTarget target) : base(membername, targetType) { if (converter == null && TargetMember != null) { converter = ConverterFactory.CreateConverter(TargetMember, MemberType); } _serializer = new XmlElementSerializer(target, converter); }
public HeaderedFileKeyMapper(string?membername, Type targetType, SimpleConverter <string>?converter, string keyName) : base(membername, targetType) { if (converter == null && TargetMember != null) { converter = ConverterFactory.CreateConverter(TargetMember, MemberType); } _converter = converter; _keyName = keyName; }
public TemplateInitializer(string tableName, string connectionName) { this.TableName = tableName; var connectorFactory = new ConverterFactory(connectionName); this.Converter = connectorFactory.CreateConverter(); this.ProceduresName = new List <string> { "PR_UPDATE", "PR_GET", "PR_INSERT", "PR_GET_ALL", "PR_DELETE" }; }
public SingleIniMapper(string?membername, Type targetType, SimpleConverter <string>?converter, string section, string?key) : base(membername, targetType) { _converter = converter; _section = GetSectionForIni(targetType, section); _key = GetKeyForIni(TargetMember, key); if (_converter == null && MemberType != null) { _converter = ConverterFactory.CreateConverter(TargetMember, MemberType); } }
public XmlListMapper(string?membername, Type targetType, XmlElementTarget rootTarget, XmlElementTarget target, SimpleConverter <string>?converter) : base(membername, targetType) { _rootTarget = rootTarget; if (MemberType != null) { _listBuilder = new ListBuilder(MemberType); } if (converter == null && _listBuilder != null) { converter = ConverterFactory.CreateConverter(TargetMember, _listBuilder.ElemenType); } _serializer = new XmlElementSerializer(target, converter); }
public HeaderedFileListKeyMapper(string?membername, Type targetType, string?keyName, SimpleConverter <string>?converter) : base(membername, targetType) { _keyName = keyName; _converter = converter; if (TargetMember == null) { return; } _listBuilder = new ListBuilder(MemberType); var elementType = _listBuilder.ElemenType; if (_converter == null && elementType != null) { _converter = ConverterFactory.CreateConverter(TargetMember, elementType); } }