Skip to content

Commit 0b27d1c

Browse files
authored
Merge 12dcf7c into b597b7c
2 parents b597b7c + 12dcf7c commit 0b27d1c

File tree

4 files changed

+81
-8
lines changed

4 files changed

+81
-8
lines changed

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

-1
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@ 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-
3635
private static final List<Class<? extends SingleEntityValidator>>
3736
singleEntityValidatorsWithParsingErrors = new ArrayList<>();
3837

main/src/main/java/org/mobilitydata/gtfsvalidator/table/GtfsFeedInfoSchema.java

+2-7
Original file line numberDiff line numberDiff line change
@@ -17,16 +17,11 @@
1717
package org.mobilitydata.gtfsvalidator.table;
1818

1919
import java.util.Locale;
20-
import org.mobilitydata.gtfsvalidator.annotation.EndRange;
21-
import org.mobilitydata.gtfsvalidator.annotation.FieldType;
22-
import org.mobilitydata.gtfsvalidator.annotation.FieldTypeEnum;
23-
import org.mobilitydata.gtfsvalidator.annotation.GtfsTable;
24-
import org.mobilitydata.gtfsvalidator.annotation.Recommended;
25-
import org.mobilitydata.gtfsvalidator.annotation.Required;
20+
import org.mobilitydata.gtfsvalidator.annotation.*;
2621
import org.mobilitydata.gtfsvalidator.type.GtfsDate;
2722

2823
@GtfsTable(value = "feed_info.txt", singleRow = true)
29-
@Recommended
24+
@ConditionallyRequired
3025
public interface GtfsFeedInfoSchema extends GtfsEntity {
3126
@Required
3227
String feedPublisherName();
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package org.mobilitydata.gtfsvalidator.validator;
2+
3+
import javax.inject.Inject;
4+
import org.mobilitydata.gtfsvalidator.annotation.GtfsValidator;
5+
import org.mobilitydata.gtfsvalidator.notice.MissingRecommendedFileNotice;
6+
import org.mobilitydata.gtfsvalidator.notice.MissingRequiredFileNotice;
7+
import org.mobilitydata.gtfsvalidator.notice.NoticeContainer;
8+
import org.mobilitydata.gtfsvalidator.table.GtfsFeedInfo;
9+
import org.mobilitydata.gtfsvalidator.table.GtfsFeedInfoTableContainer;
10+
import org.mobilitydata.gtfsvalidator.table.GtfsTranslationTableContainer;
11+
12+
@GtfsValidator
13+
public class MissingFeedInfoValidator extends FileValidator {
14+
15+
private final GtfsFeedInfoTableContainer feedInfoTable;
16+
private final GtfsTranslationTableContainer translationTable;
17+
18+
@Inject
19+
public MissingFeedInfoValidator(
20+
GtfsFeedInfoTableContainer feedInfoTable, GtfsTranslationTableContainer translationTable) {
21+
this.feedInfoTable = feedInfoTable;
22+
this.translationTable = translationTable;
23+
}
24+
25+
@Override
26+
public void validate(NoticeContainer noticeContainer) {
27+
if (feedInfoTable.isMissingFile()) {
28+
if (translationTable.isMissingFile()) {
29+
noticeContainer.addValidationNotice(
30+
new MissingRecommendedFileNotice(GtfsFeedInfo.FILENAME));
31+
} else {
32+
noticeContainer.addValidationNotice(new MissingRequiredFileNotice(GtfsFeedInfo.FILENAME));
33+
}
34+
}
35+
}
36+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
package org.mobilitydata.gtfsvalidator.validator;
2+
3+
import static com.google.common.truth.Truth.assertThat;
4+
5+
import java.util.List;
6+
import org.junit.Test;
7+
import org.mobilitydata.gtfsvalidator.notice.MissingRecommendedFileNotice;
8+
import org.mobilitydata.gtfsvalidator.notice.MissingRequiredFileNotice;
9+
import org.mobilitydata.gtfsvalidator.notice.NoticeContainer;
10+
import org.mobilitydata.gtfsvalidator.notice.ValidationNotice;
11+
import org.mobilitydata.gtfsvalidator.table.*;
12+
13+
public class MissingFeedInfoValidatorTest {
14+
15+
private static List<ValidationNotice> generateNotices(
16+
GtfsFeedInfoTableContainer feedInfoTableContainer,
17+
GtfsTranslationTableContainer translationTableContainer) {
18+
NoticeContainer noticeContainer = new NoticeContainer();
19+
new MissingFeedInfoValidator(feedInfoTableContainer, translationTableContainer)
20+
.validate(noticeContainer);
21+
return noticeContainer.getValidationNotices();
22+
}
23+
24+
@Test
25+
public void missingFeedInfoTranslationTableNotPresent() {
26+
assertThat(
27+
generateNotices(
28+
GtfsFeedInfoTableContainer.forStatus(GtfsTableContainer.TableStatus.MISSING_FILE),
29+
GtfsTranslationTableContainer.forStatus(
30+
GtfsTableContainer.TableStatus.MISSING_FILE)))
31+
.containsExactly(new MissingRecommendedFileNotice(GtfsFeedInfo.FILENAME));
32+
}
33+
34+
@Test
35+
public void missingFeedInfoWhenTranslationTableIsPresent() {
36+
assertThat(
37+
generateNotices(
38+
GtfsFeedInfoTableContainer.forStatus(GtfsTableContainer.TableStatus.MISSING_FILE),
39+
GtfsTranslationTableContainer.forStatus(
40+
GtfsTableContainer.TableStatus.PARSABLE_HEADERS_AND_ROWS)))
41+
.contains(new MissingRequiredFileNotice(GtfsFeedInfo.FILENAME));
42+
}
43+
}

0 commit comments

Comments
 (0)