// TODO 長いメソッド
for (Map.Entry<String, ExportTargetTableBean> entry : tables.entrySet()) {
String tableName = entry.getKey();
ExportTargetTableBean bean = entry.getValue();
// Export中間TSVファイルに対応するカラム名のチェック
if (isEmptyOrHasEmptyString(bean.getExportTsvColumn())) {
LOG.error("TG-COMMON-00005",
"Export中間TSVファイルに対応するカラム名が設定されていない",
targetName, jobflowId, tableName, fileName);
return false;
}
// Export対象テーブルのカラム名のチェック
if (isEmptyOrHasEmptyString(bean.getExportTableColumns())) {
LOG.error("TG-COMMON-00005",
"Export対象テーブルのカラム名が設定されていない",
targetName, jobflowId, tableName, fileName);
return false;
}
if (columnCheck(bean.getExportTableColumns(), Constants.getTemporarySidColumnName())) {
LOG.error("TG-COMMON-00005",
"テンポラリSIDと同一のカラム名がExport対象テーブルのカラム名に設定されている",
targetName, jobflowId, tableName, fileName);
return false;
}
// Export対象テーブルのカラムがExport中間TSVファイルに含まれる事を確認
List<String> systemColumns = Constants.getSystemColumns();
List<String> allColumn = new ArrayList<String>(bean.getExportTsvColumn());
allColumn.addAll(systemColumns);
if (!includeColumnCheck(bean.getExportTableColumns(), allColumn)) {
LOG.error("TG-COMMON-00005",
"Export対象テーブルのカラム名にExport中間TSVファイルに含まれないカラム名が存在します",
targetName, jobflowId, tableName, fileName);
return false;
}
// Export時に重複チェックを行う場合のみチェックを行う
if (bean.isDuplicateCheck()) {
// 異常データテーブルのカラム名のチェック
if (isEmptyOrHasEmptyString(bean.getErrorTableColumns())) {
LOG.error("TG-COMMON-00005",
"異常データテーブルのカラム名が設定されていない",
targetName, jobflowId, tableName, fileName);
return false;
}
// 異常データテーブルのカラムがExport中間TSVファイルに含まれる事を確認
if (!includeColumnCheck(bean.getErrorTableColumns(), allColumn)) {
LOG.error("TG-COMMON-00005",
"異常データテーブルのカラム名にExport中間TSVファイルに含まれないカラム名が存在します",
targetName, jobflowId, tableName, fileName);
return false;
}
// キー項目のカラム名のチェック
if (isEmptyOrHasEmptyString(bean.getKeyColumns())) {
LOG.error("TG-COMMON-00005",
"キー項目のカラム名が設定されていない",
targetName, jobflowId, tableName, fileName);
return false;
}
// エラーコードを格納するカラム名のチェック
String errCodeColumn = bean.getErrorCodeColumn();
if (isEmpty(errCodeColumn)) {
LOG.error("TG-COMMON-00005",
"エラーコードを格納するカラム名が設定されていない",
targetName, jobflowId, tableName, fileName);
return false;
} else {
// エラーコードのカラムがExport対象テーブルにコピーするカラムに含まれている場合はエラーとする
if (findArray(errCodeColumn, bean.getExportTableColumns())) {
LOG.error("TG-COMMON-00005",
"エラーコードを格納するカラム名がExport対象テーブルにデータをコピーするカラムに含まれている",
targetName, jobflowId, tableName, fileName);
return false;
}
// エラーコードのカラムが異常データテーブルにコピーするカラムに含まれている場合はエラーとする
if (findArray(errCodeColumn, bean.getErrorTableColumns())) {
LOG.error("TG-COMMON-00005",
"エラーコードを格納するカラム名が異常データテーブルにデータをコピーするカラムに含まれている",
targetName, jobflowId, tableName, fileName);
return false;
}
}
// 重複チェックエラーのエラーコードの値のチェック
if (isEmpty(bean.getErrorCode())) {
LOG.error("TG-COMMON-00005",
"重複チェックエラーのエラーコードの値が設定されていない",
targetName, jobflowId, tableName, fileName);
return false;
}
}
// Export対象テーブルに対応するJavaBeansのクラス名のチェック
Class<?> beanClass = bean.getExportTargetType();
if (beanClass == null) {
LOG.error("TG-COMMON-00005",
"Export対象テーブルに対応するJavaBeanのクラスが未設定",
targetName, jobflowId, tableName, fileName);
return false;
}
// Export対象データのHDFS上のパスのチェック
List<String> path = bean.getDfsFilePaths();
if (path == null || path.isEmpty()) {
LOG.error("TG-COMMON-00005",
"Export対象データのHDFS上のパスが設定されていない",
targetName, jobflowId, tableName, fileName);
return false;