Skip to content

Commit 0b24cc9

Browse files
authored
Merge ccf38f8 into b597b7c
2 parents b597b7c + ccf38f8 commit 0b24cc9

File tree

3 files changed

+24
-2
lines changed

3 files changed

+24
-2
lines changed

core/src/main/java/org/mobilitydata/gtfsvalidator/table/AnyTableLoader.java

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,14 @@ public final class AnyTableLoader {
3232
private static final FluentLogger logger = FluentLogger.forEnclosingClass();
3333
private static final List<Class<? extends FileValidator>> singleFileValidatorsWithParsingErrors =
3434
new ArrayList<>();
35-
35+
private static boolean hasTranslations = false;
3636
private static final List<Class<? extends SingleEntityValidator>>
3737
singleEntityValidatorsWithParsingErrors = new ArrayList<>();
3838

39+
public static void setHasTranslations(boolean translations) {
40+
hasTranslations = translations;
41+
}
42+
3943
public List<Class<? extends FileValidator>> getValidatorsWithParsingErrors() {
4044
return Collections.unmodifiableList(singleFileValidatorsWithParsingErrors);
4145
}
@@ -206,7 +210,11 @@ public static GtfsTableContainer loadMissingFile(
206210
tableDescriptor.createContainerForInvalidStatus(
207211
GtfsTableContainer.TableStatus.MISSING_FILE);
208212
if (tableDescriptor.isRecommended()) {
209-
noticeContainer.addValidationNotice(new MissingRecommendedFileNotice(gtfsFilename));
213+
if (hasTranslations && gtfsFilename.contains("feed_info")) {
214+
noticeContainer.addValidationNotice(new MissingRequiredFileNotice(gtfsFilename));
215+
} else {
216+
noticeContainer.addValidationNotice(new MissingRecommendedFileNotice(gtfsFilename));
217+
}
210218
}
211219
if (tableDescriptor.isRequired()) {
212220
noticeContainer.addValidationNotice(new MissingRequiredFileNotice(gtfsFilename));

core/src/main/java/org/mobilitydata/gtfsvalidator/table/GtfsFeedLoader.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,9 @@ public GtfsFeedContainer loadAndValidate(
100100
Map<String, GtfsTableDescriptor<?>> remainingDescriptors =
101101
(Map<String, GtfsTableDescriptor<?>>) tableDescriptors.clone();
102102
for (String filename : gtfsInput.getFilenames()) {
103+
if (filename.contains("translations")) {
104+
AnyTableLoader.setHasTranslations(true);
105+
}
103106
GtfsTableDescriptor<?> tableDescriptor = remainingDescriptors.remove(filename.toLowerCase());
104107
if (tableDescriptor == null) {
105108
noticeContainer.addValidationNotice(new UnknownFileNotice(filename));

core/src/main/java/org/mobilitydata/gtfsvalidator/table/GtfsTableDescriptor.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,9 @@ public abstract class GtfsTableDescriptor<T extends GtfsEntity> {
1212
// True if the specified file is required in a feed.
1313
private boolean required;
1414

15+
// True if the specified file is conditionally required.
16+
private boolean conditionallyRequired;
17+
1518
public abstract GtfsTableContainer createContainerForInvalidStatus(
1619
GtfsTableContainer.TableStatus tableStatus);
1720

@@ -36,6 +39,14 @@ public void setRequired(boolean required) {
3639
this.required = required;
3740
}
3841

42+
public boolean isConditionallyRequired() {
43+
return this.conditionallyRequired;
44+
}
45+
46+
public void setConditionallyRequired(boolean conditionallyRequired) {
47+
this.conditionallyRequired = conditionallyRequired;
48+
}
49+
3950
public abstract Optional<Integer> maxCharsPerColumn();
4051

4152
public abstract ImmutableList<GtfsColumnDescriptor> getColumns();

0 commit comments

Comments
 (0)