diff --git a/framework/src/main/groovy/org/moqui/impl/entity/EntityDataLoaderImpl.groovy b/framework/src/main/groovy/org/moqui/impl/entity/EntityDataLoaderImpl.groovy index 36edc7023..b4281b6e9 100644 --- a/framework/src/main/groovy/org/moqui/impl/entity/EntityDataLoaderImpl.groovy +++ b/framework/src/main/groovy/org/moqui/impl/entity/EntityDataLoaderImpl.groovy @@ -75,6 +75,7 @@ class EntityDataLoaderImpl implements EntityDataLoader { char csvDelimiter = ',' char csvCommentStart = '#' char csvQuoteChar = '"' + char csvEscapeChar = '\\' String csvEntityName = null List csvFieldNames = null @@ -115,6 +116,7 @@ class EntityDataLoaderImpl implements EntityDataLoader { @Override EntityDataLoader csvDelimiter(char delimiter) { this.csvDelimiter = delimiter; return this } @Override EntityDataLoader csvCommentStart(char commentStart) { this.csvCommentStart = commentStart; return this } @Override EntityDataLoader csvQuoteChar(char quoteChar) { this.csvQuoteChar = quoteChar; return this } + @Override EntityDataLoader csvEscapeChar(char escapeChar) { this.csvEscapeChar = escapeChar; return this } @Override EntityDataLoader csvEntityName(String entityName) { if (!efi.isEntityDefined(entityName) && !sfi.isServiceDefined(entityName)) @@ -925,6 +927,7 @@ class EntityDataLoaderImpl implements EntityDataLoader { .withSkipHeaderRecord(true) // TODO: remove this? does it even do anything? .withIgnoreEmptyLines(true) .withIgnoreSurroundingSpaces(true) + .withEscape(edli.csvEscapeChar) .parse(reader) Iterator iterator = parser.iterator() diff --git a/framework/src/main/java/org/moqui/entity/EntityDataLoader.java b/framework/src/main/java/org/moqui/entity/EntityDataLoader.java index 7ad4cfe3b..63447b92c 100644 --- a/framework/src/main/java/org/moqui/entity/EntityDataLoader.java +++ b/framework/src/main/java/org/moqui/entity/EntityDataLoader.java @@ -96,6 +96,7 @@ public interface EntityDataLoader { EntityDataLoader csvDelimiter(char delimiter); EntityDataLoader csvCommentStart(char commentStart); EntityDataLoader csvQuoteChar(char quoteChar); + EntityDataLoader csvEscapeChar(char escapeChar); /** For CSV files use this name (entity or service name) instead of looking for it on line one in the file */ EntityDataLoader csvEntityName(String entityName);