/// <summary>
 /// Creates a new instance.
 /// </summary>
 public HLAObjectModelAttribute()
 {
     baseInfo = new HLAObjectModel();
 }
Example #2
0
        /// <summary> 
        /// Adds a set of descriptors corresponding to the features contained
        /// in the specified federation description document.  Handle
        /// values will be assigned in the order that the described features are
        /// encountered in the document, starting at <code>1</code>.
        /// </summary>
        /// <param name="fdd">the parsed federation description document to interpret
        /// </param>
        public virtual void AddDescriptors(System.Xml.XmlDocument fdd)
        {
            System.Xml.XmlElement documentElement = (System.Xml.XmlElement)fdd.DocumentElement;

            objectModel = new HLAObjectModel(documentElement);

            names.Add(objectModel.Name);

            System.String version = objectModel.Version;
            if (!string.IsNullOrEmpty(version))
            {
                SupportClass.Tokenizer st = new SupportClass.Tokenizer(version, " .");
                majorVersion = System.Int32.Parse(st.NextToken());
                minorVersion = System.Int32.Parse(st.NextToken());
            }

            // First pass creates descriptors, assigns handles

            System.Xml.XmlNodeList nl = documentElement.GetElementsByTagName("basicData");
            for (int i = 0; i < nl.Count; i++)
            {
                System.Xml.XmlElement basicDataElement = (System.Xml.XmlElement)nl.Item(i);
                HLABasicData basicData = new HLABasicData(basicDataElement);
                basicDataMap[basicData.Name] = basicData;
            }

            nl = documentElement.GetElementsByTagName("simpleData");
            for (int i = 0; i < nl.Count; i++)
            {
                System.Xml.XmlElement simpleDataElement = (System.Xml.XmlElement)nl.Item(i);
                HLASimpleData simpleData = new HLASimpleData(simpleDataElement);
                simpleDataMap[simpleData.Name] = simpleData;
            }
            nl = documentElement.GetElementsByTagName("enumeratedData");
            for (int i = 0; i < nl.Count; i++)
            {
                System.Xml.XmlElement enumeratedDataElement = (System.Xml.XmlElement)nl.Item(i);
                HLAEnumeratedData enumeratedData = new HLAEnumeratedData(enumeratedDataElement);
                enumeratedDataMap[enumeratedData.Name] = enumeratedData;
            }
            nl = documentElement.GetElementsByTagName("fixedRecordData");
            for (int i = 0; i < nl.Count; i++)
            {
                System.Xml.XmlElement fixedRecordDataElement = (System.Xml.XmlElement)nl.Item(i);
                HLAFixedRecordData fixedRecordData = new HLAFixedRecordData(fixedRecordDataElement);
                fixedRecordDataMap[fixedRecordData.Name] = fixedRecordData;
            }
            nl = documentElement.GetElementsByTagName("arrayData");
            for (int i = 0; i < nl.Count; i++)
            {
                System.Xml.XmlElement arrayDataElement = (System.Xml.XmlElement)nl.Item(i);
                HLAarrayDataType arrayData = new HLAarrayDataType(arrayDataElement);
                arrayDataMap[arrayData.Name] = arrayData;
            }

            nl = documentElement.GetElementsByTagName(OBJECT_CLASS);

            for (int i = 0; i < nl.Count; i++)
            {
                System.Xml.XmlElement objectClassElement = (System.Xml.XmlElement)nl.Item(i);

                ObjectClassDescriptor ocd = new ObjectClassDescriptor(objectClassElement, new XRTIObjectClassHandle(handleCounter++), new List<ObjectClassDescriptor>());
                System.Xml.XmlNodeList nl2 = objectClassElement.ChildNodes;
                for (int j = 0; j < nl2.Count; j++)
                {
                    if (nl2.Item(j) is System.Xml.XmlElement && nl2.Item(j).Name.Equals(ATTRIBUTE))
                    {
                        System.Xml.XmlElement attributeElement = (System.Xml.XmlElement)nl2.Item(j);

                        AttributeDescriptor ad = new AttributeDescriptor(attributeElement, new XRTIAttributeHandle(handleCounter++), new XRTIDimensionHandleSet(), "HLAreliable".Equals(attributeElement.GetAttribute(TRANSPORTATION)) ? TransportationType.HLA_RELIABLE : TransportationType.HLA_BEST_EFFORT, "Receive".Equals(attributeElement.GetAttribute(ORDER)) ? Hla.Rti1516.OrderType.RECEIVE : OrderType.TIMESTAMP);
                        ocd.AddAttributeDescriptor(ad);

                        // PATCH ANGEL
                        AddAttributeDescriptor(ad);
                    }
                }

                AddObjectClassDescriptor(ocd);
            }

            nl = documentElement.GetElementsByTagName(INTERACTION_CLASS);

            for (int i = 0; i < nl.Count; i++)
            {
                System.Xml.XmlElement interactionClassElement = (System.Xml.XmlElement)nl.Item(i);

                InteractionClassDescriptor icd = new InteractionClassDescriptor(interactionClassElement, new XRTIInteractionClassHandle(handleCounter++), new List<InteractionClassDescriptor>(), new XRTIDimensionHandleSet(), "HLAreliable".Equals(interactionClassElement.GetAttribute(TRANSPORTATION)) ? TransportationType.HLA_RELIABLE : TransportationType.HLA_BEST_EFFORT, "Receive".Equals(interactionClassElement.GetAttribute(ORDER)) ? Sxta.Rti1516.Reflection.HLAorderType.Receive : Sxta.Rti1516.Reflection.HLAorderType.TimeStamp);

                System.Xml.XmlNodeList nl2 = interactionClassElement.ChildNodes;

                for (int j = 0; j < nl2.Count; j++)
                {
                    if (nl2.Item(j) is System.Xml.XmlElement && nl2.Item(j).Name.Equals(PARAMETER))
                    {
                        System.Xml.XmlElement parameterElement = (System.Xml.XmlElement)nl2.Item(j);

                        icd.AddParameterDescriptor(new ParameterDescriptor(parameterElement, new XRTIParameterHandle(handleCounter++)));
                    }
                }

                AddInteractionClassDescriptor(icd);
            }

            nl = documentElement.GetElementsByTagName(DIMENSION);

            for (int i = 0; i < nl.Count; i++)
            {
                System.Xml.XmlElement dimensionElement = (System.Xml.XmlElement)nl.Item(i);

                long upperBound = System.Int64.MaxValue;

                if (dimensionElement.HasAttribute(UPPER_BOUND))
                {
                    try
                    {
                        upperBound = System.Int64.Parse(dimensionElement.GetAttribute(UPPER_BOUND));
                    }
                    catch (System.FormatException)
                    {
                    }
                }
                AddDimensionDescriptor(new DimensionDescriptor(dimensionElement.GetAttribute(NAME), new XRTIDimensionHandle(handleCounter++), upperBound));
            }

            // Second pass resolves parents, dimensions

            nl = documentElement.GetElementsByTagName(OBJECT_CLASS);

            for (int i = 0; i < nl.Count; i++)
            {
                System.Xml.XmlElement objectClassElement = (System.Xml.XmlElement)nl.Item(i);

                ObjectClassDescriptor ocd = GetObjectClassDescriptor(objectClassElement.GetAttribute(NAME));

                if (objectClassElement.ParentNode.Name.Equals(OBJECT_CLASS))
                {
                    ocd.AddParentDescriptor(GetObjectClassDescriptor(((System.Xml.XmlElement)objectClassElement.ParentNode).GetAttribute(NAME)));
                }

                if (objectClassElement.HasAttribute(PARENTS))
                {
                    SupportClass.Tokenizer st = new SupportClass.Tokenizer(objectClassElement.GetAttribute(PARENTS));

                    // PATCH ANGEL while (st.HasMoreTokens())
                    //{
                    ocd.ParentDescriptors.Add(GetObjectClassDescriptor(st.NextToken()));
                    //}
                }

                System.Xml.XmlNodeList nl2 = objectClassElement.ChildNodes;
                for (int j = 0; j < nl2.Count; j++)
                {
                    if (nl2.Item(j) is System.Xml.XmlElement && nl2.Item(j).Name.Equals(ATTRIBUTE))
                    {
                        System.Xml.XmlElement attributeElement = (System.Xml.XmlElement)nl2.Item(j);

                        if (attributeElement.HasAttribute(DIMENSIONS))
                        {
                            AttributeDescriptor ad = ocd.GetAttributeDescriptor(attributeElement.GetAttribute(NAME));

                            SupportClass.Tokenizer st = new SupportClass.Tokenizer(attributeElement.GetAttribute(DIMENSIONS));

                            // PATCH ANGEL while (st.HasMoreTokens())
                            //{
                            System.String dimension = st.NextToken();

                            if (!dimension.Equals("NA"))
                            {
                                ad.Dimensions.Add(GetDimensionDescriptor(dimension).Handle);
                            }
                            //}
                        }
                    }
                }
            }

            nl = documentElement.GetElementsByTagName(INTERACTION_CLASS);

            for (int i = 0; i < nl.Count; i++)
            {
                System.Xml.XmlElement interactionClassElement = (System.Xml.XmlElement)nl.Item(i);

                InteractionClassDescriptor icd = GetInteractionClassDescriptor(interactionClassElement.GetAttribute(NAME));

                if (interactionClassElement.HasAttribute(DIMENSIONS))
                {
                    SupportClass.Tokenizer st = new SupportClass.Tokenizer(interactionClassElement.GetAttribute(DIMENSIONS));

                    // PATCH ANGEL while (st.HasMoreTokens())
                    //{
                    System.String dimension = st.NextToken();

                    if (!dimension.Equals("NA"))
                    {
                        icd.Dimensions.Add(GetDimensionDescriptor(dimension).Handle);
                    }
                    //}
                }

                if (interactionClassElement.ParentNode.Name.Equals(INTERACTION_CLASS))
                {
                    icd.AddParentDescriptor(GetInteractionClassDescriptor(((System.Xml.XmlElement)interactionClassElement.ParentNode).GetAttribute(NAME)));
                }

                if (interactionClassElement.HasAttribute(PARENTS))
                {
                    SupportClass.Tokenizer st = new SupportClass.Tokenizer(interactionClassElement.GetAttribute(PARENTS));

                    // PATCH ANGEL while (st.HasMoreTokens())
                    //{
                    icd.AddParentDescriptor(GetInteractionClassDescriptor(st.NextToken()));
                    //}
                }
            }

            //PATCH ANGEL CheckAopFdd();
        }
Example #3
0
        /// <summary> 
        /// Generates a <code>HLAObjectModelAttribute</code>.
        /// </summary>
        private void GenerateHLAObjectModelAttribute(System.IO.StreamWriter ps, int indentLevel,  HLAObjectModel objectModelInfo)
        {
            string indentStr = GenerateIndentString(indentLevel);
            string newLine = "," + Environment.NewLine + indentStr + Spacer("assembly: [HLAObjectModelAttribute(");
            ps.Write(indentStr + "[assembly: HLAObjectModelAttribute(Name = \"" + objectModelInfo.Name + "\"");
            if (!String.IsNullOrEmpty(objectModelInfo.NameNotes))
            {
                ps.Write(newLine);
                ps.Write("NameNotes = \"" + objectModelInfo.NameNotes + "\"");
            }
            if (!String.IsNullOrEmpty(objectModelInfo.DTDversion))
            {
                ps.Write(newLine);
                ps.Write("DTDversion = \"" + objectModelInfo.DTDversion + "\"");
            }
            ps.Write(newLine);
            ps.Write("ObjectModelType = " +objectModelInfo.ObjectModelType.GetType() + "." + objectModelInfo.ObjectModelType);

            if (!String.IsNullOrEmpty(objectModelInfo.TypeNotes))
            {
                ps.Write(newLine);
                ps.Write("TypeNotes = \"" + objectModelInfo.TypeNotes + "\"");
            }
            if (!String.IsNullOrEmpty(objectModelInfo.Version))
            {
                ps.Write(newLine);
                ps.Write("Version = \"" + objectModelInfo.Version + "\"");
            }
            if (!String.IsNullOrEmpty(objectModelInfo.VersionNotes))
            {
                ps.Write(newLine);
                ps.Write("VersionNotes = \"" + objectModelInfo.VersionNotes + "\"");
            }
            if (!String.IsNullOrEmpty(objectModelInfo.Date))
            {
                ps.Write(newLine);
                ps.Write("Date = \"" + objectModelInfo.Date + "\"");
            }
            if (!String.IsNullOrEmpty(objectModelInfo.DateNotes))
            {
                ps.Write(newLine);
                ps.Write("DateNotes = \"" + objectModelInfo.DateNotes + "\"");
            }
            if (!String.IsNullOrEmpty(objectModelInfo.Purpose))
            {
                ps.Write(newLine);
                ps.Write("Purpose = \"" + objectModelInfo.Purpose + "\"");
            }
            if (!String.IsNullOrEmpty(objectModelInfo.PurposeNotes))
            {
                ps.Write(newLine);
                ps.Write("PurposeNotes = \"" + objectModelInfo.PurposeNotes + "\"");
            }
            if (!String.IsNullOrEmpty(objectModelInfo.AppDomain))
            {
                ps.Write(newLine);
                ps.Write("AppDomain = \"" + objectModelInfo.AppDomain + "\"");
            }
            if (!String.IsNullOrEmpty(objectModelInfo.AppDomainNotes))
            {
                ps.Write(newLine);
                ps.Write("AppDomainNotes = \"" + objectModelInfo.AppDomainNotes + "\"");
            }
            if (!String.IsNullOrEmpty(objectModelInfo.Sponsor))
            {
                ps.Write(newLine);
                ps.Write("Sponsor = \"" + objectModelInfo.Sponsor + "\"");
            }
            if (!String.IsNullOrEmpty(objectModelInfo.SponsorNotes))
            {
                ps.Write(newLine);
                ps.Write("SponsorNotes = \"" + objectModelInfo.SponsorNotes + "\"");
            }

            if (!String.IsNullOrEmpty(objectModelInfo.PocName))
            {
                ps.Write(newLine);
                ps.Write("PocName = \"" + objectModelInfo.PocName + "\"");
            }
            if (!String.IsNullOrEmpty(objectModelInfo.PocNameNotes))
            {
                ps.Write(newLine);
                ps.Write("PocNameNotes = \"" + objectModelInfo.PocNameNotes + "\"");
            }
            if (!String.IsNullOrEmpty(objectModelInfo.PocOrg))
            {
                ps.Write(newLine);
                ps.Write("PocOrg = \"" + objectModelInfo.PocOrg + "\"");
            }
            if (!String.IsNullOrEmpty(objectModelInfo.PocOrgNotes))
            {
                ps.Write(newLine);
                ps.Write("PocOrgNotes = \"" + objectModelInfo.PocOrgNotes + "\"");
            }
            if (!String.IsNullOrEmpty(objectModelInfo.PocPhone))
            {
                ps.Write(newLine);
                ps.Write("PocPhone = \"" + objectModelInfo.PocPhone + "\"");
            }
            if (!String.IsNullOrEmpty(objectModelInfo.PocPhoneNotes))
            {
                ps.Write(newLine);
                ps.Write("PocPhoneNotes = \"" + objectModelInfo.PocPhoneNotes + "\"");
            }
            if (!String.IsNullOrEmpty(objectModelInfo.PocEmail))
            {
                ps.Write(newLine);
                ps.Write("PocEmail = \"" + objectModelInfo.PocEmail + "\"");
            }
            if (!String.IsNullOrEmpty(objectModelInfo.PocEmailNotes))
            {
                ps.Write(newLine);
                ps.Write("PocEmailNotes = \"" + objectModelInfo.PocEmailNotes + "\"");
            }
            if (!String.IsNullOrEmpty(objectModelInfo.References))
            {
                ps.Write(newLine);
                ps.Write("References = \"" + objectModelInfo.References + "\"");
            }
            if (!String.IsNullOrEmpty(objectModelInfo.ReferencesNotes))
            {
                ps.Write(newLine);
                ps.Write("ReferencesNotes = \"" + objectModelInfo.ReferencesNotes + "\"");
            }
            if (!String.IsNullOrEmpty(objectModelInfo.Other))
            {
                ps.Write(newLine);
                ps.Write("Other = \"" + objectModelInfo.Other + "\"");
            }
            if (!String.IsNullOrEmpty(objectModelInfo.OtherNotes))
            {
                ps.Write(newLine);
                ps.Write("OtherNotes = \"" + objectModelInfo.OtherNotes + "\"");
            }
            ps.WriteLine(")]");
        }
 /// <summary>
 /// Creates a new instance.
 /// </summary>
 public HLAObjectModelAttribute()
 {
     baseInfo = new HLAObjectModel();
 }