X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;ds=sidebyside;f=org.argeo.jcr%2Fext%2Ftest%2Forg%2Fargeo%2Fjcr%2Ftabular%2FJcrTabularTest.java;fp=org.argeo.jcr%2Fext%2Ftest%2Forg%2Fargeo%2Fjcr%2Ftabular%2FJcrTabularTest.java;h=8896b2f4b6c81e3f5cede57779c5e3eae47ab901;hb=e66b9893b0e511f8ab295e3cee42b7dc966f1597;hp=0000000000000000000000000000000000000000;hpb=8260f4470f514ea347ca53f5b4dfc632c4a4de66;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.jcr/ext/test/org/argeo/jcr/tabular/JcrTabularTest.java b/org.argeo.jcr/ext/test/org/argeo/jcr/tabular/JcrTabularTest.java new file mode 100644 index 000000000..8896b2f4b --- /dev/null +++ b/org.argeo.jcr/ext/test/org/argeo/jcr/tabular/JcrTabularTest.java @@ -0,0 +1,85 @@ +/* + * Copyright (C) 2007-2012 Argeo GmbH + * + * 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 at + * + * 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 org.argeo.jcr.tabular; + +import java.io.InputStreamReader; +import java.util.ArrayList; +import java.util.List; + +import javax.jcr.Node; +import javax.jcr.PropertyType; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.apache.jackrabbit.commons.cnd.CndImporter; +import org.argeo.jackrabbit.unit.AbstractJackrabbitTestCase; +import org.argeo.jcr.ArgeoNames; +import org.argeo.jcr.ArgeoTypes; +import org.argeo.util.tabular.TabularColumn; +import org.argeo.util.tabular.TabularRow; +import org.argeo.util.tabular.TabularRowIterator; +import org.argeo.util.tabular.TabularWriter; + +public class JcrTabularTest extends AbstractJackrabbitTestCase { + private final static Log log = LogFactory.getLog(JcrTabularTest.class); + + public void testWriteReadCsv() throws Exception { + session().setNamespacePrefix("argeo", ArgeoNames.ARGEO_NAMESPACE); + InputStreamReader reader = new InputStreamReader(getClass() + .getResourceAsStream("/org/argeo/jcr/argeo.cnd")); + CndImporter.registerNodeTypes(reader, session()); + reader.close(); + + // write + Integer columnCount = 15; + Long rowCount = 1000l; + String stringValue = "test, \ntest"; + + List header = new ArrayList(); + for (int i = 0; i < columnCount; i++) { + header.add(new TabularColumn("col" + i, PropertyType.STRING)); + } + Node tableNode = session().getRootNode().addNode("table", + ArgeoTypes.ARGEO_TABLE); + TabularWriter writer = new JcrTabularWriter(tableNode, header, + ArgeoTypes.ARGEO_CSV); + for (int i = 0; i < rowCount; i++) { + List objs = new ArrayList(); + for (int j = 0; j < columnCount; j++) { + objs.add(stringValue); + } + writer.appendRow(objs.toArray()); + } + writer.close(); + session().save(); + + if (log.isDebugEnabled()) + log.debug("Wrote tabular content " + rowCount + " rows, " + + columnCount + " columns"); + // read + TabularRowIterator rowIt = new JcrTabularRowIterator(tableNode); + Long count = 0l; + while (rowIt.hasNext()) { + TabularRow tr = rowIt.next(); + assertEquals(header.size(), tr.size()); + count++; + } + assertEquals(rowCount, count); + if (log.isDebugEnabled()) + log.debug("Read tabular content " + rowCount + " rows, " + + columnCount + " columns"); + } +}