예제 #1
0
        /// <summary>
        /// Varre o documento wsdl e monta os data types especificados no mesmo
        /// </summary>
        /// <param name="xmlDoc">o documento wsdl</param>
        /// <param name="xmlns">XmlNamespaceManager</param>
        /// <returns>a lista de data types</returns>
        private void MountComplexType(XmlSchemaComplexType complexType)           //XmlDocument xmlDoc, XmlNamespaceManager xmlns)
        {
            string      typeName   = "";
            ArrayList   parameters = new ArrayList();
            bool        isArray    = false;
            HWSListType listType   = null;
            DataType    dataType   = null;

            typeName = complexType.Name;

////			tipos ainda nao suportados
            if (complexType.Particle == null ||
                !typeof(XmlSchemaGroupBase).IsAssignableFrom(complexType.Particle.GetType()))
            {
                try {
                    XmlSchemaComplexContentRestriction restriction = complexType.ContentModel.Content as XmlSchemaComplexContentRestriction;
                    XmlSchemaAttribute att = (XmlSchemaAttribute)restriction.Attributes[0];
                    if (att.RefName.Name == "arrayType")
                    {
                        XmlSchemaAnnotated annotatedSchema = (XmlSchemaAnnotated)att;
                        Parameter          param           = new Parameter();
                        param.Name = MakeArrayElementName(att.UnhandledAttributes[0].Value);
                        try {
                            param.HWSType = ConvertType(param.Name);
                        }
                        catch {
                            param.HWSType = new HWSPreType(param.Name);
                        }
                        parameters.Add(param);
                        listType = new HWSListType(typeName, (Parameter)parameters[0]);
                        ListTypes.Add(listType);
                    }
                } catch (Exception ex) {
                    throw new TypeNotSupportedException(typeName);
                }
            }
            else
            {
                XmlSchemaGroupBase atts = (XmlSchemaGroupBase)complexType.Particle;

                foreach (XmlSchemaElement att in atts.Items)
                {
                    Parameter param = new Parameter();
                    param.Name = att.Name;

                    try {
                        param.HWSType = ConvertType(att.SchemaTypeName.Name);
                    }
                    catch {
                        param.HWSType = new HWSPreType(att.SchemaTypeName.Name);
                    }

                    if (att.MaxOccursString != null &&
                        att.MaxOccursString.Equals("unbounded"))
                    {
                        isArray = true;
                    }
                    parameters.Add(param);
                }

                if (isArray)
                {
                    listType = new HWSListType(typeName, (Parameter)parameters[0]);
                    ListTypes.Add(listType);
                }
                else
                {
                    dataType = new DataType(typeName, parameters);
                    DataTypes.Add(dataType);
                }
            }
        }
        public PersonListOption(XmlElement el)
            : base(el)
        {
            if (el.GetAttribute("mode").ToLower().Equals("and"))
            {
                _mode |= Modes.AND;
            }
            else if (el.GetAttribute("mode").ToLower().Equals("or"))
            {
                _mode |= Modes.OR;
            }

            if (el.GetAttribute("PersonOrganization") != "")
            {
                _mode |= Modes.PersonOrganization;
            }
            if (el.GetAttribute("PersonPhysical") != "")
            {
                _mode |= Modes.PersonPhysical;
            }
            if (el.GetAttribute("PersonBank") != "")
            {
                _mode |= Modes.PersonBank;
            }

            if (el.GetAttribute("PersonCheck") != "")
            {
                _mode |= Modes.PersonCheck;
            }
            if (el.GetAttribute("PersonUncheck") != "")
            {
                _mode |= Modes.PersonUncheck;
            }

            //страна регистрации
            if (el.GetAttribute("PersonArea") != "")
            {
                _mode   |= Modes.PersonArea;
                iDArea   = Convert.ToInt32(el.GetAttribute("PersonArea"));
                nameArea = Convert.ToString(el.GetAttribute("PersonAreaName"));
            }

            //ќграничени¤ по типам лиц
            if (el.GetAttribute("PersonThemes") != "")
            {
                _mode |= Modes.PersonThemes;
                if (el.GetAttribute("PersonThemes") != "-1")
                {
                    string   strTypes = el.GetAttribute("PersonThemes");
                    string[] types    = strTypes.Split(';');
                    for (int n = 0; n < types.Length; n += 2)
                    {
                        ListTypes.Add(types[n], types[n + 1]);
                    }
                    if (el.GetAttribute("PersonSubThemes") != "")
                    {
                        _mode |= Modes.PersonSubThemes;
                    }
                }
            }

            //ќтветственные сотрудники
            if (el.GetAttribute("PersonUsers") != "")
            {
                _mode |= Modes.PersonUsers;
                string   strUsers = el.GetAttribute("PersonUsers");
                string[] users    = strUsers.Split(';');
                for (int n = 0; n < users.Length; n += 2)
                {
                    ListUsers.Add(users[n], users[n + 1]);
                }
            }

            //организационно правова¤ форма
            if (el.GetAttribute("PersonOPForma") != "")
            {
                _mode     |= Modes.PersonOPForma;
                iDOPForm   = Convert.ToInt32(el.GetAttribute("PersonOPForma"));
                nameOPForm = Convert.ToString(el.GetAttribute("PersonOPFormaName"));
            }
            //бизнес проекты

            if (el.GetAttribute("PersonAnyBusinessProject") != "")
            {
                _mode |= Modes.PersonAnyBusinessProject;
            }
            else if (el.GetAttribute("PersonBusinessProject") != "")
            {
                _mode              |= Modes.PersonBusinessProject;
                iDBusinessProject   = Convert.ToInt32(el.GetAttribute("PersonBusinessProject"));
                nameBusinessProject = Convert.ToString(el.GetAttribute("PersonBusinessProjectName"));
                if (el.GetAttribute("PersonSubBusinessProject") != "")
                {
                    _mode |= Modes.PersonSubBusinessProject;
                }
            }
            else if (el.GetAttribute("PersonNullBusinessProject") != "")
            {
                _mode |= Modes.PersonNullBusinessProject;
            }
        }