package com.w11k.lsql.dialects;
import static com.google.common.base.CaseFormat.LOWER_CAMEL;
import static com.google.common.base.CaseFormat.LOWER_UNDERSCORE;
import static com.google.common.base.CaseFormat.UPPER_UNDERSCORE;
public abstract class IdentifierConverter {
public static IdentifierConverter JAVA_CAMEL_CASE_TO_SQL_LOWER_UNDERSCORE = new IdentifierConverter() {
public String sqlToJava(String sqlName) {
sqlName = sqlName.toLowerCase();
return LOWER_UNDERSCORE.to(LOWER_CAMEL, sqlName);
}
public String javaToSql(String javaName) {
return LOWER_CAMEL.to(LOWER_UNDERSCORE, javaName);
}
};
public static IdentifierConverter JAVA_CAMEL_CASE_TO_SQL_UPPER_UNDERSCORE = new IdentifierConverter() {
public String sqlToJava(String sqlName) {
sqlName = sqlName.toUpperCase();
return UPPER_UNDERSCORE.to(LOWER_CAMEL, sqlName);
}
public String javaToSql(String javaName) {
return LOWER_CAMEL.to(UPPER_UNDERSCORE, javaName);
}
};
public static IdentifierConverter JAVA_LOWER_UNDERSCORE_TO_SQL_LOWER_UNDERSCORE = new IdentifierConverter() {
public String sqlToJava(String sqlName) {
return sqlName.toLowerCase();
}
public String javaToSql(String javaName) {
return javaName.toLowerCase();
}
};
public static IdentifierConverter JAVA_LOWER_UNDERSCORE_TO_SQL_UPPER_UNDERSCORE = new IdentifierConverter() {
public String sqlToJava(String sqlName) {
return sqlName.toLowerCase();
}
public String javaToSql(String javaName) {
return javaName.toUpperCase();
}
};
public static IdentifierConverter JAVA_UPPER_UNDERSCORE_TO_SQL_UPPER_UNDERSCORE = new IdentifierConverter() {
public String sqlToJava(String sqlName) {
return sqlName.toUpperCase();
}
public String javaToSql(String javaName) {
return javaName.toUpperCase();
}
};
public abstract String sqlToJava(String sqlName);
public abstract String javaToSql(String javaName);
}