You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pivot.apache.org by tv...@apache.org on 2009/09/21 19:38:27 UTC
svn commit: r817339 -
/incubator/pivot/trunk/core/src/org/apache/pivot/serialization/CSVSerializer.java
Author: tvolkert
Date: Mon Sep 21 17:38:26 2009
New Revision: 817339
URL: http://svn.apache.org/viewvc?rev=817339&view=rev
Log:
PIVOT-302 :: Fix CSVSerializer
Modified:
incubator/pivot/trunk/core/src/org/apache/pivot/serialization/CSVSerializer.java
Modified: incubator/pivot/trunk/core/src/org/apache/pivot/serialization/CSVSerializer.java
URL: http://svn.apache.org/viewvc/incubator/pivot/trunk/core/src/org/apache/pivot/serialization/CSVSerializer.java?rev=817339&r1=817338&r2=817339&view=diff
==============================================================================
--- incubator/pivot/trunk/core/src/org/apache/pivot/serialization/CSVSerializer.java (original)
+++ incubator/pivot/trunk/core/src/org/apache/pivot/serialization/CSVSerializer.java Mon Sep 21 17:38:26 2009
@@ -266,7 +266,8 @@
}
private void logException(Exception exception) {
- System.err.println("An error occurred while processing input at line number " + getLineNumber());
+ System.err.println("An error occurred while processing input at line number "
+ + getLineNumber());
}
/**
@@ -367,14 +368,24 @@
}
while (c != -1
- && (quoted || c != ',')
- && (c != '\r' && c != '\n')) {
+ && (quoted || (c != ',' && c != '\r' && c != '\n'))) {
if (c == '"') {
+ if (!quoted) {
+ throw new SerializationException("Dangling quote.");
+ }
+
c = reader.read();
+
+ if (c != '"'
+ && (c != ',' && c != '\r' && c != '\n' && c != -1)) {
+ throw new SerializationException("Prematurely terminated quote.");
+ }
+
quoted &= (c == '"');
}
- if (quoted || c != ',') {
+ if (c != -1
+ && (quoted || (c != ',' && c != '\r' && c != '\n'))) {
valueBuilder.append((char)c);
c = reader.read();
}
@@ -458,7 +469,27 @@
}
Object value = itemDictionary.get(key);
- writer.append(value.toString());
+
+ if (value != null) {
+ String string = value.toString();
+
+ if (string.indexOf(',') >= 0
+ || string.indexOf('"') >= 0
+ || string.indexOf('\r') >= 0
+ || string.indexOf('\n') >= 0) {
+ writer.append('"');
+
+ if (string.indexOf('"') == -1) {
+ writer.append(string);
+ } else {
+ writer.append(string.replace("\"", "\"\""));
+ }
+
+ writer.append('"');
+ } else {
+ writer.append(string);
+ }
+ }
}
writer.append("\r\n");