reporte_web.md 50 KB

📁 Reporte de carpeta: web

Detalle de clases, métodos y comentarios extraídos automáticamente

🧩 Clase: AdminController

Ubicación: src\main\java\es\uv\saic\web\AdminController.java Estado de revisión: ⚠️ Pendiente

🔍 Métodos detectados:

// GET para conseguir todas las instancias del sistema en ese momento.
  • getInstances() — 🟢 Endpoint

    // Función utilizada para conseguir las instancias que tiene todo el sistema
    
  • loadInstanceData() — ⚪ Interno

  • DummyDataTransfer() — ⚪ Interno

  • DummyDataTransfer() — ⚪ Interno

    // POST que recoge los campos introducidos en los inputs (Proceso, centro y titulación) y busca las instancias relacionadas
    
  • instantiate() — 🟢 Endpoint

  • Email() — ⚪ Interno

  • if() — ⚪ Interno

  • Email() — ⚪ Interno

  • if() — ⚪ Interno

    // Type T procedure for one whole categor
    
  • place() — ⚪ Interno

  • Email() — ⚪ Interno

  • if() — ⚪ Interno

    // Type C procedure for all active place
    
  • for() — ⚪ Interno

  • Email() — ⚪ Interno

  • if() — ⚪ Interno

  • Email() — ⚪ Interno

    // GET que recoge todos los procedimientos del sistema
    
  • getProcedures() — 🟢 Endpoint

    // Función utilizada en el GET que recoge todos los procedimientos
    
  • loadProceduresData() — ⚪ Interno

  • DummyDataTransfer() — ⚪ Interno

    // POST que elimina una instancia concreta
    
  • deleteInstance() — 🟢 Endpoint

    // POST que reinicia una instancia por completo
    
  • clearInstance() — 🟢 Endpoint

  • Email() — ⚪ Interno

    // POST que establece que una instancia ha sido cerrada, cambiandole su estado
    
  • closeInstance() — 🟢 Endpoint

    // POST que se encarga de eliminar una tarea concreta de una instancia
    
  • removeTask() — 🟢 Endpoint

    // POST que se encarga de reiniciar por completo una tarea de una instancia
    
  • clearTask() — 🟢 Endpoint

    // POST que reinicia una tarea del procedimiento, eliminando datos anteriores y creando una nueva vesión de esta
    
  • reloadTask() — 🟢 Endpoint

  • InstanciaTasca() — ⚪ Interno

  • Email() — ⚪ Interno

    // POST que tiene como objetivo reactivar una tarea
    
  • activateTask() — 🟢 Endpoint

  • InstanciaTasca() — ⚪ Interno

  • Email() — ⚪ Interno

    // POST que edita la información de una tarea ya existente
    
  • editTask() — 🟢 Endpoint

  • InstanciaTasca() — ⚪ Interno

  • Email() — ⚪ Interno

  • getMailing() — 🟢 Endpoint

  • sendMails() — 🟢 Endpoint

  • Email() — ⚪ Interno

    // POST para la creación de un procedimiento nuevo
    
  • newProcedure() — 🟢 Endpoint

  • Proces() — ⚪ Interno

  • Tasca() — ⚪ Interno

  • SimpleDateFormat() — ⚪ Interno

    // POST para editar un procedimiento ya existente
    
  • editProcedure() — 🟢 Endpoint

  • Tasca() — ⚪ Interno

  • Tasca() — ⚪ Interno

  • SimpleDateFormat() — ⚪ Interno

    // POST que elimina un procedimiento
    
  • removeProcedure() — 🟢 Endpoint

    // POST que le eliminar un usuario concreto del sitema
    
  • removeUserrole() — 🟢 Endpoint

    // POST para añadir un nuevo usuario al sistema
    
  • newUserrole() — 🟢 Endpoint

  • Usuari() — ⚪ Interno

  • UsuarisRol() — ⚪ Interno

  • UsuarisRol() — ⚪ Interno

  • UsuarisRol() — ⚪ Interno

  • UsuarisRol() — ⚪ Interno

  • getTemplates() — 🟢 Endpoint

    // GET que recoge todas las plantillas actuales del sistema
    
  • getTemplates2() — 🟢 Endpoint

  • File() — ⚪ Interno

  • File() — ⚪ Interno

  • File() — ⚪ Interno

  • if() — ⚪ Interno

  • loadTemplateData() — ⚪ Interno

    // POST que redefine que indicadores están asociados a una evidencia dentro de un proceso
    
  • updateTemplateInds() — 🟢 Endpoint

  • EvidenciaIndicadorEnquesta() — ⚪ Interno

  • EvidenciaIndicadorEnquestaPK() — ⚪ Interno

    // GET para abrir el editor de plantillas
    
  • getTemplateEditor() — 🟢 Endpoint

  • testTemplateEditor() — 🟢 Endpoint

    // GET para la carga del calendario
    
  • calendar() — 🟢 Endpoint

  • acreditacionsByCurs() — 🟢 Endpoint

  • AcreditacioTransfer() — ⚪ Interno

  • AcreditacioTransfer() — ⚪ Interno

  • AcreditacioTransfer() — ⚪ Interno

  • UpdateAcreditacio() — 🟢 Endpoint

  • SimpleDateFormat() — ⚪ Interno

  • SimpleDateFormat() — ⚪ Interno

  • SimpleDateFormat() — ⚪ Interno

  • SimpleDateFormat() — ⚪ Interno


🧩 Clase: AjaxController

Ubicación: src\main\java\es\uv\saic\web\AjaxController.java Estado de revisión: ⚠️ Pendiente

🔍 Métodos detectados:

  • getActiveCentres() — 🟢 Endpoint
  • DummyDataTransfer() — ⚪ Interno
  • getActiveTitulationsByCenter() — 🟢 Endpoint
  • DummyDataTransfer() — ⚪ Interno

    // POST que buscar titulaciones que se encuentren asociadas a uno o varios centros
    
  • getTitulationsByCenter() — 🟢 Endpoint

  • DummyDataTransfer() — ⚪ Interno

  • DummyDataTransfer() — ⚪ Interno

  • DummyDataTransfer() — ⚪ Interno

  • DummyDataTransfer() — ⚪ Interno

  • DummyDataTransfer() — ⚪ Interno

    // POST que se utiliza para conseguir los cursos a partir de la titulación
    
  • getYearsByCenterTitulation() — 🟢 Endpoint

  • DummyDataTransfer() — ⚪ Interno

    // POST que se utiliza para conseguir los procedimiento que se han llevado a cabo por cursos y por titulación
    
  • getProceduresByCenterTitulationYear() — 🟢 Endpoint

  • DummyDataTransfer() — ⚪ Interno

    // POST para buscar pas evidencias a partir del año, centro y titulación
    
  • getEvidencesByCenterTitulationYear() — 🟢 Endpoint

  • DummyDataTransfer() — ⚪ Interno

    // POST que recoge toda las titulaciones que contiene un centro para el manager
    
  • getCenterTitulations() — 🟢 Endpoint

  • getTitulationsByCenters() — 🟢 Endpoint

  • DummyDataTransfer() — ⚪ Interno

  • DummyDataTransfer() — ⚪ Interno

  • if() — ⚪ Interno

  • DummyDataTransfer() — ⚪ Interno

  • DummyDataTransfer() — ⚪ Interno

  • DummyDataTransfer() — ⚪ Interno

  • if() — ⚪ Interno

  • DummyDataTransfer() — ⚪ Interno

  • DummyDataTransfer() — ⚪ Interno

  • getTitulationsByCenter() — 🟢 Endpoint

  • DummyDataTransfer() — ⚪ Interno

  • DummyDataTransfer() — ⚪ Interno

  • if() — ⚪ Interno

  • DummyDataTransfer() — ⚪ Interno

  • DummyDataTransfer() — ⚪ Interno

  • DummyDataTransfer() — ⚪ Interno

  • if() — ⚪ Interno

  • DummyDataTransfer() — ⚪ Interno

  • DummyDataTransfer() — ⚪ Interno

  • DummyDataTransfer() — ⚪ Interno

  • DummyDataTransfer() — ⚪ Interno

  • getAllTitulationsByCenter() — 🟢 Endpoint

  • DummyDataTransfer() — ⚪ Interno

  • DummyDataTransfer() — ⚪ Interno

  • DummyDataTransfer() — ⚪ Interno

  • DummyDataTransfer() — ⚪ Interno

  • DummyDataTransfer() — ⚪ Interno

    // POST para encontrar el centro a partir de los procedimientos
    
  • getAllCentresByAmbit() — 🟢 Endpoint

  • DummyDataTransfer() — ⚪ Interno

  • DummyDataTransfer() — ⚪ Interno

    // POST para encontrar un procedimiento concreto
    
  • findProcedure() — 🟢 Endpoint

  • Proces() — ⚪ Interno

  • if() — ⚪ Interno

    // POST para encontar las plantillas concretas para cierta titulación, centro o procedimiento
    
  • findTemplates() — 🟢 Endpoint

  • findTemplatesInds() — 🟢 Endpoint

    // GET para renderizar el formulario de cración de nueva tarea
    
  • newTaskForm() — 🟢 Endpoint

  • newUserRoleForm() — 🟢 Endpoint

  • findTemplate() — 🟢 Endpoint

    // GET para comprobar si una plantilla esta siendo usada
    
  • isTemplateUsed() — 🟢 Endpoint

    // POST para crear el form de creación de plantilla
    
  • formTemplate() — 🟢 Endpoint

  • Plantilla() — ⚪ Interno

  • if() — ⚪ Interno

  • if() — ⚪ Interno

    // DELETE para eliminar una plantilla concreta
    
  • formTemplateRemove() — 🟢 Endpoint

    // POST para guadar una de las plantillas
    
  • templateSave() — 🟢 Endpoint

  • if() — ⚪ Interno

  • Plantilla() — ⚪ Interno

  • saveTemplate() — 🟢 Endpoint

    // POST para añadir un evento al calendario
    
  • calendarAddEvent() — 🟢 Endpoint

  • SimpleDateFormat() — ⚪ Interno

  • SimpleDateFormat() — ⚪ Interno

  • Calendari() — ⚪ Interno

    // POST que actualiza el evento ddel calendario
    
  • calendarAddEvent() — 🟢 Endpoint

  • SimpleDateFormat() — ⚪ Interno

  • SimpleDateFormat() — ⚪ Interno

    // GET que recoge todos los eventos del calendario
    
  • calendarGetEvents() — 🟢 Endpoint

    // DELETE que elimina un evento del calendario
    
  • calendarDeleteEvent() — 🟢 Endpoint

    // POST para instanciar un proceso desde el calendario
    
  • instantiate() — 🟢 Endpoint

  • BigInteger() — ⚪ Interno

  • Email() — ⚪ Interno

  • if() — ⚪ Interno

  • BigInteger() — ⚪ Interno

  • Email() — ⚪ Interno

  • if() — ⚪ Interno

  • BigInteger() — ⚪ Interno

  • Email() — ⚪ Interno

  • Date() — ⚪ Interno

  • Date() — ⚪ Interno

  • groupedTitToText() — ⚪ Interno

  • if() — ⚪ Interno

  • if() — ⚪ Interno


🧩 Clase: DashboardController

Ubicación: src\main\java\es\uv\saic\web\DashboardController.java Estado de revisión: ⚠️ Pendiente

🔍 Métodos detectados:

// GET para cargar el dashboard con toda su información
  • getOrganList() — 🟢 Endpoint
  • if() — ⚪ Interno
  • if() — ⚪ Interno
  • if() — ⚪ Interno

    //GET para mostrar el dashboard a partir de un numero ruct
    
  • getDashboardOrgan() — 🟢 Endpoint

  • if() — ⚪ Interno

  • if() — ⚪ Interno

  • loadReports() — ⚪ Interno

  • AnyDimensioDTO() — ⚪ Interno

  • TreeDTOAny() — ⚪ Interno

  • TreeDTOOrgan() — ⚪ Interno

  • TreeDTOInstancia() — ⚪ Interno

  • compare() — ⚪ Interno

  • TreeDTOOrgan() — ⚪ Interno

  • TreeDTOInstancia() — ⚪ Interno

  • if() — ⚪ Interno

  • TreeDTODimensio() — ⚪ Interno

  • InstanciaDTO() — ⚪ Interno

  • DimensioInstanciesDTO() — ⚪ Interno

    // GET para conseguir la documentación ya a aportada a partir del id de la tituación
    
  • loadDocuments() — 🟢 Endpoint

  • CategoriaDocumentDTO() — ⚪ Interno

  • DocumentDTO() — ⚪ Interno

  • DocumentDTO() — ⚪ Interno

  • loadGantt() — ⚪ Interno

  • if() — ⚪ Interno

  • compare() — ⚪ Interno

  • getDocumentChildCats() — 🟢 Endpoint

  • getDocumentChildCatsU() — 🟢 Endpoint

    // POST para guardar un documento en el sistema
    
  • uploadDocument() — 🟢 Endpoint

  • Document() — ⚪ Interno

  • Date() — ⚪ Interno

    // POST para añadir un documento a un centro cocncreto
    
  • archiveDocuments() — 🟢 Endpoint

    // GET para conseguir todos los graficos a partir de un RUCT
    
  • getGraphDataList() — 🟢 Endpoint

    //GET para conseguir todos los datos concretos de tasas para las tablas
    
  • getGraphDataTaxes() — 🟢 Endpoint

    //GET para conseguir todos los datos concretos de cada gráfico
    
  • getGraphData() — 🟢 Endpoint

  • Indicador() — ⚪ Interno

  • CursoValor() — ⚪ Interno

  • if() — ⚪ Interno

  • CursoValor() — ⚪ Interno

  • Indicador() — ⚪ Interno

  • CursoValor() — ⚪ Interno

  • getLinks() — 🟢 Endpoint

  • createLink() — 🟢 Endpoint

  • SimpleDateFormat() — ⚪ Interno

  • Link() — ⚪ Interno

  • Date() — ⚪ Interno

  • deleteLink() — 🟢 Endpoint

    // Función encargada de cargar a los managers a partir del centro y titulación
    
  • loadManagers() — ⚪ Interno

  • compare() — ⚪ Interno

  • compare() — ⚪ Interno

    // Función para comprobar si un usario esta permitido para hacer una acción
    
  • isSuitable() — ⚪ Interno

  • if() — ⚪ Interno

  • if() — ⚪ Interno

    // Función para saber el tamaño de un documento concreto
    
  • getSize() — ⚪ Interno

  • FileSystemResource() — ⚪ Interno

  • bytesToHuman() — ⚪ Interno

  • StringCharacterIterator() — ⚪ Interno


🧩 Clase: DataController

Ubicación: src\main\java\es\uv\saic\web\DataController.java Estado de revisión: ⚠️ Pendiente

🔍 Métodos detectados:

// GET que carga la interfaz relacionada con toda la importación de datos
  • renderImport() — 🟢 Endpoint

    // POST encargado de importar los datos que han sido adjuntados
    
  • uploadFile() — 🟢 Endpoint

  • InputStreamReader() — ⚪ Interno

  • if() — ⚪ Interno

    // POST encargado de eliminar unos datos concretos
    
  • delete() — 🟢 Endpoint

    // POST encargado de mostrar los datos por pantalla
    
  • show() — 🟢 Endpoint

    // GET para mostrar el formulario de busqueda de datos
    
  • current() — 🟢 Endpoint

    //GET para cargar el apartado de coonsolidate
    
  • consolidate() — 🟢 Endpoint

  • check() — ⚪ Interno

    // POST que soluciona problemas de integridad que puedan tener los datos
    
  • fixIntegrityIssues() — 🟢 Endpoint

  • if() — ⚪ Interno

    // POST que soluciona problemas de duplicados que puedan tener los datos
    
  • fixDuplicatesIssues() — 🟢 Endpoint

    // POST que consolida los datos pasadas por la encuesta
    
  • consolidate() — 🟢 Endpoint

    // POST que comprueba los datos a partir de la encuesta
    
  • countByEnquesta() — 🟢 Endpoint

    // POST para mostrar los datos en columnas
    
  • listTableColumns() — 🟢 Endpoint

    // GET que muestra los datos de un curso que se ha elegido
    
  • show() — 🟢 Endpoint

    // POST que muestra los datos del curso actual
    
  • currentShow() — 🟢 Endpoint

  • if() — ⚪ Interno

  • getDatasources() — 🟢 Endpoint


🧩 Clase: DownloadController

Ubicación: src\main\java\es\uv\saic\web\DownloadController.java Estado de revisión: ⚠️ Pendiente

🔍 Métodos detectados:

/*
 * Download a file associated with a task instance
 * @param model
 * @param idInstanciaTasca The ID of the task instance
 * @param response HttpServletResponse
 * @return A FileSystemResource representing the file to download
 */
  • download() — 🟢 Endpoint
  • FileSystemResource() — ⚪ Interno
  • FileSystemResource() — ⚪ Interno
  • FileNotFoundException() — ⚪ Interno

    /*
    * Download a document by its ID
    * @param model
    * @param idDocument The ID of the document to download
    * @param response HttpServletResponse
    * @return A FileSystemResource representing the document to download
    */
    
  • downloadDocument() — 🟢 Endpoint

  • FileSystemResource() — ⚪ Interno

  • FileNotFoundException() — ⚪ Interno

    /*
    * Download the latest report for a given process and degree
    * @param model
    * @param idTitulacio The ID of the degree
    * @param nomProces The name of the process
    * @param response HttpServletResponse
    * @return A FileSystemResource representing the report to download
    */
    
  • downloadReport() — 🟢 Endpoint

  • File() — ⚪ Interno

  • FileSystemResource() — ⚪ Interno

  • FileSystemResource() — ⚪ Interno

    /*
    * Download a populated template for a given task instance
    * @param model
    * @param idTascai The ID of the task instance
    * @param response HttpServletResponse
    * @return A byte array representing the populated template to download
    */
    
  • downloadTemplate() — 🟢 Endpoint

    /* Check if specific template exists */
    Integer idTitulacio = it.getInstancia().getTitulacio();
    String templatePath = this.templatePath+tasca.getCodiEvidencia().replace(".", "_")+".docx";
    if(it.getInstancia().getOrgan().getTambit().equals("G") | idTitulacio == 1) {
    File f = new File(this.templatePath+"/T1/"+tasca.getCodiEvidencia().replace(".", "_")+".docx");
    if(f.exists() && !f.isDirectory()) { 
    templatePath = this.templatePath+"/T1/"+tasca.getCodiEvidencia().replace(".", "_")+".docx";
    }
    }
    else if(it.getInstancia().getOrgan().getTambit().equals("M") | idTitulacio == 2) {
    File f = new File(this.templatePath+"/T2/"+tasca.getCodiEvidencia().replace(".", "_")+".docx");
    if(f.exists() && !f.isDirectory()) { 
    templatePath = this.templatePath+"/T2/"+tasca.getCodiEvidencia().replace(".", "_")+".docx";
    }
    }
    
    File f = new File(templatePath);
    if(!f.exists()) {
    FileNotFoundException e = new FileNotFoundException("No se ha encontrado la plantilla "+tasca.getCodiEvidencia()+".docx");
    e.setStackTrace(new StackTraceElement[0]);
    throw e;
    }
    
    InputStream in = new FileInputStream(f);
    IXDocReport report = XDocReportRegistry.getRegistry().loadReport(in, reportId, TemplateEngineKind.Velocity);
    FieldsMetadata metadata = new FieldsMetadata();
    metadata.addFieldAsImage("logo");
    report.setFieldsMetadata(metadata);
    IContext context = report.createContext();
    IImageProvider img;
    if(new File(this.logoPath+"C"+Integer.toString(it.getInstancia().getCentre())+".png").exists()) {
    img = new FileImageProvider(new File(this.logoPath+"C"+Integer.toString(it.getInstancia().getCentre())+".png"));
    }
    else {
    img = new FileImageProvider(new File(this.logoPath+"C0.png"));
    }
    context.put("logo", img);
    context.put("centre", it.getInstancia().getOrgan().getOrgan().getNomVal());
    context.put("titulacio", it.getInstancia().getOrgan().getNomCas());
    context.put("curs", Integer.toString(it.getInstancia().getProces().getCursAvaluat()-1)+" - "+Integer.toString(it.getInstancia().getProces().getCursAvaluat()));
    context.put("curs_anterior", Integer.toString(it.getInstancia().getProces().getCursAvaluat()-2)+" - "+Integer.toString(it.getInstancia().getProces().getCursAvaluat()-1));
    
    Proces proces = it.getInstancia().getProces();
    Integer idCentre = it.getInstancia().getCentre();
    
    if(tasca.getTipus().getTipus() == 14) { // Iterable template task
    List<Organ> titulacions = new ArrayList<Organ>();
    Integer ambit = idTitulacio/(int)1000;
    titulacions = os.getTitulacionsByTypeCentre(it.getInstancia().getOrgan().getOrgan().getId().getLugar(), ambit);
    List<HashMap<String, String>> data = new ArrayList<HashMap<String, String>>();
    for(Organ x : titulacions) {
    HashMap<String, String> t = getTemplateDataArray(x.getId().getLugar(), idCentre, proces.getCursAvaluat());
    t.put("titulacio", x.getNomCas());
    data.add(t);
    } 
    context.put("data", data);
    getTemplateData(idTitulacio, idCentre, proces.getCursAvaluat(), context);
    }
    else { // NO iterable template task
    getTemplateData(idTitulacio, idCentre, proces.getCursAvaluat(), context);
    }
    
    ByteArrayOutputStream out = new ByteArrayOutputStream();  
    report.process(context, out);
    response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\""+tasca.getCodiEvidencia()+".docx\"");
    
    return out.toByteArray();
    
    }
    
    /*
    * Populate the template data into the context
    * @param idTitulacio The ID of the degree
    * @param idCentre The ID of the center
    * @param curs The academic year
    * @param context The IContext to populate
    */
    
  • getTemplateData() — ⚪ Interno

    /*  Indicadores del data warehouse */
    try {
    List<Indicador> indicadores;
    indicadores = this.is.getFromTitulacion(idTitulacio.toString(), curs);
    for(Indicador i : indicadores) { 
    context.put(i.getIndicador(), i.getValor());
    }
    } 
    catch(Exception e) { }
    
    /*  Indicadores de encuestas  */
    List<IndicadorEnquestaRepository.IndicadorEnquestaValor> enquestesT;
    enquestesT = this.ies.getAllInds(idTitulacio, idCentre, curs);
    
    for(IndicadorEnquestaRepository.IndicadorEnquestaValor i : enquestesT) {
    String indicador = i.getAmbit().equals("t") ? (i.getEnquesta()+"_"+i.getIndicador()) : (i.getEnquesta()+"_"+i.getIndicador()+"_"+i.getAmbit());
    indicador = i.getTipus().equals("avg") ? indicador : (indicador += "_"+i.getTipus());
    indicador = i.getCursd() == null ? indicador : (indicador += "_"+i.getCursd());
    context.put(indicador, formatValue(i.getValor()));
    }
    }
    
    /*
    * Format a value for template insertion
    * @param v The value to format
    * @return The formatted value
    */
    
  • formatValue() — ⚪ Interno

    /*
    * Get template data as a HashMap
    * @param idTitulacio The ID of the degree
    * @param idCentre The ID of the center
    * @param curs The academic year
    * @return A HashMap containing the template data
    */
    private HashMap<String, String> getTemplateDataArray(Integer idTitulacio, Integer idCentre, Integer curs) {
    
    HashMap<String, String> info = new HashMap<String, String>();
    
    /*  Indicadores del data warehouse */
    try {
    List<Indicador> indicadores;
    indicadores = this.is.getFromTitulacion(idTitulacio.toString(), curs);
    for(Indicador i : indicadores) { 
    info.put(i.getIndicador(), i.getValor());
    }
    } 
    catch(Exception e) { }
    
    /*  Indicadores de encuestas  */
    List<IndicadorEnquestaRepository.IndicadorEnquestaValor> enquestesT;
    enquestesT = this.ies.getAllInds(idTitulacio, idCentre, curs);
    
    for(IndicadorEnquestaRepository.IndicadorEnquestaValor i : enquestesT) {
    String indicador = i.getAmbit().equals("t") ? (i.getEnquesta()+"_"+i.getIndicador()) : (i.getEnquesta()+"_"+i.getIndicador()+"_"+i.getAmbit());
    indicador = i.getTipus().equals("avg") ? indicador : (indicador += "_"+i.getTipus());
    indicador = i.getCursd() == null ? indicador : (indicador += "_"+i.getCursd());
    info.put(indicador, formatValue(i.getValor()));
    }
    
    return info;
    }
    
    /*
    * Test endpoint to generate a populated template for a given task (id of task)
    * @param model
    * @param idTitulacio The ID of the degree
    * @param idCentre The ID of the center
    * @param idTascap The ID of the task
    * @param idProces The ID of the process
    * @param response HttpServletResponse
    * @return A byte array representing the populated template
    */
    
  • testTemplate() — 🟢 Endpoint

    /* Check if specific template exists */
    String templatePath = this.templatePath+tasca.getCodiEvidencia().replace(".", "_")+".docx";
    if(titulacio.getTambit().equals("G") | idTitulacio == 1) {
    File f = new File(this.templatePath+"/T1/"+tasca.getCodiEvidencia().replace(".", "_")+".docx");
    if(f.exists() && !f.isDirectory()) { 
    templatePath = this.templatePath+"/T1/"+tasca.getCodiEvidencia().replace(".", "_")+".docx";
    }
    }
    else if(titulacio.getTambit().equals("M") | idTitulacio == 2) {
    File f = new File(this.templatePath+"/T2/"+tasca.getCodiEvidencia().replace(".", "_")+".docx");
    if(f.exists() && !f.isDirectory()) { 
    templatePath = this.templatePath+"/T2/"+tasca.getCodiEvidencia().replace(".", "_")+".docx";
    }
    }
    
    InputStream in = new FileInputStream(new File(templatePath));
    IXDocReport report = XDocReportRegistry.getRegistry().loadReport(in, reportId, TemplateEngineKind.Velocity);
    FieldsMetadata metadata = new FieldsMetadata();
    metadata.addFieldAsImage("logo");
    report.setFieldsMetadata(metadata);
    IContext context = report.createContext();
    IImageProvider img;
    if(new File(this.logoPath+"C"+Integer.toString(idCentre)+".png").exists()) {
    img = new FileImageProvider(new File(this.logoPath+"C"+Integer.toString(idCentre)+".png"));
    }
    else {
    img = new FileImageProvider(new File(this.logoPath+"C0.png"));
    }
    context.put("logo", img);
    context.put("centre", centre.getNomVal());
    context.put("titulacio", titulacio.getNomVal());
    context.put("curs", Integer.toString(proces.getCursAvaluat()-1)+" - "+Integer.toString(proces.getCursAvaluat()));
    context.put("curs_anterior", Integer.toString(proces.getCursAvaluat()-2)+" - "+Integer.toString(proces.getCursAvaluat()-1));
    
    if(tasca.getTipus().getTipus() == 14) { // Iterable template task
    List<Organ> titulacions = new ArrayList<Organ>();
    titulacions = os.getTitulacionsByTypeCentre(centre.getId().getLugar(), ambit);
    List<HashMap<String, String>> data = new ArrayList<HashMap<String, String>>();
    for(Organ x : titulacions) {
    HashMap<String, String> t = getTemplateDataArray(x.getId().getLugar(), idCentre, proces.getCursAvaluat());
    t.put("titulacio", x.getNomCas());
    data.add(t);
    }
    context.put("data", data);
    getTemplateData(idTitulacio, idCentre, proces.getCursAvaluat(), context);
    }
    else { // NO iterable template task
    getTemplateData(idTitulacio, idCentre, proces.getCursAvaluat(), context);
    }
    
    ByteArrayOutputStream out = new ByteArrayOutputStream();  
    report.process(context, out);
    response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\""+tasca.getCodiEvidencia()+".docx\"");
    
    return out.toByteArray();
    
    }
    
    /*
    * Test endpoint to generate a populated template for a given degree and evidence (Type of task)
    * @param model
    * @param idTitulacio The ID of the degree
    * @param idCentre The ID of the center
    * @param evidencia The name of the evidence
    * @param curs The academic year
    * @param tipusTasca The type of task
    * @param response HttpServletResponse
    * @return A byte array representing the populated template
    */
    
  • testTemplate() — 🟢 Endpoint

    /* Check if specific template exists */
    String templatePath = this.templatePath+evidencia.replace(".", "_").replace(" (G)", "").replace(" (M)", "")+".docx";
    if(idTitulacio < 2000 | idTitulacio == 1) {
    File f = new File(this.templatePath+"/T1/"+evidencia.replace(".", "_").replace(" (G)", "").replace(" (M)", "")+".docx");
    if(f.exists() && !f.isDirectory()) { 
    templatePath = this.templatePath+"/T1/"+evidencia.replace(".", "_").replace(" (G)", "").replace(" (M)", "")+".docx";
    }
    ambit = 1;
    }
    else if((idTitulacio >= 2000 & idTitulacio < 3000) | idTitulacio == 2) {
    File f = new File(this.templatePath+"/T2/"+evidencia.replace(".", "_").replace(" (G)", "").replace(" (M)", "")+".docx");
    if(f.exists() && !f.isDirectory()) { 
    templatePath = this.templatePath+"/T2/"+evidencia.replace(".", "_").replace(" (G)", "").replace(" (M)", "")+".docx";
    }
    ambit = 2;
    }
    
    InputStream in = new FileInputStream(new File(templatePath));
    IXDocReport report = XDocReportRegistry.getRegistry().loadReport(in, reportId, TemplateEngineKind.Velocity);
    FieldsMetadata metadata = new FieldsMetadata();
    metadata.addFieldAsImage("logo");
    report.setFieldsMetadata(metadata);
    IContext context = report.createContext();
    IImageProvider img;
    if(new File(this.logoPath+"C"+Integer.toString(idCentre)+".png").exists()) {
    img = new FileImageProvider(new File(this.logoPath+"C"+Integer.toString(idCentre)+".png"));
    }
    else {
    img = new FileImageProvider(new File(this.logoPath+"C0.png"));
    }
    context.put("logo", img);
    context.put("centre", centre.getNomVal());
    context.put("titulacio", titulacio.getNomVal());
    context.put("curs", Integer.toString(curs-1)+" - "+Integer.toString(curs));
    context.put("curs_anterior", Integer.toString(curs-2)+" - "+Integer.toString(curs-1));
    
    if(tipusTasca == 14) { // Iterable template task
    List<Organ> titulacions = new ArrayList<Organ>();
    titulacions = os.getTitulacionsByTypeCentre(centre.getId().getLugar(), ambit);
    List<HashMap<String, String>> data = new ArrayList<HashMap<String, String>>();
    for(Organ x : titulacions) {
    HashMap<String, String> t = getTemplateDataArray(x.getId().getLugar(), idCentre, curs);
    t.put("titulacio", x.getNomCas());
    data.add(t);
    }
    context.put("data", data);
    getTemplateData(idTitulacio, idCentre, curs, context);
    }
    else { // NO iterable template task
    getTemplateData(idTitulacio, idCentre, curs, context);
    }
    
    ByteArrayOutputStream out = new ByteArrayOutputStream();  
    report.process(context, out);
    response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\""+evidencia+".docx\"");
    
    return out.toByteArray();
    
    }
    
    /*
    * Generate a PDF from the content of a task instance (unused)
    * @param model
    * @param idTascai The ID of the task instance
    * @param response HttpServletResponse
    * @return A byte array representing the generated PDF
    */
    
  • downloadTemplatePdf() — 🟢 Endpoint

    /*
    * Generate a PDF preview from provided content
    * @param model
    * @param content The content to convert to PDF
    * @param idtascai Optional ID of the task instance for context
    * @param response HttpServletResponse
    */
    
  • downloadTemplatePdf() — 🟢 Endpoint


🧩 Clase: ExportController

Ubicación: src\main\java\es\uv\saic\web\ExportController.java Estado de revisión: ⚠️ Pendiente

🔍 Métodos detectados:

/*
 * Export data for a given process and task as CSV
 * @param model
 * @param auth Authentication
 * @param response HttpServletResponse
 * @param id_p Process ID
 * @param id_t Task ID
 */
  • exportData() — 🟢 Endpoint

    //@GetMapping("/export/{id_p}/{id_t}")  
    //public void exportData(Model model, Authentication auth, HttpServletResponse response, 
    //@PathVariable Integer id_p, @PathVariable Integer id_t) throws IOException {
    //if(!((Usuari)auth.getPrincipal()).isAdmin() & !((Usuari)auth.getPrincipal()).isDataTest()) {
    //return;
    //}
    //
    //response.setContentType("text/csv");
    //        response.setCharacterEncoding("UTF-8");
    //        response.setHeader("Content-Disposition", "attachment; filename=data_export.csv");
    //
    //PrintWriter pw = response.getWriter();
    //Proces p = this.ps.findByID(id_p);
    //List<Instancia> ins = p.getInstancies();
    //List<String[]> lines = new ArrayList<>();
    //if(p.getNomProces().equals("SAEM")) {
    //String[] header = {"centre", "titulacio", "cod_int", "nom_int", "per_int", "obs_int", "cod_fin", "nom_fin", "per_fin", "obs_fin", "data_fi_docencia"};
    //lines.add(header);
    //}
    //else {
    //String[] header = {"centre", "titulacio", "cod_assignatura_1er", "nom_assignatura_1er", "obs_assignatura_1er", "cod_assignatura_3er", "nom_assignatura_3er", "obs_assignatura_3er"};
    //lines.add(header);
    //}
    //
    //for(Instancia i : ins) {
    //InstanciaTasca it = i.getInstanciaTasca().stream()
    //     .filter(c -> id_t.equals(c.getTasca().getIdTascap()))
    //     .findAny()
    //     .orElse(null);
    //if(it == null) {
    //continue;
    //}
    //if(!it.getEstat().equals("E")){
    //continue;
    //}
    //
    //System.out.println(it.getText());
    //Document doc = Jsoup.parseBodyFragment(it.getText());
    //        int size = lines.get(0).length;
    //        String[] line = new String[size];
    //        line[0] = i.getCentre().toString();
    //line[1] = i.getTitulacio().toString();
    //String[] ids = {"", "",
    ////"ind_enquestes_1er_modul_cod", "ind_enquestes_1er_modul_nom", "ind_enquestes_1er_modul_per", "ind_enquestes_1er_modul_obs", 
    //        //"ind_enquestes_3er_modul_cod", "ind_enquestes_3er_modul_nom", "ind_enquestes_3er_modul_per", "ind_enquestes_3er_modul_obs", 
    //    "ind_enquestes_1er_modul_cod", "ind_enquestes_1er_modul_nom", "ind_enquestes_1er_modul_obs", 
    //        "ind_enquestes_3er_modul_cod", "ind_enquestes_3er_modul_nom", "ind_enquestes_3er_modul_obs", 
    //        "mceEditable"};
    //
    //for(int x = 2; x<=8; x++) {
    //if(ids[x].startsWith("ind_")) {
    //try {
    //if(ids[x].equals("ind_enquestes_1er_modul_obs")) {
    //line[x] = doc.getElementById("ind_enquestes_1er_modul_nom").nextElementSibling().text();
    //}
    //else {
    //System.out.println(doc.getElementById(ids[x]));
    //line[x] = doc.getElementById(ids[x]).text();
    //}
    //
    //}
    //catch(Exception e) {
    //line[x] = "[error]";
    //System.out.println("instancia: "+i.getIdInstancia().toString()+", centre: "+i.getCentre().toString()+", titulacio: "+i.getTitulacio().toString());
    //}
    //}/*
    //else {
    //try {
    //line[x] = doc.getElementsByClass(ids[x]).last().text();
    //}
    //catch(Exception e) {
    //line[x] = "[error]";
    //System.out.println("instancia: "+i.getIdInstancia().toString()+", centre: "+i.getCentre().toString()+", titulacio: "+i.getTitulacio().toString());
    //}
    //}*/
    //}
    //
    //lines.add(line);    
    //}
    //
    //lines.stream()
    //         .map(this::convertToCSV)
    //         .forEach(pw::println);
    //pw.close();
    //pw.flush();
    //}
    
    /*
    * Export data for a given process and task as CSV (not used)
    * @param model
    * @param auth Authentication
    * @param response HttpServletResponse
    * @param id_p Process ID
    * @param id_t Task ID
    */
    
  • exportData2() — 🟢 Endpoint

    /*
    * Convert an array of Strings to a single CSV line, escaping special characters
    * @param data Array of Strings to convert
    * @return A single CSV line as a String
    */
    
  • convertToCSV() — ⚪ Interno

    /*
    * Escape special characters in a String for CSV format
    * @param data The String to escape
    * @return The escaped String
    */
    
  • escapeSpecialCharacters() — ⚪ Interno


🧩 Clase: IndexController

Ubicación: src\main\java\es\uv\saic\web\IndexController.java Estado de revisión: ⚠️ Pendiente

🔍 Métodos detectados:

/*
 * Redirect root to /procedures if authenticated, to /login otherwise
 * @param model
 * @param auth Authentication
 * @return "procedures" if authenticated, "redirect: login" otherwise
 */
  • getHome() — 🟢 Endpoint

🧩 Clase: KeepAliveController

Ubicación: src\main\java\es\uv\saic\web\KeepAliveController.java Estado de revisión: ⚠️ Pendiente

🔍 Métodos detectados:

/*
 * Simple endpoint to check if the user session is still active.
 * Returns "alive" if the user
 * is authenticated, "0" otherwise.
 * @param model
 * @param auth Authentication
 * @return "alive" if the user is
 * authenticated, "0" otherwise.
 */
  • getItems() — 🟢 Endpoint

🧩 Clase: LoginController

Ubicación: src\main\java\es\uv\saic\web\LoginController.java Estado de revisión: ⚠️ Pendiente

🔍 Métodos detectados:

  • get() — 🟢 Endpoint

🧩 Clase: ManagersController

Ubicación: src\main\java\es\uv\saic\web\ManagersController.java Estado de revisión: ⚠️ Pendiente

🔍 Métodos detectados:

/*
 * Load the managers administration page data into the model
 * - List of centres and titulacions the logged user can manage
 * - List of all users
 * - List of assignable roles
 * - If there are search results in the session, load them too
 * - If there is a roleExists attribute in the session, load it too
 * - The view is managers.html
 */
  • managersForm() — 🟢 Endpoint

    /*
    * Process the search form submission and load the results into the model
    * @Param centres List of centre ids to search managers in
    * @Param titulacions List of titulacion ids to search managers in
    * @Return The view component list_managers
    */
    
  • managersSearch() — 🟢 Endpoint

    /*
    * Load the search results into the model
    * @Param model The model to load the data into
    * @Param centres List of centre ids to search managers in
    * @Param titulacions List of titulacion ids to search managers in
    */
    
  • loadManagers() — ⚪ Interno

  • compare() — ⚪ Interno

  • compare() — ⚪ Interno


🧩 Clase: ParseController

Ubicación: src\main\java\es\uv\saic\web\ParseController.java Estado de revisión: ⚠️ Pendiente

🔍 Métodos detectados:

/*
 * Load the parsing options page data into the model
 * @param model
 * @param auth Authentication
 * @param err Optional error message
 * @param ok Optional success message
 * @return The name of the view to render
 */
  • getParse() — 🟢 Endpoint
  • if() — ⚪ Interno

    /*
    * Parse a given table from a given database for a given year
    * @param model
    * @param auth Authentication
    * @param response HttpServletResponse
    * @param database The database to parse from
    * @param table The table to parse from
    * @param year The year to parse from
    */
    
  • doParse() — 🟢 Endpoint

    /*
    * Parse table depending on the action requested: mediasCentroNP, bienalesProfesGrado, etc
    * @param model
    * @param auth Authentication
    * @param response HttpServletResponse
    * @param action The action to perform
    */
    
  • doAction() — 🟢 Endpoint

    /*
    * Method to delete survey indicators from the database
    * @param model
    * @param auth Authentication
    * @param response HttpServletResponse
    * @param action The survey to delete indicators from
    * @param year The year of the survey to delete indicators from (0 for all years)
    */
    
  • doDelete() — 🟢 Endpoint


🧩 Clase: ProceduresController

Ubicación: src\main\java\es\uv\saic\web\ProceduresController.java Estado de revisión: ⚠️ Pendiente

🔍 Métodos detectados:

/* Redirect root to /procedures */
  • getRoot() — 🟢 Endpoint

    /*
    * Load the list of active procedure instances for the logged-in user
    * 
    * @param model 
    * @param auth Authentication
    * @param session HttpSession
    * @param _new Optional parameter to indicate a new access
    * @return The name of the view to render
    */
    
  • getActiveInstances() — 🟢 Endpoint

  • InstanciaTransfer() — ⚪ Interno

    /*
    * Loads a procedure instance and its tasks
    * 
    * @param model 
    * @param auth Authentication
    * @param session HttpSession
    * @param id Instancia ID Instance to load
    * @return The name of the view to render
    */
    
  • getInstance() — 🟢 Endpoint

    /*
    * Updates a task instance with evidence files (for specific task types)
    * 
    * @param model
    * @param auth Authentication
    * @param session HttpSession
    * @param id Instancia ID Instance to load
    * @param params Form parameters
    * @param evidencias List of evidence files (if any)
    * @return The number of files uploaded (as a String)
    * @throws IllegalStateException
    * @throws IOException
    * @throws InterruptedException
    */
    
  • updateInstanciaTascaEvidencia() — 🟢 Endpoint

  • BigInteger() — ⚪ Interno

    /* Tipos de tarea permitidas */
    final Set<Integer> suitable = Set.of(1, 12, 14);
    
    boolean newTask = (suitable.contains(it.getTasca().getTipus().getTipus())) && it.getEstat().equals("E") && 
    (((Usuari)auth.getPrincipal()).isAdmin() || ((Usuari)auth.getPrincipal()).isGranted());
    
    if(suitable.contains(it.getTasca().getTipus().getTipus())) {   // Evidencia iterable
    String fileName = "";
    
    if(evidencias.size() > 1) {
    fileName = (newTask ? it.getIdInstanciaTasca().add(new BigInteger("1")).toString() : it.getIdInstanciaTasca().toString()) + ".zip";
    try (ZipOutputStream zipOut = new ZipOutputStream(new FileOutputStream(filePath+fileName))) {
    for(MultipartFile f : evidencias) {
    File tempFile = File.createTempFile("saic", "temp");
    tempFile.deleteOnExit();
    f.transferTo(tempFile);
        zipOut.putNextEntry(new ZipEntry(f.getOriginalFilename()));
        Files.copy(Paths.get(tempFile.getAbsolutePath()), zipOut);
    }
    }
    }
    else if(evidencias.size() == 1){
    MultipartFile evidencia = evidencias.get(0);
    fileName = (newTask ? it.getIdInstanciaTasca().add(new BigInteger("1")).toString() : it.getIdInstanciaTasca().toString()) + "." +
    FilenameUtils.getExtension(evidencia.getOriginalFilename());
    evidencia.transferTo(new File(filePath+fileName));
    }
    else {
    return "0";
    }
    
    if(newTask){
    InstanciaTasca itNew = new InstanciaTasca();
    itNew.setUsuari((Usuari)auth.getPrincipal());
    itNew.setDataFet(new Date(System.currentTimeMillis()));
    itNew.setData(new Date(System.currentTimeMillis()));
    itNew.setEstat("E");
    itNew.setEvidencia(fileName);
    itNew.setInstancia(it.getInstancia());
    itNew.setTasca(it.getTasca());
    itNew.setVersion(it.getVersion()+1);
    itNew.setIdInstanciaTasca(it.getIdInstanciaTasca().add(new BigInteger("1")));
    its.save(itNew);
    }
    else {
    it.setEvidencia(fileName);
    it.setEstat("E");
    this.saveChanges(model, auth, session, it);
    }
    }
    
    return Integer.toString(evidencias.size()); 
    }
    
    /*
    * Updates a task instance
    * 
    * @param model 
    * @param auth Authentication
    * @param session HttpSession
    * @param id Instancia ID Instance to load
    * @param params Form parameters
    * @param evidencias List of evidence files (if any)
    * @return The name of the view to render
    */
    
  • updateInstanciaTasca() — 🟢 Endpoint

  • BigInteger() — ⚪ Interno

  • if() — ⚪ Interno

    // SI/N
    
  • if() — ⚪ Interno

  • if() — ⚪ Interno

    /*
    * Saves changes to a task instance
    * 
    * @param model 
    * @param auth Authentication
    * @param session HttpSession
    * @param it InstanciaTasca to save
    */
    
  • saveChanges() — ⚪ Interno

    /*
    * Saves a draft of a task instance (for specific task types)
    * 
    * @param model
    * @param auth Authentication
    * @param session HttpSession
    * @param id Instancia ID Instance to load
    * @param text Text content of the draft
    * @param manual Whether the save was manually triggered by the user
    * @return The timestamp of the save operation formatted as a String
    */
    
  • saveDraft() — 🟢 Endpoint

  • Date() — ⚪ Interno

  • InstanciaTascaVer() — ⚪ Interno

  • Timestamp() — ⚪ Interno

    /*
    * Loads a procedure instance and its tasks into the model
    * @param model
    * @param auth Authentication
    * @param id Instancia ID Instance to load
    * @return The name of the view to render
    */
    
  • loadProcedure() — ⚪ Interno

  • InstanciaTransfer() — ⚪ Interno

  • InstanciaTascaTransfer() — ⚪ Interno

    /* Comprobar estado evidencia, si vacío inyectar contenido de plantilla asociada */
    if(it.getText() == null && active) {
    itt.setText(pls.addTemplateData(it, p.getText()));
    }
    else if(active){
    itt.setText(it.getText());
    }
    }
    else {
    itt.setCodiEvidencia(it.getTasca().getCodiEvidencia());
    itt.setNomEvidenciaCas(it.getTasca().getNomEvidenciaCas());
    itt.setNomEvidenciaVal(it.getTasca().getNomEvidenciaVal());
    itt.setEvidencia(it.getEvidencia());
    }
    
    if(it.getUsuari() != null) {
    itt.setUsuariFet(it.getUsuari().getNom() + " " + it.getUsuari().getCognoms());
    }
    else {
    itt.setUsuariFet("");
    }
    itt.setAssignedToUser(its.isUserAuthorized(((Usuari)auth.getPrincipal()), itt.getIdInstanciaTasca()));
    itt.setOldEvidences(its.findOlderByProces(it.getInstancia().getCentre(), it.getInstancia().getTitulacio(), it.getInstancia().getProces().getNomProces(), i.getProces().getCursActivacio(), this.pls));
    itt.setVersions(its.findOlderVersions(it.getInstancia().getIdInstancia(), it.getTasca().getIdTasca(), it.getVersion(), this.pls));
    tasks.add(itt);
    }
    model.addAttribute("tasks", tasks);
    model.addAttribute("flow", this.getFlowDiagram(i.getProces()));
    }
    
    /*
    * Get all drafts for a given task instance
    * @param model
    * @param auth Authentication
    * @param session HttpSession
    * @param id InstanciaTasca ID to load drafts for
    * @return The name of the view to render
    */
    
  • getDrafts() — 🟢 Endpoint

    /*
    * Get a specific draft for a given task instance
    * @param model
    * @param auth Authentication
    * @param session HttpSession
    * @param id InstanciaTasca ID to load drafts for
    * @param dataMod Timestamp of the draft to load
    * @return The InstanciaTascaVer object representing the draft
    */
    
  • getDraft() — 🟢 Endpoint

    /*
    * Restore a specific draft for a given task instance
    * @param model
    * @param auth Authentication
    * @param session HttpSession
    * @param id InstanciaTasca ID to restore draft for
    * @param dataMod Timestamp of the draft to restore
    * @return "1" if successful, "0" otherwise
    */
    
  • restoreDraft() — 🟢 Endpoint

    /*
    * Generate a flow diagram for a given process
    * @param proces The process to generate the flow diagram for
    * @return A String containing the flow diagram
    */
    
  • getFlowDiagram() — ⚪ Interno


🧩 Clase: ActiveSession

Ubicación: src\main\java\es\uv\saic\web\StatsController.java Estado de revisión: ⚠️ Pendiente

🔍 Métodos detectados:

  • setId() — ⚪ Interno
  • setUsername() — ⚪ Interno
  • setFullName() — ⚪ Interno
  • setNpi() — ⚪ Interno
  • setExpired() — ⚪ Interno
  • setLastRequest() — ⚪ Interno
  • getId() — ⚪ Interno
  • getUsername() — ⚪ Interno
  • getFullName() — ⚪ Interno
  • getNpi() — ⚪ Interno
  • getExpired() — ⚪ Interno
  • getLastRequest() — ⚪ Interno
  • setUsername() — ⚪ Interno
  • setFullName() — ⚪ Interno
  • setEmail() — ⚪ Interno
  • getUsername() — ⚪ Interno
  • getFullName() — ⚪ Interno
  • getEmail() — ⚪ Interno

    /*
    * Renders the admin stats page
    * 
    * @param model The model to pass data to the view
    * @param auth The authentication object
    * @return The name of the view to render
    */
    
  • getStats() — 🟢 Endpoint

  • ActiveSession() — ⚪ Interno

  • SimpleDateFormat() — ⚪ Interno

  • PendingEmail() — ⚪ Interno


🧩 Clase: PendingEmail

Ubicación: src\main\java\es\uv\saic\web\StatsController.java Estado de revisión: ⚠️ Pendiente

🔍 Métodos detectados:

  • setId() — ⚪ Interno
  • setUsername() — ⚪ Interno
  • setFullName() — ⚪ Interno
  • setNpi() — ⚪ Interno
  • setExpired() — ⚪ Interno
  • setLastRequest() — ⚪ Interno
  • getId() — ⚪ Interno
  • getUsername() — ⚪ Interno
  • getFullName() — ⚪ Interno
  • getNpi() — ⚪ Interno
  • getExpired() — ⚪ Interno
  • getLastRequest() — ⚪ Interno
  • setUsername() — ⚪ Interno
  • setFullName() — ⚪ Interno
  • setEmail() — ⚪ Interno
  • getUsername() — ⚪ Interno
  • getFullName() — ⚪ Interno
  • getEmail() — ⚪ Interno

    /*
    * Renders the admin stats page
    * 
    * @param model The model to pass data to the view
    * @param auth The authentication object
    * @return The name of the view to render
    */
    
  • getStats() — 🟢 Endpoint

  • ActiveSession() — ⚪ Interno

  • SimpleDateFormat() — ⚪ Interno

  • PendingEmail() — ⚪ Interno


🧩 Clase: StatsController

Ubicación: src\main\java\es\uv\saic\web\StatsController.java Estado de revisión: ⚠️ Pendiente

🔍 Métodos detectados:

  • setId() — ⚪ Interno
  • setUsername() — ⚪ Interno
  • setFullName() — ⚪ Interno
  • setNpi() — ⚪ Interno
  • setExpired() — ⚪ Interno
  • setLastRequest() — ⚪ Interno
  • getId() — ⚪ Interno
  • getUsername() — ⚪ Interno
  • getFullName() — ⚪ Interno
  • getNpi() — ⚪ Interno
  • getExpired() — ⚪ Interno
  • getLastRequest() — ⚪ Interno
  • setUsername() — ⚪ Interno
  • setFullName() — ⚪ Interno
  • setEmail() — ⚪ Interno
  • getUsername() — ⚪ Interno
  • getFullName() — ⚪ Interno
  • getEmail() — ⚪ Interno

    /*
    * Renders the admin stats page
    * 
    * @param model The model to pass data to the view
    * @param auth The authentication object
    * @return The name of the view to render
    */
    
  • getStats() — 🟢 Endpoint

  • ActiveSession() — ⚪ Interno

  • SimpleDateFormat() — ⚪ Interno

  • PendingEmail() — ⚪ Interno


🧩 Clase: SupervisionController

Ubicación: src\main\java\es\uv\saic\web\SupervisionController.java Estado de revisión: ⚠️ Pendiente

🔍 Métodos detectados:

/*
 * Renders the supervision page
 * 
 * @param model The model to pass data to the view
 * @param auth The authentication object
 * @param session The HTTP session
 * @return The name of the view to render
 */
  • supervisionForm() — 🟢 Endpoint
  • DummyDataTransfer() — ⚪ Interno
  • DummyDataTransfer() — ⚪ Interno
  • DummyDataTransfer() — ⚪ Interno
  • DummyDataTransfer() — ⚪ Interno
  • DummyDataTransfer() — ⚪ Interno
  • DummyDataTransfer() — ⚪ Interno
  • DummyDataTransfer() — ⚪ Interno
  • DummyDataTransfer() — ⚪ Interno
  • DummyDataTransfer() — ⚪ Interno
  • DummyDataTransfer() — ⚪ Interno
  • DummyDataTransfer() — ⚪ Interno
  • DummyDataTransfer() — ⚪ Interno
  • DummyDataTransfer() — ⚪ Interno
  • DummyDataTransfer() — ⚪ Interno
  • DummyDataTransfer() — ⚪ Interno
  • DummyDataTransfer() — ⚪ Interno

    /*
    * Handles the supervision search form submission
    * 
    * @param model The model to pass data to the view
    * @param auth The authentication object
    * @param centres The selected centers
    * @param cursos The selected years
    * @param titulacions The selected titulacions
    * @param procediments The selected procedures
    * @param evidencies The selected evidences
    * @param searchType The type of search (by procedures or evidences)
    * @param session The HTTP session
    * @return The name of the view to render
    */
    
  • supervisionSearch() — 🟢 Endpoint

  • SupervisionSearchParams() — ⚪ Interno

    /*
    * Restores the previous search results from the session
    * 
    * @param model The model to pass data to the view
    * @param auth The authentication object
    * @param session The HTTP session
    * @return The name of the view to render
    */
    
  • restoreSearch() — 🟢 Endpoint

    /*
    * Loads the search results based on the provided filters
    * 
    * @param model The model to pass data to the view
    * @param auth The authentication object
    * @param centres The selected centers
    * @param titulacions The selected titulacions
    * @param cursos The selected years
    * @param procediments The selected procedures
    * @param evidencies The selected evidences
    * @param searchType The type of search (by procedures or evidences)
    */
    
  • loadResults() — ⚪ Interno

  • InstanciaTransfer() — ⚪ Interno


🧩 Clase: TestController

Ubicación: src\main\java\es\uv\saic\web\TestController.java Estado de revisión: ⚠️ Pendiente

🔍 Métodos detectados:

/*
 * Generates PDFs for all instances of a given process and task for admin user
 * 
 * @param auth The authentication object
 * @return A string indicating the result of the operation
 * @throws FileNotFoundException If a required file is not found
 * @throws IOException If an I/O error occurs
 * @throws InterruptedException If the thread is interrupted
 */
  • generatePDF() — 🟢 Endpoint

🧩 Clase: WikiController

Ubicación: src\main\java\es\uv\saic\web\WikiController.java Estado de revisión: ⚠️ Pendiente

🔍 Métodos detectados:

/*
 * Renders the wiki page
 * 
 * @param model The model to pass data to the view
 * @param auth The authentication object
 * @return The name of the view to render
 */
  • renderWiki() — 🟢 Endpoint

    /*
    * Renders the wiki editor page
    * 
    * @param model The model to pass data to the view
    * @param auth The authentication object
    * @return The name of the view to render
    */
    
  • renderWikiEditor() — 🟢 Endpoint

    /*
    * Returns the wiki text for a given category
    * 
    * @param model The model to pass data to the view
    * @param auth The authentication object
    * @param categoria The category of the wiki
    * @return The wiki text
    */
    
  • renderWiki() — 🟢 Endpoint

    /*
    * Updates the wiki text for a given category
    * 
    * @param model The model to pass data to the view
    * @param auth The authentication object
    * @param cat The category of the wiki
    * @param text The new wiki text
    * @return The updated wiki object
    */
    
  • updateWiki() — 🟢 Endpoint


📈 Estadísticas finales

  • Total de clases: 18
  • Total de métodos: 347
  • Total de comentarios: 112

Fin del reporte de carpeta.