@@ -351,9 +351,13 @@ private void updateFieldCounts(Map<String, Integer> fieldCounts, Map<String, Int
351351 }
352352 }
353353
354- private void appendValues (StringBuilder line , int fieldCount , String fieldValues , boolean mutiValuesField ) {
354+ private void appendValues (StringBuilder line , int fieldCount , String fieldValues , boolean multiValuesField ) {
355355 if (StringUtils .isNotBlank (fieldValues )) {
356- String [] values = mutiValuesField ? new String [] { fieldValues } : fieldValues .split ("\\ |" );
356+ String [] values = fieldValues .split ("\\ " + TabularRecord .DELIMITER );
357+ if (multiValuesField ) {
358+ String strVal = concatValues (values , " " + TabularRecord .DELIMITER + " " );
359+ values = new String []{ strVal };
360+ }
357361
358362 Arrays .sort (values );
359363 for (String value : values ) {
@@ -364,7 +368,7 @@ private void appendValues(StringBuilder line, int fieldCount, String fieldValues
364368 }
365369
366370 // append commas for extra fields
367- if (!mutiValuesField && fieldCount > values .length ) {
371+ if (!multiValuesField && fieldCount > values .length ) {
368372 for (int i = values .length ; i < fieldCount ; i ++) {
369373 line .append ("," );
370374 }
@@ -375,6 +379,22 @@ private void appendValues(StringBuilder line, int fieldCount, String fieldValues
375379 }
376380 }
377381
382+ /*
383+ * Join array elements into string with delimiter.
384+ * @param values
385+ * @param delimiter
386+ * @return
387+ */
388+ private static String concatValues (String [] values , String delimiter ) {
389+ StringBuilder builder = new StringBuilder ();
390+ for (String v : values ) {
391+ if (builder .length () > 0 )
392+ builder .append (delimiter );
393+ builder .append (v );
394+ }
395+ return builder .toString ();
396+ }
397+
378398 private void appendFlatColumnNames (StringBuilder line , int fieldCount , String columnName ) {
379399 for (int i =0 ; i < fieldCount ; i ++) {
380400 if (line .length () > 1 )
0 commit comments