Exemple #1
0
        private void ClassBuilderToWizard(ClassBuilder builder)
        {
            mWizardInfo.ClassBuilder = builder;

            Application.DoEvents();

            WizardToControls();

            Application.DoEvents();

            if (mWizardInfo.ClassBuilder is FixedLengthClassBuilder)
            {
                radFixed.Checked = true;
                mControlType = typeof(FieldFixedControl);
                mFieldType = typeof(FixedFieldBuilder);

                txtFieldLength.Enabled = true;

            }
            else
            {
                txtFieldLength.Enabled = false;

                radDelimited.Checked = true;

                mControlType = typeof(FieldDelimitedControl);
                mFieldType = typeof(DelimitedFieldBuilder);

                txtDelimiter.Text = "";
                string delimiter = mWizardInfo.DelimitedBuilder.Delimiter;

                if (delimiter == "|")
                    radDelVertBar.Checked = true;
                else if (delimiter  == ",")
                    radDelComma.Checked = true;
                else if (delimiter == ";")
                    radDelSemiCol.Checked = true;
                else if (delimiter == "\t")
                    radDelTabs.Checked = true;
                else
                {
                    radDelCustom.Checked = true;
                    txtDelimiter.Text = delimiter;
                }
            }

            panFields.SuspendLayout();
            panFields.Controls.Clear();

            foreach (FieldBuilder info in mWizardInfo.ClassBuilder.Fields)
            {
                panFields.Controls.Add(CreateFieldControlFromInfo(info));
            }

            panFields.ResumeLayout();

            panFields.Focus();

            mLoadingFile = false;

            ReLoadPreview();
        }
 /// <summary>
 /// Create a fixed length field of name, length and type
 /// </summary>
 /// <param name="fieldName">Name of the field</param>
 /// <param name="length">Length of field on file</param>
 /// <param name="fieldType">Type of the field</param>
 internal FixedFieldBuilder(string fieldName, int length, Type fieldType)
     : this(fieldName, length, ClassBuilder.TypeToString(fieldType))
 {
 }
        /// <summary>
        /// Add the general attributes to the field
        /// </summary>
        /// <param name="attbs">Attributes added here</param>
        /// <param name="lang">Language  C# or Visual Basic</param>
        private void AddAttributesInternal(AttributesBuilder attbs, NetLanguage lang)
        {
            if (mFieldOptional)
            {
                attbs.AddAttribute("FieldOptional()");
            }

            if (mFieldHidden)
            {
                attbs.AddAttribute("FieldHidden()");
            }

            if (mFieldValueDiscarded)
            {
                attbs.AddAttribute("FieldValueDiscarded()");
            }

            if (mFieldInNewLine)
            {
                attbs.AddAttribute("FieldInNewLine()");
            }

            if (mFieldNotEmpty)
            {
                attbs.AddAttribute("FieldNotEmpty()");
            }

            if (mFieldNotIncluded)
            {
                attbs.AddAttribute("FieldNotIncluded()");
            }

            if (mFieldNullValue != null)
            {
                if (mFieldNullValue is string)
                {
                    attbs.AddAttribute("FieldNullValue(\"" + mFieldNullValue.ToString() + "\")");
                }
                else
                {
                    string t  = ClassBuilder.TypeToString(mFieldNullValue.GetType());
                    string gt = string.Empty;
                    if (lang == NetLanguage.CSharp)
                    {
                        gt = "typeof(" + t + ")";
                    }
                    else if (lang == NetLanguage.VbNet)
                    {
                        gt = "GetType(" + t + ")";
                    }

                    attbs.AddAttribute("FieldNullValue(" + gt + ", \"" + mFieldNullValue.ToString() + "\")");
                }
            }


            attbs.AddAttribute(mConverter.GetConverterCode(lang));

            if (mTrimMode != TrimMode.None)
            {
                if (" \t" == mTrimChars)
                {
                    attbs.AddAttribute("FieldTrim(TrimMode." + mTrimMode.ToString() + ")");
                }
                else
                {
                    attbs.AddAttribute("FieldTrim(TrimMode." + mTrimMode.ToString() + ", \"" + mTrimChars.ToString() +
                                       "\")");
                }
            }
        }
        /// <summary>
        /// Create the field with attributes so that it can be added to the class
        /// </summary>
        /// <param name="lang">Language C# of Visual Basic</param>
        /// <returns>Field as text</returns>
        internal string GetFieldCode(NetLanguage lang)
        {
            var sb = new StringBuilder(100);

            var attbs = new AttributesBuilder(lang);

            AddAttributesInternal(attbs, lang);
            AddAttributesCode(attbs, lang);

            sb.Append(attbs.GetAttributesCode());

            NetVisibility visi        = mVisibility;
            string        currentName = mFieldName;

            if (mClassBuilder.GenerateProperties)
            {
                visi        = NetVisibility.Private;
                currentName = "m" + mFieldName;
            }

            switch (lang)
            {
            case NetLanguage.VbNet:
                sb.Append(ClassBuilder.GetVisibility(lang, visi) + currentName + " As " + mFieldType);
                break;

            case NetLanguage.CSharp:
                sb.Append(ClassBuilder.GetVisibility(lang, visi) + mFieldType + " " + currentName + ";");
                break;

            default:
                break;
            }

            sb.Append(StringHelper.NewLine);

            if (mClassBuilder.GenerateProperties)
            {
                sb.Append(StringHelper.NewLine);

                switch (lang)
                {
                case NetLanguage.VbNet:
                    sb.Append("Public Property " + mFieldName + " As " + mFieldType);
                    sb.Append(StringHelper.NewLine);
                    sb.Append("   Get");
                    sb.Append(StringHelper.NewLine);
                    sb.Append("      Return m" + mFieldName);
                    sb.Append(StringHelper.NewLine);
                    sb.Append("   End Get");
                    sb.Append(StringHelper.NewLine);
                    sb.Append("   Set (value As " + mFieldType + ")");
                    sb.Append(StringHelper.NewLine);
                    sb.Append("      m" + mFieldName + " = value");
                    sb.Append(StringHelper.NewLine);
                    sb.Append("   End Set");
                    sb.Append(StringHelper.NewLine);
                    sb.Append("End Property");
                    break;

                case NetLanguage.CSharp:
                    sb.Append("public " + mFieldType + " " + mFieldName);
                    sb.Append(StringHelper.NewLine);
                    sb.Append("{");
                    sb.Append(StringHelper.NewLine);
                    sb.Append("   get { return m" + mFieldName + "; }");
                    sb.Append(StringHelper.NewLine);
                    sb.Append("   set { m" + mFieldName + " = value; }");
                    sb.Append(StringHelper.NewLine);
                    sb.Append("}");
                    break;

                default:
                    break;
                }

                sb.Append(StringHelper.NewLine);
                sb.Append(StringHelper.NewLine);
            }

            return(sb.ToString());
        }
Exemple #5
0
        /// <summary>
        /// Loads the XML representation of a ClassBuilder inheritor and return
        /// it. (for XML saved with SaveToXml method)
        /// </summary>
        /// <remarks>
        /// ClassBuilder inheritors: <see cref="DelimitedClassBuilder"/> or <see cref="FixedLengthClassBuilder"/>
        /// </remarks>
        /// <param name="document">The XML document with the representation of the record class.</param>
        /// <returns>A new instance of a ClassBuilder inheritor: <see cref="DelimitedClassBuilder"/> or <see cref="FixedLengthClassBuilder"/> </returns>
        public static ClassBuilder LoadFromXml(XmlDocument document)
        {
            ClassBuilder res = null;

            string classtype = document.DocumentElement.LocalName;

            if (classtype == "DelimitedClass")
            {
                res = DelimitedClassBuilder.LoadXmlInternal(document);
            }
            else
            {
                res = FixedLengthClassBuilder.LoadXmlInternal(document);
            }

            XmlNode node = document.DocumentElement["IgnoreLastLines"];

            if (node != null)
            {
                res.IgnoreLastLines = int.Parse(node.InnerText);
            }

            node = document.DocumentElement["IgnoreFirstLines"];
            if (node != null)
            {
                res.IgnoreFirstLines = int.Parse(node.InnerText);
            }

            node = document.DocumentElement["IgnoreEmptyLines"];
            if (node != null)
            {
                res.IgnoreEmptyLines = true;
            }

            node = document.DocumentElement["CommentMarker"];
            if (node != null)
            {
                res.IgnoreCommentedLines.CommentMarker = node.InnerText;
            }

            node = document.DocumentElement["CommentInAnyPlace"];
            if (node != null)
            {
                res.IgnoreCommentedLines.InAnyPlace = bool.Parse(node.InnerText.ToLower());
            }

            node            = document.DocumentElement["SealedClass"];
            res.SealedClass = node != null;

            node = document.DocumentElement["Namespace"];
            if (node != null)
            {
                res.Namespace = node.InnerText;
            }

            node = document.DocumentElement["Visibility"];
            if (node != null)
            {
                res.Visibility = (NetVisibility)Enum.Parse(typeof(NetVisibility), node.InnerText);
            }

            node = document.DocumentElement["RecordCondition"];
            if (node != null)
            {
                res.RecordCondition.Condition = (RecordCondition)Enum.Parse(typeof(RecordCondition), node.InnerText);
            }

            node = document.DocumentElement["RecordConditionSelector"];
            if (node != null)
            {
                res.RecordCondition.Selector = node.InnerText;
            }

            node = document.DocumentElement["CommentText"];
            if (node != null)
            {
                res.CommentText = node.InnerText;
            }

            res.ReadClassElements(document);

            node = document.DocumentElement["Fields"];
            XmlNodeList nodes;

            if (classtype == "DelimitedClass")
            {
                nodes = node.SelectNodes("/DelimitedClass/Fields/Field");
            }
            else
            {
                nodes = node.SelectNodes("/FixedLengthClass/Fields/Field");
            }

            foreach (XmlNode n in nodes)
            {
                res.ReadField(n);
            }

            return(res);
        }
Exemple #6
0
        /// <summary>
        /// Create a class from a XML file generated with the Wizard or
        /// saved using the SaveToXml Method.
        /// </summary>
        /// <param name="filename">The filename with the XML definition.</param>
        /// <returns>The compiled class.</returns>
        public static Type ClassFromXmlFile(string filename)
        {
            ClassBuilder cb = LoadFromXml(filename);

            return(cb.CreateRecordClass());
        }