File tree Expand file tree Collapse file tree 3 files changed +24
-2
lines changed
core/src/main/java/org/mobilitydata/gtfsvalidator/table Expand file tree Collapse file tree 3 files changed +24
-2
lines changed Original file line number Diff line number Diff 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 ));
Original file line number Diff line number Diff 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 ));
Original file line number Diff line number Diff 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 ();
You can’t perform that action at this time.
0 commit comments