return valid;
}
private boolean validateOutput(OutputDescription output) {
boolean valid = true;
DirectFileOutputDescription desc = extract(output);
valid &= checkBasePath(desc.getClass(), desc.getBasePath(), "出力ベースパス");
DataClass dataType = getEnvironment().getDataClasses().load(desc.getModelType());
String pattern = desc.getResourcePattern();
List<CompiledResourcePattern> compiledPattern;
try {
compiledPattern = OutputPattern.compileResourcePattern(pattern, dataType);
} catch (IllegalArgumentException e) {
getEnvironment().error(
"出力リソース名のパターンが不正です ({1}) [{0}]",
e.getMessage(),
desc.getClass().getName());
valid = false;
compiledPattern = Collections.emptyList();
}
for (String patternString : desc.getDeletePatterns()) {
try {
FilePattern.compile(patternString);
} catch (IllegalArgumentException e) {
getEnvironment().error(
"削除するリソース名のパターン(\"{2}\")が不正です ({1}) [{0}]",
e.getMessage(),
desc.getClass().getName(),
patternString);
valid = false;
}
}
List<String> orders = desc.getOrder();
try {
OutputPattern.compileOrder(orders, dataType);
} catch (IllegalArgumentException e) {
getEnvironment().error(
"出力順序の指定が不正です ({1}) [{0}]",
e.getMessage(),
desc.getClass().getName());
valid = false;
}
Set<OutputPattern.SourceKind> kinds = pickSourceKinds(compiledPattern);
if (kinds.contains(OutputPattern.SourceKind.ENVIRONMENT)) {
if (kinds.contains(OutputPattern.SourceKind.PROPERTY)) {
getEnvironment().error(
"出力リソース名にワイルドカードを含む場合、プロパティ ('{'name'}') は指定できません"
+ " ({1}.{2}()): {0}",
pattern,
desc.getClass().getName(),
METHOD_RESOURCE_PATTERN);
valid = false;
}
if (kinds.contains(OutputPattern.SourceKind.RANDOM)) {
getEnvironment().error(
"出力リソース名にワイルドカードを含む場合、ランダム ([m..n]) は指定できません"
+ " ({1}.{2}()): {0}",
pattern,
desc.getClass().getName(),
METHOD_RESOURCE_PATTERN);
valid = false;
}
if (orders.isEmpty() == false) {
getEnvironment().error(
"出力リソース名にワイルドカードを含む場合、出力順序は指定できません"
+ " ({1}.{2}()): {0}",
pattern,
desc.getClass().getName(),
METHOD_ORDER);
valid = false;
}
}
valid &= validateFormat(desc.getClass(), desc.getModelType(), desc.getFormat());
return valid;
}