assert inputs != null;
assert outputs != null;
Set<String> primaryTargets = Sets.create();
Set<String> secondaryTargets = Sets.create();
for (InputDescription description : inputs) {
BulkLoadImporterDescription desc = extract(description);
if (desc.getMode() == Mode.PRIMARY) {
primaryTargets.add(desc.getTargetName());
} else {
secondaryTargets.add(desc.getTargetName());
if (desc.getLockType() != BulkLoadImporterDescription.LockType.UNUSED) {
getEnvironment().error(
"補助インポーターはロックを指定できません: {0}",
desc.getClass().getName());
return false;
}
}
}
if (primaryTargets.size() >= 2) {
getEnvironment().error(
"ジョブフロー内で複数のインポーターを起動できません。{1}を利用してください: {0}",
primaryTargets,
SecondaryImporterDescription.class.getSimpleName());
return false;
}
for (String primary : primaryTargets) {
if (secondaryTargets.contains(primary)) {
LOG.warn("補助インポーターの指定がある{}は通常のインポーターでロードされます", primary);
}
}
Set<String> exportTargets = Sets.create();
for (OutputDescription description : outputs) {
BulkLoadExporterDescription desc = extract(description);
exportTargets.add(desc.getTargetName());
}
if (exportTargets.size() >= 2) {
getEnvironment().error(
"ジョブフロー内で複数のエクスポーターを起動できません: {0}",
primaryTargets);