Skip to content

Commit

Permalink
fix(exceptions): allow commas in service IDs
Browse files Browse the repository at this point in the history
  • Loading branch information
philip-cline committed Jul 4, 2023
1 parent a3e5707 commit fbd40a3
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 2 deletions.
5 changes: 4 additions & 1 deletion src/main/java/com/conveyal/gtfs/loader/JdbcTableWriter.java
Original file line number Diff line number Diff line change
Expand Up @@ -427,7 +427,10 @@ private void setStatementParameters(
// Array field type expects comma-delimited values.
List<String> values = new ArrayList<>();
for (JsonNode node : value) {
values.add(node.asText());
String nodeText = node.asText();
// Surround text value in quotes to preserve any internal commas
if (field instanceof StringListField) nodeText = "\"" + nodeText + "\"";
values.add(nodeText);
}
field.setParameter(preparedStatement, index, String.join(",", values));
} else {
Expand Down
6 changes: 5 additions & 1 deletion src/main/java/com/conveyal/gtfs/loader/StringListField.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import java.sql.JDBCType;
import java.sql.PreparedStatement;
import java.sql.SQLType;
import java.util.Arrays;
import java.util.Collections;
import java.util.Set;

Expand Down Expand Up @@ -34,7 +35,10 @@ public ValidateFieldResult<String> validateAndConvert(String original) {
public Set<NewGTFSError> setParameter(PreparedStatement preparedStatement, int oneBasedIndex, String string) {
// FIXME
try {
Array array = preparedStatement.getConnection().createArrayOf("text", string.split(","));
String[] stringList = string.split("(?<=\"),");
// Clean the string list of any escaped quotations which are required to preserve any internal commas
stringList = Arrays.stream(stringList).map(s -> s.replace("\"", "")).toArray(String[]::new);
Array array = preparedStatement.getConnection().createArrayOf("text", stringList);
preparedStatement.setArray(oneBasedIndex, array);
return Collections.EMPTY_SET;
} catch (Exception e) {
Expand Down

0 comments on commit fbd40a3

Please sign in to comment.