Fixed Issue 20 generalized for all array types
git-svn-id: https://hyracks.googlecode.com/svn/branches/hyracks_dev_next@505 123451ca-8445-de46-9d55-352943316053
diff --git a/hyracks-dataflow-std/src/main/java/edu/uci/ics/hyracks/dataflow/std/file/RecordWriter.java b/hyracks-dataflow-std/src/main/java/edu/uci/ics/hyracks/dataflow/std/file/RecordWriter.java
index 1c52b25..1858a73 100644
--- a/hyracks-dataflow-std/src/main/java/edu/uci/ics/hyracks/dataflow/std/file/RecordWriter.java
+++ b/hyracks-dataflow-std/src/main/java/edu/uci/ics/hyracks/dataflow/std/file/RecordWriter.java
@@ -14,73 +14,72 @@
*/
package edu.uci.ics.hyracks.dataflow.std.file;
-import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
-import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
-public abstract class RecordWriter implements IRecordWriter{
+import edu.uci.ics.hyracks.dataflow.std.util.StringSerializationUtils;
-
- protected final BufferedWriter bufferedWriter;
+public abstract class RecordWriter implements IRecordWriter {
+
+ protected final BufferedWriter bufferedWriter;
protected final int[] columns;
protected final char separator;
-
- public static final char COMMA = ',';
-
- public RecordWriter(Object [] args) throws Exception{
- OutputStream outputStream = createOutputStream(args);
- if(outputStream != null){
- bufferedWriter = new BufferedWriter(new OutputStreamWriter(createOutputStream(args)));
- }else{
- bufferedWriter = null;
- }
- this.columns = null;
- this.separator = COMMA;
- }
-
- public RecordWriter(int []columns, char separator, Object[] args) throws Exception{
- OutputStream outputStream = createOutputStream(args);
- if(outputStream != null){
- bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStream));
- }else{
- bufferedWriter = null;
- }
- this.columns = columns;
- this.separator = separator;
- }
-
- @Override
- public void close() {
- try {
- bufferedWriter.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- @Override
- public void write(Object[] record) throws Exception {
- if (columns == null) {
- for (int i = 0; i < record.length; ++i) {
- if (i != 0) {
- bufferedWriter.write(separator);
- }
- bufferedWriter.write(String.valueOf(record[i]));
- }
- } else {
- for (int i = 0; i < columns.length; ++i) {
- if (i != 0) {
- bufferedWriter.write(separator);
- }
- bufferedWriter.write(String.valueOf(record[columns[i]]));
- }
- }
- bufferedWriter.write("\n");
- }
-
- public abstract OutputStream createOutputStream(Object[] args) throws Exception;
-
+ public static final char COMMA = ',';
+
+ public RecordWriter(Object[] args) throws Exception {
+ OutputStream outputStream = createOutputStream(args);
+ if (outputStream != null) {
+ bufferedWriter = new BufferedWriter(new OutputStreamWriter(createOutputStream(args)));
+ } else {
+ bufferedWriter = null;
+ }
+ this.columns = null;
+ this.separator = COMMA;
+ }
+
+ public RecordWriter(int[] columns, char separator, Object[] args) throws Exception {
+ OutputStream outputStream = createOutputStream(args);
+ if (outputStream != null) {
+ bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStream));
+ } else {
+ bufferedWriter = null;
+ }
+ this.columns = columns;
+ this.separator = separator;
+ }
+
+ @Override
+ public void close() {
+ try {
+ bufferedWriter.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+ @Override
+ public void write(Object[] record) throws Exception {
+ if (columns == null) {
+ for (int i = 0; i < record.length; ++i) {
+ if (i != 0) {
+ bufferedWriter.write(separator);
+ }
+ bufferedWriter.write(StringSerializationUtils.toString(record[i]));
+ }
+ } else {
+ for (int i = 0; i < columns.length; ++i) {
+ if (i != 0) {
+ bufferedWriter.write(separator);
+ }
+ bufferedWriter.write(StringSerializationUtils.toString(record[columns[i]]));
+ }
+ }
+ bufferedWriter.write("\n");
+ }
+
+ public abstract OutputStream createOutputStream(Object[] args) throws Exception;
+
}
diff --git a/hyracks-dataflow-std/src/main/java/edu/uci/ics/hyracks/dataflow/std/misc/PrinterOperatorDescriptor.java b/hyracks-dataflow-std/src/main/java/edu/uci/ics/hyracks/dataflow/std/misc/PrinterOperatorDescriptor.java
index 7f097e0..e44e8a9 100644
--- a/hyracks-dataflow-std/src/main/java/edu/uci/ics/hyracks/dataflow/std/misc/PrinterOperatorDescriptor.java
+++ b/hyracks-dataflow-std/src/main/java/edu/uci/ics/hyracks/dataflow/std/misc/PrinterOperatorDescriptor.java
@@ -24,6 +24,7 @@
import edu.uci.ics.hyracks.dataflow.std.base.AbstractSingleActivityOperatorDescriptor;
import edu.uci.ics.hyracks.dataflow.std.base.IOpenableDataWriterOperator;
import edu.uci.ics.hyracks.dataflow.std.util.DeserializedOperatorNodePushable;
+import edu.uci.ics.hyracks.dataflow.std.util.StringSerializationUtils;
public class PrinterOperatorDescriptor extends AbstractSingleActivityOperatorDescriptor {
private static final long serialVersionUID = 1L;
@@ -44,7 +45,7 @@
@Override
public void writeData(Object[] data) throws HyracksDataException {
for (int i = 0; i < data.length; ++i) {
- System.err.print(String.valueOf(data[i]));
+ System.err.print(StringSerializationUtils.toString(data[i]));
System.err.print(", ");
}
System.err.println();
diff --git a/hyracks-dataflow-std/src/main/java/edu/uci/ics/hyracks/dataflow/std/util/StringSerializationUtils.java b/hyracks-dataflow-std/src/main/java/edu/uci/ics/hyracks/dataflow/std/util/StringSerializationUtils.java
new file mode 100644
index 0000000..1126c1f
--- /dev/null
+++ b/hyracks-dataflow-std/src/main/java/edu/uci/ics/hyracks/dataflow/std/util/StringSerializationUtils.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright 2009-2010 by The Regents of the University of California
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * you may obtain a copy of the License from
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package edu.uci.ics.hyracks.dataflow.std.util;
+
+import java.util.Arrays;
+
+public class StringSerializationUtils {
+ public static String toString(Object object) {
+ if (object instanceof Object[]) {
+ return Arrays.deepToString((Object[]) object);
+ } else {
+ return String.valueOf(object);
+ }
+ }
+}
\ No newline at end of file