Changeset 1803
Legend:
- Unmodified
- Added
- Removed
-
trunk/grails-app/services/dbnp/studycapturing/AssayService.groovy
r1790 r1803 523 523 524 524 outputStream << rowData.collect { row -> 525 row.collect{ it ? "\"$it\"" : '""' }.join(',') 525 row.collect{ 526 527 // omit quotes in case of numeric values 528 if (it instanceof Number) return it 529 530 def s = it.toString() 531 532 def addQuotes = false 533 534 // escape double quotes with double quotes if they exist and 535 // enable surround with quotes 536 if (s.contains('"')) { 537 addQuotes = true 538 s = s.replaceAll('"','""') 539 } else { 540 // enable surround with quotes in case of comma's 541 if (s.contains(',') || s.contains('\n')) addQuotes = true 542 } 543 544 addQuotes ? "\"$s\"" : s 545 546 }.join(',') 526 547 }.join('\n') 527 548 -
trunk/test/unit/dbnp/studycapturing/AssayServiceTests.groovy
r1790 r1803 262 262 // } 263 263 264 264 void testCSVOutput() { 265 266 // We're testing: 267 // - strings containing any newlines, comma's, or double quotes should 268 // be surrounded with double quotes 269 // - double quotes should be escaped by double quotes ( " -> "" ) 270 // - other strings and numbers should remain 'quoteless' 271 272 def rowData = [["""a 273 b""","a,b","a\"b", "abc"],[1,2.0,"3,1"]] 274 275 def baos = new ByteArrayOutputStream() 276 277 service.exportRowWiseDataToCSVFile rowData, baos 278 279 assertEquals 'CSV Output', '"a\nb","a,b","a""b",abc\n1,2.0,"3,1"', baos.toString() 280 281 } 265 282 }
Note: See TracChangeset
for help on using the changeset viewer.