
public String getTableName(String standardTableName) { if("logging_event".equals(standardTableName) { return standardTableName; } if("logging_event_property".equals(standardTableName) { return standardTableName; } if("logging_event_exception".equals(standardTableName) { return standardTableName; } throw new IllegalArgumentException(standardTableName + " is an unknown table name"); }
How about enum TableName {EVENT, EVENT_PROPERTY, EVENT_EXCEPTION} public String getTableName(TableName tableName) { switch (tableName) { case EVENT: return "logging_event"; case EVENT_PROPERTY: return "logging_event_property"; case EVENT_EXCEPTION: return "logging_event_exception"; } } Using an enum has two advantages: - Compilers can (some will) complain if you forget a case in the switch - uses of TableName can be traced with cross-referencing tools The disadvantage is that you can't extend the list. However, if that kind of flexibility is needed, I'm not sure that a separate resolver class is a good solution. It would need to provide a table name for whatever the internal workings of DBAppender require, so the coupling would be too tight. (If logback can use generic classes, then DBAppender<DBNameResolver> would be optimal IMHO.) Regards, Jo