}
List<String> targetTable = spritComma(strTargetTable);
// Import対象テーブル分のImportTargetTableBeanを作成する
for (String element : targetTable) {
importTargetTables.put(element, new ImportTargetTableBean());
}
// ImportTargetTableBeanに値を詰める
Set<?> set = importProp.keySet();
for (Object objKey : set) {
String key = (String) objKey;
// KEYが対象テーブルの設定でない場合にその行を解析する
if (!IMP_TARGET_TABLE.equals(key)) {
// TODO 一連の文字列を解析する処理の見通しが悪い
// テーブル名を取得
String tableName = key.substring(0, key.indexOf('.'));
// 当該行がテーブルに対する何の設定か取得
int start = tableName.length() + 3;
int end = key.indexOf('=', start) - 1;
String keyMeans = key.substring(start + end);
// テーブル名がImport対象テーブルとして定義されていない場合は読み飛ばす
ImportTargetTableBean bean = importTargetTables.get(tableName);
if (bean == null) {
continue;
}
String value = importProp.getProperty(key);
// KEYに対するVALUEがない場合は読み飛ばす
if (value == null || value.equals("")) {
continue;
}
// 当該行の設定をImportTargetTableBeanに設定する
if (IMP_TARGET_COLUMN.equals(keyMeans)) {
// Import対象カラム
bean.setImportTargetColumns(spritComma(value));
} else if (IMP_SEARCH_CONDITION.equals(keyMeans)) {
bean.setSearchCondition(value);
} else if (IMP_CACHE_ID.equals(keyMeans)) {
// enables cache
if (value.trim().isEmpty() == false) {
bean.setCacheId(value);
}
} else if (IMP_LOCK_TYPE.equals(keyMeans)) {
// ロック取得タイプ
bean.setLockType(ImportTableLockType.find(value));
} else if (IMP_LOCKED_OPERATION.equals(keyMeans)) {
// ロック済みの場合の取り扱い
bean.setLockedOperation(ImportTableLockedOperation.find(value));
} else if (IMP_BEAN_NAME.equals(keyMeans)) {
// JavaBeansクラス名
try {
bean.setImportTargetType(loadClass(value));
} catch (ClassNotFoundException e) {
LOG.error(e, "TG-COMMON-00002",
"Import対象テーブルに対応するJavaBeanのクラスが存在しない",
targetName, jobflowId, propFilePath);
return false;
}
} else if (IMP_HDFS_IMPORT_FILE.equals(keyMeans)) {
// HDFS上の出力パス
bean.setDfsFilePath(value);
} else {
// 設定が不明の場合は読み飛ばす
LOG.warn("TG-COMMON-00006",
"不明な設定。 key:" + key,
targetName, jobflowId, tableName, propFilePath);
continue;
}
}
}
for (Map.Entry<String, ImportTargetTableBean> entry : importTargetTables.entrySet()) {
ImportTargetTableBean bean = entry.getValue();
if (bean.getCacheId() != null) {
if (ThunderGateCacheSupport.class.isAssignableFrom(bean.getImportTargetType()) == false) {
LOG.error("TG-COMMON-00002",
MessageFormat.format(
"データモデルクラス\"{1}\"がキャッシュをサポートしていない ({0})",
ThunderGateCacheSupport.class.getName(),
bean.getImportTargetType().getName()),
targetName, jobflowId, propFilePath);
return false;
}
if (bean.getSearchCondition() != null && bean.getSearchCondition().trim().isEmpty() == false) {
LOG.error("TG-COMMON-00002",
MessageFormat.format(
"キャッシュ利用時に条件式を指定している ({0})",
bean.getLockedOperation()),
targetName, jobflowId, propFilePath);
return false;
}
if (bean.getLockedOperation() == ImportTableLockedOperation.OFF) {
LOG.error("TG-COMMON-00002",
MessageFormat.format(
"キャッシュ利用時にロック箇所を読み飛ばす設定がされている ({0})",
bean.getLockedOperation()),
targetName, jobflowId, propFilePath);
return false;
}
}
}