5
5
import com .conveyal .datatools .manager .auth .Auth0UserProfile ;
6
6
import com .conveyal .datatools .manager .gtfsplus .tables .GtfsPlusTable ;
7
7
import com .conveyal .datatools .manager .models .FeedSource ;
8
- import com .conveyal .datatools .manager .models .FeedSource .FeedRetrievalMethod ;
9
8
import com .conveyal .datatools .manager .models .FeedVersion ;
10
9
import com .conveyal .datatools .manager .models .Project ;
11
10
import com .conveyal .datatools .manager .persistence .FeedStore ;
@@ -136,14 +135,19 @@ public class MergeFeedsJob extends MonitorableJob {
136
135
final FeedVersion mergedVersion ;
137
136
public boolean failOnDuplicateTripId = true ;
138
137
138
+ public MergeFeedsJob (Auth0UserProfile owner , Set <FeedVersion > feedVersions , String file , MergeFeedsType mergeType ) {
139
+ this (owner , feedVersions , file , mergeType , true );
140
+ }
141
+
139
142
/**
140
- * @param owner user ID that initiated job
141
- * @param feedVersions set of feed versions to merge
142
- * @param file resulting merge filename (without .zip)
143
- * @param mergeType the type of merge to perform (@link MergeFeedsType)
143
+ * @param owner user ID that initiated job
144
+ * @param feedVersions set of feed versions to merge
145
+ * @param file resulting merge filename (without .zip)
146
+ * @param mergeType the type of merge to perform {@link MergeFeedsType}
147
+ * @param storeNewVersion whether to store merged feed as new version
144
148
*/
145
149
public MergeFeedsJob (Auth0UserProfile owner , Set <FeedVersion > feedVersions , String file ,
146
- MergeFeedsType mergeType ) {
150
+ MergeFeedsType mergeType , boolean storeNewVersion ) {
147
151
super (owner , mergeType .equals (REGIONAL ) ? "Merging project feeds" : "Merging feed versions" ,
148
152
JobType .MERGE_FEED_VERSIONS );
149
153
this .feedVersions = feedVersions ;
@@ -158,7 +162,7 @@ public MergeFeedsJob(Auth0UserProfile owner, Set<FeedVersion> feedVersions, Stri
158
162
// Grab parent feed source depending on merge type.
159
163
FeedSource regionalFeedSource = null ;
160
164
// If storing a regional merge as a new version, find the feed source designated by the project.
161
- if (mergeType .equals (REGIONAL )) {
165
+ if (mergeType .equals (REGIONAL ) && storeNewVersion ) {
162
166
regionalFeedSource = Persistence .feedSources .getById (project .regionalFeedSourceId );
163
167
// Create new feed source if this is the first regional merge.
164
168
if (regionalFeedSource == null ) {
@@ -175,11 +179,13 @@ public MergeFeedsJob(Auth0UserProfile owner, Set<FeedVersion> feedVersions, Stri
175
179
this .feedSource = mergeType .equals (REGIONAL )
176
180
? regionalFeedSource
177
181
: feedVersions .iterator ().next ().parentFeedSource ();
178
- // Set feed source for merged version.
179
- this .mergedVersion = new FeedVersion (this .feedSource );
180
- this .mergedVersion .retrievalMethod = mergeType .equals (REGIONAL )
181
- ? FeedRetrievalMethod .REGIONAL_MERGE
182
- : FeedRetrievalMethod .SERVICE_PERIOD_MERGE ;
182
+ // Merged version will be null if the new version should not be stored.
183
+ this .mergedVersion = storeNewVersion ? new FeedVersion (this .feedSource ) : null ;
184
+ if (this .mergedVersion != null ) {
185
+ this .mergedVersion .retrievalMethod = mergeType .equals (REGIONAL )
186
+ ? REGIONAL_MERGE
187
+ : FeedSource .FeedRetrievalMethod .SERVICE_PERIOD_MERGE ;
188
+ }
183
189
this .mergeFeedsResult = new MergeFeedsResult (mergeType );
184
190
}
185
191
0 commit comments