Map<String, ModelProperty> properties = new TreeMap<String, ModelProperty>(String.CASE_INSENSITIVE_ORDER);
for (ModelProperty property : model.getProperties()) {
properties.put(property.getSource().getName(), property);
}
ModelProperty sid = properties.get(config.getSidColumn());
if (sid == null) {
LOG.warn("テーブル{}にはカラム{}が定義されていないため、キャッシュはサポートされません",
model.getReference().getSimpleName(),
config.getSidColumn());
return null;
}
if (sid.getType().getKind() != PropertyTypeKind.LONG) {
LOG.warn("テーブル{}のカラム{}がBIGINTでないため、キャッシュはサポートされません",
model.getReference().getSimpleName(),
config.getSidColumn());
return null;
}
ModelProperty timestamp = properties.get(config.getTimestampColumn());
if (timestamp == null) {
LOG.warn("テーブル{}にはカラム{}が定義されていないため、キャッシュはサポートされません",
model.getReference().getSimpleName(),
config.getTimestampColumn());
return null;
}
if (timestamp.getType().getKind() != PropertyTypeKind.DATETIME) {
LOG.warn("テーブル{}のカラム{}がDATETIMEでないため、キャッシュはサポートされません",
model.getReference().getSimpleName(),
config.getTimestampColumn());
return null;
}
if (config.getDeleteFlagColumn() != null) {
ModelProperty deleteFlag = properties.get(config.getDeleteFlagColumn());
if (deleteFlag == null) {
LOG.info("テーブル{}のカラム{}が定義されていないため、このテーブルに対する論理削除機能は無効化されます",
model.getReference().getSimpleName(),
config.getDeleteFlagColumn());
} else if (acceptsLiteral(deleteFlag.getType(), config.getDeleteFlagValue()) == false) {
LOG.warn("テーブル{}のカラム{}は指定した論理削除の値({})を利用できないため、キャッシュはサポートされません", new Object[] {
model.getReference().getSimpleName(),
config.getDeleteFlagColumn(),
config.getDeleteFlagValue(),
});