package org.aksw.sparqlify.util;
import java.util.HashMap;
import java.util.Map;
import java.util.function.Function;
import org.aksw.sparqlify.backend.postgres.DatatypeToStringCast;
import org.aksw.sparqlify.backend.postgres.DatatypeToStringPostgres;
import org.aksw.sparqlify.core.sql.common.serialization.SqlEscaperBacktick;
import org.aksw.sparqlify.core.sql.common.serialization.SqlEscaperDoubleQuote;
public class SqlBackendRegistry
implements Function<String, SqlBackendConfig>
{
private static SqlBackendRegistry instance;
private Map<String, SqlBackendConfig> nameToConfig = new HashMap<>();
public static SqlBackendRegistry get() {
if(instance == null) {
instance = new SqlBackendRegistry();
init(instance.nameToConfig);
}
return instance;
}
public static final String HIVE = "Apache Hive";
public static final String POSTGRES = "Postgresql";
public static void init(Map<String, SqlBackendConfig> map) {
map.put(HIVE, new SqlBackendConfig(new DatatypeToStringCast(), new SqlEscaperBacktick()));
map.put(POSTGRES, new SqlBackendConfig(new DatatypeToStringPostgres(), new SqlEscaperDoubleQuote()));
}
public Map<String, SqlBackendConfig> getMap() {
return nameToConfig;
}
public void put(String name, SqlBackendConfig config) {
nameToConfig.put(name, config);
}
@Override
public SqlBackendConfig apply(String t) {
SqlBackendConfig result = nameToConfig.get(t);
return result;
}
}