public bool MergeFiles(ICollection <IFormFile> files, string uploadsPath, string lang1, string lang2) { try { var proyectName = HttpContext.Session.GetTituloProyecto(); ProcessStartInfo startInfo = new ProcessStartInfo(); startInfo.FileName = "memorias.sh"; startInfo.UseShellExecute = false; startInfo.RedirectStandardOutput = true; startInfo.Arguments = uploadsPath + " " + lang1 + " " + lang2; //startInfo.Arguments = "~/corpus/training/prueba_es_en/news-commentary-v8.es-en.es es ~/corpus/training/prueba_es_en/news-commentary-v8.es-en.en en ~/corpus/prueba/dev/news-test2008.es ~/corpus/prueba/dev/news-test2008.en"; Process proc = Process.Start(startInfo); string outputTerminal = proc.StandardOutput.ReadToEnd(); proc.WaitForExit(); return(true); } catch (System.Exception e) { ErrorLog error = new ErrorLog() { NOMBRE_PROYECTO = HttpContext.Session.GetTituloProyecto(), ERROR = e.Message }; Log4NetProvider.logError("Memoria", "MergeFiles", JsonConvert.SerializeObject(error)); return(false); } }
public bool SeleccionaProyecto(int id) { try { SessionManager.PROYECTO.id = id; string query = "SELECT * FROM Proyectos WHERE id = {0}"; var proyecto = ctx.Proyectos.FromSql(query, id).FirstOrDefault(); string titulo = ""; if (proyecto != null) { titulo = proyecto.Descripcion; SessionManager.PROYECTO.titulo = titulo; ViewBag.proyecto = titulo; HttpContext.Session.SetIdProyecto(id); HttpContext.Session.SetTituloProyecto(titulo); return(true); } else { return(false); } } catch (System.Exception e) { ErrorLog error = new ErrorLog() { NOMBRE_PROYECTO = "id: " + id, ERROR = e.Message }; Log4NetProvider.logError("Traductor", "SeleccionaProyecto", JsonConvert.SerializeObject(error)); throw; } }
public Proyecto CrearProyecto(string descripcion) { try { var proyecto = new Proyecto { Descripcion = descripcion, Fecha_modificacion = DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss"), Actualizado = false }; ctx.Proyectos.Add(proyecto); ctx.SaveChanges(); var url = "wwwroot/uploads/" + proyecto.Descripcion; Directory.CreateDirectory(url); Log4NetProvider.logInfo("Gestion", "CrearProyecto", JsonConvert.SerializeObject(proyecto)); return(proyecto); } catch (Exception e) { ErrorLog error = new ErrorLog() { NOMBRE_PROYECTO = HttpContext.Session.GetTituloProyecto(), ERROR = e.Message }; Log4NetProvider.logError("Gestion", "CrearProyecto", JsonConvert.SerializeObject(error)); return(null); throw; } }
public string OpenTerminal(string file1, string lang1, string file2, string lang2, string folderName1) { try{ /*Primero creamos las carpetas para almacenar los ficheros generados por Moses*/ CrearDirectorios(folderName1); ProcessStartInfo startInfo = new ProcessStartInfo(); startInfo.FileName = "ejecutarMoses.sh"; startInfo.UseShellExecute = false; startInfo.RedirectStandardOutput = true; startInfo.Arguments = file1 + " " + lang1 + " " + file2 + " " + lang2 + " " + folderName1; //startInfo.Arguments = "~/corpus/training/prueba_es_en/news-commentary-v8.es-en.es es ~/corpus/training/prueba_es_en/news-commentary-v8.es-en.en en ~/corpus/prueba/dev/news-test2008.es ~/corpus/prueba/dev/news-test2008.en"; Process proc = Process.Start(startInfo); string outputTerminal = proc.StandardOutput.ReadToEnd(); proc.WaitForExit(); return(outputTerminal); } catch (Exception e) { ErrorLog error = new ErrorLog() { NOMBRE_PROYECTO = HttpContext.Session.GetTituloProyecto(), ERROR = e.Message }; Log4NetProvider.logError("Gestion", "OpenTerminal", JsonConvert.SerializeObject(error)); return(e.Message); } }
public void EjecutarMoses(int id, bool merge) { try { CultureInfo provider = CultureInfo.InvariantCulture; var proyecto = ctx.Proyectos.Where(s => s.Id == id).First(); Log4NetProvider.logInfo("Gestion", "EjecutarMoses", JsonConvert.SerializeObject(proyecto)); var relProyectos = ctx.Proyecto_Memorias.Where(r => r.ProyectoId.Id == id).ToList(); foreach (var rel in relProyectos) { var memoria = ctx.Memorias.Where(m => m.Id == rel.Id).FirstOrDefault(); var lenguaje = ctx.Memorias.Include(i => i.LenguajeId).Where(m => m.Id == rel.Id).FirstOrDefault().LenguajeId; /*Comprobamos que la creacion del sistema de traduccion del lenguaje es necesaria, comparando la fecha con la de las memorias subidas */ string url = "wwwroot/moses/working/" + proyecto.Descripcion + "/" + lenguaje.CodLenguaje_origen + "-" + lenguaje.CodLenguaje_destino + "/mert-work/moses.ini"; if (System.IO.File.Exists(url)) { DateTime lastModified = System.IO.File.GetLastWriteTime(url); if (lastModified > DateTime.ParseExact(memoria.Fecha_modificacion, "dd/MM/yyyy HH:mm:ss", provider)) { continue; } } /*TODO: si no hay ficheros mergeados, cambiar el nombre del fichero de la url (merged-file) o por fecha */ var urlMemoria = "wwwroot/uploads/" + proyecto.Descripcion + "/" + lenguaje.CodLenguaje_origen + "-" + lenguaje.CodLenguaje_destino; string urlMemoria1 = ""; string urlMemoria2 = ""; if (merge == true) { urlMemoria1 = urlMemoria + "/" + "merged-file." + lenguaje.CodLenguaje_origen; urlMemoria2 = urlMemoria + "/" + "merged-file." + lenguaje.CodLenguaje_destino; } else { var carpeta = new DirectoryInfo(urlMemoria); var archivo1 = (from f in carpeta.GetFiles() where f.Extension.Contains(lenguaje.CodLenguaje_origen) where f.Name.Contains("20") orderby f.LastWriteTime descending select f).FirstOrDefault(); var archivo2 = (from f in carpeta.GetFiles() where f.Extension.Contains(lenguaje.CodLenguaje_destino) where f.Name.Contains("20") orderby f.LastWriteTime descending select f).FirstOrDefault(); urlMemoria1 = archivo1.FullName; urlMemoria2 = archivo2.FullName; } var uploadsPath1 = Path.Combine(_environment.WebRootPath, urlMemoria1); var uploadsPath2 = Path.Combine(_environment.WebRootPath, urlMemoria2); string folderName1 = proyecto.Descripcion + "/" + lenguaje.CodLenguaje_origen + "-" + lenguaje.CodLenguaje_destino; //string folderName2 = proyecto.Descripcion+"/"+lenguaje.CodLenguaje_destino+"-"+lenguaje.CodLenguaje_origen; OpenTerminal(uploadsPath1, lenguaje.CodLenguaje_origen, uploadsPath2, lenguaje.CodLenguaje_destino, folderName1); } } catch (System.Exception e) { ErrorLog error = new ErrorLog() { NOMBRE_PROYECTO = HttpContext.Session.GetTituloProyecto(), ERROR = e.Message }; Log4NetProvider.logError("Gestion", "EjecutarMoses", JsonConvert.SerializeObject(error)); throw; } }
/*Devuelve la ruta en para insertar las memorias */ public bool InsertMemoria(string lang1, string lang2) { try { Lenguaje lenguaje = new Lenguaje(); string query = "SELECT * FROM Lenguajes WHERE CodLenguaje_origen = {0} AND CodLenguaje_destino = {1}"; lenguaje = ctx.Lenguajes.FromSql(query, lang1, lang2).FirstOrDefault(); var url = "wwwroot/uploads/" + HttpContext.Session.GetTituloProyecto() + "/" + lang1 + "-" + lang2; if (lenguaje == null) { lenguaje = new Lenguaje { CodLenguaje_origen = lang1, CodLenguaje_destino = lang2 }; ctx.Lenguajes.Add(lenguaje); } if (!Directory.Exists(url)) { Directory.CreateDirectory(url); } var memoria = new Memoria { Fecha_modificacion = DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss"), LenguajeId = lenguaje }; query = "SELECT * FROM Proyectos WHERE Id = {0}"; Proyecto pr = ctx.Proyectos.FromSql(query, HttpContext.Session.GetIdProyecto()).First(); var proyecto_memoria = new Proyecto_Memoria { ProyectoId = pr, MemoriaId = memoria }; ctx.Memorias.Add(memoria); ctx.Proyecto_Memorias.Add(proyecto_memoria); var result = ctx.Proyectos.SingleOrDefault(b => b.Id == pr.Id); result.Actualizado = false; result.Fecha_modificacion = DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss"); ctx.SaveChanges(); return(true); } catch (System.Exception e) { ErrorLog error = new ErrorLog() { NOMBRE_PROYECTO = HttpContext.Session.GetTituloProyecto(), ERROR = e.Message }; Log4NetProvider.logError("Memoria", "InsertMemoria", JsonConvert.SerializeObject(error)); return(false); } }
public string Traducir(string text1, string lang1, string lang2, string sProyecto) { try { string proyectName = ""; ViewBag.errorTraduccion = ""; if (sProyecto == null) { proyectName = HttpContext.Session.GetTituloProyecto(); } else { proyectName = sProyecto; } /*Si no está logueado el proyecto por defecto es el primero de la tabla actualizado o el último en añadirse */ if (proyectName == null || proyectName == "") { var proyecto = ctx.Proyectos.Where(p => p.Actualizado == true).FirstOrDefault(); if (proyecto == null) { proyecto = ctx.Proyectos.Last(); } proyectName = proyecto.Descripcion; } string ubicacion = proyectName + "/" + lang1 + "-" + lang2; var urlWorking = "wwwroot/moses/working/" + ubicacion; if (!Directory.Exists(urlWorking)) { ViewBag.errorTraduccion = "Memoría de traduccción inexistente para los lenguajes seleccionados"; return(""); } ProcessStartInfo startInfo = new ProcessStartInfo(); startInfo.FileName = "traduccion.sh"; startInfo.UseShellExecute = false; startInfo.RedirectStandardOutput = true; startInfo.Arguments = ubicacion + " " + text1;; //startInfo.Arguments= "echo " + "'" +text1+ "'" + "| ~/mosesdecoder/bin/moses -f ~/working/prueba/mert-work/moses.ini"; Process proc = Process.Start(startInfo); string outputTerminal = proc.StandardOutput.ReadToEnd(); proc.WaitForExit(); return(outputTerminal); } catch (Exception e) { Log4NetProvider.logError("Traductor", "Invocar", e.Message); return(null); } }
public string UsarGlosario(string lang1, string lang2, string traduccion) { try { var glosarios = ctx.Proyecto_Glosarios.Include(i => i.GlosarioId).Where(p => p.ProyectoId.Id == HttpContext.Session.GetIdProyecto()).ToList(); var palabras1 = new List <Glosario>(); var palabras2 = new List <Glosario>(); var palabrasReemplazadas = new List <PalabrasGlosario>(); foreach (var gl in glosarios) { var palAux1 = ctx.Glosarios.Where(g => g.Id == gl.GlosarioId.Id && g.CodLenguaje == lang1).FirstOrDefault(); if (palAux1 != null) { palabras1.Add(palAux1); } var palAux2 = ctx.Glosarios.Where(g => g.Id == gl.GlosarioId.Id && g.CodLenguaje == lang2).FirstOrDefault(); if (palAux2 != null) { palabras2.Add(palAux2); } } foreach (var palabra1 in palabras1) { foreach (var palabra2 in palabras2) { if (palabra1.Grupo == palabra2.Grupo) { if (traduccion.Contains(palabra1.Palabra)) { traduccion = traduccion.Replace(palabra1.Palabra, palabra2.Palabra); var pg = new PalabrasGlosario() { palabraOrigen = palabra1.Palabra, palabraNueva = palabra2.Palabra }; palabrasReemplazadas.Add(pg); } } } } ViewBag.palabrasReemplazadas = palabrasReemplazadas; return(traduccion); } catch (System.Exception e) { Log4NetProvider.logError("Traductor", "UsarGlosario", e.Message); throw; } }
private Usuario GetUsuarioByCodUsuario(string codUsuario) { try { string query = "SELECT * FROM Usuarios WHERE CodUsuario = {0}"; var usuario = ctx.Usuarios.FromSql(query, codUsuario).SingleOrDefault(); return(usuario); } catch (System.Exception e) { Log4NetProvider.logError("Acceso", "GetUsuarioByCodUsuario", e.Message); return(null); } }
private bool IsContrasenaCorrecta(string codUsuario, string contrasena) { try { var usuario = GetUsuarioByCodUsuario(codUsuario); if (contrasena == usuario.Contrasena) { HttpContext.Session.SetTipoUsuario(usuario.Tipo); return(true); } return(false); } catch (System.Exception e) { Log4NetProvider.logError("Acceso", "IsContrasenaCorrecta", e.Message); return(false); } }
private List <Proyecto> GetProyectos() { try { string query = "SELECT * FROM Proyectos"; var proyectos = ctx.Proyectos.FromSql(query).ToList(); return(proyectos); } catch (System.Exception e) { ErrorLog error = new ErrorLog() { NOMBRE_PROYECTO = HttpContext.Session.GetTituloProyecto(), ERROR = e.Message }; Log4NetProvider.logError("Gestion", "GetProyectos", JsonConvert.SerializeObject(error)); throw; } }
public void SeleccionaProyecto(int id) { try { SessionManager.PROYECTO.id = id; string query = "SELECT * FROM Proyectos WHERE id = {0}"; var titulo = ctx.Proyectos.FromSql(query, id).First().Descripcion; SessionManager.PROYECTO.titulo = titulo; } catch (System.Exception e) { ErrorLog error = new ErrorLog() { NOMBRE_PROYECTO = HttpContext.Session.GetTituloProyecto(), ERROR = e.Message }; Log4NetProvider.logError("Gestion", "SeleccionaProyecto", JsonConvert.SerializeObject(error)); throw; } }
public Lenguaje CrearLenguaje(string codOrigen, string codDestino) { try { var lenguaje = new Lenguaje { CodLenguaje_origen = codOrigen, CodLenguaje_destino = codDestino }; ctx.Lenguajes.Add(lenguaje); ctx.SaveChanges(); return(lenguaje); } catch (System.Exception e) { ErrorLog error = new ErrorLog() { NOMBRE_PROYECTO = HttpContext.Session.GetTituloProyecto(), ERROR = e.Message }; Log4NetProvider.logError("Gestion", "CrearLenguaje", JsonConvert.SerializeObject(error)); throw; } }
public string InvocarTraduccion(string text1) { try{ /*ProcessStartInfo startInfo = new ProcessStartInfo() { FileName = "gnome-terminal"}; * startInfo.Arguments = "-x moses.sh";*/ /*Process proc = new Process() {StartInfo = startInfo, }; * proc.Start();*/ Console.WriteLine("ENTRAAAA"); ProcessStartInfo startInfo = new ProcessStartInfo(); startInfo.FileName = "traduccion.sh"; startInfo.UseShellExecute = false; startInfo.RedirectStandardInput = true; startInfo.RedirectStandardOutput = true; startInfo.Arguments = text1; //startInfo.Arguments = "~/corpus/training/prueba_es_en/news-commentary-v8.es-en.es es ~/corpus/training/prueba_es_en/news-commentary-v8.es-en.en en ~/corpus/prueba/dev/news-test2008.es ~/corpus/prueba/dev/news-test2008.en"; Process proc = Process.Start(startInfo); string outputTerminal = proc.StandardOutput.ReadToEnd(); Thread.Sleep(3000); Console.WriteLine("SI"); using (StreamWriter sw = proc.StandardInput) { if (sw.BaseStream.CanWrite) { sw.WriteLine("si"); } } proc.WaitForExit(); return("outputTerminal"); } catch (Exception e) { Log4NetProvider.logError("Traductor", "Invocar", e.Message); return(null); } }
public async Task <IActionResult> Index(IFormFile file) { try { ViewBag.proyecto = HttpContext.Session.GetTituloProyecto(); int grupoUltimo = 0; var ultimo = ctx.Glosarios.LastOrDefault(); if (ultimo != null) { grupoUltimo = ultimo.Grupo; } string texto = ""; using (var fs = file.OpenReadStream()) using (var ms = new MemoryStream()) { fs.CopyTo(ms); var filebytes = ms.ToArray(); string s = Convert.ToBase64String(filebytes); texto = System.Text.Encoding.UTF8.GetString(filebytes); } var proyecto = ctx.Proyectos.Where(p => p.Id == HttpContext.Session.GetIdProyecto()).First(); var partesTexto = texto.Split('\n'); var lenguajes = partesTexto[0].Split(','); for (int i = 1; i < partesTexto.Length - 1; i++) { var palabras = partesTexto[i].Split(','); for (int j = 0; j < lenguajes.Length; j++) { var glosario = new Glosario { CodLenguaje = lenguajes[j], Palabra = palabras[j], Grupo = grupoUltimo + i }; var proyecto_glosario = new Proyecto_Glosario { ProyectoId = proyecto, GlosarioId = glosario }; ctx.Glosarios.Add(glosario); ctx.Proyecto_Glosarios.Add(proyecto_glosario); } } ctx.SaveChanges(); GlosariosLog glLog = new GlosariosLog() { NOMBRE_PROYECTO = HttpContext.Session.GetTituloProyecto(), FICHERO = file.FileName }; Log4NetProvider.logInfo("Glosario", "Subida", JsonConvert.SerializeObject(glLog)); ViewBag.TipoUsuario = HttpContext.Session.GetTipoUsuario(); ViewBag.proyecto = HttpContext.Session.GetTituloProyecto(); ViewBag.ok = true; return(View()); } catch (System.Exception e) { ErrorLog error = new ErrorLog() { NOMBRE_PROYECTO = HttpContext.Session.GetTituloProyecto(), ERROR = e.Message }; Log4NetProvider.logError("Glosario", "Index", JsonConvert.SerializeObject(error)); throw; } }
public void BorrarProyecto(int id) { try { /*Eliminamos todas las memorias y glosarios */ var prymen = ctx.Proyecto_Memorias.Include(i => i.MemoriaId).Where(s => s.ProyectoId.Id == id).ToList(); foreach (var obj in prymen) { var memoria = ctx.Memorias.Where(m => m.Id == obj.MemoriaId.Id).FirstOrDefault(); ctx.Proyecto_Memorias.Remove(obj); ctx.Memorias.Remove(memoria); } var prygl = ctx.Proyecto_Glosarios.Include(i => i.GlosarioId).Where(s => s.ProyectoId.Id == id).ToList(); foreach (var gl in prygl) { var glosario = ctx.Glosarios.Where(g => g.Id == gl.GlosarioId.Id).FirstOrDefault(); ctx.Proyecto_Glosarios.Remove(gl); ctx.Glosarios.Remove(glosario); } string query = "SELECT * FROM Proyectos WHERE id = {0}"; /*Borrado de las memorias subidas */ var titulo = ctx.Proyectos.FromSql(query, id).First().Descripcion; var url = "wwwroot/uploads/" + titulo; if (Directory.Exists(url)) { DirectoryInfo di = new DirectoryInfo(url); foreach (DirectoryInfo dir in di.GetDirectories()) { foreach (FileInfo file in dir.GetFiles()) { file.Delete(); } dir.Delete(); } Directory.Delete(url); } var urlCorpus = "wwwroot/moses/corpus/" + titulo; if (Directory.Exists(urlCorpus)) { DirectoryInfo diCorpus = new DirectoryInfo(urlCorpus); foreach (DirectoryInfo dir in diCorpus.GetDirectories()) { foreach (FileInfo file in dir.GetFiles()) { file.Delete(); } dir.Delete(); } Directory.Delete(urlCorpus); } var urlLm = "wwwroot/moses/lm/" + titulo; if (Directory.Exists(urlLm)) { DirectoryInfo diLm = new DirectoryInfo(urlLm); foreach (DirectoryInfo dir in diLm.GetDirectories()) { foreach (FileInfo file in dir.GetFiles()) { file.Delete(); } dir.Delete(); } Directory.Delete(urlLm); } var urlWorking = "wwwroot/moses/working" + titulo; if (Directory.Exists(urlWorking)) { DirectoryInfo diWorking = new DirectoryInfo(urlWorking); foreach (DirectoryInfo dir in diWorking.GetDirectories()) { foreach (FileInfo file in dir.GetFiles()) { file.Delete(); } dir.Delete(); } Directory.Delete(urlWorking); } var proyecto = ctx.Proyectos.Where(se => se.Id == id).First(); /*query ="DELETE FROM Proyectos WHERE id = {0}"; * var proyectos = ctx.Proyectos.FromSql(query, id);*/ ctx.Proyectos.Remove(proyecto); ctx.SaveChanges(); Log4NetProvider.logInfo("Gestion", "BorrarProyecto", JsonConvert.SerializeObject(proyecto)); } catch (Exception e) { ErrorLog error = new ErrorLog() { NOMBRE_PROYECTO = HttpContext.Session.GetTituloProyecto(), ERROR = e.InnerException.Message }; Log4NetProvider.logError("Gestion", "BorrarProyecto", JsonConvert.SerializeObject(error)); throw; } }