Improve CSV and tabular
authorMathieu Baudier <mbaudier@argeo.org>
Tue, 4 Oct 2011 17:11:16 +0000 (17:11 +0000)
committerMathieu Baudier <mbaudier@argeo.org>
Tue, 4 Oct 2011 17:11:16 +0000 (17:11 +0000)
git-svn-id: https://svn.argeo.org/commons/trunk@4797 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

server/runtime/org.argeo.server.jcr/src/main/java/org/argeo/jcr/tabular/JcrTabularRowIterator.java
server/runtime/org.argeo.server.jcr/src/main/java/org/argeo/jcr/tabular/JcrTabularWriter.java
server/runtime/org.argeo.server.jcr/src/test/java/org/argeo/jcr/tabular/JcrTabularTest.java

index 238e7d26c930ef66707ae5eb67350e1ec50df630..8223e1d4830d2c5c76995022890ccb23d66b8192 100644 (file)
@@ -15,7 +15,6 @@ import javax.jcr.RepositoryException;
 import org.apache.commons.io.IOUtils;
 import org.argeo.ArgeoException;
 import org.argeo.jcr.ArgeoTypes;
-import org.argeo.jcr.JcrUtils;
 import org.argeo.util.CsvParser;
 import org.argeo.util.tabular.ArrayTabularRow;
 import org.argeo.util.tabular.TabularColumn;
@@ -46,7 +45,8 @@ public class JcrTabularRowIterator implements TabularRowIterator {
                                if (node.isNodeType(ArgeoTypes.ARGEO_COLUMN)) {
                                        Integer type = PropertyType.valueFromName(node.getProperty(
                                                        Property.JCR_REQUIRED_TYPE).getString());
-                                       TabularColumn tc = new TabularColumn(node.getName(), type);
+                                       TabularColumn tc = new TabularColumn(node.getProperty(
+                                                       Property.JCR_TITLE).getString(), type);
                                        header.add(tc);
                                        // } else if (node.getName().equals(Property.JCR_CONTENT)) {
                                        // contentNode = node;
@@ -66,7 +66,7 @@ public class JcrTabularRowIterator implements TabularRowIterator {
                                                        // TODO Auto-generated catch block
                                                        e.printStackTrace();
                                                }
-                                               //textLines.add(tokens);
+                                               // textLines.add(tokens);
                                                if (hasNext == null) {
                                                        hasNext = true;
                                                        synchronized (JcrTabularRowIterator.this) {
@@ -127,20 +127,20 @@ public class JcrTabularRowIterator implements TabularRowIterator {
                        return true;
 
                // (parsingCompleted && textLines.isEmpty())
-                       return false;
-
-//             if (!hasNext && textLines.isEmpty()) {
-//                     if (in != null) {
-//                             IOUtils.closeQuietly(in);
-//                             in = null;
-//                     }
-//                     if (binary != null) {
-//                             JcrUtils.closeQuietly(binary);
-//                             binary = null;
-//                     }
-//                     return false;
-//             } else
-//                     return true;
+               return false;
+
+               // if (!hasNext && textLines.isEmpty()) {
+               // if (in != null) {
+               // IOUtils.closeQuietly(in);
+               // in = null;
+               // }
+               // if (binary != null) {
+               // JcrUtils.closeQuietly(binary);
+               // binary = null;
+               // }
+               // return false;
+               // } else
+               // return true;
        }
 
        public synchronized TabularRow next() {
index cd6feb565545b0e643ed3a41f8e9b1ca9a76e15a..0727b784e617507dd8e2dc171d1b671371fab91a 100644 (file)
@@ -30,10 +30,17 @@ public class JcrTabularWriter implements TabularWriter {
                        String contentNodeType) {
                try {
                        for (TabularColumn column : columns) {
-                               Node columnNode = tableNode.addNode(column.getName(),
+                               String normalized = JcrUtils.replaceInvalidChars(column
+                                               .getName());
+                               Node columnNode = tableNode.addNode(normalized,
                                                ArgeoTypes.ARGEO_COLUMN);
-                               columnNode.setProperty(Property.JCR_REQUIRED_TYPE,
-                                               PropertyType.nameFromValue(column.getType()));
+                               columnNode.setProperty(Property.JCR_TITLE, column.getName());
+                               if (column.getType() != null)
+                                       columnNode.setProperty(Property.JCR_REQUIRED_TYPE,
+                                                       PropertyType.nameFromValue(column.getType()));
+                               else
+                                       columnNode.setProperty(Property.JCR_REQUIRED_TYPE,
+                                                       PropertyType.TYPENAME_STRING);
                        }
                        contentNode = tableNode.addNode(Property.JCR_CONTENT,
                                        contentNodeType);
@@ -48,7 +55,7 @@ public class JcrTabularWriter implements TabularWriter {
                }
        }
 
-       public void appendRow(List<?> row) {
+       public void appendRow(Object[] row) {
                csvWriter.writeLine(row);
        }
 
index 3df80ca04f0fc5e1dcdcfa82121de36dd3c76250..7bb8e90bc5e83c5787df9a37b42075604083b182 100644 (file)
@@ -67,7 +67,7 @@ public class JcrTabularTest extends AbstractJcrTestCase {
                        for (int j = 0; j < columnCount; j++) {
                                objs.add(stringValue);
                        }
-                       writer.appendRow(objs);
+                       writer.appendRow(objs.toArray());
                }
                writer.close();
                session().save();