void IXBRLContenedorInstanciasObjetos.InsertarObjeto(IConcepto objeto)
        {
            string tipo = objeto.GetType().Name;

            IXBRLContenedorInstanciasObjetos p = this;

            ICollection<object> col = p.ObtenerInstanciaObjetosPorConcepto(tipo);

            col.Add(objeto);

            if (_map.Contains(tipo))
            {
                _map[tipo] = col;
            }
            else
            {
                _map.Add(tipo, col);
            }
        }
        void IXBRLContenedorInstanciasObjetos.InsertarObjeto(IConcepto objeto)
        {
            string tipo = objeto.GetType().Name;

            IXBRLContenedorInstanciasObjetos p = this;

            ICollection <object> col = p.ObtenerInstanciaObjetosPorConcepto(tipo);

            col.Add(objeto);

            if (_map.Contains(tipo))
            {
                _map[tipo] = col;
            }
            else
            {
                _map.Add(tipo, col);
            }
        }
Exemplo n.º 3
0
        private void procesarTuple(XmlElement elemento)
        {
            string[] partes      = elemento.Name.Split(':');
            string   nombreTupla = partes[partes.Length - 1].Replace('-', '_');

            GeneradorClase generador = GeneradorClase.getInstance(_ensambladoCiente);

            object objetoInstancia = generador.ObtenerInstancia(nombreTupla);

            Type tipoInstancia = objetoInstancia.GetType();

            try
            {
                foreach (XmlElement hijo in elemento.ChildNodes)
                {
                    string   valor      = hijo.FirstChild.Value;
                    string[] hijoPartes = hijo.Name.Split(':');
                    string   nombreHijo = hijoPartes[hijoPartes.Length - 1];

                    rellenarAtributo(objetoInstancia, tipoInstancia, valor, nombreHijo);
                }
            }
            catch (InvalidCastException)
            {
                string valor = elemento.FirstChild.Value;
                rellenarAtributo(objetoInstancia, tipoInstancia, valor, "Valor");
            }

            //buscamos el contexto
            string    idContext = elemento.GetAttribute("contextRef");
            IContexto contexto  = (IContexto)_contextos[idContext];

            IConcepto conceptoInstancia = (IConcepto)objetoInstancia;

            conceptoInstancia.setContexto(contexto);
            IXBRLContenedorInstanciasObjetos contenedor = XBRLContenedorObjetosInstancias.ObtenerInstancia();

            contenedor.InsertarObjeto((IConcepto)objetoInstancia);
        }
Exemplo n.º 4
0
        private void rellenarElementoAPartirDeInstancia(XmlNode element, object instancia, XmlDocument nuevoDocumento)
        {
            Type tipo = instancia.GetType();

            try
            {
                MethodInfo metodo = tipo.GetMethod("get_Valor");

                object valor = metodo.Invoke(instancia, new object[] { });

                XmlText textoValor = null;
                if (valor != null)
                {
                    textoValor = nuevoDocumento.CreateTextNode(valor.ToString());
                }
                else
                {
                    textoValor = nuevoDocumento.CreateTextNode("");
                }
                element.AppendChild(textoValor);
            }
            catch (NullReferenceException)
            {
                string nombre = "", qualifiedName = "", uriName = "", prefijo = "";
                obtenerAtributosParametros(ref nombre, ref prefijo, ref qualifiedName, ref uriName, instancia);
                foreach (MethodInfo metodo in tipo.GetMethods())
                {
                    string nombreMetodo = metodo.Name;
                    if (nombreMetodo.Substring(0, 4).Equals("get_"))
                    {
                        qualifiedName = nombreMetodo.Substring(4);
                        XmlNode subElement = nuevoDocumento.CreateElement(prefijo, qualifiedName, uriName);

                        object  valor      = metodo.Invoke(instancia, new object[] { });
                        XmlText textoValor = null;
                        if (valor != null)
                        {
                            textoValor = nuevoDocumento.CreateTextNode(valor.ToString());
                        }
                        else
                        {
                            textoValor = nuevoDocumento.CreateTextNode("");
                        }

                        subElement.AppendChild(textoValor);

                        element.AppendChild(subElement);
                    }
                }
            }

            IConcepto conceptoInstancia = (IConcepto)instancia;

            IContexto contexto = conceptoInstancia.getContexto();

            if (contexto != null)
            {
                XmlAttribute idContexto = nuevoDocumento.CreateAttribute("contextRef");
                idContexto.Value = contexto.Id;

                element.Attributes.Append(idContexto);
            }
        }