コード例 #1
0
ファイル: Aplicacion.cs プロジェクト: ogvilla/nabu
        public Grupo loadGrupo(string nombre)
        {
            string jsonpath = server.MapPath("grupos/" + nombre + "/" + nombre + ".json");

            if (System.IO.File.Exists(jsonpath))
            {
                Grupo ret;
                System.IO.StreamReader fs = new System.IO.StreamReader(jsonpath, System.Text.Encoding.UTF8);
                //System.IO.StreamReader fs = System.IO.File.OpenText(jsonpath);
                string s = fs.ReadToEnd();
                fs.Close();

                List <Type> tipos = new List <Type>();
                tipos.Add(typeof(Arbol));
                tipos.Add(typeof(Usuario));
                tipos.Add(typeof(Nodo));
                tipos.Add(typeof(Comentario));
                tipos.Add(typeof(Variable));
                tipos.Add(typeof(Hijo));

                //tipos
                foreach (Organizacion org in Organizacion.getOrganizaciones())
                {
                    tipos.Add(org.GetType());
                    //modelos de documento
                    foreach (Modelo mod in org.getModelosDocumento())
                    {
                        tipos.Add(mod.GetType());
                    }

                    //modelos de evaluacion
                    foreach (ModeloEvaluacion mod in org.getModelosEvaluacion())
                    {
                        tipos.Add(mod.GetType());
                    }

                    //otros objetos
                    foreach (object mod in org.getSeriealizableObjects())
                    {
                        tipos.Add(mod.GetType());
                    }
                }

                ret      = Tools.fromJson <Grupo>(s, tipos);
                ret.path = server.MapPath("grupos/" + nombre);

                try
                {
                    ret.URL = request.UrlReferrer.AbsoluteUri.Substring(0, request.UrlReferrer.AbsoluteUri.LastIndexOf("/"));
                }
                catch (Exception) { }

                //modelos viejos
                if (ret.arbol == null)
                {
                    ret.arbol = new Arbol();
                }

                //actualizo modelos
                ret.arbol.grupo = ret;  //padre del arbol, referencia ciclica, no se puede serializar
                ret.queso.grupo = ret;  //padre del queso, referencia ciclica, no se puede serializar

                addLog("loadGrupo(): [" + ret.nombre + "] leido de disco");

                return(ret);
            }
            else
            {
                throw new appException("El grupo no existe");
            }
        }