Skip to content

Commit 5fe046c

Browse files
Merge pull request #629 from ibi-group/feature/DT-526-skip-non-revenue-if-fails
Skip non revenue transformation if it fails
2 parents d4a13b3 + 2122f7a commit 5fe046c

File tree

3 files changed

+27
-5
lines changed

3 files changed

+27
-5
lines changed

src/main/java/com/conveyal/datatools/manager/models/transform/RemoveNonRevenueTripsTransformation.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,9 @@
3636
* This transformation removes non revenue trips from a feed. Establishing trips where _all_ related stop times have
3737
* "no pickup available" or "no continuous stopping pickup". Then remove these stop times and related trips from the
3838
* feed. "Non revenue" stops are kept because the transit ops systems use these in the published feed for all trips.
39+
*
40+
* If the transformation fails for any reason e.g. because of missing fields, the transformation is skipped instead of
41+
* being failed. This allows subsequent transformations to take place and for the import to still succeed.
3942
*/
4043
public class RemoveNonRevenueTripsTransformation extends ZipTransformation {
4144
private static final Logger LOG = LoggerFactory.getLogger(RemoveNonRevenueTripsTransformation.class);
@@ -60,8 +63,7 @@ public void transform(FeedTransformZipTarget zipTarget, MonitorableJob.Status st
6063
Field[] fieldsFoundInStopTimes = gtfsTable.getFieldsFromFieldHeaders(headersForStopTime, null);
6164
Map<String, Integer> fieldIndexes = getFieldIndexes(fieldsFoundInStopTimes);
6265
if (!hasRequiredFields(fieldIndexes)) {
63-
status.error = true;
64-
status.fail("Unable to remove non revenue trips because the stop times file does not contain all required fields.");
66+
LOG.warn("Unable to remove non revenue trips because the stop times file does not contain all required fields.");
6567
return;
6668
}
6769

@@ -76,8 +78,7 @@ public void transform(FeedTransformZipTarget zipTarget, MonitorableJob.Status st
7678
Field[] fieldsFoundInStopTrips = gtfsTable.getFieldsFromFieldHeaders(headersForTrips, null);
7779
int tripIdFieldIndex = getFieldIndex(fieldsFoundInStopTrips, TRIP_ID_FIELD_NAME);
7880
if (tripIdFieldIndex == -1) {
79-
status.error = true;
80-
status.fail("Unable to remove non revenue trips because the trips file does not contain the required trip id field.");
81+
LOG.warn("Unable to remove non revenue trips because the trips file does not contain the required trip id field.");
8182
return;
8283
}
8384
RevenueData revenueTrips = getAllRevenueTrips(csvReaderForTrips, revenueStopTimes.getStopTimeRows().keySet(), tripIdFieldIndex);
@@ -101,7 +102,7 @@ public void transform(FeedTransformZipTarget zipTarget, MonitorableJob.Status st
101102
revenueTrips.getDeletedRowCount()
102103
);
103104
} catch (Exception e) {
104-
status.fail("Unknown error encountered while attempting to remove non revenue trip from zip file.", e);
105+
LOG.error("Unknown error encountered while attempting to remove non revenue trip from zip file.", e);
105106
}
106107
}
107108

src/test/java/com/conveyal/datatools/manager/models/transform/RemoveNonRevenueTripsTransformationTest.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,17 @@ void testDirectNonRevenueTripRemovalTransformation() throws Exception {
158158
assertFalse(hasNonRevenueTrips(zipTarget.gtfsFile.getAbsolutePath()));
159159
}
160160

161+
@Test
162+
void testDirectNonRevenueTripRemovalTransformationFail() throws Exception {
163+
// Feed is missing required pickup and drop off fields. This will stop the transformation, but should not flag
164+
// it as failed. Subsequent transformations and import can then still take place.
165+
File zip = zipFolderFiles("non-revenue-trips-fail");
166+
FeedTransformZipTarget zipTarget = new FeedTransformZipTarget(zip);
167+
MonitorableJob.Status status = new MonitorableJob.Status();
168+
trans.transform(zipTarget, status);
169+
assertFalse(status.error);
170+
}
171+
161172
private void hadExpectTransformResults(List<TableTransformResult> tableTransformResults) {
162173
assertEquals(2, tableTransformResults.size());
163174
assertEquals(5, tableTransformResults.get(0).deletedCount);
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
trip_id,arrival_time,departure_time,stop_id,continuous_pickup,continuous_drop_off
2+
non-revenue-trip,04:58:00,04:58:00,CONC,1,1
3+
non-revenue-trip,05:03:00,05:03:00,PHIL,1,1
4+
non-revenue-trip,05:06:00,05:06:00,WCRK,1,1
5+
non-revenue-trip,05:11:00,05:11:00,LAFY,1,1
6+
non-revenue-trip,05:12:00,05:13:00,TGLD,1,1
7+
revenue-trip,04:58:00,04:58:00,CONC,0,0
8+
revenue-trip,05:03:00,05:03:00,PHIL,1,1
9+
revenue-trip,05:06:00,05:06:00,WCRK,1,1
10+
revenue-trip,05:11:00,05:11:00,LAFY,0,0

0 commit comments

Comments
 (0)