Example #1
0
        private System.String version;           // The HAPI version

        /// <summary>This constructor will create a new ConformanceSegmentBuilder</summary>
        /// <param name="packageName">the name of the package
        /// </param>
        /// <param name="versionString">the version of HL7 which these classes are conforming to
        /// </param>
        /// <param name="depManager">the instance of DeploymentManager
        /// </param>
        public ConformanceSegGroupBuilder(System.String packageName, System.String version, DeploymentManager depManager, System.String structID) : base()
        {
            this.packageName = packageName;
            this.version     = version;
            this.docBuilder  = DocumentationBuilder.getDocumentationBuilder();
            this.depManager  = depManager;
            this.structID    = structID;
        }
        /// <summary>Returns the singleton instance of the DocumentationBuilder</summary>
        /// <returns> the singleton instance of the DocumentationBuilder
        /// </returns>
        public static DocumentationBuilder getDocumentationBuilder()
        {
            if (documentationBuilder == null)
            {
                documentationBuilder = new DocumentationBuilder();
            }

            return(documentationBuilder);
        }
Example #3
0
        private System.String packageName;         // Represents the Package that this Segment will go in

        /// <summary>This constructor will create a new ConformancePrimitiveBuilder</summary>
        public ConformancePrimitiveBuilder(System.String packageName, DeploymentManager depManager) : base()
        {
            this.packageName = packageName;
            this.docBuilder  = DocumentationBuilder.getDocumentationBuilder();
            this.depManager  = depManager;
        }
        /// <summary>This method builds a Conformance Message Class</summary>
        /// <param name="runtimeProfile">the profile which to genrate Conformance Classes for
        /// </param>
        /// <param name="depManager">the DeploymentManager
        /// </param>
        public virtual void  buildClass(RuntimeProfile runtimeProfile, DeploymentManager depManager)
        {
            this.depManager     = depManager;
            this.runtimeProfile = runtimeProfile;
            this.msg            = runtimeProfile.Message;
            this.confMsg        = new GeneratedConformanceMessage();

            ProfileName profileName = new ProfileName(msg.MsgStructID, ProfileName.PS_MSG);

            String version = Regex.Replace(runtimeProfile.getHL7Version(), "\\.", "");

            System.String underlyingDataType = "Genetibase.NuGenHL7.model." + version + ".message." + msg.MsgStructID;

            ConformanceSegmentBuilder  confSegBuilder      = new ConformanceSegmentBuilder(packageName, version, depManager);
            ConformanceSegGroupBuilder confSegGroupBuilder = new ConformanceSegGroupBuilder(packageName, version, depManager, msg.MsgStructID);
            DocumentationBuilder       docBuilder          = DocumentationBuilder.getDocumentationBuilder();

            // Add class package and imports
            confMsg.ClassPackage = packageName;
            confMsg.addClassImport("Genetibase.NuGenHL7.conf.classes.abs.*");
            confMsg.addClassImport("Genetibase.NuGenHL7.conf.classes.exceptions.*");

            // Set class properties
            confMsg.Name       = profileName.ClassName;
            confMsg.Properties = "extends AbstractConformanceContainer";

            // Decorate the class with comments
            docBuilder.decorateConformanceMessage(confMsg, runtimeProfile);
            docBuilder.decorateConstructor(confMsg.Constructor, msg.MsgType);

            // add hapi message
            confMsg.addHAPIMessage(underlyingDataType);

            for (int i = 1; i <= msg.Children; i++)
            {
                //don't build not supported, backward, or unknown types
                System.String usage = msg.getChild(i).Usage;
                if (usage.Equals("X") || usage.Equals("B") || usage.Equals("U"))
                {
                    continue;
                }

                if (msg.getChild(i) is Seg)
                {
                    ProfileName childProfileName = profileName.newInstance(msg.getChild(i).Name, ProfileName.PS_SEG);

                    // Add the member variable vector to hold them
                    confMsg.addMemberVariable("private FiniteList " + childProfileName.MemberName + ";");
                    confMsg.Constructor.addToBody(childProfileName.MemberName + " = new FiniteList( " + childProfileName.ClassName + ".class, hapiMessage );");

                    UnderlyingAccessor childAccessor = new UnderlyingAccessor(underlyingDataType, childProfileName.AccessorName);
                    GeneratedRepGetter repGetter     = new GeneratedRepGetter(childProfileName, childAccessor.AcceptsRep);

                    docBuilder.decorateRepGetter(repGetter, (Seg)msg.getChild(i), childProfileName.AccessorName);

                    confMsg.addMethod(repGetter);
                    if (depManager.Verbose)
                    {
                        System.Console.Out.WriteLine("Generating Segment: " + packageName + "." + confMsg.Name);
                    }

                    confSegBuilder.buildClass((Seg)msg.getChild(i), underlyingDataType, childProfileName.clearNameMap());
                }
                else if (msg.getChild(i) is SegGroup)
                {
                    ProfileName childProfileName = profileName.newInstance(msg.getChild(i).Name, ProfileName.PS_SEGG);

                    // Add the member variable vector to hold them
                    confMsg.addMemberVariable("private FiniteList " + childProfileName.MemberName + ";");
                    confMsg.Constructor.addToBody(childProfileName.MemberName + " = new FiniteList( " + childProfileName.ClassName + ".class, hapiMessage );");

                    System.String      underlyingAccessorName = "get" + msg.MsgStructID + "_" + ConformanceSegGroupBuilder.generateSegGroupName((SegGroup)msg.getChild(i));
                    UnderlyingAccessor childAccessor          = new UnderlyingAccessor(underlyingDataType, underlyingAccessorName);
                    GeneratedRepGetter repGetter = new GeneratedRepGetter(childProfileName, childAccessor.AcceptsRep);

                    docBuilder.decorateRepGetter(repGetter, (SegGroup)msg.getChild(i), childProfileName.OriginalName);
                    confMsg.addMethod(repGetter);
                    if (depManager.Verbose)
                    {
                        System.Console.Out.WriteLine("Generating SegGroup: " + packageName + "." + confMsg.Name);
                    }

                    confSegGroupBuilder.buildClass((SegGroup)msg.getChild(i), underlyingDataType, childProfileName.clearNameMap());
                }
            }

            depManager.generateFile(confMsg, packageName, profileName.ClassName);
        }