Análisis del Módulo de Análisis de MyBatis: Procesador Genérico de Marcadores (GenericTokenParser) y Manejador de Marcadores (TokenHandler)

// Clase GenericTokenParser public class ProcesadorMarcadores { private final String inicioMarcador; private final String finMarcador; private final ManejadorMarcadores manejador;

public ProcesadorMarcadores(String inicioMarcador, String finMarcador, ManejadorMarcadores manejador) {
    this.inicioMarcador = inicioMarcador;
    this.finMarcador = finMarcador;
    this.manejador = manejador;
}

public String analizar(String texto) {
    StringBuilder resultado = new StringBuilder();
    if (texto != null && !texto.isEmpty()) {
        char[] fuente = texto.toCharArray();
        int posicion = 0;
        int inicio = texto.indexOf(inicioMarcador, posicion);

        while (inicio > -1) {
            if (inicio > 0 && fuente[inicio - 1] == '\\') {
                resultado.append(fuente, posicion, inicio - posicion - 1).append(inicioMarcador);
                posicion = inicio + inicioMarcador.length();
            } else {
                int fin = texto.indexOf(finMarcador, inicio);
                if (fin == -1) {
                    resultado.append(fuente, posicion, fuente.length - posicion);
                    posicion = fuente.length;
                } else {
                    resultado.append(fuente, posicion, inicio - posicion);
                    posicion = inicio + inicioMarcador.length();
                    String contenido = new String(fuente, posicion, fin - posicion);
                    resultado.append(manejador.procesar(contenido));
                    posicion = fin + finMarcador.length();
                }
            }
            inicio = texto.indexOf(inicioMarcador, posicion);
        }
        if (posicion < fuente.length) {
            resultado.append(fuente, posicion, fuente.length - posicion);
        }
    }
    return resultado.toString();
}

}


</div>Este método analiza los marcadores dentro de una cadena dada, extrayendo subcadenas entre pares de marcadores de inicio y fin, y delegando su procesamiento al manejador asignado. 3. Manejador de Marcadores La interfaz ManejadorMarcadores define cómo deben ser tratados los marcadores extraídos por el procesador. Aquí está su definición: <div>```

public interface ManejadorMarcadores {
    String procesar(String contenido);
}

import java.util.Properties;

public class AnalizadorPropiedades { private AnalizadorPropiedades() {}

public static String analizar(String cadena, Properties propiedades) {
    ManejadorVariable manejador = new ManejadorVariable(propiedades);
    ProcesadorMarcadores analizador = new ProcesadorMarcadores("${", "}", manejador);
    return analizador.analizar(cadena);
}

private static class ManejadorVariable implements ManejadorMarcadores {
    private Properties propiedades;

    public ManejadorVariable(Properties propiedades) {
        this.propiedades = propiedades;
    }

    @Override
    public String procesar(String clave) {
        if (propiedades.containsKey(clave)) {
            return propiedades.getProperty(clave);
        }
        return "${" + clave + "}";
    }
}

}


</div>Este ejemplo muestra cómo se pueden reemplazar marcadores con valores específicos desde un archivo de propiedades.</div>

Etiquetas: MyBatis java SQL

Publicado el 9-16 09:29