reporte_service.md 53 KB

📁 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<String> mandatoryColumns = new ArrayList<String>();
    List<String> knownColumns = new ArrayList<String>();
    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("<br>").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("<br>").toString();
    }
    
    /*  4) Importar datos  */
    Integer numRecords = 0;
    Integer numTuples = 0;
    for (CSVRecord record : records) {
    Map<String, String> 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("<br>").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("<br>").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<String> 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("<br>").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<String> mandatoryColumns = new ArrayList<String>();
    List<String> knownColumns = new ArrayList<String>();
    if(clau.equals("ruct")) {
    this.setColumnsRuct(ambit, knownColumns, mandatoryColumns);
    }
    else {
    this.setColumnsCod(ambit, knownColumns, mandatoryColumns);
    }
    
    List<String> allColNames = new ArrayList<String>();
    for(int i = 1; i <= columns; i++){
    allColNames.add(resultMetadata.getColumnLabel(i).toLowerCase());
    }
    List<String> colnames = new ArrayList<String>(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("<br>").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("<br>").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("<br>").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<String> 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<String> colNames = new ArrayList<String>();
    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<IndicadorEnquestaTmpRepository.IndicadorEnquestaTmpDup> 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<IndicadorEnquestaTmpRepository.IndicadorEnquestaTmpDup> 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<String> knownColumns, List<String> 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<String> knownColumns, List<String> 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<String> header, List<String> 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("<br>");
    }
    }
    return isvalid;
    }
    
    private boolean checkValues(List<CSVRecord> records, String ambit, String clau, StringBuilder errors, String locale) {
    boolean isvalid = true;
    Integer numRecords = 0;
    for (CSVRecord record : records) {
    Map<String, String> 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("<br>");
    } 
    }
    
    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("<br>");
    }
    }
    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("<br>");
    }
    }
    }
    
    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("<br>");
    }
    }
    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.