# 📁 Reporte de carpeta: `service` > Detalle de clases, métodos y comentarios extraídos automáticamente ### 🧩 Clase: `AcreditacioService` **Ubicación:** `src\main\java\es\uv\saic\service\AcreditacioService.java` **Estado de revisión:** ⚠️ *Pendiente* #### 🔍 Métodos detectados: - `getById()` — ⚪ Interno - `AcreditacioPK()` — ⚪ Interno - `getAll()` — ⚪ Interno - `getNextsCurrentYear()` — ⚪ Interno - `getByCursGrup()` — ⚪ Interno - `getByCursGrupTambit()` — ⚪ Interno - `getByCurs()` — ⚪ Interno - `getByOrgan()` — ⚪ Interno - `getByCentre()` — ⚪ Interno - `save()` — ⚪ Interno --- ### 🧩 Clase: `AuthProvider` **Ubicación:** `src\main\java\es\uv\saic\service\AuthProvider.java` **Estado de revisión:** ⚠️ *Pendiente* #### 🔍 Métodos detectados: - `authenticate()` — ⚪ Interno - `SimpleGrantedAuthority()` — ⚪ Interno - `SimpleGrantedAuthority()` — ⚪ Interno - `SimpleGrantedAuthority()` — ⚪ Interno - `SimpleGrantedAuthority()` — ⚪ Interno - `UsernamePasswordAuthenticationToken()` — ⚪ Interno - `BadCredentialsException()` — ⚪ Interno - `if()` — ⚪ Interno - `InitialDirContext()` — ⚪ Interno - `SearchControls()` — ⚪ Interno - `BadCredentialsException()` — ⚪ Interno - `BadCredentialsException()` — ⚪ Interno - `BadCredentialsException()` — ⚪ Interno - `Date()` — ⚪ Interno - `SimpleGrantedAuthority()` — ⚪ Interno - `SimpleGrantedAuthority()` — ⚪ Interno - `SimpleGrantedAuthority()` — ⚪ Interno - `UsernamePasswordAuthenticationToken()` — ⚪ Interno - `AuthenticationServiceException()` — ⚪ Interno - `BadCredentialsException()` — ⚪ Interno - `supports()` — ⚪ Interno --- ### 🧩 Clase: `CalendariService` **Ubicación:** `src\main\java\es\uv\saic\service\CalendariService.java` **Estado de revisión:** ⚠️ *Pendiente* #### 🔍 Métodos detectados: - `getAll()` — ⚪ Interno - `findById()` — ⚪ Interno - `getNextEvents()` — ⚪ Interno - `save()` — ⚪ Interno - `delete()` — ⚪ Interno --- ### 🧩 Clase: `CategoriaService` **Ubicación:** `src\main\java\es\uv\saic\service\CategoriaService.java` **Estado de revisión:** ⚠️ *Pendiente* #### 🔍 Métodos detectados: - `getAll()` — ⚪ Interno - `findById()` — ⚪ Interno - `findFirstLevel()` — ⚪ Interno - `findFirstLevelAndU()` — ⚪ Interno - `findByTipusTambit()` — ⚪ Interno - `findByTipusTambitAndU()` — ⚪ Interno - `findByPareTambit()` — ⚪ Interno - `findByPareTambitAndU()` — ⚪ Interno - `save()` — ⚪ Interno - `delete()` — ⚪ Interno --- ### 🧩 Clase: `DataService` **Ubicación:** `src\main\java\es\uv\saic\service\DataService.java` **Estado de revisión:** ⚠️ *Pendiente* #### 🔍 Métodos detectados: - `DataService()` — ⚪ Interno - `doImport()` — ⚪ Interno - `StringBuilder()` — ⚪ Interno ``` /* 1) Comprobar columnas obligatorias */ List mandatoryColumns = new ArrayList(); List knownColumns = new ArrayList(); if(clau.equals("ruct")) { this.setColumnsRuct(ambit, knownColumns, mandatoryColumns); } else { this.setColumnsCod(ambit, knownColumns, mandatoryColumns); } if(!this.checkColumns(header, mandatoryColumns, errors, locale)) { return errors.append("[ERROR] " + (locale.equals("es") ? "Se han encontrado errores en el fichero proporcionado. No se ha importado ningún registro. " : "S'han trobat errors al fitxer proporcionat. No s'ha importat cap registre.")).append("
").toString(); } /* 2) Eliminar las columnas obligatorias, conocidas e ignoradas. El resto se consideran indicadores a importar */ knownColumns.addAll(mandatoryColumns); knownColumns.addAll(ignoredColumns); for(String c : knownColumns) { headerInds.removeIf(v->v.equalsIgnoreCase(c)); } /* 3) Comprobar valores y tipos */ if(!this.checkValues(records, ambit, clau, errors, locale)) { return errors.append(("[ERROR] " + (locale.equals("es") ? "Se han encontrado errores en el fichero proporcionado. No se ha importado ningún registro. " : "S'han trobat errors al fitxer proporcionat. No s'ha importat cap registre."))).append("
").toString(); } /* 4) Importar datos */ Integer numRecords = 0; Integer numTuples = 0; for (CSVRecord record : records) { Map recordMap = new LinkedCaseInsensitiveMap<>(); recordMap.putAll(record.toMap()); String c = ambit.equals("T") || ambit.equals("C") ? translateCentre(recordMap.get("centre")) : null; String t = ambit.equals("T") ? translateTitulacio(recordMap.get("titulacio")) : null; String type = recordMap.get("tipus"); Integer curs = Integer.parseInt(recordMap.get("curs").replaceAll("\\D+","")); String cursEnquesta = recordMap.containsKey("curs_enquesta") ? recordMap.get("curs_enquesta") : null; String titulacioOrigen = recordMap.containsKey("titulacio_origen") ? recordMap.get("titulacio_origen") : null; String centreOrigen = recordMap.containsKey("centre_origen") ? recordMap.get("centre_origen") : null; Integer nenq = recordMap.containsKey("nenq") ? Integer.parseInt(recordMap.get("nenq").replaceAll("\\D+","")) : null; String ructStr = recordMap.containsKey("ruct") ? recordMap.get("ruct").replaceAll("\\D+","") : null; String cursd = recordMap.containsKey("cursd") ? recordMap.get("cursd") : null; Integer ruct = null; if(ructStr != null) { if(!(ructStr.isBlank() || ructStr.isEmpty() || ructStr.equals("NULL") || ructStr.equals("null"))) { ruct = Integer.parseInt(ructStr); } } Integer centre; Integer titulacio; if(clau.equals("ruct") && ambit.equals("T") && ruct != null) { Organ o = this.orgs.findByRuct(ruct); if(o == null) { errors.append("[WARNING] " + (locale.equals("es") ? "No se ha encontrado el RUCT "+ructStr+", se omiten los registros de esta entrada." : "No s'ha trobat el RUCT "+ructStr+", s'ometen els registres d'aquesta entrada.")).append("
").toString(); continue; } titulacio = o.getId().getLugar(); centre = o.getOrgan().getId().getLugar(); } else{ centre = ambit.equals("T") || ambit.equals("C") ? Integer.parseInt(c.replaceAll("\\D+","")) : null; titulacio = ambit.equals("T") ? Integer.parseInt(t) : null; if(!this.orgs.exists("T", titulacio)){ errors.append("[WARNING] " + (locale.equals("es") ? "No se ha encontrado la titulación con código "+titulacio+" pero se importa igualmente." : "No s'ha trobat la titulació amb codi "+titulacio+" però s'importa igualment")).append("
").toString(); } } if(header.contains("cursd")) { cursd = recordMap.get("cursd").replaceAll("\\D+",""); } for(String r : headerInds) { IndicadorEnquestaTmp ie = new IndicadorEnquestaTmp(); ie.setEnquesta(enquesta); ie.setTitulacio(titulacio); ie.setCentre(centre); ie.setCurs(curs); ie.setAmbit(ambit); ie.setEstudi(estudi); ie.setIndicador(r.replace("_min", "").replace("_max", "").toLowerCase()); ie.setNum(null); ie.setCursd(cursd); ie.setTipus(type); ie.setUsuari(usuari.getUsuari()); ie.setData(new Timestamp(System.currentTimeMillis())); ie.setCursEnquesta(cursEnquesta); ie.setTitulacioOrigen(titulacioOrigen); ie.setCentreOrigen(centreOrigen); ie.setNenq(nenq); ie.setRuct(ruct); try { ie.setValor(record.get(r).replace(",", ".")); } catch(Exception ex) { ie.setValor(null); } iets.save(ie); numRecords++; } numTuples++; } /* 5) Notificar administradores y usuario implicado */ this.sendNotificacion(usuari, enquesta, ambit, estudi); if(!usuari.isAdmin()){ this.sendConfirmation(usuari.getUsuari(), enquesta, ambit, estudi); } errors.append("[INFO] " + (locale.equals("es") ? ("Se han importado "+numRecords.toString()+" nuevos registros para un total de "+numTuples.toString()+" titulaciones") : ("[INFO] S'han importat "+numRecords.toString()+" nous registres per a un total de "+numTuples.toString()+" titulacions"))); return errors.toString(); } public String doDbImport(Integer dbOrigen, String vista, Integer srcCurs, Integer dstCurs, Usuari usuari, String enquesta, String ambit, String estudi, String locale, String clau, List ignoredColumns) throws SQLException, ClassNotFoundException { StringBuilder errors = new StringBuilder(); Datasource source = this.dss.findById(dbOrigen); if(source == null){ return errors.append("[ERROR] " + (locale.equals("es") ? "No se ha proporcionado un origen de datos válido." : "No s'ha proporcionat un origen de dades vàlid.")).append("
").toString(); } String query = "SELECT * FROM "+vista+ " WHERE curs = "+srcCurs; Class.forName(source.getDriver()); Integer numRecords = 0; Integer numTuples = 0; try (Connection connection = DriverManager.getConnection(source.getConn())) { /* 1) Ejecutar consulta */ Statement statement = connection.createStatement(); ResultSet resultset = statement.executeQuery(query); ResultSetMetaData resultMetadata = resultset.getMetaData(); int columns = resultMetadata.getColumnCount(); /* 2) Obtener resultados para procesar online y cerrar conexión */ RowSetFactory factory = RowSetProvider.newFactory(); CachedRowSet result = factory.createCachedRowSet(); result.populate(resultset); connection.close(); /* 3) Comprobar columnas obligatorias */ List mandatoryColumns = new ArrayList(); List knownColumns = new ArrayList(); if(clau.equals("ruct")) { this.setColumnsRuct(ambit, knownColumns, mandatoryColumns); } else { this.setColumnsCod(ambit, knownColumns, mandatoryColumns); } List allColNames = new ArrayList(); for(int i = 1; i <= columns; i++){ allColNames.add(resultMetadata.getColumnLabel(i).toLowerCase()); } List colnames = new ArrayList(allColNames); if(!this.checkColumns(colnames, mandatoryColumns, errors, locale)) { return errors.append("[ERROR] " + (locale.equals("es") ? "Se han encontrado errores al procesar la vista seleccionada. No se ha importado ningún registro. " : "S'han trobat errors al processar la vista seleccionada. No s'ha importat cap registre.")).append("
").toString(); } knownColumns.addAll(mandatoryColumns); knownColumns.addAll(ignoredColumns); for(String c : knownColumns) { colnames.removeIf(v->v.equalsIgnoreCase(c)); } if(ambit.equals("T") && !clau.equals("ruct")){ return errors.append("[ERROR] " + (locale.equals("es") ? "Los datos de titulación deben de importarse por código RUCT" : "Les dades de titulació s'han d'importar per códi RUCT.")).append("
").toString(); } /* 4) Importar datos */ while(result.next()) { Integer ruct = null; Integer titulacio = null; Integer centre = null; String c = ambit.equals("C") ? translateCentre(result.getString("centre")) : null; boolean isValid = true; if(ambit.equals("T")) { String ructStr = result.getString("ruct"); if(ructStr != null) { if(!(ructStr.isBlank() || ructStr.isEmpty() || ructStr.equals("NULL") || ructStr.equals("null"))) { ruct = Integer.parseInt(ructStr); } else{ isValid = false; } } else{ isValid = false; } Organ o = this.orgs.findByRuct(ruct); if(o == null) { errors.append("[WARNING] " + (locale.equals("es") ? "No se ha encontrado el RUCT "+ructStr+", se omiten los registros de esta entrada." : "No s'ha trobat el RUCT "+ructStr+", s'ometen els registres d'aquesta entrada.")).append("
").toString(); continue; } titulacio = o.getId().getLugar(); centre = o.getOrgan().getId().getLugar(); } else if(ambit.equals("C")) { centre = ambit.equals("T") || ambit.equals("C") ? Integer.parseInt(c.replaceAll("\\D+","")) : null; if(centre == null){ isValid = false; } } if(isValid) { Integer curs = dstCurs == null ? result.getInt("curs") : dstCurs; String tipus = allColNames.contains("tipus") ? result.getString("tipus") : "avg"; String cursEnquesta = allColNames.contains("curs_enquesta") ? result.getString("curs_enquesta") : null; String titulacioOrigen = allColNames.contains("titulacio_origen") ? result.getString("titulacio_origen") : null; String centreOrigen = allColNames.contains("centre_origen") ? result.getString("centre_origen") : null; Integer nenq = allColNames.contains("nenq") ? result.getInt("nenq") : null; String cursd = allColNames.contains("cursd") ? result.getString("cursd") : null; for(String colName : colnames) { IndicadorEnquestaTmp ie = new IndicadorEnquestaTmp(); ie.setEnquesta(enquesta); ie.setTitulacio(titulacio); ie.setCentre(centre); ie.setCurs(curs); ie.setAmbit(ambit); ie.setEstudi(estudi); ie.setIndicador(colName.replace("_min", "").replace("_max", "").toLowerCase()); ie.setNum(null); ie.setCursd(cursd); ie.setTipus(tipus); ie.setUsuari(usuari.getUsuari()); ie.setData(new Timestamp(System.currentTimeMillis())); ie.setCursEnquesta(cursEnquesta); ie.setTitulacioOrigen(titulacioOrigen); ie.setCentreOrigen(centreOrigen); ie.setNenq(nenq); ie.setRuct(ruct); try { ie.setValor(result.getString(colName).replace(",", ".")); } catch(Exception ex) { ie.setValor(null); } iets.save(ie); numRecords++; } numTuples++; } } } /* 5) Notificar administradores y usuario implicado */ this.sendNotificacion(usuari, enquesta, ambit, estudi); if(!usuari.isAdmin()){ this.sendConfirmation(usuari.getUsuari(), enquesta, ambit, estudi); } errors.append("[INFO] " + (locale.equals("es") ? ("Se han importado "+numRecords.toString()+" nuevos registros para un total de "+numTuples.toString()+" titulaciones") : ("[INFO] S'han importat "+numRecords.toString()+" nous registres per a un total de "+numTuples.toString()+" titulacions"))); return errors.toString(); } public List listTableColumns(Integer dbOrigen, String vista, String locale) throws SQLException, ClassNotFoundException { Datasource source = this.dss.findById(dbOrigen); String query = "SELECT * FROM "+vista+" LIMIT 1;"; Class.forName(source.getDriver()); List colNames = new ArrayList(); try (Connection connection = DriverManager.getConnection(source.getConn())) { Statement statement = connection.createStatement(); ResultSet resultset = statement.executeQuery(query); ResultSetMetaData resultMetadata = resultset.getMetaData(); int columns = resultMetadata.getColumnCount(); for(int i = 1; i <= columns; i++){ colNames.add(resultMetadata.getColumnLabel(i)); } } return colNames; } public List checkDuplicates(String enquesta) { return this.iets.checkDuplicates(enquesta); } public Integer consolidateByEnquesta(String enquesta) { if(this.iets.checkDuplicates(enquesta).size() > 0) { return -1; } else { Integer i = this.ies.consolidateByEnquesta(enquesta); this.iets.deleteByEnquesta(enquesta); return i; } } public Integer countByEnquesta(String enquesta) { return this.iets.countByEnquesta(enquesta); } public List checkIntegrity(String enquesta){ return this.iets.checkIntegrity(enquesta); } public Integer deleteFromCurrent(String enquesta){ return this.iets.deleteFromCurrent(enquesta); } public Integer deleteFromPending(String enquesta){ return this.iets.deleteFromPending(enquesta); } private void setColumnsCod(String ambit, List knownColumns, List mandatoryColumns) { knownColumns.addAll(Arrays.asList("ruct", "curs_enquesta", "centre_origen", "titulacio_origen", "nenq", "cursd")); if(ambit.equals("U")) { mandatoryColumns.addAll(Arrays.asList("curs", "tipus")); } else if(ambit.equals("C")) { mandatoryColumns.addAll(Arrays.asList("curs", "centre", "tipus")); } else { mandatoryColumns.addAll(Arrays.asList("curs", "titulacio", "centre", "tipus")); } } private void setColumnsRuct(String ambit, List knownColumns, List mandatoryColumns) { knownColumns.addAll(Arrays.asList("curs_enquesta", "centre_origen", "titulacio_origen", "nenq", "cursd")); if(ambit.equals("U")) { mandatoryColumns.addAll(Arrays.asList("curs", "tipus")); } else if(ambit.equals("C")) { mandatoryColumns.addAll(Arrays.asList("curs", "tipus", "ruct")); knownColumns.add("centre"); } else { mandatoryColumns.addAll(Arrays.asList("curs", "tipus", "ruct")); knownColumns.addAll(Arrays.asList("centre", "titulacio")); } } private boolean checkColumns(List header, List mandatoryColumns, StringBuilder errors, String locale) { boolean isvalid = true; for(String c : mandatoryColumns) { if(!header.stream().anyMatch(c::equalsIgnoreCase)) { isvalid = false; errors.append((locale.equals("es") ? "[ERROR] No se ha encontrado la columna " : "[ERROR] No s'ha trobat la columna ") +c).append("
"); } } return isvalid; } private boolean checkValues(List records, String ambit, String clau, StringBuilder errors, String locale) { boolean isvalid = true; Integer numRecords = 0; for (CSVRecord record : records) { Map recordMap = new LinkedCaseInsensitiveMap<>(); recordMap.putAll(record.toMap()); String type = recordMap.get("tipus"); numRecords++; if((ambit.equals("T") || ambit.equals("C")) && !clau.equals("ruct")) { String c = recordMap.get("centre"); c = translateCentre(c); if(!StringUtils.isNumeric(c.replace("C", ""))) { isvalid = false; errors.append("[ERROR] " + (locale.equals("es") ? "En la linea " : "A la línia ") + numRecords.toString() + ": " + (locale.equals("es") ? c+" no es un valor válido para la columna centre." : c+" no es un valor vàlid per la columna centre.")).append("
"); } } if(ambit.equals("T")) { String t = recordMap.get("titulacio"); if(!clau.equals("ruct")) { t = translateTitulacio(t); if(!StringUtils.isNumeric(t)) { isvalid = false; errors.append("[ERROR] " + (locale.equals("es") ? "En la linea " : "A la línia ") + numRecords.toString() + ": " + (locale.equals("es") ? t+" no es un valor válido para la columna titulacio." : t+" no es un valor vàlid per la columna titulacio.")).append("
"); } } else { String ructStr = recordMap.get("ruct"); if(!ructStr.isBlank() && ructStr.isEmpty() && ructStr.equals("NULL") && ructStr.equals("null") && !StringUtils.isNumeric(t)) { isvalid = false; errors.append("[ERROR] " + (locale.equals("es") ? "En la linea " : "A la línia ") + numRecords.toString() + ": " + (locale.equals("es") ? ructStr+" no es un valor válido para la columna ruct." : ructStr+" no es un valor vàlid per la columna ruct.")).append("
"); } } } if(!type.equals("avg") && !type.equals("min") && !type.equals("max")) { isvalid = false; errors.append("[ERROR] " + (locale.equals("es") ? "En la linea " : "A la línia ") + numRecords.toString() + ": " + (locale.equals("es") ? type+" no es un valor válido para la columna tipus." : type+" no es un valor vàlid per la columna tipus.")).append("
"); } } return isvalid; } private void sendNotificacion(Usuari usuari, String enquesta, String ambit, String estudi) { try { this.ems.sendMail("saic@uv.es", "[SYS] Datos pendientes de consolidar", "Estimado/a administrador: \n" + "\n" + "El usuario "+usuari.getUsuari()+" ha importado nuevos datos referentes a: \n" + "Origen: "+enquesta+"\n" + "Ámbito: "+ambit+"\n" + "Tipo titulación: "+estudi+"\n" + "\n" + "Acceda a https://saic.uv.es y realice las acciones pertinentes para consolidar los datos. "); } catch (MessagingException e) { e.printStackTrace(); } } private void sendConfirmation(String to, String enquesta, String ambit, String estudi) { try { this.ems.sendMail(to, "[SYS] Nuevos datos importados", "Estimado/a usuario: \n" + "\n" + "Se han importado correctamente nuevos datos referentes a: \n" + "Origen: "+enquesta+"\n" + "Ámbito: "+ambit+"\n" + "Tipo titulación: "+estudi+"\n" + "\n" + "Los datos se quedarán en estado pendiente de consolidar hasta que un administrador inicie el proceso de consolidación."); } catch (MessagingException e) { e.printStackTrace(); } } /* Exepciones en el código de titulación que hay que traducir a código SAIC */ ``` - `translateTitulacio()` — ⚪ Interno ``` /* Exepciones en el código de centro que hay que traducir a código SAIC */ ``` - `translateCentre()` — ⚪ Interno --- ### 🧩 Clase: `DatasourceService` **Ubicación:** `src\main\java\es\uv\saic\service\DatasourceService.java` **Estado de revisión:** ⚠️ *Pendiente* #### 🔍 Métodos detectados: - `findAll()` — ⚪ Interno - `findById()` — ⚪ Interno --- ### 🧩 Clase: `DocumentService` **Ubicación:** `src\main\java\es\uv\saic\service\DocumentService.java` **Estado de revisión:** ⚠️ *Pendiente* #### 🔍 Métodos detectados: - `getAll()` — ⚪ Interno - `findById()` — ⚪ Interno - `findAllByCategoriaOrgan()` — ⚪ Interno - `findByCategoriaOrgan()` — ⚪ Interno - `findByCategoriaNom()` — ⚪ Interno - `findByCategoriaTipus()` — ⚪ Interno - `archive()` — ⚪ Interno - `archiveByOrgan()` — ⚪ Interno - `exists()` — ⚪ Interno - `save()` — ⚪ Interno - `delete()` — ⚪ Interno - `upload()` — ⚪ Interno - `File()` — ⚪ Interno --- ### 🧩 Clase: `EmailService` **Ubicación:** `src\main\java\es\uv\saic\service\EmailService.java` **Estado de revisión:** ⚠️ *Pendiente* #### 🔍 Métodos detectados: - `EmailService()` — ⚪ Interno - `sendActiveTaskNext()` — ⚪ Interno - `addEmail()` — ⚪ Interno - `getNextEmail()` — ⚪ Interno - `getPendingQueue()` — ⚪ Interno - `pendingQueueIsEmpty()` — ⚪ Interno - `sendMail()` — ⚪ Interno - `SimpleMailMessage()` — ⚪ Interno - `sendNewTaskMail()` — ⚪ Interno - `Qualitat()` — ⚪ Interno ``` //saic.uv.es per a accedir al Sistema d'Assegurament Intern de l ``` - `Qualitat()` — ⚪ Interno - `Calidad()` — ⚪ Interno ``` //saic.uv.es para acceder al Sistema de Aseguramiento Interno de l ``` - `Calidad()` — ⚪ Interno - `sendCalendarMail()` — ⚪ Interno - `SimpleDateFormat()` — ⚪ Interno --- ### 🧩 Clase: `EvidenciaIndicadorEnquestaService` **Ubicación:** `src\main\java\es\uv\saic\service\EvidenciaIndicadorEnquestaService.java` **Estado de revisión:** ⚠️ *Pendiente* #### 🔍 Métodos detectados: - `getIndicadors()` — ⚪ Interno - `getByProcesEvidencia()` — ⚪ Interno - `getAll()` — ⚪ Interno - `removeByProcesEvidencia()` — ⚪ Interno - `save()` — ⚪ Interno --- ### 🧩 Clase: `GraficaService` **Ubicación:** `src\main\java\es\uv\saic\service\GraficaService.java` **Estado de revisión:** ⚠️ *Pendiente* #### 🔍 Métodos detectados: - `findLikeAmbit()` — ⚪ Interno - `findLikeAmbitAndEstudi()` — ⚪ Interno --- ### 🧩 Clase: `IndicadorEnquestaService` **Ubicación:** `src\main\java\es\uv\saic\service\IndicadorEnquestaService.java` **Estado de revisión:** ⚠️ *Pendiente* #### 🔍 Métodos detectados: - `findAll()` — ⚪ Interno - `findTypes()` — ⚪ Interno - `findByEnquestaCursAmbitEstudi()` — ⚪ Interno - `findByEnquestaCursAmbitEstudiCentre()` — ⚪ Interno - `findByEnquestaCursAmbitEstudiCentreTitulacio()` — ⚪ Interno - `getAssociatedInds()` — ⚪ Interno - `getAllInds()` — ⚪ Interno - `if()` — ⚪ Interno - `if()` — ⚪ Interno - `if()` — ⚪ Interno - `if()` — ⚪ Interno - `getAllInds()` — ⚪ Interno - `getGraphData()` — ⚪ Interno - `getGraphData()` — ⚪ Interno - `contains()` — ⚪ Interno - `deleteCentroNoAdscrito()` — ⚪ Interno - `deleteByEnquesta()` — ⚪ Interno - `deleteByEnquestaCurs()` — ⚪ Interno - `fixBiennials()` — ⚪ Interno - `consolidateByEnquesta()` — ⚪ Interno - `deleteAll()` — ⚪ Interno - `save()` — ⚪ Interno - `saveAll()` — ⚪ Interno --- ### 🧩 Clase: `IndicadorEnquestaTmpService` **Ubicación:** `src\main\java\es\uv\saic\service\IndicadorEnquestaTmpService.java` **Estado de revisión:** ⚠️ *Pendiente* #### 🔍 Métodos detectados: - `findAll()` — ⚪ Interno - `findByEnquestaCursAmbitEstudi()` — ⚪ Interno - `deleteByEnquesta()` — ⚪ Interno - `deleteByEnquestaCursAmbitEstudi()` — ⚪ Interno - `checkDuplicates()` — ⚪ Interno - `deleteFromCurrent()` — ⚪ Interno - `deleteFromPending()` — ⚪ Interno - `deleteDuplicates()` — ⚪ Interno - `countByEnquesta()` — ⚪ Interno - `checkIntegrity()` — ⚪ Interno - `deleteAll()` — ⚪ Interno - `save()` — ⚪ Interno - `saveAll()` — ⚪ Interno --- ### 🧩 Clase: `IndicadorService` **Ubicación:** `src\main\java\es\uv\saic\service\IndicadorService.java` **Estado de revisión:** ⚠️ *Pendiente* #### 🔍 Métodos detectados: - `IndicadorService()` — ⚪ Interno - `getFromTitulacion()` — ⚪ Interno - `URL()` — ⚪ Interno - `String()` — ⚪ Interno - `extract()` — ⚪ Interno - `InputSource()` — ⚪ Interno ``` // has subin ``` - `for()` — ⚪ Interno - `Indicador()` — ⚪ Interno - `if()` — ⚪ Interno - `Indicador()` — ⚪ Interno - `if()` — ⚪ Interno - `getGraphData()` — ⚪ Interno - `URL()` — ⚪ Interno - `String()` — ⚪ Interno - `extractAll()` — ⚪ Interno - `InputSource()` — ⚪ Interno ``` // has subin ``` - `for()` — ⚪ Interno - `Indicador()` — ⚪ Interno - `Indicador()` — ⚪ Interno --- ### 🧩 Clase: `InformeService` **Ubicación:** `src\main\java\es\uv\saic\service\InformeService.java` **Estado de revisión:** ⚠️ *Pendiente* #### 🔍 Métodos detectados: - `findByGrupWeb()` — ⚪ Interno - `findByGrupWebTambit()` — ⚪ Interno - `findById()` — ⚪ Interno --- ### 🧩 Clase: `InstanciaService` **Ubicación:** `src\main\java\es\uv\saic\service\InstanciaService.java` **Estado de revisión:** ⚠️ *Pendiente* #### 🔍 Métodos detectados: - `findByID()` — ⚪ Interno - `getReportFromInstancia()` — ⚪ Interno - `filterSupervisables()` — ⚪ Interno - `filterSupervisable()` — ⚪ Interno - `filterSupervisablesByEvidencies()` — ⚪ Interno - `save()` — ⚪ Interno - `findAll()` — ⚪ Interno - `findAllIds()` — ⚪ Interno - `findByOrganCursNom()` — ⚪ Interno - `findByCentreCursNom()` — ⚪ Interno - `findByIdProces()` — ⚪ Interno - `findByOrganBetweenCurs()` — ⚪ Interno - `exists()` — ⚪ Interno - `exists()` — ⚪ Interno - `instantiateT()` — ⚪ Interno - `BigInteger()` — ⚪ Interno - `instantiateC()` — ⚪ Interno - `BigInteger()` — ⚪ Interno - `instantiateU()` — ⚪ Interno - `BigInteger()` — ⚪ Interno - `deleteInstance()` — ⚪ Interno - `clearInstance()` — ⚪ Interno --- ### 🧩 Clase: `InstanciaTascaService` **Ubicación:** `src\main\java\es\uv\saic\service\InstanciaTascaService.java` **Estado de revisión:** ⚠️ *Pendiente* #### 🔍 Métodos detectados: - `findByInstancia()` — ⚪ Interno - `findByInstanciaTascap()` — ⚪ Interno - `findOlderVersions()` — ⚪ Interno - `TascaVersioTransfer()` — ⚪ Interno - `findActiveByInstancia()` — ⚪ Interno - `findActivesByType()` — ⚪ Interno - `isUserAuthorized()` — ⚪ Interno - `if()` — ⚪ Interno - `getReportFromProcesOrgan()` — ⚪ Interno - `getReportFromNomProcesOrgan()` — ⚪ Interno - `system()` — ⚪ Interno - `ProcessBuilder()` — ⚪ Interno - `ProcessBuilder()` — ⚪ Interno - `if()` — ⚪ Interno - `if()` — ⚪ Interno - `if()` — ⚪ Interno - `ProcessBuilder()` — ⚪ Interno - `if()` — ⚪ Interno - `File()` — ⚪ Interno - `File()` — ⚪ Interno - `if()` — ⚪ Interno - `saveChanges()` — ⚪ Interno - `Date()` — ⚪ Interno - `if()` — ⚪ Interno - `Date()` — ⚪ Interno - `InstanciaTasca()` — ⚪ Interno - `Date()` — ⚪ Interno - `BigInteger()` — ⚪ Interno - `Email()` — ⚪ Interno - `findOlderByProces()` — ⚪ Interno - `EvidenciaTransfer()` — ⚪ Interno - `findById()` — ⚪ Interno - `getPastTasks()` — ⚪ Interno - `getNext()` — ⚪ Interno - `getUsers()` — ⚪ Interno - `getLastByProcName()` — ⚪ Interno - `deactivateAll()` — ⚪ Interno - `remove()` — ⚪ Interno - `removeAllVersions()` — ⚪ Interno - `save()` — ⚪ Interno --- ### 🧩 Clase: `InstanciaTascaVerService` **Ubicación:** `src\main\java\es\uv\saic\service\InstanciaTascaVerService.java` **Estado de revisión:** ⚠️ *Pendiente* #### 🔍 Métodos detectados: - `findById()` — ⚪ Interno - `findByIdInstanciaTasca()` — ⚪ Interno - `save()` — ⚪ Interno - `delete()` — ⚪ Interno - `deleteByIdInstancia()` — ⚪ Interno --- ### 🧩 Clase: `LinkService` **Ubicación:** `src\main\java\es\uv\saic\service\LinkService.java` **Estado de revisión:** ⚠️ *Pendiente* #### 🔍 Métodos detectados: - `findAll()` — ⚪ Interno - `findById()` — ⚪ Interno - `findByToken()` — ⚪ Interno - `findByRuct()` — ⚪ Interno - `increase()` — ⚪ Interno - `save()` — ⚪ Interno - `delete()` — ⚪ Interno --- ### 🧩 Clase: `NoticiaService` **Ubicación:** `src\main\java\es\uv\saic\service\NoticiaService.java` **Estado de revisión:** ⚠️ *Pendiente* #### 🔍 Métodos detectados: - `findAll()` — ⚪ Interno - `findVisibles()` — ⚪ Interno --- ### 🧩 Clase: `OrganService` **Ubicación:** `src\main\java\es\uv\saic\service\OrganService.java` **Estado de revisión:** ⚠️ *Pendiente* #### 🔍 Métodos detectados: - `findByID()` — ⚪ Interno - `findByRuct()` — ⚪ Interno - `exists()` — ⚪ Interno - `findAll()` — ⚪ Interno - `findCurrentCentres()` — ⚪ Interno - `findTitulacionsByCentre()` — ⚪ Interno - `getTitulacions()` — ⚪ Interno - `getCentres()` — ⚪ Interno - `getActiveCentres()` — ⚪ Interno - `getTitulacionsByCentre()` — ⚪ Interno - `getUsuariTitulacions()` — ⚪ Interno - `getUsuariCentres()` — ⚪ Interno - `getTitulacionsByCentres()` — ⚪ Interno - `getTitulacionsByTypeCentre()` — ⚪ Interno - `findActiveTitulacionsByCentreTambit()` — ⚪ Interno - `getEquivalents()` — ⚪ Interno --- ### 🧩 Clase: `ParserService` **Ubicación:** `src\main\java\es\uv\saic\service\ParserService.java` **Estado de revisión:** ⚠️ *Pendiente* #### 🔍 Métodos detectados: - `ParserService()` — ⚪ Interno - `doParse()` — ⚪ Interno - `parseOtros()` — ⚪ Interno - `parsePas()` — ⚪ Interno - `parseEvalProf()` — ⚪ Interno - `parseGrauFromUqServer()` — ⚪ Interno - `parseMasterFromUqServer()` — ⚪ Interno - `parseDoctorado()` — ⚪ Interno - `execute()` — ⚪ Interno - `if()` — ⚪ Interno - `if()` — ⚪ Interno - `IndicadorEnquesta()` — ⚪ Interno - `if()` — ⚪ Interno - `executeRows()` — ⚪ Interno - `if()` — ⚪ Interno - `if()` — ⚪ Interno - `IndicadorEnquesta()` — ⚪ Interno - `if()` — ⚪ Interno - `translate()` — ⚪ Interno - `parseGrauDades1er()` — ⚪ Interno - `CONCAT()` — ⚪ Interno - `CONCAT()` — ⚪ Interno - `CONCAT()` — ⚪ Interno - `CONCAT()` — ⚪ Interno - `CONCAT()` — ⚪ Interno - `CONCAT()` — ⚪ Interno - `parseGrauDades3er()` — ⚪ Interno - `CONCAT()` — ⚪ Interno - `CONCAT()` — ⚪ Interno - `CONCAT()` — ⚪ Interno - `CONCAT()` — ⚪ Interno - `CONCAT()` — ⚪ Interno - `CONCAT()` — ⚪ Interno - `parseGrauDadesGraduats()` — ⚪ Interno - `CONCAT()` — ⚪ Interno - `CONCAT()` — ⚪ Interno - `CONCAT()` — ⚪ Interno - `CONCAT()` — ⚪ Interno - `parseGrauProfes()` — ⚪ Interno - `CONCAT()` — ⚪ Interno - `CONCAT()` — ⚪ Interno - `CONCAT()` — ⚪ Interno - `CONCAT()` — ⚪ Interno - `parseDadesPas()` — ⚪ Interno - `CONCAT()` — ⚪ Interno - `CONCAT()` — ⚪ Interno - `parseMasterData()` — ⚪ Interno - `CONCAT()` — ⚪ Interno ``` /*+ "AND a.TIT NOT IN(SELECT DISTINCT(TIT) FROM MDB_master.Mitjanes_final_codigeneric) " + "UNION " + "SELECT 'data' AS enquesta, b.tit AS tit, c.cmostrar AS centre, CONCAT('20', RIGHT(ACURS, 2)) AS curs, null AS cursd, 'T' AS ambit, 'm' AS estudi, " + "IT01 AS it01, IT02 AS it02, IT03 AS it03, IT04 AS it04, IT05 AS it05, IT06 AS it06, " + "IT07 AS it07, IT08 AS it08, IT09 AS it09, IT10 AS it10, IT11 AS it11, IT12 AS it12, " + "IT13 AS it13, IT14 AS it14, IT15 AS it15, IT16 AS it16, IT17 AS it17, IT18 AS it18, " + "IT19 AS it19, IT21 AS it21, IT22 AS it22, IT23 AS it23, IT24 AS it24, IT25 AS it25, " + "IT26 AS it26, IT27 AS it27, IT28 AS it28, IT29 AS it29, IT30 AS it30, IT30 AS it30, " + "IT31 AS it31, IT32 AS it32, IT33 AS it33, G_satis AS g_satis, G_RelQP AS g_relqp, " + "G_QProf AS g_qprof, G_Postg AS g_postg, G_Interes AS g_interes, G_Util AS g_util, gcovidm AS gcovid " + "FROM MDB_master.Mitjanes_final_codigeneric a " + "LEFT JOIN MDB_master.ESTUDIS b ON a.tit = b.tit " + "LEFT JOIN MDB_master.Centre c ON b.centre = c.centre " + "WHERE Total >= 3 AND CONCAT('20', RIGHT(ACURS, 2)) >= "+year+";",*/ "SELECT 'data' AS enquesta, NULL AS tit, b.cmostrar AS centre, CONCAT('20', RIGHT(ACURS, 2)) AS curs, null AS cursd, 'C' AS ambit, 'm' AS estudi, " + "IT01 AS it01, IT02 AS it02, IT03 AS it03, IT04 AS it04, IT05 AS it05, IT06 AS it06, " + "IT07 AS it07, IT08 AS it08, IT09 AS it09, IT10 AS it10, IT11 AS it11, IT12 AS it12, IT13 AS it13, " + "IT14 AS it14, IT15 AS it15, IT16 AS it16, IT17 AS it17, IT18 AS it18, IT19 AS it19, " + "IT21 AS it21, IT22 AS it22, IT23 AS it23, IT24 AS it24, IT25 AS it25, IT26 AS it26, " + "IT27 AS it27, IT28 AS it28, IT29 AS it29, IT30 AS it30, IT30 AS it30, IT31 AS it31, " + "IT32 AS it32, IT33 AS it33, G_satis AS g_satis, G_RelQP AS g_relqp, G_QProf AS g_qprof, " + "G_Postg AS g_postg, G_Interes AS g_interes, G_Util AS g_util " + "FROM MDB_master.Mitjanes_final_xcentre a " + "LEFT JOIN MDB_master.Centre b ON a.centre = b.centre WHERE CONCAT('20', RIGHT(ACURS, 2)) >= "+year+";", "SELECT 'data' AS enquesta, NULL AS tit, NULL AS centre, CONCAT('20', RIGHT(ACURS, 2)) AS curs, null AS cursd, 'U' AS ambit, 'm' AS estudi, " + "IT01 AS it01, IT02 AS it02, IT03 AS it03, IT04 AS it04, IT05 AS it05, IT06 AS it06, " + "IT07 AS it07, IT08 AS it08, IT09 AS it09, IT10 AS it10, IT11 AS it11, IT12 AS it12, IT13 AS it13, " + "IT14 AS it14, IT15 AS it15, IT16 AS it16, IT17 AS it17, IT18 AS it18, IT19 AS it19, " + "IT21 AS it21, IT22 AS it22, IT23 AS it23, IT24 AS it24, IT25 AS it25, IT26 AS it26, " + "IT27 AS it27, IT28 AS it28, IT29 AS it29, IT30 AS it30, IT30 AS it30, IT31 AS it31, " + "IT32 AS it32, IT33 AS it33, G_satis AS g_satis, G_RelQP AS g_relqp, G_QProf AS g_qprof, " + "G_Postg AS g_postg, G_Interes AS g_interes, G_Util AS g_util " + "FROM MDB_master.Mitjanes_final_global " + "WHERE CONCAT('20', RIGHT(ACURS, 2)) >= "+year+";", "SELECT 'data' AS enquesta, NULL AS tit, b.cmostrar AS centre, CONCAT('20', RIGHT(ACURS, 2)) AS curs, null AS cursd, 'C' AS ambit, 'm' AS estudi, " + "max_it13m AS it13_max, min_it13m AS it13_min, max_it14m AS it14_max, min_it14m AS it14_min, " + "max_it15m AS it15_max, min_it15m AS it15_min, max_it16m AS it16_max, min_it16m AS it16_min, " + "max_it17m AS it17_max, min_it17m AS it17_min " + "FROM MDB_master.MinMax_final_xcentre a " + "LEFT JOIN MDB_master.Centre b ON a.centre = b.centre WHERE CONCAT('20', RIGHT(ACURS, 2)) >= "+year+";"}; return this.execute(statement, queries); } private int parseMasterDataG(Connection connection, String year) throws SQLException { Statement statement = connection.createStatement(); String[] queries = { "SELECT 'data_g' AS enquesta, b.tit AS tit, c.cmostrar AS centre, CONCAT('20', RIGHT(cursf, 2)) AS curs, null AS cursd, 'T' AS ambit, 'm' AS estudi, " + "IT01m_pf AS it01_pf, IT02m_pf AS it02_pf, IT03m_pf AS it03_pf, IT04m_comp AS it04_comp, " + "IT04m_comp AS it05_comp, IT06m_comp AS it06_comp, IT07m_comp AS it07_comp, " + "IT08m_comp AS it08_comp, IT09m_comp AS it09_comp, IT10m_comp AS it10_comp, " + "IT11m_de AS it11_de, IT12m_de AS it12_de, IT13m_de AS it13_de, IT14m_de AS it14_de, " + "IT15m_de AS it15_de, IT16m_de AS it16_de, (IT17_pe_S/(IT17_pe_S+IT17_pe_N))*100 AS it17_pe, " + "IT18m_pe AS it18_pe, IT19m_pe AS it19_pe, IT20m_pe AS it20_pe, IT21m_pe AS it21_pe, " + "IT22m_pe AS it22_pe, IT23m_pe AS it23_pe, (IT24_mob_S/(IT24_mob_S+IT24_mob_N))*100 AS it24_mob, " + "IT25_mob1 AS it25_mob1, IT25_mob2 AS it25_mob2, IT25_mob3 AS it25_mob3, IT25_mob4 AS it25_mob4, " + "IT26m_mob AS it26_mob, IT27m_mob AS it27_mob, IT28m_mob AS it28_mob, IT29m_mob AS it29_mob, " + "IT30m_mob AS it30_mob, IT26m_mob AS it26_mob, IT31m_mob AS it31_mob, IT32m_mob AS it32_mob, " + "IT33m_mob AS it33_mob, IT34m_tfm AS it34_tfm, IT35m_tfm AS it35_tfm, IT36m_tfm AS it36_tfm, " + "IT37m_tfm AS it37_tfm, IT38m_tfm AS it38_tfm, IT40m_treb AS it40_treb, IT41m_treb AS it41_treb, " + "IT41m_treb AS it41_treb, IT42m_treb AS it42_treb, IT43m_treb AS it43_treb, gm_Qprof AS g_qprof, " + "gm_instal AS g_instal, gm_exp AS g_exp, gm_recomana AS g_recomana " + "FROM MDB_master.Mitjanes_Gxtitcursf a " + "LEFT JOIN MDB_master.ESTUDIS b ON a.tit = b.tit " + "LEFT JOIN MDB_master.Centre c ON b.centre = c.centre WHERE CONCAT('20', RIGHT(cursf, 2)) >= "+year+";", "SELECT 'data_g' AS enquesta, NULL AS tit, b.cmostrar AS centre, CONCAT('20', RIGHT(cursf, 2)) AS curs, null AS cursd, 'C' AS ambit, 'm' AS estudi, " + "IT01m_pf AS it01_pf, IT02m_pf AS it02_pf, IT03m_pf AS it03_pf, IT04m_comp AS it04_comp, " + "IT04m_comp AS it05_comp, IT06m_comp AS it06_comp, IT07m_comp AS it07_comp, " + "IT08m_comp AS it08_comp, IT09m_comp AS it09_comp, IT10m_comp AS it10_comp, " + "IT11m_de AS it11_de, IT12m_de AS it12_de, IT13m_de AS it13_de, IT14m_de AS it14_de, " + "IT15m_de AS it15_de, IT16m_de AS it16_de, (IT17_pe_S/(IT17_pe_S+IT17_pe_N))*100 AS it17_pe, " + "IT18m_pe AS it18_pe, IT19m_pe AS it19_pe, IT20m_pe AS it20_pe, IT21m_pe AS it21_pe, " + "IT22m_pe AS it22_pe, IT23m_pe AS it23_pe, (IT24_mob_S/(IT24_mob_S+IT24_mob_N))*100 AS it24_mob, " + "IT25_mob1 AS it25_mob1, IT25_mob2 AS it25_mob2, IT25_mob3 AS it25_mob3, IT25_mob4 AS it25_mob4, " + "IT26m_mob AS it26_mob, IT27m_mob AS it27_mob, IT28m_mob AS it28_mob, IT29m_mob AS it29_mob, " + "IT30m_mob AS it30_mob, IT26m_mob AS it26_mob, IT31m_mob AS it31_mob, IT32m_mob AS it32_mob, " + "IT33m_mob AS it33_mob, IT34m_tfm AS it34_tfm, IT35m_tfm AS it35_tfm, IT36m_tfm AS it36_tfm, " + "IT37m_tfm AS it37_tfm, IT38m_tfm AS it38_tfm, IT40m_treb AS it40_treb, IT41m_treb AS it41_treb, " + "IT41m_treb AS it41_treb, IT42m_treb AS it42_treb, IT43m_treb AS it43_treb, gm_Qprof AS g_qprof, " + "gm_instal AS g_instal, gm_exp AS g_exp, gm_recomana AS g_recomana " + "FROM MDB_master.Mitjanes_Gxcentrecursf a " + "LEFT JOIN MDB_master.Centre b ON a.centre = b.centre WHERE CONCAT('20', RIGHT(cursf, 2)) >= "+year+";", "SELECT 'data_g' AS enquesta, NULL AS tit, NULL AS centre, CONCAT('20', RIGHT(cursf, 2)) AS curs, null AS cursd, 'U' AS ambit, 'm' AS estudi, " + "IT01m_pf AS it01_pf, IT02m_pf AS it02_pf, IT03m_pf AS it03_pf, IT04m_comp AS it04_comp, " + "IT04m_comp AS it05_comp, IT06m_comp AS it06_comp, IT07m_comp AS it07_comp, " + "IT08m_comp AS it08_comp, IT09m_comp AS it09_comp, IT10m_comp AS it10_comp, " + "IT11m_de AS it11_de, IT12m_de AS it12_de, IT13m_de AS it13_de, IT14m_de AS it14_de, " + "IT15m_de AS it15_de, IT16m_de AS it16_de, (IT17_pe_S/(IT17_pe_S+IT17_pe_N))*100 AS it17_pe, " + "IT18m_pe AS it18_pe, IT19m_pe AS it19_pe, IT20m_pe AS it20_pe, IT21m_pe AS it21_pe, " + "IT22m_pe AS it22_pe, IT23m_pe AS it23_pe, (IT24_mob_S/(IT24_mob_S+IT24_mob_N))*100 AS it24_mob, " + "IT25_mob1 AS it25_mob1, IT25_mob2 AS it25_mob2, IT25_mob3 AS it25_mob3, IT25_mob4 AS it25_mob4, " + "IT26m_mob AS it26_mob, IT27m_mob AS it27_mob, IT28m_mob AS it28_mob, IT29m_mob AS it29_mob, " + "IT30m_mob AS it30_mob, IT26m_mob AS it26_mob, IT31m_mob AS it31_mob, IT32m_mob AS it32_mob, " + "IT33m_mob AS it33_mob, IT34m_tfm AS it34_tfm, IT35m_tfm AS it35_tfm, IT36m_tfm AS it36_tfm, " + "IT37m_tfm AS it37_tfm, IT38m_tfm AS it38_tfm, IT40m_treb AS it40_treb, IT41m_treb AS it41_treb, " + "IT41m_treb AS it41_treb, IT42m_treb AS it42_treb, IT43m_treb AS it43_treb, gm_Qprof AS g_qprof, " + "gm_instal AS g_instal, gm_exp AS g_exp, gm_recomana AS g_recomana " + "FROM MDB_master.Mitjanes_Gxcursf WHERE CONCAT('20', RIGHT(cursf, 2)) >= "+year+";", "SELECT 'data_g' AS enquesta, NULL AS tit, b.cmostrar AS centre, CONCAT('20', RIGHT(cursf, 2)) AS curs, null AS cursd, 'C' AS ambit, 'm' AS estudi, " + "max_IT26m_mob AS it26_mob_max, min_IT26m_mob AS it26_mob_min, " + "max_IT27m_mob AS it27_mob_max, min_IT27m_mob AS it27_mob_min, " + "max_IT28m_mob AS it28_mob_max, min_IT28m_mob AS it28_mob_min, " + "max_IT29m_mob AS it29_mob_max, min_IT29m_mob AS it29_mob_min, " + "max_IT30m_mob AS it30_mob_max, min_IT30m_mob AS it30_mob_min, " + "max_IT31m_mob AS it31_mob_max, min_IT31m_mob AS it31_mob_min, " + "max_IT32m_mob AS it32_mob_max, min_IT32m_mob AS it32_mob_min, " + "max_IT33m_mob AS it33_mob_max, min_IT33m_mob AS it33_mob_min, " + "max_gm_instal AS g_instal_max, min_gm_instal AS g_instal_min " + "FROM MDB_master.MinMax_Gxcursfcentre a " + "LEFT JOIN MDB_master.Centre b ON a.centre = b.centre WHERE CONCAT('20', RIGHT(cursf, 2)) >= "+year+";" }; return this.execute(statement, queries); } private int parseMasterProfes(Connection connection, String year) throws SQLException { Statement statement = connection.createStatement(); String[] queries = { "SELECT 'profes_tancades' AS enquesta, b.tit AS tit, c.cmostrar AS centre, CONCAT('20', RIGHT(ACURS, 2)) AS curs, null AS cursd, 'T' AS ambit, 'm' AS estudi, " + "A1 AS a1, A2 AS a2, A3 AS a3, A4 AS a4, A5 AS a5, A6 AS a6, A7 AS a7, A8 AS a8, A9 AS a9, A10 AS a10, " + "A11 AS a11, A12 as a12, A13 AS a13, A14 AS a14, A15_1 AS a15_1, A15_2 AS a15_2, A15_3 AS a15_3, " + "A15_4 AS a15_4, A15_5 AS a15_5, A16 AS a16, A17 AS a17, A18 AS a18, A19 AS a19, A20 AS a20, " + "A21 AS a21, A26 AS a26, A27 AS a27, A28 AS a28, A29 AS a29, A30 AS a30, A31 AS a31, A32 AS a32 " + "FROM MDB_master.Mitjanes_profesXtit a " + "LEFT JOIN MDB_master.ESTUDIS b ON a.tit = b.tit " + "LEFT JOIN MDB_master.Centre c ON b.centre = c.centre WHERE CONCAT('20', RIGHT(ACURS, 2)) >= "+year+";", "SELECT 'profes_tancades' AS enquesta, NULL AS tit, c.cmostrar AS centre, CONCAT('20', RIGHT(ACURS, 2)) AS curs, null AS cursd, 'C' AS ambit, 'm' AS estudi, " + "A1 AS a1, A2 AS a2, A3 AS a3, A4 AS a4, A5 AS a5, A6 AS a6, A7 AS a7, A8 AS a8, A9 AS a9, A10 AS a10, " + "A11 AS a11, A12 as a12, A13 AS a13, A14 AS a14, A15_1 AS a15_1, A15_2 AS a15_2, A15_3 AS a15_3, " + "A15_4 AS a15_4, A15_5 AS a15_5, A16 AS a16, A17 AS a17, A18 AS a18, A19 AS a19, A20 AS a20, " + "A21 AS a21, A26 AS a26, A27 AS a27, A28 AS a28, A29 AS a29, A30 AS a30, A31 AS a31, A32 AS a32 " + "FROM MDB_master.Mitjanes_profesxCurscentre a " + "LEFT JOIN MDB_master.periodesCurs p ON p.curs = CONCAT('20', RIGHT(ACURS, 2)) " + "LEFT JOIN MDB_master.Centre c ON a.centre = c.centre WHERE p.ProfesComplet = 1 AND CONCAT('20', RIGHT(ACURS, 2)) >= "+year+";", "SELECT 'profes_tancades' AS enquesta, NULL AS tit, NULL AS centre, CONCAT('20', RIGHT(ACURS, 2)) AS curs, null AS cursd, 'U' AS ambit, 'm' AS estudi," + "A1 AS a1, A2 AS a2, A3 AS a3, A4 AS a4, A5 AS a5, A6 AS a6, A7 AS a7, A8 AS a8, A9 AS a9, A10 AS a10, " + "A11 AS a11, A12 as a12, A13 AS a13, A14 AS a14, A15_1 AS a15_1, A15_2 AS a15_2, A15_3 AS a15_3, " + "A15_4 AS a15_4, A15_5 AS a15_5, A16 AS a16, A17 AS a17, A18 AS a18, A19 AS a19, A20 AS a20, " + "A21 AS a21, A26 AS a26, A27 AS a27, A28 AS a28, A29 AS a29, A30 AS a30, A31 AS a31, A32 AS a32 " + "FROM MDB_master.Mitjanes_profesxCurs a" + "LEFT JOIN MDB_master.periodesCurs p ON p.curs = CONCAT('20', RIGHT(ACURS, 2)) " + "WHERE p.ProfesComplet = 1 AND CONCAT('20', RIGHT(ACURS, 2)) >= "+year+";", "SELECT 'profes_tancades' AS enquesta, NULL AS tit, c.cmostrar AS centre, CONCAT('20', RIGHT(ACURS, 2)) AS curs, null AS cursd, 'C' AS ambit, 'm' AS estudi, " + "max_A16m AS a16_max, min_A16m AS a16_min, max_A17m AS a17_max, min_A17m AS a17_min, " + "max_A19m AS a19_max, min_A19m AS a19_min " + "FROM MDB_master.MinMax_profesxCurscentre a " + "LEFT JOIN MDB_master.periodesCurs p ON p.curs = CONCAT('20', RIGHT(ACURS, 2)) " + "LEFT JOIN MDB_master.Centre c ON a.centre = c.centre WHERE p.ProfesComplet = 1 AND CONCAT('20', RIGHT(ACURS, 2)) >= "+year+";"}; return this.execute(statement, queries); } private int parseEvalProfBD(Connection connection, String year) throws SQLException { Statement statement = connection.createStatement(); String[] queries = { "SELECT 'evalprof' AS enquesta, t.cod_titula AS tit, c.cod_actual AS centre, CONCAT('20', anyo) AS curs, null AS cursd, 'T' AS ambit, tipus AS estudi, " + "it01, it02, it03, it04, it05, it06, it07, it08, it09, it10, it11, it12, it13, it14, b1, b2, b3, b4, b5, b6, global " + "FROM MDB_evalProf.MediasTitulacion m " + "LEFT JOIN MDB_evalProf.Titulaciones t ON m.estudio = t.estudio " + "LEFT JOIN MDB_evalProf.Centros c ON t.cod_centro = c.cod_centro " + "WHERE c.cod_actual IS NOT NULL AND c.cod_actual <> '' AND num_encues >= 3 AND CONCAT('20', anyo) >= "+year+"; ", "SELECT 'evalprof' AS enquesta, NULL AS tit, c.cod_actual AS centre, CONCAT('20', anyo) AS curs, null AS cursd, 'C' AS ambit, tipus AS estudi, " + "it01, it02, it03, it04, it05, it06, it07, it08, it09, it10, it11, it12, it13, it14, b1, b2, b3, b4, b5, b6, global " + "FROM MDB_evalProf.MediasCentro m " + "LEFT JOIN MDB_evalProf.Centros c ON m.centre = c.cod_centro " + "LEFT JOIN MDB_master.periodesCurs p ON p.curs = CONCAT('20', anyo) " + "WHERE c.cod_actual IS NOT NULL AND c.cod_actual <> '' AND CONCAT('20', anyo) >= "+year+"; ", "SELECT 'evalprof' AS enquesta, NULL AS tit, NULL AS centre, CONCAT('20', anyo) AS curs, null AS cursd, 'U' AS ambit, tipus AS estudi, " + "it01, it02, it03, it04, it05, it06, it07, it08, it09, it10, it11, it12, it13, it14, b1, b2, b3, b4, b5, b6, global " + "FROM MDB_evalProf.MediasUniversidad " + "LEFT JOIN MDB_master.periodesCurs p ON p.curs = CONCAT('20', anyo) " + "WHERE CONCAT('20', anyo) >= "+year+"; "}; return this.execute(statement, queries); } private int parseOtrosProfes(Connection connection) throws SQLException { Statement statement = connection.createStatement(); String[] queries = { "SELECT 'otros' AS enquesta, t.cod_titula AS tit, c.cod_actual AS centre, curs, null AS cursd, ambit, estudi, " + "I_RH2_06, I_RH2_07, I_RH2_08, I_RH2_profcursos, I_RH2_totpdi " + "FROM MDB_otros.profesorado m " + "LEFT JOIN MDB_evalProf.Titulaciones t ON m.titulacion = t.estudio " + "LEFT JOIN MDB_evalProf.Centros c ON t.cod_centro = c.cod_centro " + "WHERE c.cod_actual IS NOT NULL AND c.cod_actual <> '';"}; return this.execute(statement, queries); } private int parseOtrosEncuestas(Connection connection) throws SQLException { Statement statement = connection.createStatement(); String[] queries = { "SELECT 'enquestes' AS enquesta, titulacio AS tit, centre, curs, null AS cursd, ambit, estudi, " + "1er_modul_cod, 1er_modul_nom, 1er_modul_obs, 3er_modul_cod, 3er_modul_nom, 3er_modul_obs " + "FROM MDB_otros.asignaturas_encuestas;"}; return this.execute(statement, queries); } private int parseOtrosTasas(Connection connection) throws SQLException { Statement statement = connection.createStatement(); String[] queries = { "SELECT 'otros' AS enquesta, t.cod_titula AS tit, c.cod_actual AS centre, curs, null AS cursd, ambit, estudi, " + "i_oe1_nb_nuevos, i_oe1_nb_plazas, i_oe1_tasa_mat, i_oe1_tasa_ofedem " + "FROM MDB_otros.tasas m " + "LEFT JOIN MDB_evalProf.Titulaciones t ON m.titulacion = t.estudio " + "LEFT JOIN MDB_evalProf.Centros c ON t.cod_centro = c.cod_centro " + "WHERE c.cod_actual IS NOT NULL AND c.cod_actual <> '';"}; return this.execute(statement, queries); } private int parseOtrosDocentia(Connection connection) throws SQLException { Statement statement = connection.createStatement(); String[] queries = { "SELECT * " + "FROM MDB_otros.docentia_evaluacion " + "WHERE centre IS NOT NULL;"}; return this.execute(statement, queries); } /* ToDo */ ``` - `parseDocEstud()` — ⚪ Interno - `CONCAT()` — ⚪ Interno - `CONCAT()` — ⚪ Interno - `CONCAT()` — ⚪ Interno - `CONCAT()` — ⚪ Interno - `CONCAT()` — ⚪ Interno - `CONCAT()` — ⚪ Interno - `parseDocEtesi()` — ⚪ Interno - `CONCAT()` — ⚪ Interno - `CONCAT()` — ⚪ Interno - `CONCAT()` — ⚪ Interno - `CONCAT()` — ⚪ Interno - `CONCAT()` — ⚪ Interno - `CONCAT()` — ⚪ Interno - `CONCAT()` — ⚪ Interno - `parseDocProf()` — ⚪ Interno - `CONCAT()` — ⚪ Interno - `CONCAT()` — ⚪ Interno - `CONCAT()` — ⚪ Interno - `parseDocTasas()` — ⚪ Interno - `parseDocInds()` — ⚪ Interno - `parseDocRecom()` — ⚪ Interno - `LOWER()` — ⚪ Interno - `doAction()` — ⚪ Interno - `precargaEvalProf()` — ⚪ Interno - `CAST()` — ⚪ Interno - `CAST()` — ⚪ Interno - `CAST()` — ⚪ Interno - `precargaMaster()` — ⚪ Interno - `precargaDoctorado()` — ⚪ Interno --- ### 🧩 Clase: `PlantillaService` **Ubicación:** `src\main\java\es\uv\saic\service\PlantillaService.java` **Estado de revisión:** ⚠️ *Pendiente* #### 🔍 Métodos detectados: - `DecimalFormat()` — ⚪ Interno - `findAll()` — ⚪ Interno - `findByID()` — ⚪ Interno - `findByVersioCodiAmbit()` — ⚪ Interno - `save()` — ⚪ Interno - `delete()` — ⚪ Interno - `isUsed()` — ⚪ Interno - `addTemplateData()` — ⚪ Interno - `data()` — ⚪ Interno - `addTemplateData()` — ⚪ Interno - `data()` — ⚪ Interno - `addHeaderData()` — ⚪ Interno - `ClassPathResource()` — ⚪ Interno - `ClassPathResource()` — ⚪ Interno - `iterateLoopAttr()` — ⚪ Interno - `iterateLoopTag()` — ⚪ Interno - `replaceValues()` — ⚪ Interno - `if()` — ⚪ Interno - `Element()` — ⚪ Interno - `getTemplateData()` — ⚪ Interno - `replaceValuesLoop()` — ⚪ Interno - `formatValue()` — ⚪ Interno - `savePDF()` — ⚪ Interno - `File()` — ⚪ Interno - `PrintWriter()` — ⚪ Interno - `ProcessBuilder()` — ⚪ Interno - `toPDF()` — ⚪ Interno - `File()` — ⚪ Interno - `File()` — ⚪ Interno - `PrintWriter()` — ⚪ Interno - `ProcessBuilder()` — ⚪ Interno - `parseComments()` — ⚪ Interno - `String()` — ⚪ Interno - `ObjectMapper()` — ⚪ Interno - `replaceSection()` — ⚪ Interno - `extractTemplateAnchor()` — ⚪ Interno - `clear()` — ⚪ Interno - `asString()` — ⚪ Interno - `InputStreamReader()` — ⚪ Interno - `UncheckedIOException()` — ⚪ Interno - `readFileToString()` — ⚪ Interno - `DefaultResourceLoader()` — ⚪ Interno - `asString()` — ⚪ Interno --- ### 🧩 Clase: `ProcesService` **Ubicación:** `src\main\java\es\uv\saic\service\ProcesService.java` **Estado de revisión:** ⚠️ *Pendiente* #### 🔍 Métodos detectados: - `findByID()` — ⚪ Interno - `findByName()` — ⚪ Interno - `findByNameCurs()` — ⚪ Interno - `getAll()` — ⚪ Interno - `getSupervisableCursos()` — ⚪ Interno - `getSupervisableProcedures()` — ⚪ Interno - `save()` — ⚪ Interno - `deleteById()` — ⚪ Interno - `delete()` — ⚪ Interno - `getFlowDiagram()` — ⚪ Interno --- ### 🧩 Clase: `RolService` **Ubicación:** `src\main\java\es\uv\saic\service\RolService.java` **Estado de revisión:** ⚠️ *Pendiente* #### 🔍 Métodos detectados: - `findAll()` — ⚪ Interno - `findOne()` — ⚪ Interno - `findAssignables()` — ⚪ Interno --- ### 🧩 Clase: `SysStatusService` **Ubicación:** `src\main\java\es\uv\saic\service\SysStatusService.java` **Estado de revisión:** ⚠️ *Pendiente* #### 🔍 Métodos detectados: - `findAll()` — ⚪ Interno - `findByType()` — ⚪ Interno - `log()` — ⚪ Interno - `SysStatus()` — ⚪ Interno - `Timestamp()` — ⚪ Interno - `err()` — ⚪ Interno - `SysStatus()` — ⚪ Interno - `Timestamp()` — ⚪ Interno - `warn()` — ⚪ Interno - `SysStatus()` — ⚪ Interno - `Timestamp()` — ⚪ Interno - `save()` — ⚪ Interno --- ### 🧩 Clase: `TascaService` **Ubicación:** `src\main\java\es\uv\saic\service\TascaService.java` **Estado de revisión:** ⚠️ *Pendiente* #### 🔍 Métodos detectados: - `findAll()` — ⚪ Interno - `findByProces()` — ⚪ Interno - `getByID()` — ⚪ Interno - `getByProcesTascap()` — ⚪ Interno - `getAllEvidencies()` — ⚪ Interno - `getEvidenciesByCentreTitulacioCurs()` — ⚪ Interno - `getEvidencesByProcedure()` — ⚪ Interno - `getAllAvailableEvidences()` — ⚪ Interno - `create()` — ⚪ Interno - `save()` — ⚪ Interno - `deleteById()` — ⚪ Interno - `delete()` — ⚪ Interno --- ### 🧩 Clase: `TipusService` **Ubicación:** `src\main\java\es\uv\saic\service\TipusService.java` **Estado de revisión:** ⚠️ *Pendiente* #### 🔍 Métodos detectados: - `findAll()` — ⚪ Interno - `findOne()` — ⚪ Interno --- ### 🧩 Clase: `UsuariService` **Ubicación:** `src\main\java\es\uv\saic\service\UsuariService.java` **Estado de revisión:** ⚠️ *Pendiente* #### 🔍 Métodos detectados: - `findAll()` — ⚪ Interno - `findByUsername()` — ⚪ Interno - `hasActiveRol()` — ⚪ Interno - `getActiveInstanciaTasques()` — ⚪ Interno - `getActiveInstancies()` — ⚪ Interno - `getSupervisableProcessos()` — ⚪ Interno - `if()` — ⚪ Interno - `if()` — ⚪ Interno - `if()` — ⚪ Interno ``` // Role ``` - `especiales()` — ⚪ Interno - `getSupervisableCentres()` — ⚪ Interno - `getInstanceAsignedUsers()` — ⚪ Interno - `findByRolCentre()` — ⚪ Interno - `save()` — ⚪ Interno --- ### 🧩 Clase: `UsuarisRolService` **Ubicación:** `src\main\java\es\uv\saic\service\UsuarisRolService.java` **Estado de revisión:** ⚠️ *Pendiente* #### 🔍 Métodos detectados: - `findAll()` — ⚪ Interno - `exists()` — ⚪ Interno - `find()` — ⚪ Interno - `findActive()` — ⚪ Interno - `findLast()` — ⚪ Interno - `findLastNum()` — ⚪ Interno - `hasActiveRol()` — ⚪ Interno - `findActiveRols()` — ⚪ Interno - `isGrantedUser()` — ⚪ Interno - `isGrantedSupervisor()` — ⚪ Interno - `isAdminUser()` — ⚪ Interno - `isDataTestUser()` — ⚪ Interno - `hasActiveRol()` — ⚪ Interno - `hasActiveRoles()` — ⚪ Interno - `hasActiveAmbit()` — ⚪ Interno - `hasAssociatedProcs()` — ⚪ Interno - `findAssociatedProcs()` — ⚪ Interno - `findManagerByCentre()` — ⚪ Interno - `findManagerByTitulacio()` — ⚪ Interno - `findManagerByCentres()` — ⚪ Interno - `findManagerByTitulacions()` — ⚪ Interno - `getSpecialRoles()` — ⚪ Interno - `save()` — ⚪ Interno - `delete()` — ⚪ Interno --- ### 🧩 Clase: `WikiService` **Ubicación:** `src\main\java\es\uv\saic\service\WikiService.java` **Estado de revisión:** ⚠️ *Pendiente* #### 🔍 Métodos detectados: - `findByCategoria()` — ⚪ Interno - `save()` — ⚪ Interno --- # 📈 Estadísticas finales - Total de clases: 30 - Total de métodos: 438 - Total de comentarios: 8 ✅ **Fin del reporte de carpeta.**