package org.hibernate.cfg.reveng;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.hibernate.cfg.reveng.dialect.MetaDataDialect;
import org.hibernate.mapping.ForeignKey;
public abstract class AbstractDatabaseCollector implements DatabaseCollector {
private Map<String, List<ForeignKey>> oneToManyCandidates;
protected final Map<TableIdentifier, String> suggestedIdentifierStrategies;
private MetaDataDialect metaDataDialect;
public AbstractDatabaseCollector(MetaDataDialect metaDataDialect) {
suggestedIdentifierStrategies = new HashMap<TableIdentifier, String>();
this.metaDataDialect = metaDataDialect;
}
public void setOneToManyCandidates(Map<String, List<ForeignKey>> oneToManyCandidates) {
this.oneToManyCandidates = oneToManyCandidates;
}
public Map<String, List<ForeignKey>> getOneToManyCandidates() {
return oneToManyCandidates;
}
public String getSuggestedIdentifierStrategy(String catalog, String schema, String name) {
TableIdentifier identifier = new TableIdentifier(catalog, schema, name);
return (String) suggestedIdentifierStrategies.get(identifier);
}
public void addSuggestedIdentifierStrategy(String catalog, String schema, String name, String idstrategy) {
TableIdentifier identifier = new TableIdentifier(catalog, schema, name);
suggestedIdentifierStrategies.put(identifier, idstrategy);
}
protected String quote(String name) {
if (name == null)
return name;
if (metaDataDialect.needQuote(name)) {
if (name.length() > 1 && name.charAt(0) == '`'
&& name.charAt(name.length() - 1) == '`') {
return name; // avoid double quoting
}
return "`" + name + "`";
} else {
return name;
}
}
}