示例#1
0
        /// <summary>
        ///     Creates a structure element in the structure provided
        /// </summary>
        /// <param name="enclosing"></param>
        /// <param name="name"></param>
        /// <param name="type"></param>
        /// <returns></returns>
        protected StructureElement CreateStructureElement(Structure enclosing, string name, string type)
        {
            StructureElement retVal = (StructureElement)Factory.createStructureElement();

            enclosing.appendElements(retVal);
            retVal.Name     = name;
            retVal.TypeName = type;

            return(retVal);
        }
        /// <summary>
        ///     Creates a structure element in the structure provided
        /// </summary>
        /// <param name="enclosing"></param>
        /// <param name="name"></param>
        /// <param name="type"></param>
        /// <returns></returns>
        protected StructureElement CreateStructureElement(Structure enclosing, string name, string type)
        {
            StructureElement retVal = (StructureElement) Factory.createStructureElement();

            enclosing.appendElements(retVal);
            retVal.Name = name;
            retVal.TypeName = type;

            return retVal;
        }
        /// <summary>
        /// Appends the corresponding field in the structure, according to its type
        /// </summary>
        /// <param name="obj">The object which represents the field</param>
        /// <param name="structure">The structure which should contain the field</param>
        private void AppendField(object obj, DataDictionary.Types.Structure structure, string defaultValue)
        {
            if (obj is Field)
            {
                Field field = obj as Field;

                DataDictionary.Types.StructureElement element = (DataDictionary.Types.StructureElement)DataDictionary.Generated.acceptor.getFactory().createStructureElement();
                element.Name     = field.name;
                element.TypeName = EFSType(field.type_definition);
                if (element.TypeName == null)
                {
                    element.TypeName = getTypeName(field.type);
                }
                element.setMode(DataDictionary.Generated.acceptor.VariableModeEnumType.aInOut);
                if (field.name.Equals("NID_PACKET"))
                {
                    element.Default = defaultValue;
                }
                else
                {
                    element.Default = DefaultValue(field.type_definition);
                }

                structure.appendElements(element);
            }
            else if (obj is LoopFieldSequence)
            {
                LoopFieldSequence loopFieldSequence = obj as LoopFieldSequence;


                // Create a structure for the elements enclosed in the loop field
                DataDictionary.Types.Structure subStructure = (DataDictionary.Types.Structure)DataDictionary.Generated.acceptor.getFactory().createStructure();
                subStructure.Name      = "SubStructure" + numberOfSubStructures;
                numberOfSubStructures += 1;
                structure.NameSpace.appendStructures(subStructure);

                RenameDuplicates(loopFieldSequence.Items);
                foreach (object obj2 in loopFieldSequence.Items)
                {
                    AppendField(obj2, subStructure, "");
                }

                // Create the collection type for the sequence
                DataDictionary.Types.Collection collection = (DataDictionary.Types.Collection)DataDictionary.Generated.acceptor.getFactory().createCollection();
                collection.Name = "Collection" + numberOfCollections;
                collection.setTypeName(subStructure.Name);
                collection.setDefault("[]");
                structure.NameSpace.appendCollections(collection);

                // Create the field in the strcuture which shall hold the collection
                DataDictionary.Types.StructureElement element = (DataDictionary.Types.StructureElement)DataDictionary.Generated.acceptor.getFactory().createStructureElement();
                element.Name     = "Sequence" + numberOfCollections;
                element.TypeName = collection.Name;
                element.setMode(DataDictionary.Generated.acceptor.VariableModeEnumType.aInOut);
                structure.appendElements(element);
                numberOfCollections += 1;
            }
            else if (obj is ConditionalFieldSequence)
            {
                ConditionalFieldSequence conditionalFieldSequence = obj as ConditionalFieldSequence;

                RenameDuplicates(conditionalFieldSequence.content);
                foreach (object obj2 in conditionalFieldSequence.content)
                {
                    AppendField(obj2, structure, "");
                }
            }
            else if (obj is FieldGroupReference)
            {
                FieldGroupReference fieldGroupReference = obj as FieldGroupReference;

                DataDictionary.Types.StructureElement element = (DataDictionary.Types.StructureElement)DataDictionary.Generated.acceptor.getFactory().createStructureElement();
                element.Name = fieldGroupReference.name;
                if (Utils.Utils.isEmpty(element.Name))
                {
                    string[] names = [email protected]('/');
                    element.Name = names[names.Length - 1];
                }
                element.setMode(DataDictionary.Generated.acceptor.VariableModeEnumType.aInOut);
                element.TypeName = getTypeName(fieldGroupReference.@ref) + ".Message";
                element.Default  = "EMPTY";

                structure.appendElements(element);
            }
            else if (obj is Choice)
            {
                Choice choice = obj as Choice;

                RenameDuplicates(choice.field_group_reference);
                foreach (FieldGroupReference obj2 in choice.field_group_reference)
                {
                    AppendField(obj2, structure, "");
                }
            }
        }