http://git-wip-us.apache.org/repos/asf/jena/blob/3d70d735/jena-csv/src/test/java/org/apache/jena/propertytable/AbstractRowTest.java ---------------------------------------------------------------------- diff --git a/jena-csv/src/test/java/org/apache/jena/propertytable/AbstractRowTest.java b/jena-csv/src/test/java/org/apache/jena/propertytable/AbstractRowTest.java index 20598a9..3e16033 100644 --- a/jena-csv/src/test/java/org/apache/jena/propertytable/AbstractRowTest.java +++ b/jena-csv/src/test/java/org/apache/jena/propertytable/AbstractRowTest.java @@ -1,105 +1,105 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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.apache.jena.propertytable; - -import org.apache.jena.graph.Node ; -import org.apache.jena.graph.NodeFactory ; -import org.junit.Assert; -import org.junit.Test; - -/** - * Tests related to Row. - * - */ -public abstract class AbstractRowTest extends AbstractColumnTest{ - - @Test - public void testAddRowValue() { - - Column something = table.createColumn(URI("something")); - Column somethingElse = table.createColumn(URI("somethingElse")); - - row.setValue(something, URI("apple")); - row.setValue(somethingElse, URI("orange")); - - Assert.assertEquals(URI("apple"), row.getValue(something)); - Assert.assertEquals(URI("orange"), row.getValue(somethingElse)); - } - - @Test - public void testUnsetRowValue() { - Column something = table.createColumn(URI("something")); - row.setValue( something , URI("apple")); - Assert.assertEquals(URI("apple"), row.getValue(something)); - row.setValue( something , null); - Assert.assertEquals(null, row.getValue(something)); - } - - @Test(expected=NullPointerException.class) - public void testGetRowWithNullKey() { - table.getRow(null); - } - - @Test(expected = NullPointerException.class) - public void testAddValueToNotExistingColumn() { - row.setValue(table.getColumn(URI("something")), URI("apple")); - } - - - - @Test(expected=IllegalArgumentException.class) - public void testGetListWithANonExistantColumn() { - Assert.assertNull(row.getValue( NodeFactory.createBlankNode() )); - } - - @Test - public void testGetListWithAnMissingRowValue() { - Column something = table.createColumn(URI("something")); - Assert.assertNull(row.getValue(something)); - } - - @Test - public void testGetValue() { - Column something = table.createColumn(URI("something")); - row.setValue(something, URI("apple")); - Node value = row.getValue(something); - Assert.assertEquals(URI("apple"), value); - } - - @Test - public void testRowExistsFalse(){ - Assert.assertNull(table.getRow(NodeFactory.createBlankNode())); - } - - @Test - public void testRowExistsTrue() { - Assert.assertNotNull(table.getRow(rowSubject)); - } - - @Test - public void testGetRowFalseAndDoesntCreateRow() { - Assert.assertNull(table.getRow(NodeFactory.createBlankNode())); - Assert.assertNull(table.getRow(NodeFactory.createBlankNode())); - } - - @Test(expected=IllegalArgumentException.class) - public void testGetValueBeforeColumnExists() { - row.getValue(URI("nonexistentColumnX")); - } -} +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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.apache.jena.propertytable; + +import org.apache.jena.graph.Node ; +import org.apache.jena.graph.NodeFactory ; +import org.junit.Assert; +import org.junit.Test; + +/** + * Tests related to Row. + * + */ +public abstract class AbstractRowTest extends AbstractColumnTest{ + + @Test + public void testAddRowValue() { + + Column something = table.createColumn(URI("something")); + Column somethingElse = table.createColumn(URI("somethingElse")); + + row.setValue(something, URI("apple")); + row.setValue(somethingElse, URI("orange")); + + Assert.assertEquals(URI("apple"), row.getValue(something)); + Assert.assertEquals(URI("orange"), row.getValue(somethingElse)); + } + + @Test + public void testUnsetRowValue() { + Column something = table.createColumn(URI("something")); + row.setValue( something , URI("apple")); + Assert.assertEquals(URI("apple"), row.getValue(something)); + row.setValue( something , null); + Assert.assertEquals(null, row.getValue(something)); + } + + @Test(expected=NullPointerException.class) + public void testGetRowWithNullKey() { + table.getRow(null); + } + + @Test(expected = NullPointerException.class) + public void testAddValueToNotExistingColumn() { + row.setValue(table.getColumn(URI("something")), URI("apple")); + } + + + + @Test(expected=IllegalArgumentException.class) + public void testGetListWithANonExistantColumn() { + Assert.assertNull(row.getValue( NodeFactory.createBlankNode() )); + } + + @Test + public void testGetListWithAnMissingRowValue() { + Column something = table.createColumn(URI("something")); + Assert.assertNull(row.getValue(something)); + } + + @Test + public void testGetValue() { + Column something = table.createColumn(URI("something")); + row.setValue(something, URI("apple")); + Node value = row.getValue(something); + Assert.assertEquals(URI("apple"), value); + } + + @Test + public void testRowExistsFalse(){ + Assert.assertNull(table.getRow(NodeFactory.createBlankNode())); + } + + @Test + public void testRowExistsTrue() { + Assert.assertNotNull(table.getRow(rowSubject)); + } + + @Test + public void testGetRowFalseAndDoesntCreateRow() { + Assert.assertNull(table.getRow(NodeFactory.createBlankNode())); + Assert.assertNull(table.getRow(NodeFactory.createBlankNode())); + } + + @Test(expected=IllegalArgumentException.class) + public void testGetValueBeforeColumnExists() { + row.getValue(URI("nonexistentColumnX")); + } +}
http://git-wip-us.apache.org/repos/asf/jena/blob/3d70d735/jena-csv/src/test/java/org/apache/jena/propertytable/BaseTest.java ---------------------------------------------------------------------- diff --git a/jena-csv/src/test/java/org/apache/jena/propertytable/BaseTest.java b/jena-csv/src/test/java/org/apache/jena/propertytable/BaseTest.java index f0f6093..8e36236 100644 --- a/jena-csv/src/test/java/org/apache/jena/propertytable/BaseTest.java +++ b/jena-csv/src/test/java/org/apache/jena/propertytable/BaseTest.java @@ -1,47 +1,47 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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.apache.jena.propertytable; - -import java.util.Collection; - -import org.apache.jena.graph.Node ; -import org.apache.jena.graph.NodeFactory ; - -public abstract class BaseTest { - protected PropertyTable table; - protected PropertyTable table2; - protected Row row; - private static final String ns = "eh:foo/bar#"; - protected static final Node rowSubject = URI("rowSubject"); - protected static final String csvFilePath = "src/test/resources/test.csv"; - - - protected static Node URI(String localName) { - return NodeFactory.createURI(ns + localName); - } - - protected static boolean collectionContains( - final Collection<Column> columns, final Node columnkey) { - for (final Column column : columns) { - if (column.getColumnKey().equals(columnkey)) - return true; - } - return false; - } -} +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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.apache.jena.propertytable; + +import java.util.Collection; + +import org.apache.jena.graph.Node ; +import org.apache.jena.graph.NodeFactory ; + +public abstract class BaseTest { + protected PropertyTable table; + protected PropertyTable table2; + protected Row row; + private static final String ns = "eh:foo/bar#"; + protected static final Node rowSubject = URI("rowSubject"); + protected static final String csvFilePath = "src/test/resources/test.csv"; + + + protected static Node URI(String localName) { + return NodeFactory.createURI(ns + localName); + } + + protected static boolean collectionContains( + final Collection<Column> columns, final Node columnkey) { + for (final Column column : columns) { + if (column.getColumnKey().equals(columnkey)) + return true; + } + return false; + } +} http://git-wip-us.apache.org/repos/asf/jena/blob/3d70d735/jena-csv/src/test/java/org/apache/jena/propertytable/TS_PropertyTable.java ---------------------------------------------------------------------- diff --git a/jena-csv/src/test/java/org/apache/jena/propertytable/TS_PropertyTable.java b/jena-csv/src/test/java/org/apache/jena/propertytable/TS_PropertyTable.java index d6a0d2a..084365d 100644 --- a/jena-csv/src/test/java/org/apache/jena/propertytable/TS_PropertyTable.java +++ b/jena-csv/src/test/java/org/apache/jena/propertytable/TS_PropertyTable.java @@ -1,42 +1,42 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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.apache.jena.propertytable; - -import org.apache.jena.propertytable.graph.GraphCSVTest; -import org.apache.jena.propertytable.impl.PropertyTableArrayImplTest; -import org.apache.jena.propertytable.impl.PropertyTableBuilderForArrayImplTest; -import org.apache.jena.propertytable.impl.PropertyTableBuilderForHashMapImplTest; -import org.apache.jena.propertytable.impl.PropertyTableHashMapImplTest; -import org.apache.jena.propertytable.lang.TestLangCSV; -import org.junit.runner.RunWith; -import org.junit.runners.Suite; - - -@RunWith(Suite.class) [email protected]( { - PropertyTableArrayImplTest.class, - PropertyTableHashMapImplTest.class, - GraphCSVTest.class, - PropertyTableBuilderForArrayImplTest.class, - PropertyTableBuilderForHashMapImplTest.class, - TestLangCSV.class -}) -public class TS_PropertyTable { - -} +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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.apache.jena.propertytable; + +import org.apache.jena.propertytable.graph.GraphCSVTest; +import org.apache.jena.propertytable.impl.PropertyTableArrayImplTest; +import org.apache.jena.propertytable.impl.PropertyTableBuilderForArrayImplTest; +import org.apache.jena.propertytable.impl.PropertyTableBuilderForHashMapImplTest; +import org.apache.jena.propertytable.impl.PropertyTableHashMapImplTest; +import org.apache.jena.propertytable.lang.TestLangCSV; +import org.junit.runner.RunWith; +import org.junit.runners.Suite; + + +@RunWith(Suite.class) [email protected]( { + PropertyTableArrayImplTest.class, + PropertyTableHashMapImplTest.class, + GraphCSVTest.class, + PropertyTableBuilderForArrayImplTest.class, + PropertyTableBuilderForHashMapImplTest.class, + TestLangCSV.class +}) +public class TS_PropertyTable { + +} http://git-wip-us.apache.org/repos/asf/jena/blob/3d70d735/jena-csv/src/test/java/org/apache/jena/propertytable/graph/GraphCSVTest.java ---------------------------------------------------------------------- diff --git a/jena-csv/src/test/java/org/apache/jena/propertytable/graph/GraphCSVTest.java b/jena-csv/src/test/java/org/apache/jena/propertytable/graph/GraphCSVTest.java index 2534287..b81f37f 100644 --- a/jena-csv/src/test/java/org/apache/jena/propertytable/graph/GraphCSVTest.java +++ b/jena-csv/src/test/java/org/apache/jena/propertytable/graph/GraphCSVTest.java @@ -1,154 +1,154 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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.apache.jena.propertytable.graph; - -import org.apache.jena.atlas.lib.StrUtils ; -import org.apache.jena.propertytable.lang.CSV2RDF ; -import org.apache.jena.query.* ; -import org.apache.jena.rdf.model.Model ; -import org.apache.jena.rdf.model.ModelFactory ; -import org.apache.jena.sparql.engine.main.StageBuilder ; -import org.apache.jena.sparql.engine.main.StageGenerator ; -import org.junit.Assert ; -import org.junit.BeforeClass ; -import org.junit.Test ; - -/** - * Tests related to GraphCSV with some real world data. - */ -public class GraphCSVTest extends Assert { - - @BeforeClass - public static void init(){ - CSV2RDF.init() ; - } - - @Test - public void testGraphCSV() { - //String file = "src/test/resources/HEFCE_organogram_senior_data_31032011.csv";test.csv - String file = "src/test/resources/test.csv"; - - Model csv = ModelFactory.createModelForGraph(new GraphCSV(file)); - assertEquals(12, csv.size()); - - Query query = QueryFactory - .create("PREFIX : <src/test/resources/test.csv#> SELECT ?townName ?pop {?x :Town ?townName ; :Population ?pop ; :Predicate%20With%20Space 'PredicateWithSpace2' . FILTER(?pop > 500000)}"); - - QueryExecution qexec = QueryExecutionFactory.create(query, csv); - ResultSet results = qexec.execSelect(); - - assertTrue(results.hasNext()); - QuerySolution soln = results.nextSolution(); - assertEquals( "Northville", soln.getLiteral("townName").getString()); - assertTrue( 654000 == soln.getLiteral("pop").getInt()); - - assertFalse(results.hasNext()); - } - - @Test - public void stageGeneratorTest(){ - wireIntoExecution(); - testGraphCSV(); - } - - private static void wireIntoExecution() { - StageGenerator orig = (StageGenerator)ARQ.getContext().get(ARQ.stageGenerator) ; - StageGenerator stageGenerator = new StageGeneratorPropertyTable(orig) ; - StageBuilder.setGenerator(ARQ.getContext(), stageGenerator) ; - } - - //http://www.w3.org/TR/csvw-ucr/#UC-OrganogramData - //2.4 Use Case #4 - Publication of public sector roles and salaries - @Test - public void testUseCase4(){ - String file = "src/test/resources/HEFCE_organogram_senior_data_31032011.csv"; - - Model csv = ModelFactory.createModelForGraph(new GraphCSV(file)); - assertEquals(72, csv.size()); - - String x = StrUtils.strjoinNL - ("PREFIX : <src/test/resources/HEFCE_organogram_senior_data_31032011.csv#>" - ,"SELECT ?name ?unit" - ,"{ ?x :Name ?name ;" - ," :Unit ?unit ;" - ," :Actual%20Pay%20Floor%20%28%A3%29 ?floor ;" - ," :Actual%20Pay%20Ceiling%20%28%A3%29 ?ceiling ." - ,"FILTER(?floor > 100000 && ?ceiling <120000 )" - ,"}"); - - Query query = QueryFactory.create(x) ; - - QueryExecution qexec = QueryExecutionFactory.create(query, csv); - ResultSet results = qexec.execSelect(); - - assertTrue(results.hasNext()); - QuerySolution soln = results.nextSolution(); - assertEquals( "David Sweeney", soln.getLiteral("name").getString()); - assertEquals( "Research, Innovation and Skills", soln.getLiteral("unit").getString()); - - assertFalse(results.hasNext()); - } - - - //http://www.w3.org/TR/csvw-ucr/#UC-JournalArticleSearch - //2.6 Use Case #6 - Journal Article Solr Search Results - @Test - public void testUseCase6(){ - String file = "src/test/resources/PLOSone-search-results.csv"; - - Model csv = ModelFactory.createModelForGraph(new GraphCSV(file)); - assertEquals(30, csv.size()); - - Query query = QueryFactory - .create("PREFIX : <src/test/resources/PLOSone-search-results.csv#> SELECT ?author {?x :author ?author ; :doi '10.1371/journal.pone.0095156' }"); - - QueryExecution qexec = QueryExecutionFactory.create(query, csv); - ResultSet results = qexec.execSelect(); - - assertTrue(results.hasNext()); - QuerySolution soln = results.nextSolution(); - assertEquals( "Oshrat Raz,Dorit L Lev,Alexander Battler,Eli I Lev", soln.getLiteral("author").getString()); - - assertFalse(results.hasNext()); - } - - //http://www.w3.org/TR/csvw-ucr/#UC-PaloAltoTreeData - //2.11 Use Case #11 - City of Palo Alto Tree Data - @Test - public void testUseCase11(){ - String file = "src/test/resources/Palo_Alto_Trees.csv"; - - Model csv = ModelFactory.createModelForGraph(new GraphCSV(file)); - assertEquals(199, csv.size()); - - Query query = QueryFactory - .create("PREFIX : <src/test/resources/Palo_Alto_Trees.csv#> SELECT ?longitude ?latitude {?x :Longitude ?longitude ; :Latitude ?latitude ; :Distance%20from%20Property ?distance . FILTER(?distance > 50 )}"); - - QueryExecution qexec = QueryExecutionFactory.create(query, csv); - ResultSet results = qexec.execSelect(); - - assertTrue(results.hasNext()); - QuerySolution soln = results.nextSolution(); - assertEquals( -122.1566921, soln.getLiteral("longitude").getDouble(), 0); - assertEquals( 37.4408948, soln.getLiteral("latitude").getDouble(), 0); - - assertFalse(results.hasNext()); - } - -} +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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.apache.jena.propertytable.graph; + +import org.apache.jena.atlas.lib.StrUtils ; +import org.apache.jena.propertytable.lang.CSV2RDF ; +import org.apache.jena.query.* ; +import org.apache.jena.rdf.model.Model ; +import org.apache.jena.rdf.model.ModelFactory ; +import org.apache.jena.sparql.engine.main.StageBuilder ; +import org.apache.jena.sparql.engine.main.StageGenerator ; +import org.junit.Assert ; +import org.junit.BeforeClass ; +import org.junit.Test ; + +/** + * Tests related to GraphCSV with some real world data. + */ +public class GraphCSVTest extends Assert { + + @BeforeClass + public static void init(){ + CSV2RDF.init() ; + } + + @Test + public void testGraphCSV() { + //String file = "src/test/resources/HEFCE_organogram_senior_data_31032011.csv";test.csv + String file = "src/test/resources/test.csv"; + + Model csv = ModelFactory.createModelForGraph(new GraphCSV(file)); + assertEquals(12, csv.size()); + + Query query = QueryFactory + .create("PREFIX : <src/test/resources/test.csv#> SELECT ?townName ?pop {?x :Town ?townName ; :Population ?pop ; :Predicate%20With%20Space 'PredicateWithSpace2' . FILTER(?pop > 500000)}"); + + QueryExecution qexec = QueryExecutionFactory.create(query, csv); + ResultSet results = qexec.execSelect(); + + assertTrue(results.hasNext()); + QuerySolution soln = results.nextSolution(); + assertEquals( "Northville", soln.getLiteral("townName").getString()); + assertTrue( 654000 == soln.getLiteral("pop").getInt()); + + assertFalse(results.hasNext()); + } + + @Test + public void stageGeneratorTest(){ + wireIntoExecution(); + testGraphCSV(); + } + + private static void wireIntoExecution() { + StageGenerator orig = (StageGenerator)ARQ.getContext().get(ARQ.stageGenerator) ; + StageGenerator stageGenerator = new StageGeneratorPropertyTable(orig) ; + StageBuilder.setGenerator(ARQ.getContext(), stageGenerator) ; + } + + //http://www.w3.org/TR/csvw-ucr/#UC-OrganogramData + //2.4 Use Case #4 - Publication of public sector roles and salaries + @Test + public void testUseCase4(){ + String file = "src/test/resources/HEFCE_organogram_senior_data_31032011.csv"; + + Model csv = ModelFactory.createModelForGraph(new GraphCSV(file)); + assertEquals(72, csv.size()); + + String x = StrUtils.strjoinNL + ("PREFIX : <src/test/resources/HEFCE_organogram_senior_data_31032011.csv#>" + ,"SELECT ?name ?unit" + ,"{ ?x :Name ?name ;" + ," :Unit ?unit ;" + ," :Actual%20Pay%20Floor%20%28%A3%29 ?floor ;" + ," :Actual%20Pay%20Ceiling%20%28%A3%29 ?ceiling ." + ,"FILTER(?floor > 100000 && ?ceiling <120000 )" + ,"}"); + + Query query = QueryFactory.create(x) ; + + QueryExecution qexec = QueryExecutionFactory.create(query, csv); + ResultSet results = qexec.execSelect(); + + assertTrue(results.hasNext()); + QuerySolution soln = results.nextSolution(); + assertEquals( "David Sweeney", soln.getLiteral("name").getString()); + assertEquals( "Research, Innovation and Skills", soln.getLiteral("unit").getString()); + + assertFalse(results.hasNext()); + } + + + //http://www.w3.org/TR/csvw-ucr/#UC-JournalArticleSearch + //2.6 Use Case #6 - Journal Article Solr Search Results + @Test + public void testUseCase6(){ + String file = "src/test/resources/PLOSone-search-results.csv"; + + Model csv = ModelFactory.createModelForGraph(new GraphCSV(file)); + assertEquals(30, csv.size()); + + Query query = QueryFactory + .create("PREFIX : <src/test/resources/PLOSone-search-results.csv#> SELECT ?author {?x :author ?author ; :doi '10.1371/journal.pone.0095156' }"); + + QueryExecution qexec = QueryExecutionFactory.create(query, csv); + ResultSet results = qexec.execSelect(); + + assertTrue(results.hasNext()); + QuerySolution soln = results.nextSolution(); + assertEquals( "Oshrat Raz,Dorit L Lev,Alexander Battler,Eli I Lev", soln.getLiteral("author").getString()); + + assertFalse(results.hasNext()); + } + + //http://www.w3.org/TR/csvw-ucr/#UC-PaloAltoTreeData + //2.11 Use Case #11 - City of Palo Alto Tree Data + @Test + public void testUseCase11(){ + String file = "src/test/resources/Palo_Alto_Trees.csv"; + + Model csv = ModelFactory.createModelForGraph(new GraphCSV(file)); + assertEquals(199, csv.size()); + + Query query = QueryFactory + .create("PREFIX : <src/test/resources/Palo_Alto_Trees.csv#> SELECT ?longitude ?latitude {?x :Longitude ?longitude ; :Latitude ?latitude ; :Distance%20from%20Property ?distance . FILTER(?distance > 50 )}"); + + QueryExecution qexec = QueryExecutionFactory.create(query, csv); + ResultSet results = qexec.execSelect(); + + assertTrue(results.hasNext()); + QuerySolution soln = results.nextSolution(); + assertEquals( -122.1566921, soln.getLiteral("longitude").getDouble(), 0); + assertEquals( 37.4408948, soln.getLiteral("latitude").getDouble(), 0); + + assertFalse(results.hasNext()); + } + +} http://git-wip-us.apache.org/repos/asf/jena/blob/3d70d735/jena-csv/src/test/java/org/apache/jena/propertytable/impl/AbstractPropertyTableBuilderTest.java ---------------------------------------------------------------------- diff --git a/jena-csv/src/test/java/org/apache/jena/propertytable/impl/AbstractPropertyTableBuilderTest.java b/jena-csv/src/test/java/org/apache/jena/propertytable/impl/AbstractPropertyTableBuilderTest.java index 9100096..a00d3fd 100644 --- a/jena-csv/src/test/java/org/apache/jena/propertytable/impl/AbstractPropertyTableBuilderTest.java +++ b/jena-csv/src/test/java/org/apache/jena/propertytable/impl/AbstractPropertyTableBuilderTest.java @@ -1,138 +1,138 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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.apache.jena.propertytable.impl; - -import java.io.StringReader ; - -import org.apache.jena.atlas.csv.CSVParser ; -import org.apache.jena.graph.Node ; -import org.apache.jena.graph.NodeFactory ; -import org.apache.jena.propertytable.BaseTest ; -import org.apache.jena.propertytable.Row ; -import org.junit.Assert ; -import org.junit.Test ; - - -/** - * Tests related to PropertyTableBuilder, or more explicitly for the CSV parser in the current release. - * - */ -public abstract class AbstractPropertyTableBuilderTest extends BaseTest { - - @Test - public void testFillPropertyTable() { - CSVParser iterator = csv("a,b\nc,d\ne,f"); - PropertyTableBuilder.fillPropertyTable(table, iterator, csvFilePath); - - Assert.assertEquals(3, table.getColumns().size()); - containsColumn(PropertyTableBuilder.CSV_ROW_NODE); - containsColumn("a"); - containsColumn("b"); - - Assert.assertEquals(2, table.getAllRows().size()); - containsValue(0, "a", "c"); - containsValue(0, "b", "d"); - - containsValue(1, "a", "e"); - containsValue(1, "b", "f"); - - } - - @Test - public void testIrregularTable1() { - CSVParser iterator = csv("a,b\nc\ne,f"); - PropertyTableBuilder.fillPropertyTable(table, iterator, csvFilePath); - - Assert.assertEquals(3, table.getColumns().size()); - containsColumn(PropertyTableBuilder.CSV_ROW_NODE); - containsColumn("a"); - containsColumn("b"); - - Assert.assertEquals(2, table.getAllRows().size()); - containsValue(0, "a", "c"); - nullValue(0, "b"); - - containsValue(1, "a", "e"); - containsValue(1, "b", "f"); - } - - @Test - public void testIrregularTable2() { - CSVParser iterator = csv("a,b\nc,d1,d2\ne,f"); - PropertyTableBuilder.fillPropertyTable(table, iterator, csvFilePath); - - Assert.assertEquals(3, table.getColumns().size()); - containsColumn(PropertyTableBuilder.CSV_ROW_NODE); - containsColumn("a"); - containsColumn("b"); - - Assert.assertEquals(2, table.getAllRows().size()); - containsValue(0, "a", "c"); - containsValue(0, "b", "d1"); - - containsValue(1, "a", "e"); - containsValue(1, "b", "f"); - } - - @Test - public void testIrregularTable3() { - CSVParser iterator = csv("a,b\n,d\ne,f"); - PropertyTableBuilder.fillPropertyTable(table, iterator, csvFilePath); - - Assert.assertEquals(3, table.getColumns().size()); - containsColumn(PropertyTableBuilder.CSV_ROW_NODE); - containsColumn("a"); - containsColumn("b"); - - Assert.assertEquals(2, table.getAllRows().size()); - nullValue(0, "a"); - containsValue(0, "b", "d"); - - containsValue(1, "a", "e"); - containsValue(1, "b", "f"); - } - - private void nullValue(int rowIndex, String column) { - Row row = table.getAllRows().get(rowIndex); - Node v = row.getValue(NodeFactory.createURI(getColumnKey(column))); - Assert.assertEquals(null, v); - } - - private void containsValue(int rowIndex, String column, String value) { - Row row = table.getAllRows().get(rowIndex); - Node v = row.getValue(NodeFactory.createURI(getColumnKey(column))); - Assert.assertEquals(value, v.getLiteralValue()); - } - - private String getColumnKey(String column) { - return PropertyTableBuilder.createColumnKeyURI(csvFilePath, column); - } - - private void containsColumn(String column) { - containsColumn(NodeFactory.createURI(getColumnKey(column))); - } - - private void containsColumn(Node columnKey) { - Assert.assertTrue(collectionContains(table.getColumns(), columnKey)); - } - - private CSVParser csv(String input) { - return CSVParser.create(new StringReader(input)); - } -} +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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.apache.jena.propertytable.impl; + +import java.io.StringReader ; + +import org.apache.jena.atlas.csv.CSVParser ; +import org.apache.jena.graph.Node ; +import org.apache.jena.graph.NodeFactory ; +import org.apache.jena.propertytable.BaseTest ; +import org.apache.jena.propertytable.Row ; +import org.junit.Assert ; +import org.junit.Test ; + + +/** + * Tests related to PropertyTableBuilder, or more explicitly for the CSV parser in the current release. + * + */ +public abstract class AbstractPropertyTableBuilderTest extends BaseTest { + + @Test + public void testFillPropertyTable() { + CSVParser iterator = csv("a,b\nc,d\ne,f"); + PropertyTableBuilder.fillPropertyTable(table, iterator, csvFilePath); + + Assert.assertEquals(3, table.getColumns().size()); + containsColumn(PropertyTableBuilder.CSV_ROW_NODE); + containsColumn("a"); + containsColumn("b"); + + Assert.assertEquals(2, table.getAllRows().size()); + containsValue(0, "a", "c"); + containsValue(0, "b", "d"); + + containsValue(1, "a", "e"); + containsValue(1, "b", "f"); + + } + + @Test + public void testIrregularTable1() { + CSVParser iterator = csv("a,b\nc\ne,f"); + PropertyTableBuilder.fillPropertyTable(table, iterator, csvFilePath); + + Assert.assertEquals(3, table.getColumns().size()); + containsColumn(PropertyTableBuilder.CSV_ROW_NODE); + containsColumn("a"); + containsColumn("b"); + + Assert.assertEquals(2, table.getAllRows().size()); + containsValue(0, "a", "c"); + nullValue(0, "b"); + + containsValue(1, "a", "e"); + containsValue(1, "b", "f"); + } + + @Test + public void testIrregularTable2() { + CSVParser iterator = csv("a,b\nc,d1,d2\ne,f"); + PropertyTableBuilder.fillPropertyTable(table, iterator, csvFilePath); + + Assert.assertEquals(3, table.getColumns().size()); + containsColumn(PropertyTableBuilder.CSV_ROW_NODE); + containsColumn("a"); + containsColumn("b"); + + Assert.assertEquals(2, table.getAllRows().size()); + containsValue(0, "a", "c"); + containsValue(0, "b", "d1"); + + containsValue(1, "a", "e"); + containsValue(1, "b", "f"); + } + + @Test + public void testIrregularTable3() { + CSVParser iterator = csv("a,b\n,d\ne,f"); + PropertyTableBuilder.fillPropertyTable(table, iterator, csvFilePath); + + Assert.assertEquals(3, table.getColumns().size()); + containsColumn(PropertyTableBuilder.CSV_ROW_NODE); + containsColumn("a"); + containsColumn("b"); + + Assert.assertEquals(2, table.getAllRows().size()); + nullValue(0, "a"); + containsValue(0, "b", "d"); + + containsValue(1, "a", "e"); + containsValue(1, "b", "f"); + } + + private void nullValue(int rowIndex, String column) { + Row row = table.getAllRows().get(rowIndex); + Node v = row.getValue(NodeFactory.createURI(getColumnKey(column))); + Assert.assertEquals(null, v); + } + + private void containsValue(int rowIndex, String column, String value) { + Row row = table.getAllRows().get(rowIndex); + Node v = row.getValue(NodeFactory.createURI(getColumnKey(column))); + Assert.assertEquals(value, v.getLiteralValue()); + } + + private String getColumnKey(String column) { + return PropertyTableBuilder.createColumnKeyURI(csvFilePath, column); + } + + private void containsColumn(String column) { + containsColumn(NodeFactory.createURI(getColumnKey(column))); + } + + private void containsColumn(Node columnKey) { + Assert.assertTrue(collectionContains(table.getColumns(), columnKey)); + } + + private CSVParser csv(String input) { + return CSVParser.create(new StringReader(input)); + } +} http://git-wip-us.apache.org/repos/asf/jena/blob/3d70d735/jena-csv/src/test/java/org/apache/jena/propertytable/impl/PropertyTableArrayImplTest.java ---------------------------------------------------------------------- diff --git a/jena-csv/src/test/java/org/apache/jena/propertytable/impl/PropertyTableArrayImplTest.java b/jena-csv/src/test/java/org/apache/jena/propertytable/impl/PropertyTableArrayImplTest.java index fe5fa55..ba1ca2d 100644 --- a/jena-csv/src/test/java/org/apache/jena/propertytable/impl/PropertyTableArrayImplTest.java +++ b/jena-csv/src/test/java/org/apache/jena/propertytable/impl/PropertyTableArrayImplTest.java @@ -1,84 +1,84 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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.apache.jena.propertytable.impl; - -import org.apache.jena.propertytable.AbstractPropertyTableTest; -import org.junit.After; -import org.junit.Assert; -import org.junit.Before; -import org.junit.Test; - -/** - * Tests for PropertyTableArrayImpl - * - */ -public class PropertyTableArrayImplTest extends AbstractPropertyTableTest{ - - private static int rowNum = 10; - private static int columnNum = 10 ; - - @Before - public void setUp() { - table = new PropertyTableArrayImpl(rowNum, columnNum); - table2 = new PropertyTableArrayImpl(rowNum, columnNum); - row = table.createRow(rowSubject); - - } - - @After - public void tearDown() { - table = null; - table2 = null; - row = null; - } - - @Test - public void testColumnOutofBounds1() { - for (int i=0;i<columnNum;i++){ - table.createColumn(URI("something_"+i)); - } - Assert.assertEquals(columnNum, table.getColumns().size()); - } - - @Test(expected = IllegalArgumentException.class) - public void testColumnOutofBounds2() { - for (int i=0;i<columnNum+1;i++){ - table.createColumn(URI("something_"+i)); - } - } - - @Test - public void testRowOutofBounds1() { - - // we've already created a new Row in @Before - for (int i=0;i<rowNum-1;i++){ - table.createRow(URI("something_"+i)); - } - Assert.assertEquals(rowNum, table.getAllRows().size()); - } - - @Test(expected = IllegalArgumentException.class) - public void testRowOutofBounds2() { - - // we've already created a new Row in @Before - for (int i=0;i<rowNum;i++){ - table.createRow(URI("something_"+i)); - } - } -} +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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.apache.jena.propertytable.impl; + +import org.apache.jena.propertytable.AbstractPropertyTableTest; +import org.junit.After; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; + +/** + * Tests for PropertyTableArrayImpl + * + */ +public class PropertyTableArrayImplTest extends AbstractPropertyTableTest{ + + private static int rowNum = 10; + private static int columnNum = 10 ; + + @Before + public void setUp() { + table = new PropertyTableArrayImpl(rowNum, columnNum); + table2 = new PropertyTableArrayImpl(rowNum, columnNum); + row = table.createRow(rowSubject); + + } + + @After + public void tearDown() { + table = null; + table2 = null; + row = null; + } + + @Test + public void testColumnOutofBounds1() { + for (int i=0;i<columnNum;i++){ + table.createColumn(URI("something_"+i)); + } + Assert.assertEquals(columnNum, table.getColumns().size()); + } + + @Test(expected = IllegalArgumentException.class) + public void testColumnOutofBounds2() { + for (int i=0;i<columnNum+1;i++){ + table.createColumn(URI("something_"+i)); + } + } + + @Test + public void testRowOutofBounds1() { + + // we've already created a new Row in @Before + for (int i=0;i<rowNum-1;i++){ + table.createRow(URI("something_"+i)); + } + Assert.assertEquals(rowNum, table.getAllRows().size()); + } + + @Test(expected = IllegalArgumentException.class) + public void testRowOutofBounds2() { + + // we've already created a new Row in @Before + for (int i=0;i<rowNum;i++){ + table.createRow(URI("something_"+i)); + } + } +} http://git-wip-us.apache.org/repos/asf/jena/blob/3d70d735/jena-csv/src/test/java/org/apache/jena/propertytable/impl/PropertyTableBuilderForArrayImplTest.java ---------------------------------------------------------------------- diff --git a/jena-csv/src/test/java/org/apache/jena/propertytable/impl/PropertyTableBuilderForArrayImplTest.java b/jena-csv/src/test/java/org/apache/jena/propertytable/impl/PropertyTableBuilderForArrayImplTest.java index 8021678..7b7e0c8 100644 --- a/jena-csv/src/test/java/org/apache/jena/propertytable/impl/PropertyTableBuilderForArrayImplTest.java +++ b/jena-csv/src/test/java/org/apache/jena/propertytable/impl/PropertyTableBuilderForArrayImplTest.java @@ -1,39 +1,39 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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.apache.jena.propertytable.impl; - -import org.junit.After; -import org.junit.Before; - -public class PropertyTableBuilderForArrayImplTest extends AbstractPropertyTableBuilderTest{ - - private static int rowNum = 10; - private static int columnNum = 10 ; - - @Before - public void setUp() { - table = new PropertyTableArrayImpl(rowNum, columnNum); - } - - @After - public void tearDown() { - table = null; - } - -} +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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.apache.jena.propertytable.impl; + +import org.junit.After; +import org.junit.Before; + +public class PropertyTableBuilderForArrayImplTest extends AbstractPropertyTableBuilderTest{ + + private static int rowNum = 10; + private static int columnNum = 10 ; + + @Before + public void setUp() { + table = new PropertyTableArrayImpl(rowNum, columnNum); + } + + @After + public void tearDown() { + table = null; + } + +} http://git-wip-us.apache.org/repos/asf/jena/blob/3d70d735/jena-csv/src/test/java/org/apache/jena/propertytable/impl/PropertyTableBuilderForHashMapImplTest.java ---------------------------------------------------------------------- diff --git a/jena-csv/src/test/java/org/apache/jena/propertytable/impl/PropertyTableBuilderForHashMapImplTest.java b/jena-csv/src/test/java/org/apache/jena/propertytable/impl/PropertyTableBuilderForHashMapImplTest.java index 8cd6cdc..f2768f5 100644 --- a/jena-csv/src/test/java/org/apache/jena/propertytable/impl/PropertyTableBuilderForHashMapImplTest.java +++ b/jena-csv/src/test/java/org/apache/jena/propertytable/impl/PropertyTableBuilderForHashMapImplTest.java @@ -1,34 +1,34 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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.apache.jena.propertytable.impl; - -import org.junit.After; -import org.junit.Before; - -public class PropertyTableBuilderForHashMapImplTest extends AbstractPropertyTableBuilderTest{ - @Before - public void setUp() { - table = new PropertyTableHashMapImpl(); - } - - @After - public void tearDown() { - table = null; - } -} +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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.apache.jena.propertytable.impl; + +import org.junit.After; +import org.junit.Before; + +public class PropertyTableBuilderForHashMapImplTest extends AbstractPropertyTableBuilderTest{ + @Before + public void setUp() { + table = new PropertyTableHashMapImpl(); + } + + @After + public void tearDown() { + table = null; + } +} http://git-wip-us.apache.org/repos/asf/jena/blob/3d70d735/jena-csv/src/test/java/org/apache/jena/propertytable/impl/PropertyTableHashMapImplTest.java ---------------------------------------------------------------------- diff --git a/jena-csv/src/test/java/org/apache/jena/propertytable/impl/PropertyTableHashMapImplTest.java b/jena-csv/src/test/java/org/apache/jena/propertytable/impl/PropertyTableHashMapImplTest.java index 68f87cf..33d95ae 100644 --- a/jena-csv/src/test/java/org/apache/jena/propertytable/impl/PropertyTableHashMapImplTest.java +++ b/jena-csv/src/test/java/org/apache/jena/propertytable/impl/PropertyTableHashMapImplTest.java @@ -1,46 +1,46 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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.apache.jena.propertytable.impl; - -import org.apache.jena.propertytable.AbstractPropertyTableTest; -import org.junit.After; -import org.junit.Before; - -/** - * Tests for PropertyTableHashMapImpl - * - */ -public class PropertyTableHashMapImplTest extends AbstractPropertyTableTest{ - - @Before - public void setUp() { - table = new PropertyTableHashMapImpl(); - table2 = new PropertyTableHashMapImpl(); - row = table.createRow(rowSubject); - - } - - @After - public void tearDown() { - table = null; - table2 = null; - row = null; - } - -} +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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.apache.jena.propertytable.impl; + +import org.apache.jena.propertytable.AbstractPropertyTableTest; +import org.junit.After; +import org.junit.Before; + +/** + * Tests for PropertyTableHashMapImpl + * + */ +public class PropertyTableHashMapImplTest extends AbstractPropertyTableTest{ + + @Before + public void setUp() { + table = new PropertyTableHashMapImpl(); + table2 = new PropertyTableHashMapImpl(); + row = table.createRow(rowSubject); + + } + + @After + public void tearDown() { + table = null; + table2 = null; + row = null; + } + +} http://git-wip-us.apache.org/repos/asf/jena/blob/3d70d735/jena-csv/src/test/resources/test.csv ---------------------------------------------------------------------- diff --git a/jena-csv/src/test/resources/test.csv b/jena-csv/src/test/resources/test.csv index 306e493..b9ac0e1 100644 --- a/jena-csv/src/test/resources/test.csv +++ b/jena-csv/src/test/resources/test.csv @@ -1,3 +1,3 @@ -Town,Population,Predicate With Space,`~!@#$%^&*()-_=+[{]}|\;:'"<.>/?,1234 -Southton,123000.0,PredicateWithSpace1,NonURICharacters1,DigitalLocalName1 -Northville,654000,PredicateWithSpace2,NonURICharacters2,DigitalLocalName2 +Town,Population,Predicate With Space,`~!@#$%^&*()-_=+[{]}|\;:'"<.>/?,1234 +Southton,123000.0,PredicateWithSpace1,NonURICharacters1,DigitalLocalName1 +Northville,654000,PredicateWithSpace2,NonURICharacters2,DigitalLocalName2 http://git-wip-us.apache.org/repos/asf/jena/blob/3d70d735/jena-elephas/jena-elephas-common/src/main/java/org/apache/jena/hadoop/rdf/types/AbstractNodeTupleWritable.java ---------------------------------------------------------------------- diff --git a/jena-elephas/jena-elephas-common/src/main/java/org/apache/jena/hadoop/rdf/types/AbstractNodeTupleWritable.java b/jena-elephas/jena-elephas-common/src/main/java/org/apache/jena/hadoop/rdf/types/AbstractNodeTupleWritable.java index c9750f2..4449cc7 100644 --- a/jena-elephas/jena-elephas-common/src/main/java/org/apache/jena/hadoop/rdf/types/AbstractNodeTupleWritable.java +++ b/jena-elephas/jena-elephas-common/src/main/java/org/apache/jena/hadoop/rdf/types/AbstractNodeTupleWritable.java @@ -1,194 +1,194 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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.apache.jena.hadoop.rdf.types; - -import java.io.DataInput; -import java.io.DataOutput; -import java.io.IOException; - -import org.apache.hadoop.io.WritableComparable; -import org.apache.hadoop.io.WritableUtils; -import org.apache.jena.graph.Node ; -import org.apache.jena.sparql.util.NodeUtils ; - -/** - * A abstract general purpose writable where the actual class represented is - * composed of a number of {@link Node} instances - * <p> - * The binary encoding of this base implementation is just a variable integer - * indicating the number of nodes present followed by the binary encodings of - * the {@link NodeWritable} instances. Derived implementations may wish to - * override the {@link #readFields(DataInput)} and {@link #write(DataOutput)} - * methods in order to use more specialised encodings. - * </p> - * - * @param <T> - * Tuple type - */ -public abstract class AbstractNodeTupleWritable<T> implements WritableComparable<AbstractNodeTupleWritable<T>> { - - private T tuple; - - /** - * Creates a new empty instance - */ - protected AbstractNodeTupleWritable() { - this(null); - } - - /** - * Creates a new instance with the given value - * - * @param tuple - * Tuple value - */ - protected AbstractNodeTupleWritable(T tuple) { - this.tuple = tuple; - } - - /** - * Gets the tuple - * - * @return Tuple - */ - public T get() { - return this.tuple; - } - - /** - * Sets the tuple - * - * @param tuple - * Tuple - */ - public void set(T tuple) { - this.tuple = tuple; - } - - @Override - public void readFields(DataInput input) throws IOException { - // Determine how many nodes - int size = WritableUtils.readVInt(input); - Node[] ns = new Node[size]; - - NodeWritable nw = new NodeWritable(); - for (int i = 0; i < ns.length; i++) { - nw.readFields(input); - ns[i] = nw.get(); - } - - // Load the tuple - this.tuple = this.createTuple(ns); - } - - /** - * Creates the actual tuple type from an array of nodes - * - * @param ns - * Nodes - * @return Tuple - */ - protected abstract T createTuple(Node[] ns); - - @Override - public void write(DataOutput output) throws IOException { - // Determine how many nodes - Node[] ns = this.createNodes(this.tuple); - WritableUtils.writeVInt(output, ns.length); - - // Write out nodes - NodeWritable nw = new NodeWritable(); - for (int i = 0; i < ns.length; i++) { - nw.set(ns[i]); - nw.write(output); - } - } - - /** - * Sets the tuple value - * <p> - * Intended only for internal use i.e. when a derived implementation - * overrides {@link #readFields(DataInput)} and needs to set the tuple value - * directly i.e. when a derived implementation is using a custom encoding - * scheme - * </p> - * - * @param tuple - * Tuple - */ - protected final void setInternal(T tuple) { - this.tuple = tuple; - } - - /** - * Converts the actual tuple type into an array of nodes - * - * @param tuple - * Tuples - * @return Nodes - */ - protected abstract Node[] createNodes(T tuple); - - /** - * Compares instances node by node - * <p> - * Derived implementations may wish to override this and substitute native - * tuple based comparisons - * </p> - * - * @param other - * Instance to compare with - */ - @Override - public int compareTo(AbstractNodeTupleWritable<T> other) { - Node[] ns = this.createNodes(this.tuple); - Node[] otherNs = this.createNodes(other.tuple); - - if (ns.length < otherNs.length) { - return -1; - } else if (ns.length > otherNs.length) { - return 1; - } - // Compare node by node - for (int i = 0; i < ns.length; i++) { - int c = NodeUtils.compareRDFTerms(ns[i], otherNs[i]); - if (c != 0) - return c; - } - return 0; - } - - @Override - public String toString() { - return this.get().toString(); - } - - @Override - public int hashCode() { - return this.get().hashCode(); - } - - @SuppressWarnings("unchecked") - @Override - public boolean equals(Object other) { - if (!(other instanceof AbstractNodeTupleWritable)) - return false; - return this.compareTo((AbstractNodeTupleWritable<T>) other) == 0; - } -} +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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.apache.jena.hadoop.rdf.types; + +import java.io.DataInput; +import java.io.DataOutput; +import java.io.IOException; + +import org.apache.hadoop.io.WritableComparable; +import org.apache.hadoop.io.WritableUtils; +import org.apache.jena.graph.Node ; +import org.apache.jena.sparql.util.NodeUtils ; + +/** + * A abstract general purpose writable where the actual class represented is + * composed of a number of {@link Node} instances + * <p> + * The binary encoding of this base implementation is just a variable integer + * indicating the number of nodes present followed by the binary encodings of + * the {@link NodeWritable} instances. Derived implementations may wish to + * override the {@link #readFields(DataInput)} and {@link #write(DataOutput)} + * methods in order to use more specialised encodings. + * </p> + * + * @param <T> + * Tuple type + */ +public abstract class AbstractNodeTupleWritable<T> implements WritableComparable<AbstractNodeTupleWritable<T>> { + + private T tuple; + + /** + * Creates a new empty instance + */ + protected AbstractNodeTupleWritable() { + this(null); + } + + /** + * Creates a new instance with the given value + * + * @param tuple + * Tuple value + */ + protected AbstractNodeTupleWritable(T tuple) { + this.tuple = tuple; + } + + /** + * Gets the tuple + * + * @return Tuple + */ + public T get() { + return this.tuple; + } + + /** + * Sets the tuple + * + * @param tuple + * Tuple + */ + public void set(T tuple) { + this.tuple = tuple; + } + + @Override + public void readFields(DataInput input) throws IOException { + // Determine how many nodes + int size = WritableUtils.readVInt(input); + Node[] ns = new Node[size]; + + NodeWritable nw = new NodeWritable(); + for (int i = 0; i < ns.length; i++) { + nw.readFields(input); + ns[i] = nw.get(); + } + + // Load the tuple + this.tuple = this.createTuple(ns); + } + + /** + * Creates the actual tuple type from an array of nodes + * + * @param ns + * Nodes + * @return Tuple + */ + protected abstract T createTuple(Node[] ns); + + @Override + public void write(DataOutput output) throws IOException { + // Determine how many nodes + Node[] ns = this.createNodes(this.tuple); + WritableUtils.writeVInt(output, ns.length); + + // Write out nodes + NodeWritable nw = new NodeWritable(); + for (int i = 0; i < ns.length; i++) { + nw.set(ns[i]); + nw.write(output); + } + } + + /** + * Sets the tuple value + * <p> + * Intended only for internal use i.e. when a derived implementation + * overrides {@link #readFields(DataInput)} and needs to set the tuple value + * directly i.e. when a derived implementation is using a custom encoding + * scheme + * </p> + * + * @param tuple + * Tuple + */ + protected final void setInternal(T tuple) { + this.tuple = tuple; + } + + /** + * Converts the actual tuple type into an array of nodes + * + * @param tuple + * Tuples + * @return Nodes + */ + protected abstract Node[] createNodes(T tuple); + + /** + * Compares instances node by node + * <p> + * Derived implementations may wish to override this and substitute native + * tuple based comparisons + * </p> + * + * @param other + * Instance to compare with + */ + @Override + public int compareTo(AbstractNodeTupleWritable<T> other) { + Node[] ns = this.createNodes(this.tuple); + Node[] otherNs = this.createNodes(other.tuple); + + if (ns.length < otherNs.length) { + return -1; + } else if (ns.length > otherNs.length) { + return 1; + } + // Compare node by node + for (int i = 0; i < ns.length; i++) { + int c = NodeUtils.compareRDFTerms(ns[i], otherNs[i]); + if (c != 0) + return c; + } + return 0; + } + + @Override + public String toString() { + return this.get().toString(); + } + + @Override + public int hashCode() { + return this.get().hashCode(); + } + + @SuppressWarnings("unchecked") + @Override + public boolean equals(Object other) { + if (!(other instanceof AbstractNodeTupleWritable)) + return false; + return this.compareTo((AbstractNodeTupleWritable<T>) other) == 0; + } +} http://git-wip-us.apache.org/repos/asf/jena/blob/3d70d735/jena-elephas/jena-elephas-common/src/main/java/org/apache/jena/hadoop/rdf/types/CharacteristicSetWritable.java ---------------------------------------------------------------------- diff --git a/jena-elephas/jena-elephas-common/src/main/java/org/apache/jena/hadoop/rdf/types/CharacteristicSetWritable.java b/jena-elephas/jena-elephas-common/src/main/java/org/apache/jena/hadoop/rdf/types/CharacteristicSetWritable.java index 39599fa..4a29ec4 100644 --- a/jena-elephas/jena-elephas-common/src/main/java/org/apache/jena/hadoop/rdf/types/CharacteristicSetWritable.java +++ b/jena-elephas/jena-elephas-common/src/main/java/org/apache/jena/hadoop/rdf/types/CharacteristicSetWritable.java @@ -1,21 +1,21 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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. - */ - +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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.apache.jena.hadoop.rdf.types; import java.io.DataInput; @@ -24,12 +24,12 @@ import java.io.IOException; import java.util.Iterator; import java.util.Map; import java.util.TreeMap; - + import org.apache.hadoop.io.LongWritable; import org.apache.hadoop.io.WritableComparable; import org.apache.hadoop.io.WritableUtils; -import org.apache.jena.graph.Node ; -import org.apache.jena.graph.NodeFactory ; +import org.apache.jena.graph.Node ; +import org.apache.jena.graph.NodeFactory ; /** * Represents a characteristic set which is comprised of a count of nodes for http://git-wip-us.apache.org/repos/asf/jena/blob/3d70d735/jena-elephas/jena-elephas-common/src/main/java/org/apache/jena/hadoop/rdf/types/CharacteristicWritable.java ---------------------------------------------------------------------- diff --git a/jena-elephas/jena-elephas-common/src/main/java/org/apache/jena/hadoop/rdf/types/CharacteristicWritable.java b/jena-elephas/jena-elephas-common/src/main/java/org/apache/jena/hadoop/rdf/types/CharacteristicWritable.java index 9fc8a08..cfb9606 100644 --- a/jena-elephas/jena-elephas-common/src/main/java/org/apache/jena/hadoop/rdf/types/CharacteristicWritable.java +++ b/jena-elephas/jena-elephas-common/src/main/java/org/apache/jena/hadoop/rdf/types/CharacteristicWritable.java @@ -1,30 +1,30 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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. - */ - +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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.apache.jena.hadoop.rdf.types; import java.io.DataInput; import java.io.DataOutput; import java.io.IOException; - + import org.apache.hadoop.io.LongWritable; import org.apache.hadoop.io.WritableComparable; -import org.apache.jena.graph.Node ; +import org.apache.jena.graph.Node ; /** * Represents a characteristic for a single node and contains the node and a http://git-wip-us.apache.org/repos/asf/jena/blob/3d70d735/jena-elephas/jena-elephas-common/src/main/java/org/apache/jena/hadoop/rdf/types/NodeTupleWritable.java ---------------------------------------------------------------------- diff --git a/jena-elephas/jena-elephas-common/src/main/java/org/apache/jena/hadoop/rdf/types/NodeTupleWritable.java b/jena-elephas/jena-elephas-common/src/main/java/org/apache/jena/hadoop/rdf/types/NodeTupleWritable.java index d65860b..9bf7309 100644 --- a/jena-elephas/jena-elephas-common/src/main/java/org/apache/jena/hadoop/rdf/types/NodeTupleWritable.java +++ b/jena-elephas/jena-elephas-common/src/main/java/org/apache/jena/hadoop/rdf/types/NodeTupleWritable.java @@ -1,29 +1,29 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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. - */ - +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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.apache.jena.hadoop.rdf.types; -import java.io.DataInput; -import java.io.IOException; - -import org.apache.jena.atlas.lib.tuple.Tuple ; -import org.apache.jena.atlas.lib.tuple.TupleFactory ; -import org.apache.jena.graph.Node ; +import java.io.DataInput; +import java.io.IOException; + +import org.apache.jena.atlas.lib.tuple.Tuple ; +import org.apache.jena.atlas.lib.tuple.TupleFactory ; +import org.apache.jena.graph.Node ; /** * A writable RDF tuple @@ -75,9 +75,9 @@ public class NodeTupleWritable extends AbstractNodeTupleWritable<Tuple<Node>> { } @Override - protected Node[] createNodes(Tuple<Node> tuple) { + protected Node[] createNodes(Tuple<Node> tuple) { Node n[] = new Node[tuple.len()] ; - tuple.copyInto(n); + tuple.copyInto(n); return n ; } } http://git-wip-us.apache.org/repos/asf/jena/blob/3d70d735/jena-elephas/jena-elephas-common/src/main/java/org/apache/jena/hadoop/rdf/types/NodeWritable.java ---------------------------------------------------------------------- diff --git a/jena-elephas/jena-elephas-common/src/main/java/org/apache/jena/hadoop/rdf/types/NodeWritable.java b/jena-elephas/jena-elephas-common/src/main/java/org/apache/jena/hadoop/rdf/types/NodeWritable.java index 7b21b26..2316ae9 100644 --- a/jena-elephas/jena-elephas-common/src/main/java/org/apache/jena/hadoop/rdf/types/NodeWritable.java +++ b/jena-elephas/jena-elephas-common/src/main/java/org/apache/jena/hadoop/rdf/types/NodeWritable.java @@ -1,188 +1,188 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you 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.apache.jena.hadoop.rdf.types; - -import java.io.DataInput; -import java.io.DataOutput; -import java.io.IOException; - -import org.apache.hadoop.io.WritableComparable; -import org.apache.hadoop.io.WritableComparator; -import org.apache.jena.graph.Node ; -import org.apache.jena.hadoop.rdf.types.comparators.SimpleBinaryComparator; -import org.apache.jena.hadoop.rdf.types.converters.ThriftConverter; -import org.apache.jena.riot.thrift.TRDF; -import org.apache.jena.riot.thrift.ThriftConvert; -import org.apache.jena.riot.thrift.wire.RDF_Term; -import org.apache.jena.sparql.util.NodeUtils ; -import org.apache.thrift.TException; - -/** - * A writable for {@link Node} instances - * <p> - * This uses <a - * href="http://afs.github.io/rdf-thrift/rdf-binary-thrift.html">RDF Thrift</a> - * for the binary encoding of terms. The in-memory storage for this type is both - * a {@link Node} and a {@link RDF_Term} with lazy conversion between the two - * forms as necessary. - * </p> - */ -public class NodeWritable implements WritableComparable<NodeWritable> { - - static { - WritableComparator.define(NodeWritable.class, new SimpleBinaryComparator()); - } - - private Node node; - private RDF_Term term = new RDF_Term(); - - /** - * Creates an empty writable - */ - public NodeWritable() { - this(null); - } - - /** - * Creates a new instance from the given input - * - * @param input - * Input - * @return New instance - * @throws IOException - */ - public static NodeWritable read(DataInput input) throws IOException { - NodeWritable nw = new NodeWritable(); - nw.readFields(input); - return nw; - } - - /** - * Creates a new writable with the given value - * - * @param n - * Node - */ - public NodeWritable(Node n) { - this.set(n); - } - - /** - * Gets the node - * - * @return Node - */ - public Node get() { - // We may not have yet loaded the node - if (this.node == null) { - // If term is set to undefined then node is supposed to be null - if (this.term.isSet() && !this.term.isSetUndefined()) { - this.node = ThriftConvert.convert(this.term); - } - } - return this.node; - } - - /** - * Sets the node - * - * @param n - * Node - */ - public void set(Node n) { - this.node = n; - // Clear the term for now - // We only convert the Node to a term as and when we want to write it - // out in order to not waste effort if the value is never written out - this.term.clear(); - } - - @Override - public void readFields(DataInput input) throws IOException { - // Clear previous value - this.node = null; - this.term.clear(); - - // Read in the new value - int termLength = input.readInt(); - byte[] buffer = new byte[termLength]; - input.readFully(buffer); - try { - ThriftConverter.fromBytes(buffer, this.term); - } catch (TException e) { - throw new IOException(e); - } - - // Note that we don't convert it back into a Node at this time - } - - @Override - public void write(DataOutput output) throws IOException { - // May not yet have prepared the Thrift term - if (!this.term.isSet()) { - if (this.node == null) { - this.term.setUndefined(TRDF.UNDEF); - } else { - ThriftConvert.toThrift(this.node, null, this.term, false); - } - } - - // Write out the Thrift term - byte[] buffer; - try { - buffer = ThriftConverter.toBytes(this.term); - } catch (TException e) { - throw new IOException(e); - } - output.writeInt(buffer.length); - output.write(buffer); - } - - @Override - public int compareTo(NodeWritable other) { - // Use get() rather than accessing the field directly because the node - // field is lazily instantiated from the Thrift term - return NodeUtils.compareRDFTerms(this.get(), other.get()); - } - - @Override - public String toString() { - // Use get() rather than accessing the field directly because the node - // field is lazily instantiated from the Thrift term - Node n = this.get(); - if (n == null) - return ""; - return n.toString(); - } - - @Override - public int hashCode() { - // Use get() rather than accessing the field directly because the node - // field is lazily instantiated from the Thrift term - Node n = this.get(); - return n != null ? this.get().hashCode() : 0; - } - - @Override - public boolean equals(Object other) { - if (!(other instanceof NodeWritable)) - return false; - return this.compareTo((NodeWritable) other) == 0; - } -} +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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.apache.jena.hadoop.rdf.types; + +import java.io.DataInput; +import java.io.DataOutput; +import java.io.IOException; + +import org.apache.hadoop.io.WritableComparable; +import org.apache.hadoop.io.WritableComparator; +import org.apache.jena.graph.Node ; +import org.apache.jena.hadoop.rdf.types.comparators.SimpleBinaryComparator; +import org.apache.jena.hadoop.rdf.types.converters.ThriftConverter; +import org.apache.jena.riot.thrift.TRDF; +import org.apache.jena.riot.thrift.ThriftConvert; +import org.apache.jena.riot.thrift.wire.RDF_Term; +import org.apache.jena.sparql.util.NodeUtils ; +import org.apache.thrift.TException; + +/** + * A writable for {@link Node} instances + * <p> + * This uses <a + * href="http://afs.github.io/rdf-thrift/rdf-binary-thrift.html">RDF Thrift</a> + * for the binary encoding of terms. The in-memory storage for this type is both + * a {@link Node} and a {@link RDF_Term} with lazy conversion between the two + * forms as necessary. + * </p> + */ +public class NodeWritable implements WritableComparable<NodeWritable> { + + static { + WritableComparator.define(NodeWritable.class, new SimpleBinaryComparator()); + } + + private Node node; + private RDF_Term term = new RDF_Term(); + + /** + * Creates an empty writable + */ + public NodeWritable() { + this(null); + } + + /** + * Creates a new instance from the given input + * + * @param input + * Input + * @return New instance + * @throws IOException + */ + public static NodeWritable read(DataInput input) throws IOException { + NodeWritable nw = new NodeWritable(); + nw.readFields(input); + return nw; + } + + /** + * Creates a new writable with the given value + * + * @param n + * Node + */ + public NodeWritable(Node n) { + this.set(n); + } + + /** + * Gets the node + * + * @return Node + */ + public Node get() { + // We may not have yet loaded the node + if (this.node == null) { + // If term is set to undefined then node is supposed to be null + if (this.term.isSet() && !this.term.isSetUndefined()) { + this.node = ThriftConvert.convert(this.term); + } + } + return this.node; + } + + /** + * Sets the node + * + * @param n + * Node + */ + public void set(Node n) { + this.node = n; + // Clear the term for now + // We only convert the Node to a term as and when we want to write it + // out in order to not waste effort if the value is never written out + this.term.clear(); + } + + @Override + public void readFields(DataInput input) throws IOException { + // Clear previous value + this.node = null; + this.term.clear(); + + // Read in the new value + int termLength = input.readInt(); + byte[] buffer = new byte[termLength]; + input.readFully(buffer); + try { + ThriftConverter.fromBytes(buffer, this.term); + } catch (TException e) { + throw new IOException(e); + } + + // Note that we don't convert it back into a Node at this time + } + + @Override + public void write(DataOutput output) throws IOException { + // May not yet have prepared the Thrift term + if (!this.term.isSet()) { + if (this.node == null) { + this.term.setUndefined(TRDF.UNDEF); + } else { + ThriftConvert.toThrift(this.node, null, this.term, false); + } + } + + // Write out the Thrift term + byte[] buffer; + try { + buffer = ThriftConverter.toBytes(this.term); + } catch (TException e) { + throw new IOException(e); + } + output.writeInt(buffer.length); + output.write(buffer); + } + + @Override + public int compareTo(NodeWritable other) { + // Use get() rather than accessing the field directly because the node + // field is lazily instantiated from the Thrift term + return NodeUtils.compareRDFTerms(this.get(), other.get()); + } + + @Override + public String toString() { + // Use get() rather than accessing the field directly because the node + // field is lazily instantiated from the Thrift term + Node n = this.get(); + if (n == null) + return ""; + return n.toString(); + } + + @Override + public int hashCode() { + // Use get() rather than accessing the field directly because the node + // field is lazily instantiated from the Thrift term + Node n = this.get(); + return n != null ? this.get().hashCode() : 0; + } + + @Override + public boolean equals(Object other) { + if (!(other instanceof NodeWritable)) + return false; + return this.compareTo((NodeWritable) other) == 0; + } +}
