Eu tenho uma sugestão, você pode tentar usar Enums pra gerar as suas queries. Nesse código eu usei seus exemplos, deduzindo que existem 2 tipos de query: "a" e "b".
Peço desculpas se os nomes das classes não fazem muito sentido, nunca fui bom nisso :)
Primeiramente nós temos um
enum, e nele vai ficar a lógica de como se monta a query de cada tipo:
public enum Insert {
a{
public String gerarInsert(String text) {
return "Gerar Insert do tipo A";
}
},
b{
public String gerarInsert(String text) {
return "Gerar Insert do tipo B";
}
};
public abstract String gerarInsert(String text);
}
Com isso podemos ter uma Factory que recebe a linha, descobre qual o tipo pelo primeiro caractere, e instancia o tipo de Insert correto:
public class InsertFactory {
public static String gerarInsert(String line){
//Extrai o tipo do insert
String tipo = extrairTipo(line);
//Instancia o objeto que irá construir o insert statement
Insert insert = Insert.valueOf(tipo);
//Retorna a String
return insert.gerarInsert(line);
}
private static String extrairTipo(String line){
return line.substring(0, 1);
}
}
E um main de exemplo:
public class Main {
public static void main(String[] args) {
String a = "a-information";
String b = "b-information";
String aStatement = InsertFactory.gerarInsert(a);
String bStatement = InsertFactory.gerarInsert(b);
System.out.println(aStatement);
System.out.println(bStatement);
}
}
Nessa situação, se existir um caso novo de insert, é só adicionar um novo elemento ao enum.