/// <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);
            }
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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);
        }
Exemple #5
0
        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;
        }
Exemple #6
0
        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);
            }
        }
Exemple #8
0
        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);
            }
        }