private void guardarDiscos(string nombre, TipoGuardado tipoGuardado) { if (tipoGuardado == TipoGuardado.Digital) { Programa.GuardarDiscos(nombre, TipoGuardado.Digital); } else { Programa.GuardarDiscos(nombre, tipoGuardado, true); } }
public static void GuardarDiscos(string path, TipoGuardado tipoGuardado, bool json = false) { Stopwatch crono = Stopwatch.StartNew(); FileInfo fich = new FileInfo(path); if (json) { using (StreamWriter salida = fich.CreateText()) { switch (tipoGuardado) { case TipoGuardado.Digital: Log.Instance.ImprimirMensaje(nameof(GuardarDiscos) + " - Guardando la base de datos... (" + Programa.miColeccion.albumes.Count + " discos)", TipoMensaje.Info); Log.Instance.ImprimirMensaje("Nombre del fichero: " + path, TipoMensaje.Info); foreach (Album a in Programa.miColeccion.albumes) { JsonSerializer s = new JsonSerializer(); s.TypeNameHandling = TypeNameHandling.All; salida.WriteLine(JsonConvert.SerializeObject(a)); } break; case TipoGuardado.CD: Log.Instance.ImprimirMensaje(nameof(GuardarDiscos) + " - Guardando la base de datos... (" + Programa.miColeccion.cds.Count + " cds)", TipoMensaje.Info); Log.Instance.ImprimirMensaje("Nombre del fichero: " + path, TipoMensaje.Info); foreach (DiscoCompacto compacto in Programa.miColeccion.cds) { salida.WriteLine(JsonConvert.SerializeObject(compacto)); } break; default: break; } } } else { using (StreamWriter salida = fich.CreateText()) { switch (tipoGuardado) { case TipoGuardado.Digital: Log.Instance.ImprimirMensaje(nameof(GuardarDiscos) + " - Guardando la base de datos... (" + Programa.miColeccion.albumes.Count + " discos)", TipoMensaje.Info); Log.Instance.ImprimirMensaje("Nombre del fichero: " + path, TipoMensaje.Info); foreach (Album a in miColeccion.albumes) { if (!(a.canciones[0] == null)) //no puede ser un album con 0 canciones { salida.WriteLine(a.nombre + ";" + a.artista + ";" + a.year + ";" + a.numCanciones + ";" + a.genero.Id + ";" + a.caratula + ";" + a.IdSpotify + ";" + a.DirectorioSonido); for (int i = 0; i < a.numCanciones; i++) { if (a.canciones[i] is CancionLarga cl) { salida.WriteLine(cl.titulo + ";" + cl.Partes.Count); //no tiene duracion y son 2 datos a guardar foreach (Cancion parte in cl.Partes) { salida.WriteLine(parte.titulo + ";" + parte.duracion.TotalSeconds); } } else //titulo;400;0 { salida.WriteLine(a.canciones[i].titulo + ";" + a.canciones[i].duracion.TotalSeconds + ";" + Convert.ToInt32(a.canciones[i].Bonus)); } } } salida.WriteLine(); } break; case TipoGuardado.CD: break; case TipoGuardado.Vinilo: break; default: break; } } } crono.Stop(); fich.Refresh(); Log.Instance.ImprimirMensaje(nameof(GuardarDiscos) + "- Guardado", TipoMensaje.Correcto, crono); Log.Instance.ImprimirMensaje("Tamaño: " + fich.Length + " bytes", TipoMensaje.Info); }