web
Detalle de clases, métodos y comentarios extraídos automáticamente
AdminController
Ubicación: src\main\java\es\uv\saic\web\AdminController.java
Estado de revisión: ⚠️ Pendiente
// 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
AjaxController
Ubicación: src\main\java\es\uv\saic\web\AjaxController.java
Estado de revisión: ⚠️ Pendiente
getActiveCentres()
— 🟢 EndpointDummyDataTransfer()
— ⚪ InternogetActiveTitulationsByCenter()
— 🟢 EndpointDummyDataTransfer()
— ⚪ 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
DashboardController
Ubicación: src\main\java\es\uv\saic\web\DashboardController.java
Estado de revisión: ⚠️ Pendiente
// GET para cargar el dashboard con toda su información
getOrganList()
— 🟢 Endpointif()
— ⚪ Internoif()
— ⚪ Internoif()
— ⚪ 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
DataController
Ubicación: src\main\java\es\uv\saic\web\DataController.java
Estado de revisión: ⚠️ Pendiente
// 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
DownloadController
Ubicación: src\main\java\es\uv\saic\web\DownloadController.java
Estado de revisión: ⚠️ Pendiente
/*
* 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()
— 🟢 EndpointFileSystemResource()
— ⚪ InternoFileSystemResource()
— ⚪ InternoFileNotFoundException()
— ⚪ 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
ExportController
Ubicación: src\main\java\es\uv\saic\web\ExportController.java
Estado de revisión: ⚠️ Pendiente
/*
* 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
IndexController
Ubicación: src\main\java\es\uv\saic\web\IndexController.java
Estado de revisión: ⚠️ Pendiente
/*
* Redirect root to /procedures if authenticated, to /login otherwise
* @param model
* @param auth Authentication
* @return "procedures" if authenticated, "redirect: login" otherwise
*/
getHome()
— 🟢 EndpointKeepAliveController
Ubicación: src\main\java\es\uv\saic\web\KeepAliveController.java
Estado de revisión: ⚠️ Pendiente
/*
* 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()
— 🟢 EndpointLoginController
Ubicación: src\main\java\es\uv\saic\web\LoginController.java
Estado de revisión: ⚠️ Pendiente
get()
— 🟢 EndpointManagersController
Ubicación: src\main\java\es\uv\saic\web\ManagersController.java
Estado de revisión: ⚠️ Pendiente
/*
* 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
ParseController
Ubicación: src\main\java\es\uv\saic\web\ParseController.java
Estado de revisión: ⚠️ Pendiente
/*
* 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()
— 🟢 Endpointif()
— ⚪ 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
ProceduresController
Ubicación: src\main\java\es\uv\saic\web\ProceduresController.java
Estado de revisión: ⚠️ Pendiente
/* 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
ActiveSession
Ubicación: src\main\java\es\uv\saic\web\StatsController.java
Estado de revisión: ⚠️ Pendiente
setId()
— ⚪ InternosetUsername()
— ⚪ InternosetFullName()
— ⚪ InternosetNpi()
— ⚪ InternosetExpired()
— ⚪ InternosetLastRequest()
— ⚪ InternogetId()
— ⚪ InternogetUsername()
— ⚪ InternogetFullName()
— ⚪ InternogetNpi()
— ⚪ InternogetExpired()
— ⚪ InternogetLastRequest()
— ⚪ InternosetUsername()
— ⚪ InternosetFullName()
— ⚪ InternosetEmail()
— ⚪ InternogetUsername()
— ⚪ InternogetFullName()
— ⚪ InternogetEmail()
— ⚪ 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
PendingEmail
Ubicación: src\main\java\es\uv\saic\web\StatsController.java
Estado de revisión: ⚠️ Pendiente
setId()
— ⚪ InternosetUsername()
— ⚪ InternosetFullName()
— ⚪ InternosetNpi()
— ⚪ InternosetExpired()
— ⚪ InternosetLastRequest()
— ⚪ InternogetId()
— ⚪ InternogetUsername()
— ⚪ InternogetFullName()
— ⚪ InternogetNpi()
— ⚪ InternogetExpired()
— ⚪ InternogetLastRequest()
— ⚪ InternosetUsername()
— ⚪ InternosetFullName()
— ⚪ InternosetEmail()
— ⚪ InternogetUsername()
— ⚪ InternogetFullName()
— ⚪ InternogetEmail()
— ⚪ 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
StatsController
Ubicación: src\main\java\es\uv\saic\web\StatsController.java
Estado de revisión: ⚠️ Pendiente
setId()
— ⚪ InternosetUsername()
— ⚪ InternosetFullName()
— ⚪ InternosetNpi()
— ⚪ InternosetExpired()
— ⚪ InternosetLastRequest()
— ⚪ InternogetId()
— ⚪ InternogetUsername()
— ⚪ InternogetFullName()
— ⚪ InternogetNpi()
— ⚪ InternogetExpired()
— ⚪ InternogetLastRequest()
— ⚪ InternosetUsername()
— ⚪ InternosetFullName()
— ⚪ InternosetEmail()
— ⚪ InternogetUsername()
— ⚪ InternogetFullName()
— ⚪ InternogetEmail()
— ⚪ 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
SupervisionController
Ubicación: src\main\java\es\uv\saic\web\SupervisionController.java
Estado de revisión: ⚠️ Pendiente
/*
* 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()
— 🟢 EndpointDummyDataTransfer()
— ⚪ InternoDummyDataTransfer()
— ⚪ InternoDummyDataTransfer()
— ⚪ InternoDummyDataTransfer()
— ⚪ InternoDummyDataTransfer()
— ⚪ InternoDummyDataTransfer()
— ⚪ InternoDummyDataTransfer()
— ⚪ InternoDummyDataTransfer()
— ⚪ InternoDummyDataTransfer()
— ⚪ InternoDummyDataTransfer()
— ⚪ InternoDummyDataTransfer()
— ⚪ InternoDummyDataTransfer()
— ⚪ InternoDummyDataTransfer()
— ⚪ InternoDummyDataTransfer()
— ⚪ InternoDummyDataTransfer()
— ⚪ InternoDummyDataTransfer()
— ⚪ 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
TestController
Ubicación: src\main\java\es\uv\saic\web\TestController.java
Estado de revisión: ⚠️ Pendiente
/*
* 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()
— 🟢 EndpointWikiController
Ubicación: src\main\java\es\uv\saic\web\WikiController.java
Estado de revisión: ⚠️ Pendiente
/*
* 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
✅ Fin del reporte de carpeta.