From 08e3e9b9a713cecccef68aa8d640c39d7a23a41b Mon Sep 17 00:00:00 2001 From: Rebecca Younes Date: Fri, 22 Sep 2017 13:49:06 -0400 Subject: [PATCH 01/14] Modify unit tests to use MockMarcxml --- .../marcxml/ld4l/ItemBuilderTest.java | 7 ++- .../ld4l/PhysicalDescriptionBuilderTest.java | 4 +- .../ld4l/activities/ActivityBuilderTest.java | 2 +- .../ManufacturerActivityBuilderTest.java | 17 ++---- .../xml/marcxml/MarcxmlRecordTest.java | 55 ++++++++++++------- .../bib2lod/testing/xml/testrecord/Field.java | 4 +- .../testing/xml/testrecord/MockMarcxml.java | 23 ++++++-- .../testing/xml/testrecord/Subfield.java | 34 +++++++++++- 8 files changed, 98 insertions(+), 48 deletions(-) diff --git a/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/ItemBuilderTest.java b/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/ItemBuilderTest.java index f53271b55..993d42cb8 100644 --- a/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/ItemBuilderTest.java +++ b/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/ItemBuilderTest.java @@ -11,6 +11,7 @@ import org.ld4l.bib2lod.ontology.ld4l.Ld4lObjectProp; import org.ld4l.bib2lod.testing.AbstractTestClass; import org.ld4l.bib2lod.testing.xml.MarcxmlTestUtils; +import org.ld4l.bib2lod.testing.xml.testrecord.MockMarcxml; /** * Tests class ItemBuilder. @@ -33,7 +34,7 @@ public void nullRelatedInstance_ThrowsException() throws Exception { expectException(EntityBuilderException.class, "A related instance is required"); BuildParams params = new BuildParams() - .setRecord(MarcxmlTestUtils.getMinimalRecord()); + .setRecord(MockMarcxml.MINIMAL_RECORD.toRecord()); builder.build(params); } @@ -49,7 +50,7 @@ public void nullRecord_ThrowsException() throws Exception { @Test public void testItemType() throws Exception { BuildParams params = new BuildParams() - .setRecord(MarcxmlTestUtils.getMinimalRecord()) + .setRecord(MockMarcxml.MINIMAL_RECORD.toRecord()) .setParent(new Entity()); Entity item = builder.build(params); Assert.assertTrue(item.hasType(Ld4lItemType.ITEM)); @@ -59,7 +60,7 @@ public void testItemType() throws Exception { public void testInstanceHasItem() throws Exception { Entity instance = new InstanceEntity(); BuildParams params = new BuildParams() - .setRecord(MarcxmlTestUtils.getMinimalRecord()) + .setRecord(MockMarcxml.MINIMAL_RECORD.toRecord()) .setParent(instance); Entity item = builder.build(params); Assert.assertTrue(instance.hasChild(Ld4lObjectProp.HAS_ITEM, item)); diff --git a/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/PhysicalDescriptionBuilderTest.java b/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/PhysicalDescriptionBuilderTest.java index 3e857329f..379c5d544 100644 --- a/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/PhysicalDescriptionBuilderTest.java +++ b/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/PhysicalDescriptionBuilderTest.java @@ -79,9 +79,7 @@ public void testExtentLabel() throws Exception { // --------------------------------------------------------------------- private Entity buildInstance() throws Exception { - BuildParams params = new BuildParams() - .setRecord(MarcxmlTestUtils.getMinimalRecord()); - return instanceBuilder.build(params); + return buildInstance(MockMarcxml.MINIMAL_RECORD); } private Entity buildInstance(MockMarcxml input) throws Exception { diff --git a/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/activities/ActivityBuilderTest.java b/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/activities/ActivityBuilderTest.java index cb5dd372a..649ec51af 100644 --- a/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/activities/ActivityBuilderTest.java +++ b/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/activities/ActivityBuilderTest.java @@ -21,7 +21,7 @@ import org.ld4l.bib2lod.testing.xml.testrecord.MockMarcxml; public class ActivityBuilderTest extends AbstractTestClass { - public static final MockMarcxml _260_PUBLISHER = MINIMAL_RECORD.openCopy() + public static final MockMarcxml _260_PUBLISHER = MINIMAL_RECORD.openCopy() .addControlfield("001", "102063") .findDatafield("245").findSubfield("a").setValue("full title") .addDatafield("260", " ", " ").addSubfield("b", "Grune & Stratton,") diff --git a/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/activities/ManufacturerActivityBuilderTest.java b/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/activities/ManufacturerActivityBuilderTest.java index 9e3356a6f..e2366ca73 100644 --- a/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/activities/ManufacturerActivityBuilderTest.java +++ b/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/activities/ManufacturerActivityBuilderTest.java @@ -12,10 +12,9 @@ import org.ld4l.bib2lod.ontology.ld4l.Ld4lActivityType; import org.ld4l.bib2lod.ontology.ld4l.Ld4lObjectProp; import org.ld4l.bib2lod.records.RecordField.RecordFieldException; -import org.ld4l.bib2lod.records.xml.marcxml.MarcxmlRecord; import org.ld4l.bib2lod.testing.AbstractTestClass; import org.ld4l.bib2lod.testing.BaseMockBib2LodObjectFactory; -import org.ld4l.bib2lod.testing.xml.MarcxmlTestUtils; +import org.ld4l.bib2lod.testing.xml.testrecord.MockMarcxml; public class ManufacturerActivityBuilderTest extends AbstractTestClass { @@ -34,7 +33,7 @@ public void setUp() throws RecordFieldException { this.instanceBuilder = new InstanceBuilder(); } - public static final String _260_MANUFACTURER = + public static final MockMarcxml _260_MANUFACTURER = MockMarcxml.parse( "" + "01050cam a22003011 4500" + "102063" + @@ -47,7 +46,8 @@ public void setUp() throws RecordFieldException { "Oak Ridge National Laboratory " + "1974" + "" + - ""; + "" + ); // --------------------------------------------------------------------- // The tests @@ -55,19 +55,12 @@ public void setUp() throws RecordFieldException { @Test public void testManufacturer_260() throws Exception { - MarcxmlRecord record = MarcxmlTestUtils.buildRecordFromString( - _260_MANUFACTURER); BuildParams params = new BuildParams() - .setRecord(record); + .setRecord(_260_MANUFACTURER.toRecord()); Entity instance = instanceBuilder.build(params); Assert.assertEquals(1, instance.getChildren(Ld4lObjectProp.HAS_ACTIVITY, Ld4lActivityType.MANUFACTURER_ACTIVITY).size()); } - - // --------------------------------------------------------------------- - // Helper methods - // --------------------------------------------------------------------- - } diff --git a/src/test/java/org/ld4l/bib2lod/records/xml/marcxml/MarcxmlRecordTest.java b/src/test/java/org/ld4l/bib2lod/records/xml/marcxml/MarcxmlRecordTest.java index 23f281a94..e06d1706e 100644 --- a/src/test/java/org/ld4l/bib2lod/records/xml/marcxml/MarcxmlRecordTest.java +++ b/src/test/java/org/ld4l/bib2lod/records/xml/marcxml/MarcxmlRecordTest.java @@ -13,6 +13,7 @@ import org.ld4l.bib2lod.records.xml.marcxml.MarcxmlRecord; import org.ld4l.bib2lod.testing.AbstractTestClass; import org.ld4l.bib2lod.testing.xml.MarcxmlTestUtils; +import org.ld4l.bib2lod.testing.xml.testrecord.MockMarcxml; /** * Tests class MarcxmlRecord. @@ -20,15 +21,16 @@ public class MarcxmlRecordTest extends AbstractTestClass { - private static final String NO_LEADER = + private static final MockMarcxml NO_LEADER = MockMarcxml.parse( "" + "860506s1957 nyua b 000 0 eng " + "" + "Clinical cardiopulmonary physiology." + "" + - ""; + "" + ); - private static final String TWO_LEADERS = + private static final MockMarcxml TWO_LEADERS = MockMarcxml.parse( "" + "01050cam a22003011 4500" + "1234567" + @@ -36,19 +38,21 @@ public class MarcxmlRecordTest extends AbstractTestClass { "" + "Clinical cardiopulmonary physiology." + "" + - ""; + "" + ); - private static final String NO_008 = + private static final MockMarcxml NO_008 = MockMarcxml.parse( "" + "01050cam a22003011 4500" + "102063" + "" + "Clinical cardiopulmonary physiology." + "" + - ""; + "" + ); - private static final String DUPLICATE_008 = + private static final MockMarcxml DUPLICATE_008 = MockMarcxml.parse( "" + "01050cam a22003011 4500" + "860506s1957 nyua b 000 0 eng " + @@ -56,9 +60,10 @@ public class MarcxmlRecordTest extends AbstractTestClass { "" + "Clinical cardiopulmonary physiology." + "" + - ""; + "" + ); - private static final String NO_245 = + private static final MockMarcxml NO_245 = MockMarcxml.parse( "" + "01050cam a22003011 4500" + "860506s1957 nyua b 000 0 eng " + @@ -66,9 +71,10 @@ public class MarcxmlRecordTest extends AbstractTestClass { "NIC" + "NIC" + "" + - ""; + "" + ); - private static final String DUPLICATE_245 = + private static final MockMarcxml DUPLICATE_245 = MockMarcxml.parse( "" + "01050cam a22003011 4500" + "860506s1957 nyua b 000 0 eng " + @@ -78,7 +84,8 @@ public class MarcxmlRecordTest extends AbstractTestClass { "" + "Clinical cardiopulmonary physiology." + "" + - ""; + "" + ); // --------------------------------------------------------------------- @@ -88,12 +95,12 @@ public class MarcxmlRecordTest extends AbstractTestClass { @Test public void noLeader_ThrowsException() throws Exception { expectException(RecordException.class, "no leader"); - MarcxmlTestUtils.buildRecordFromString(NO_LEADER); + buildRecord(NO_LEADER); } @Test public void multipleLeaders_Ignored() throws Exception { - MarcxmlRecord record = MarcxmlTestUtils.buildRecordFromString(TWO_LEADERS); + MarcxmlRecord record = buildRecord(TWO_LEADERS); List fields = record.getFields(); int leaderCount = 0; for (BaseMarcxmlField field : fields) { @@ -107,13 +114,12 @@ public void multipleLeaders_Ignored() throws Exception { @Test public void no008_ThrowsException() throws Exception { expectException(RecordException.class, "no 008"); - MarcxmlTestUtils.buildRecordFromString(NO_008); + buildRecord(NO_008); } @Test public void duplicateNonRepeatingControlFields_Ignored() throws Exception { - MarcxmlRecord record = - MarcxmlTestUtils.buildRecordFromString(DUPLICATE_008); + MarcxmlRecord record = buildRecord(DUPLICATE_008); List fields = record.getControlFields(); int fieldCount = 0; for (MarcxmlControlField field : fields) { @@ -127,19 +133,28 @@ public void duplicateNonRepeatingControlFields_Ignored() throws Exception { @Test public void no245_ThrowsException() throws Exception { expectException(RecordException.class, "no 245"); - MarcxmlTestUtils.buildRecordFromString(NO_245); + buildRecord(NO_245); } @Test public void duplicateNonRepeatingDataFields_Ignored() throws Exception { // No exception - MarcxmlTestUtils.buildRecordFromString(DUPLICATE_245); + buildRecord(DUPLICATE_245); } @Test public void validRecord_Succeeds() throws Exception { // No exception - MarcxmlTestUtils.buildRecordFromString(MarcxmlTestUtils.MINIMAL_RECORD); + buildRecord(MockMarcxml.MINIMAL_RECORD); + } + + // --------------------------------------------------------------------- + // Helper methods + // --------------------------------------------------------------------- + + private MarcxmlRecord buildRecord(MockMarcxml input) + throws RecordException { + return input.toRecord(); } } diff --git a/src/test/java/org/ld4l/bib2lod/testing/xml/testrecord/Field.java b/src/test/java/org/ld4l/bib2lod/testing/xml/testrecord/Field.java index a535493cb..88be101b3 100644 --- a/src/test/java/org/ld4l/bib2lod/testing/xml/testrecord/Field.java +++ b/src/test/java/org/ld4l/bib2lod/testing/xml/testrecord/Field.java @@ -8,8 +8,8 @@ /** * The MockMarcxml instance will keep a list of Fields. * - * Leader, Controlfield, and Datafield should each implement this interface, and - * override the appropate "is" method. + * Leader, Controlfield, and Datafield should each implement this interface, + * and override the appropriate "is" method. */ interface Field { Element element(Document doc); diff --git a/src/test/java/org/ld4l/bib2lod/testing/xml/testrecord/MockMarcxml.java b/src/test/java/org/ld4l/bib2lod/testing/xml/testrecord/MockMarcxml.java index 886616f40..5453993d2 100644 --- a/src/test/java/org/ld4l/bib2lod/testing/xml/testrecord/MockMarcxml.java +++ b/src/test/java/org/ld4l/bib2lod/testing/xml/testrecord/MockMarcxml.java @@ -13,8 +13,11 @@ import org.ld4l.bib2lod.records.Record.RecordException; import org.ld4l.bib2lod.records.RecordField.RecordFieldException; +import org.ld4l.bib2lod.records.xml.marcxml.MarcxmlControlField; +import org.ld4l.bib2lod.records.xml.marcxml.MarcxmlDataField; +import org.ld4l.bib2lod.records.xml.marcxml.MarcxmlLeader; import org.ld4l.bib2lod.records.xml.marcxml.MarcxmlRecord; -import org.ld4l.bib2lod.testing.xml.MarcxmlTestUtils; +import org.ld4l.bib2lod.records.xml.marcxml.MarcxmlSubfield; import org.ld4l.bib2lod.testing.xml.XmlTestUtils; import org.w3c.dom.Document; import org.w3c.dom.Element; @@ -28,9 +31,19 @@ * instance, populated with new fields and subfield instances. */ public class MockMarcxml { - /** A useful starting place for test values. */ + + /** A useful starting place for test values. */ + public static final String MINIMAL_RECORD_STRING = + "" + + "01050cam a22003011 4500" + + "860506s1957 nyua b 000 0 eng " + + "" + + "main title" + + "" + + ""; + public static final MockMarcxml MINIMAL_RECORD = parse( - MarcxmlTestUtils.MINIMAL_RECORD); + MINIMAL_RECORD_STRING); /** * The entry point. Since constructors are restricted, use this to create an @@ -131,7 +144,7 @@ public String toString() { } // ---------------------------------------------------------------------- - // builder + // Builder // ---------------------------------------------------------------------- public static class Builder extends FieldFinder.Impl { @@ -151,7 +164,7 @@ public List getFieldBuilders() { } // ---------------------------------------------------------------------- - // Utility methods. + // Utility methods // ---------------------------------------------------------------------- static List iterableElements(NodeList nodes) { diff --git a/src/test/java/org/ld4l/bib2lod/testing/xml/testrecord/Subfield.java b/src/test/java/org/ld4l/bib2lod/testing/xml/testrecord/Subfield.java index c3783ca1c..a68744c10 100644 --- a/src/test/java/org/ld4l/bib2lod/testing/xml/testrecord/Subfield.java +++ b/src/test/java/org/ld4l/bib2lod/testing/xml/testrecord/Subfield.java @@ -4,6 +4,12 @@ import java.util.Objects; +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.parsers.ParserConfigurationException; + +import org.ld4l.bib2lod.records.RecordField.RecordFieldException; +import org.ld4l.bib2lod.records.xml.marcxml.MarcxmlSubfield; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; @@ -12,7 +18,7 @@ public class Subfield { final String code; final String value; - Subfield(Element element) { + public Subfield(Element element) { this.code = element.getAttribute("code"); this.value = element.getTextContent(); } @@ -32,6 +38,30 @@ Node element(Document doc) { Builder builder(MockMarcxml.Builder mmb, Datafield.Builder df) { return new Builder(mmb, df, this.code, this.value); } + + /** + * Create an XML structure from this instance. + */ + public Element toElement() { + try { + DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); + DocumentBuilder builder = dbf.newDocumentBuilder(); + Document doc = builder.newDocument(); + + Element element = doc.createElement("subfield"); + element.setAttribute("code", code); + element.setTextContent(value); + return element; + } catch (ParserConfigurationException e) { + throw new RuntimeException("Can't convert to XML", e); + } + } + + + MarcxmlSubfield toSubfield() + throws RecordFieldException { + return new MarcxmlSubfield(this.toElement()); + } @Override public int hashCode() { @@ -55,7 +85,7 @@ public String toString() { } // ---------------------------------------------------------------------- - // builder + // Builder // ---------------------------------------------------------------------- public static class Builder extends SubfieldFinder.Wrapper { From 242b6917f76a1367cbf25ca8af555b17020fd5b3 Mon Sep 17 00:00:00 2001 From: Rebecca Younes Date: Fri, 22 Sep 2017 16:16:54 -0400 Subject: [PATCH 02/14] Clean up unit tests --- .../bib2lod/records/xml/XmlTextElement.java | 1 - .../marcxml/ld4l/AgentBuilderTest.java | 48 +++++++---------- .../marcxml/ld4l/InstanceBuilderTest.java | 36 +++++-------- .../marcxml/ld4l/ItemBuilderTest.java | 1 - .../LegacySourceDataEntityBuilderTest.java | 2 +- .../marcxml/ld4l/LocationBuilderTest.java | 35 +++++++++--- .../ld4l/PhysicalDescriptionBuilderTest.java | 1 - .../marcxml/ld4l/TitleBuilderTest.java | 10 ++-- .../ld4l/activities/ActivityBuilderTest.java | 8 +-- .../activities/AuthorActivityBuilderTest.java | 2 +- .../ManufacturerActivityBuilderTest.java | 40 ++++++++------ .../ProviderActivityBuilderTest.java | 2 +- .../PublisherActivityBuilderTest.java | 34 ++++-------- .../records/xml/XmlTextElementTest.java | 1 - .../xml/marcxml/MarcxmlControlFieldTest.java | 1 - .../xml/marcxml/MarcxmlDataFieldTest.java | 21 +++----- .../xml/marcxml/MarcxmlLeaderTest.java | 1 - .../xml/marcxml/MarcxmlRecordTest.java | 5 -- .../xml/marcxml/MarcxmlSubfieldTest.java | 1 - .../bib2lod/testing/xml/MarcxmlTestUtils.java | 54 ------------------- .../testing/xml/testrecord/MockMarcxml.java | 4 -- 21 files changed, 117 insertions(+), 191 deletions(-) delete mode 100644 src/test/java/org/ld4l/bib2lod/testing/xml/MarcxmlTestUtils.java diff --git a/src/main/java/org/ld4l/bib2lod/records/xml/XmlTextElement.java b/src/main/java/org/ld4l/bib2lod/records/xml/XmlTextElement.java index 418a75a79..8a6a3be7e 100644 --- a/src/main/java/org/ld4l/bib2lod/records/xml/XmlTextElement.java +++ b/src/main/java/org/ld4l/bib2lod/records/xml/XmlTextElement.java @@ -7,7 +7,6 @@ import org.apache.commons.lang3.StringUtils; import org.ld4l.bib2lod.records.RecordField; -import org.ld4l.bib2lod.records.xml.XmlTextElement; import org.w3c.dom.CDATASection; import org.w3c.dom.Element; import org.w3c.dom.Node; diff --git a/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/AgentBuilderTest.java b/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/AgentBuilderTest.java index fbe3f152f..c534409c3 100644 --- a/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/AgentBuilderTest.java +++ b/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/AgentBuilderTest.java @@ -19,35 +19,26 @@ import org.ld4l.bib2lod.ontology.ld4l.Ld4lDatatypeProp; import org.ld4l.bib2lod.ontology.ld4l.Ld4lInstanceType; import org.ld4l.bib2lod.ontology.ld4l.Ld4lObjectProp; +import org.ld4l.bib2lod.records.RecordField.RecordFieldException; +import org.ld4l.bib2lod.records.xml.marcxml.MarcxmlSubfield; import org.ld4l.bib2lod.testing.AbstractTestClass; import org.ld4l.bib2lod.testing.BaseMockBib2LodObjectFactory; -import org.ld4l.bib2lod.testing.xml.MarcxmlTestUtils; +import org.ld4l.bib2lod.testing.xml.XmlTestUtils; import org.ld4l.bib2lod.testing.xml.testrecord.MockMarcxml; - - /** * Tests class AgentBuilder. */ public class AgentBuilderTest extends AbstractTestClass { - public static final MockMarcxml DUPLICATE_AGENTS = MockMarcxml.parse( - "" + - "01050cam a22003011 4500" + - "102063" + - "860506s1957 nyua b 000 0 eng " + - "" + - "full title" + - "" + - "" + - "Lugduni Batavorum :" + - "E.J. Brill" + - "" + - "" + - "Leiden :" + - "E.J. Brill" + - "" + - ""); + public static final MockMarcxml DUPLICATE_AGENTS = MINIMAL_RECORD.openCopy() + .addDatafield("260", "3", " ") + .addSubfield("a", "Lugduni Batavorum :") + .addSubfield("b", "E.J. Brill") + .addDatafield("260", " ", " ") + .addSubfield("a", "Leiden :") + .addSubfield("b", "E.J. Brill") + .lock(); public static final MockMarcxml DIFFERENT_AGENTS = DUPLICATE_AGENTS.openCopy() .findDatafield("260", 1).replaceSubfield("b", "Random House") @@ -65,7 +56,6 @@ public class AgentBuilderTest extends AbstractTestClass { public static final MockMarcxml AUTHOR_SURNAME = MINIMAL_RECORD.openCopy() .addDatafield("100", "1", "") - //.findDatafield("100") .addSubfield("a", "Watson,") .addSubfield("c", "Rev.") .addSubfield("d", "1775-1817") @@ -73,7 +63,6 @@ public class AgentBuilderTest extends AbstractTestClass { public static final MockMarcxml AUTHOR_FORENAME = MINIMAL_RECORD.openCopy() .addDatafield("100", "1", "") - //.findDatafield("100") .addSubfield("a", "John") .addSubfield("c", "the Baptist, Saint.") .lock(); @@ -121,7 +110,7 @@ public void invalidType_ThrowsException() throws Exception { "Invalid agent type"); BuildParams params = new BuildParams() .setType(Ld4lInstanceType.INSTANCE) - .addSubfield(MarcxmlTestUtils.buildSubfieldFromString(NAME_SUBFIELD)) + .addSubfield(buildSubfieldFromString(NAME_SUBFIELD)) .setParent(new Entity()); agentBuilder.build(params); } @@ -131,8 +120,7 @@ public void testTypeFromBuildParam() throws Exception { Type type = Ld4lAgentType.PERSON; BuildParams params = new BuildParams() .setType(type) - .addSubfield(MarcxmlTestUtils.buildSubfieldFromString( - NAME_SUBFIELD)) + .addSubfield(buildSubfieldFromString(NAME_SUBFIELD)) .setParent(new Entity()); Entity agent = agentBuilder.build(params); Assert.assertTrue(agent.hasType(type)); @@ -151,8 +139,7 @@ public void testNameFromBuildParam() throws Exception { @Test public void testNameFromSubfield() throws Exception { BuildParams params = new BuildParams() - .addSubfield(MarcxmlTestUtils.buildSubfieldFromString( - NAME_SUBFIELD)) + .addSubfield(buildSubfieldFromString(NAME_SUBFIELD)) .setParent(new Entity()); Entity agent = agentBuilder.build(params); Assert.assertEquals("E.J. Brill", @@ -207,5 +194,10 @@ public void testAuthorBirthdate() throws Exception { // --------------------------------------------------------------------- // Helper methods // --------------------------------------------------------------------- - + + private MarcxmlSubfield buildSubfieldFromString( + String element) throws RecordFieldException { + return new MarcxmlSubfield( + XmlTestUtils.buildElementFromString(element)); + } } diff --git a/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/InstanceBuilderTest.java b/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/InstanceBuilderTest.java index 3489daf90..d1f2f0078 100644 --- a/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/InstanceBuilderTest.java +++ b/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/InstanceBuilderTest.java @@ -25,12 +25,12 @@ */ public class InstanceBuilderTest extends AbstractTestClass { - public static final MockMarcxml RESPONSIBILITY_STATEMENT = MINIMAL_RECORD.openCopy() + public static final MockMarcxml RESPONSIBILITY_STATEMENT = MINIMAL_RECORD.openCopy() .findDatafield("245").findSubfield("a").setValue("full title") .addSubfield("c", "responsibility statement") .lock(); - public static final MockMarcxml _260_PUBLISHER = MINIMAL_RECORD.openCopy() + public static final MockMarcxml _260_PUBLISHER = MINIMAL_RECORD.openCopy() .findDatafield("245").findSubfield("a").setValue("full title") .addDatafield("260", "3", " ") .addSubfield("a", "New York,") @@ -38,7 +38,7 @@ public class InstanceBuilderTest extends AbstractTestClass { .addSubfield("c", "1957.") .lock(); - public static final MockMarcxml _260_PUBLISHER_AND_MANUFACTURER = MINIMAL_RECORD.openCopy() + public static final MockMarcxml _260_PUBLISHER_AND_MANUFACTURER = MINIMAL_RECORD.openCopy() .findDatafield("245").findSubfield("a").setValue("full title") .addDatafield("260", " ", " ") .addSubfield("a", "Springfield, Va. :") @@ -48,25 +48,17 @@ public class InstanceBuilderTest extends AbstractTestClass { .addSubfield("f", "Oak Ridge National Laboratory ") .lock(); - public static final MockMarcxml _260_TWO_FIELDS_TWO_PUBLISHERS = MockMarcxml.parse( - "" + - "01050cam a22003011 4500" + - "102063" + - "860506s1957 nyua b 000 0 eng " + - "" + - "full title" + - "" + - "" + - "place1" + - "date1" + - "" + - "" + - "place1" + - "name2" + - "date2" + - "" + - ""); - + public static final MockMarcxml _260_TWO_FIELDS_TWO_PUBLISHERS = MINIMAL_RECORD.openCopy() + .addControlfield("001", "102063") + .addDatafield("260", "2", " ") + .addSubfield("a", "place1") + .addSubfield("c", "date1") + .addDatafield("260", "2", " ") + .addSubfield("a", "place1") + .addSubfield("b", "name2") + .addSubfield("c", "date2") + .lock(); + public static final MockMarcxml _260_TWO_PUBLISHERS_AND_MANUFACTURER = _260_TWO_FIELDS_TWO_PUBLISHERS.openCopy() .findDatafield("260", 0) diff --git a/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/ItemBuilderTest.java b/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/ItemBuilderTest.java index 993d42cb8..690ae68a0 100644 --- a/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/ItemBuilderTest.java +++ b/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/ItemBuilderTest.java @@ -10,7 +10,6 @@ import org.ld4l.bib2lod.ontology.ld4l.Ld4lItemType; import org.ld4l.bib2lod.ontology.ld4l.Ld4lObjectProp; import org.ld4l.bib2lod.testing.AbstractTestClass; -import org.ld4l.bib2lod.testing.xml.MarcxmlTestUtils; import org.ld4l.bib2lod.testing.xml.testrecord.MockMarcxml; /** diff --git a/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/LegacySourceDataEntityBuilderTest.java b/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/LegacySourceDataEntityBuilderTest.java index bbb36190c..f42b9fdc3 100644 --- a/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/LegacySourceDataEntityBuilderTest.java +++ b/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/LegacySourceDataEntityBuilderTest.java @@ -39,7 +39,7 @@ public void nullLabel_ThrowsException() throws Exception { } @Test - public void testLabelDatatype() throws Exception { + public void testLabelHasDatatype() throws Exception { BuildParams params = new BuildParams() .setValue("Legacy data"); Entity entity = builder.build(params); diff --git a/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/LocationBuilderTest.java b/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/LocationBuilderTest.java index 6c2f22020..aa0183126 100644 --- a/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/LocationBuilderTest.java +++ b/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/LocationBuilderTest.java @@ -1,5 +1,7 @@ package org.ld4l.bib2lod.entitybuilders.marcxml.ld4l; +import static org.ld4l.bib2lod.testing.xml.testrecord.MockMarcxml.MINIMAL_RECORD; + import java.util.List; import org.junit.Assert; @@ -15,9 +17,11 @@ import org.ld4l.bib2lod.ontology.ld4l.Ld4lInstanceType; import org.ld4l.bib2lod.ontology.ld4l.Ld4lLocationType; import org.ld4l.bib2lod.ontology.ld4l.Ld4lObjectProp; +import org.ld4l.bib2lod.records.RecordField.RecordFieldException; +import org.ld4l.bib2lod.records.xml.marcxml.MarcxmlSubfield; import org.ld4l.bib2lod.testing.AbstractTestClass; import org.ld4l.bib2lod.testing.BaseMockBib2LodObjectFactory; -import org.ld4l.bib2lod.testing.xml.MarcxmlTestUtils; +import org.ld4l.bib2lod.testing.xml.XmlTestUtils; import org.ld4l.bib2lod.testing.xml.testrecord.MockMarcxml; /** @@ -43,6 +47,16 @@ public class LocationBuilderTest extends AbstractTestClass { "" + ""); + public static final MockMarcxml _260_TWO_FIELDS_TWO_PUBLISHERS = MINIMAL_RECORD.openCopy() + .addControlfield("001", "102063") + .addDatafield("260", "3", " ") + .addSubfield("a", "Leiden") + .addSubfield("b", "E.J. Brill") + .addDatafield("260", " ", " ") + .addSubfield("a", "Leiden :") + .addSubfield("b", "E.J. Brill") + .lock(); + public static final MockMarcxml DIFFERENT_LOCATIONS = DUPLICATE_LOCATIONS.openCopy() .findDatafield("260", 0).replaceSubfield("a", "Amsterdam :") .findDatafield("260", 1).replaceSubfield("b", "Random House") @@ -94,8 +108,8 @@ public void invalidType_ThrowsException() throws Exception { "Invalid location type"); BuildParams params = new BuildParams() .setType(Ld4lInstanceType.INSTANCE) - .addSubfield(MarcxmlTestUtils.buildSubfieldFromString( - NAME_SUBFIELD)) + .addSubfield(buildSubfieldFromString(NAME_SUBFIELD)) + .setParent(new Entity()); locationBuilder.build(params); } @@ -105,8 +119,8 @@ public void testTypeFromBuildParam() throws Exception { Type type = Ld4lLocationType.LOCATION; BuildParams params = new BuildParams() .setType(type) - .addSubfield(MarcxmlTestUtils.buildSubfieldFromString( - NAME_SUBFIELD)) + .addSubfield(buildSubfieldFromString(NAME_SUBFIELD)) + .setParent(new Entity()); Entity location = locationBuilder.build(params); Assert.assertTrue(location.hasType(type)); @@ -125,8 +139,7 @@ public void testNameFromBuildParam() throws Exception { @Test public void testNameFromSubfield() throws Exception { BuildParams params = new BuildParams() - .addSubfield(MarcxmlTestUtils.buildSubfieldFromString( - NAME_SUBFIELD)) + .addSubfield(buildSubfieldFromString(NAME_SUBFIELD)) .setParent(new Entity()); Entity location = locationBuilder.build(params); Assert.assertEquals("Leiden", @@ -164,5 +177,11 @@ public void testBuildNewLocation() throws Exception { // --------------------------------------------------------------------- // Helper methods // --------------------------------------------------------------------- - + + + private MarcxmlSubfield buildSubfieldFromString( + String element) throws RecordFieldException { + return new MarcxmlSubfield( + XmlTestUtils.buildElementFromString(element)); + } } diff --git a/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/PhysicalDescriptionBuilderTest.java b/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/PhysicalDescriptionBuilderTest.java index 379c5d544..c376aae1e 100644 --- a/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/PhysicalDescriptionBuilderTest.java +++ b/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/PhysicalDescriptionBuilderTest.java @@ -13,7 +13,6 @@ import org.ld4l.bib2lod.ontology.ld4l.Ld4lObjectProp; import org.ld4l.bib2lod.testing.AbstractTestClass; import org.ld4l.bib2lod.testing.BaseMockBib2LodObjectFactory; -import org.ld4l.bib2lod.testing.xml.MarcxmlTestUtils; import org.ld4l.bib2lod.testing.xml.testrecord.MockMarcxml; /** diff --git a/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/TitleBuilderTest.java b/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/TitleBuilderTest.java index fcff52e4d..6eb74a033 100644 --- a/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/TitleBuilderTest.java +++ b/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/TitleBuilderTest.java @@ -26,24 +26,24 @@ */ public class TitleBuilderTest extends AbstractTestClass { - public static final MockMarcxml TITLE_WITH_WHITESPACE = MINIMAL_RECORD.openCopy() + public static final MockMarcxml TITLE_WITH_WHITESPACE = MINIMAL_RECORD.openCopy() .addControlfield("001", "102063") .findDatafield("245").findSubfield("a").setValue(" main title ") .lock(); - public static final MockMarcxml TITLE_WITH_FINAL_SPACE_COLON = TITLE_WITH_WHITESPACE.openCopy() + public static final MockMarcxml TITLE_WITH_FINAL_SPACE_COLON = TITLE_WITH_WHITESPACE.openCopy() .findDatafield("245").findSubfield("a").setValue("main title :") .lock(); - public static final MockMarcxml TITLE_WITH_FINAL_COLON = TITLE_WITH_WHITESPACE.openCopy() + public static final MockMarcxml TITLE_WITH_FINAL_COLON = TITLE_WITH_WHITESPACE.openCopy() .findDatafield("245").findSubfield("a").setValue("main title:") .lock(); - public static final MockMarcxml TITLE_WITH_SUBTITLE = TITLE_WITH_FINAL_SPACE_COLON.openCopy() + public static final MockMarcxml TITLE_WITH_SUBTITLE = TITLE_WITH_FINAL_SPACE_COLON.openCopy() .findDatafield("245").addSubfield("b", "subtitle") .lock(); - public static final MockMarcxml TITLE_WITH_TWO_SUBTITLES = TITLE_WITH_FINAL_SPACE_COLON.openCopy() + public static final MockMarcxml TITLE_WITH_TWO_SUBTITLES = TITLE_WITH_FINAL_SPACE_COLON.openCopy() .findDatafield("245").addSubfield("b", "subtitle one : subtitle two") .lock(); diff --git a/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/activities/ActivityBuilderTest.java b/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/activities/ActivityBuilderTest.java index 649ec51af..8f165bb5f 100644 --- a/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/activities/ActivityBuilderTest.java +++ b/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/activities/ActivityBuilderTest.java @@ -15,9 +15,10 @@ import org.ld4l.bib2lod.ontology.ld4l.Ld4lActivityType; import org.ld4l.bib2lod.ontology.ld4l.Ld4lDatatypeProp; import org.ld4l.bib2lod.ontology.ld4l.Ld4lObjectProp; +import org.ld4l.bib2lod.records.xml.marcxml.MarcxmlSubfield; import org.ld4l.bib2lod.testing.AbstractTestClass; import org.ld4l.bib2lod.testing.BaseMockBib2LodObjectFactory; -import org.ld4l.bib2lod.testing.xml.MarcxmlTestUtils; +import org.ld4l.bib2lod.testing.xml.XmlTestUtils; import org.ld4l.bib2lod.testing.xml.testrecord.MockMarcxml; public class ActivityBuilderTest extends AbstractTestClass { @@ -75,8 +76,9 @@ public void invalidFieldType_ThrowsException() throws Exception { BuildParams params = new BuildParams() .setParent(new Entity()) .setRecord(null) - .setField(MarcxmlTestUtils.buildSubfieldFromString( - "test")); + .setField(new MarcxmlSubfield( + XmlTestUtils.buildElementFromString( + "test"))); activityBuilder.build(params); } diff --git a/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/activities/AuthorActivityBuilderTest.java b/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/activities/AuthorActivityBuilderTest.java index 0ac48f21b..65d3785ff 100644 --- a/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/activities/AuthorActivityBuilderTest.java +++ b/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/activities/AuthorActivityBuilderTest.java @@ -21,7 +21,7 @@ public class AuthorActivityBuilderTest extends AbstractTestClass { - public static final MockMarcxml _100_AUTHOR = MINIMAL_RECORD.openCopy() + public static final MockMarcxml _100_AUTHOR = MINIMAL_RECORD.openCopy() .findDatafield("245").findSubfield("a").setValue("full title") .addDatafield("100", "0", " ").addSubfield("a", "Manya K'Omalowete a Djonga,") .lock(); diff --git a/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/activities/ManufacturerActivityBuilderTest.java b/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/activities/ManufacturerActivityBuilderTest.java index e2366ca73..940e2ab2f 100644 --- a/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/activities/ManufacturerActivityBuilderTest.java +++ b/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/activities/ManufacturerActivityBuilderTest.java @@ -1,5 +1,7 @@ package org.ld4l.bib2lod.entitybuilders.marcxml.ld4l.activities; +import static org.ld4l.bib2lod.testing.xml.testrecord.MockMarcxml.MINIMAL_RECORD; + import org.junit.Assert; import org.junit.Before; import org.junit.BeforeClass; @@ -33,21 +35,29 @@ public void setUp() throws RecordFieldException { this.instanceBuilder = new InstanceBuilder(); } - public static final MockMarcxml _260_MANUFACTURER = MockMarcxml.parse( - "" + - "01050cam a22003011 4500" + - "102063" + - "860506s1957 nyua b 000 0 eng " + - "" + - "full title" + - "" + - "" + - "Oak Ridge, Tenn. :" + - "Oak Ridge National Laboratory " + - "1974" + - "" + - "" - ); +// public static final MockMarcxml _260_MANUFACTURER = MockMarcxml.parse( +// "" + +// "01050cam a22003011 4500" + +// "102063" + +// "860506s1957 nyua b 000 0 eng " + +// "" + +// "full title" + +// "" + +// "" + +// "Oak Ridge, Tenn. :" + +// "Oak Ridge National Laboratory " + +// "1974" + +// "" + +// "" +// ); + + public static final MockMarcxml _260_MANUFACTURER = MINIMAL_RECORD.openCopy() + .addControlfield("001", "102063") + .addDatafield("260", " ", " ") + .addSubfield("e", "Oak Ridge, Tenn. :") + .addSubfield("f", "Oak Ridge National Laboratory ") + .addSubfield("g", "1974") + .lock(); // --------------------------------------------------------------------- // The tests diff --git a/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/activities/ProviderActivityBuilderTest.java b/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/activities/ProviderActivityBuilderTest.java index 6e082ab5b..ea4dd3865 100644 --- a/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/activities/ProviderActivityBuilderTest.java +++ b/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/activities/ProviderActivityBuilderTest.java @@ -22,7 +22,7 @@ */ public class ProviderActivityBuilderTest extends AbstractTestClass { - public static final MockMarcxml _260_PUBLISHER = MINIMAL_RECORD.openCopy() + public static final MockMarcxml _260_PUBLISHER = MINIMAL_RECORD.openCopy() .findDatafield("245").findSubfield("a").setValue("full title") .addDatafield("260", " ", " ") .addSubfield("a", "New York,") diff --git a/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/activities/PublisherActivityBuilderTest.java b/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/activities/PublisherActivityBuilderTest.java index 9960a44d5..f0b4a3280 100644 --- a/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/activities/PublisherActivityBuilderTest.java +++ b/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/activities/PublisherActivityBuilderTest.java @@ -59,30 +59,16 @@ public class PublisherActivityBuilderTest extends AbstractTestClass { public static final MockMarcxml _260_CURRENT_PUBLISHER = _260_PUBLISHER.openCopy() .findDatafield("260").setInd1("3").lock(); - - public static final MockMarcxml TWO_260 = MockMarcxml - .parse("" + "01050cam a22003011 4500" - + "102063" - + "860506s1957 nyua b 000 0 eng " - + "" - + "full title" - + "" + "" - + "Lugduni Batavorum :" - + "E.J. Brill" - + "" + "" - + "Leiden :" - + "E.J. Brill" - + "" + ""); - - public static final MockMarcxml _008_260$c_DATES = MockMarcxml - .parse("" + "01050cam a22003011 4500" - + "102063" - + "860506s1957 nyua b 000 0 eng " - + "" - + "full title" - + "" + "" - + "1957." + "" - + ""); + + public static final MockMarcxml TWO_260 = MINIMAL_RECORD.openCopy() + .addControlfield("001", "102063") + .addDatafield("260", "3", " ") + .addSubfield("a", "Lugduni Batavorum :") + .addSubfield("b", "E.J. Brill") + .addDatafield("260", "3", " ") + .addSubfield("a", "Leiden :") + .addSubfield("b", "E.J. Brill") + .lock(); public static final String _001 = "102063"; diff --git a/src/test/java/org/ld4l/bib2lod/records/xml/XmlTextElementTest.java b/src/test/java/org/ld4l/bib2lod/records/xml/XmlTextElementTest.java index 61dbe3123..4e2e4bb15 100644 --- a/src/test/java/org/ld4l/bib2lod/records/xml/XmlTextElementTest.java +++ b/src/test/java/org/ld4l/bib2lod/records/xml/XmlTextElementTest.java @@ -2,7 +2,6 @@ import org.junit.Assert; import org.junit.Test; -import org.ld4l.bib2lod.records.xml.XmlTextElement; import org.ld4l.bib2lod.testing.AbstractTestClass; import org.ld4l.bib2lod.testing.xml.XmlTestUtils; import org.w3c.dom.Element; diff --git a/src/test/java/org/ld4l/bib2lod/records/xml/marcxml/MarcxmlControlFieldTest.java b/src/test/java/org/ld4l/bib2lod/records/xml/marcxml/MarcxmlControlFieldTest.java index 25c1212ae..8fd4ef5ec 100644 --- a/src/test/java/org/ld4l/bib2lod/records/xml/marcxml/MarcxmlControlFieldTest.java +++ b/src/test/java/org/ld4l/bib2lod/records/xml/marcxml/MarcxmlControlFieldTest.java @@ -5,7 +5,6 @@ import org.junit.Test; import org.ld4l.bib2lod.records.Record.RecordException; import org.ld4l.bib2lod.records.RecordField.RecordFieldException; -import org.ld4l.bib2lod.records.xml.marcxml.MarcxmlControlField; import org.ld4l.bib2lod.testing.AbstractTestClass; import org.ld4l.bib2lod.testing.xml.XmlTestUtils; import org.w3c.dom.Element; diff --git a/src/test/java/org/ld4l/bib2lod/records/xml/marcxml/MarcxmlDataFieldTest.java b/src/test/java/org/ld4l/bib2lod/records/xml/marcxml/MarcxmlDataFieldTest.java index ebefbfbc0..e82498bf6 100644 --- a/src/test/java/org/ld4l/bib2lod/records/xml/marcxml/MarcxmlDataFieldTest.java +++ b/src/test/java/org/ld4l/bib2lod/records/xml/marcxml/MarcxmlDataFieldTest.java @@ -11,9 +11,7 @@ import org.junit.Test; import org.ld4l.bib2lod.records.Record.RecordException; import org.ld4l.bib2lod.records.RecordField.RecordFieldException; -import org.ld4l.bib2lod.records.xml.marcxml.MarcxmlDataField; import org.ld4l.bib2lod.testing.AbstractTestClass; -import org.ld4l.bib2lod.testing.xml.MarcxmlTestUtils; import org.ld4l.bib2lod.testing.xml.XmlTestUtils; import org.w3c.dom.Element; @@ -180,9 +178,8 @@ public void testGetUniqueTrimmedSubfieldValues() throws Exception { } @Test - public void testGetSubfieldCodes() throws RecordFieldException { - MarcxmlDataField field = - MarcxmlTestUtils.buildDataFieldFromString(MULTIPLE_SUBFIELDS); + public void testGetSubfieldCodes() throws Exception { + MarcxmlDataField field = buildFromString(MULTIPLE_SUBFIELDS); List expected = Arrays.asList( 'a', 'a', 'a', 'b', 'b', 'c'); Assert.assertEquals(expected, field.getSubfieldCodes()); @@ -190,25 +187,23 @@ public void testGetSubfieldCodes() throws RecordFieldException { } @Test - public void testGetUniqueSubfieldCodes() throws RecordFieldException { - MarcxmlDataField field = - MarcxmlTestUtils.buildDataFieldFromString(MULTIPLE_SUBFIELDS); + public void testGetUniqueSubfieldCodes() throws Exception { + MarcxmlDataField field = buildFromString(MULTIPLE_SUBFIELDS); Set expected = new HashSet<>(Arrays.asList('a', 'b', 'c')); Assert.assertEquals(expected, field.getUniqueSubfieldCodes()); } @Test - public void testContainsSomeSubfield() throws RecordFieldException { - MarcxmlDataField field = - MarcxmlTestUtils.buildDataFieldFromString(VALID_DATAFIELD); + public void testContainsSomeSubfield() throws Exception { + MarcxmlDataField field = buildFromString(VALID_DATAFIELD); + Character[] codes = {'a', 'e', 'g'}; Assert.assertTrue(field.containsAnySubfield(codes)); } @Test public void testDoesNotContainSomeSubfield() throws Exception { - MarcxmlDataField field = - MarcxmlTestUtils.buildDataFieldFromString(VALID_DATAFIELD); + MarcxmlDataField field = buildFromString(VALID_DATAFIELD); Character[] codes = {'e', 'f', 'g'}; Assert.assertFalse(field.containsAnySubfield(codes)); } diff --git a/src/test/java/org/ld4l/bib2lod/records/xml/marcxml/MarcxmlLeaderTest.java b/src/test/java/org/ld4l/bib2lod/records/xml/marcxml/MarcxmlLeaderTest.java index 6fc5b1037..77c404a3a 100644 --- a/src/test/java/org/ld4l/bib2lod/records/xml/marcxml/MarcxmlLeaderTest.java +++ b/src/test/java/org/ld4l/bib2lod/records/xml/marcxml/MarcxmlLeaderTest.java @@ -5,7 +5,6 @@ import org.junit.Test; import org.ld4l.bib2lod.records.Record.RecordException; import org.ld4l.bib2lod.records.RecordField.RecordFieldException; -import org.ld4l.bib2lod.records.xml.marcxml.MarcxmlLeader; import org.ld4l.bib2lod.testing.AbstractTestClass; import org.ld4l.bib2lod.testing.xml.XmlTestUtils; import org.w3c.dom.Element; diff --git a/src/test/java/org/ld4l/bib2lod/records/xml/marcxml/MarcxmlRecordTest.java b/src/test/java/org/ld4l/bib2lod/records/xml/marcxml/MarcxmlRecordTest.java index e06d1706e..8b5a5c8f0 100644 --- a/src/test/java/org/ld4l/bib2lod/records/xml/marcxml/MarcxmlRecordTest.java +++ b/src/test/java/org/ld4l/bib2lod/records/xml/marcxml/MarcxmlRecordTest.java @@ -7,12 +7,7 @@ import org.junit.Assert; import org.junit.Test; import org.ld4l.bib2lod.records.Record.RecordException; -import org.ld4l.bib2lod.records.xml.marcxml.BaseMarcxmlField; -import org.ld4l.bib2lod.records.xml.marcxml.MarcxmlControlField; -import org.ld4l.bib2lod.records.xml.marcxml.MarcxmlLeader; -import org.ld4l.bib2lod.records.xml.marcxml.MarcxmlRecord; import org.ld4l.bib2lod.testing.AbstractTestClass; -import org.ld4l.bib2lod.testing.xml.MarcxmlTestUtils; import org.ld4l.bib2lod.testing.xml.testrecord.MockMarcxml; /** diff --git a/src/test/java/org/ld4l/bib2lod/records/xml/marcxml/MarcxmlSubfieldTest.java b/src/test/java/org/ld4l/bib2lod/records/xml/marcxml/MarcxmlSubfieldTest.java index 2f0c2dd1c..a490e8386 100644 --- a/src/test/java/org/ld4l/bib2lod/records/xml/marcxml/MarcxmlSubfieldTest.java +++ b/src/test/java/org/ld4l/bib2lod/records/xml/marcxml/MarcxmlSubfieldTest.java @@ -5,7 +5,6 @@ import org.junit.Test; import org.ld4l.bib2lod.records.Record.RecordException; import org.ld4l.bib2lod.records.RecordField.RecordFieldException; -import org.ld4l.bib2lod.records.xml.marcxml.MarcxmlSubfield; import org.ld4l.bib2lod.testing.AbstractTestClass; import org.ld4l.bib2lod.testing.xml.XmlTestUtils; import org.w3c.dom.Element; diff --git a/src/test/java/org/ld4l/bib2lod/testing/xml/MarcxmlTestUtils.java b/src/test/java/org/ld4l/bib2lod/testing/xml/MarcxmlTestUtils.java deleted file mode 100644 index 3d58c86ba..000000000 --- a/src/test/java/org/ld4l/bib2lod/testing/xml/MarcxmlTestUtils.java +++ /dev/null @@ -1,54 +0,0 @@ -package org.ld4l.bib2lod.testing.xml; - -import org.ld4l.bib2lod.records.Record.RecordException; -import org.ld4l.bib2lod.records.RecordField.RecordFieldException; -import org.ld4l.bib2lod.records.xml.marcxml.MarcxmlControlField; -import org.ld4l.bib2lod.records.xml.marcxml.MarcxmlDataField; -import org.ld4l.bib2lod.records.xml.marcxml.MarcxmlRecord; -import org.ld4l.bib2lod.records.xml.marcxml.MarcxmlSubfield; -import org.w3c.dom.Element; - -/** - * Helper methods for testing MARCXML conversion. - */ -public class MarcxmlTestUtils { - - public static final String MINIMAL_RECORD = - "" + - "01050cam a22003011 4500" + - "860506s1957 nyua b 000 0 eng " + - "" + - "main title" + - "" + - ""; - - public final static MarcxmlRecord getMinimalRecord() throws RecordException { - return new MarcxmlRecord( - XmlTestUtils.buildElementFromString(MINIMAL_RECORD)); - } - - public final static MarcxmlControlField buildControlFieldFromString( - String element) throws RecordFieldException { - return new MarcxmlControlField( - XmlTestUtils.buildElementFromString(element)); - } - - public final static MarcxmlDataField buildDataFieldFromString( - String element) throws RecordFieldException { - return new MarcxmlDataField( - XmlTestUtils.buildElementFromString(element)); - } - - public final static MarcxmlSubfield buildSubfieldFromString( - String element) throws RecordFieldException { - return new MarcxmlSubfield( - XmlTestUtils.buildElementFromString(element)); - } - - public final static MarcxmlRecord buildRecordFromString(String s) - throws RecordException { - Element element = XmlTestUtils.buildElementFromString(s); - return new MarcxmlRecord(element); - } - -} diff --git a/src/test/java/org/ld4l/bib2lod/testing/xml/testrecord/MockMarcxml.java b/src/test/java/org/ld4l/bib2lod/testing/xml/testrecord/MockMarcxml.java index 5453993d2..1ee9046ee 100644 --- a/src/test/java/org/ld4l/bib2lod/testing/xml/testrecord/MockMarcxml.java +++ b/src/test/java/org/ld4l/bib2lod/testing/xml/testrecord/MockMarcxml.java @@ -13,11 +13,7 @@ import org.ld4l.bib2lod.records.Record.RecordException; import org.ld4l.bib2lod.records.RecordField.RecordFieldException; -import org.ld4l.bib2lod.records.xml.marcxml.MarcxmlControlField; -import org.ld4l.bib2lod.records.xml.marcxml.MarcxmlDataField; -import org.ld4l.bib2lod.records.xml.marcxml.MarcxmlLeader; import org.ld4l.bib2lod.records.xml.marcxml.MarcxmlRecord; -import org.ld4l.bib2lod.records.xml.marcxml.MarcxmlSubfield; import org.ld4l.bib2lod.testing.xml.XmlTestUtils; import org.w3c.dom.Document; import org.w3c.dom.Element; From 20698f39f282b225085879abff6a9a5749d2da43 Mon Sep 17 00:00:00 2001 From: Rebecca Younes Date: Mon, 25 Sep 2017 12:17:25 -0400 Subject: [PATCH 03/14] Modify build of legacy source data values Use LegacySourceDataBuilder only for untyped entities. Typed entities are built through the specific builder. --- .../java/org/ld4l/bib2lod/entity/Entity.java | 6 ++++++ .../ld4l/LegacySourceDataEntityBuilder.java | 16 +++++----------- .../ld4l/LegacySourceDataEntityBuilderTest.java | 10 ---------- 3 files changed, 11 insertions(+), 21 deletions(-) diff --git a/src/main/java/org/ld4l/bib2lod/entity/Entity.java b/src/main/java/org/ld4l/bib2lod/entity/Entity.java index 9d608d87b..015a970cf 100644 --- a/src/main/java/org/ld4l/bib2lod/entity/Entity.java +++ b/src/main/java/org/ld4l/bib2lod/entity/Entity.java @@ -12,6 +12,7 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.ld4l.bib2lod.datatypes.Datatype; +import org.ld4l.bib2lod.datatypes.Ld4lCustomDatatypes.BibDatatype; import org.ld4l.bib2lod.ontology.DatatypeProp; import org.ld4l.bib2lod.ontology.NamedIndividual; import org.ld4l.bib2lod.ontology.ObjectProp; @@ -285,6 +286,11 @@ public void addAttribute(DatatypeProp prop, String string, Datatype type) { addAttribute(prop, new Attribute(string, type)); } + public void addLegacySourceDataAttribute( + DatatypeProp prop, String string) { + addAttribute(prop, string, BibDatatype.LEGACY_SOURCE_DATA); + } + public void addAttribute(DatatypeProp prop, int i) { addAttribute(prop, new Attribute(i)); } diff --git a/src/main/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/LegacySourceDataEntityBuilder.java b/src/main/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/LegacySourceDataEntityBuilder.java index e14a67560..5eb78cb47 100644 --- a/src/main/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/LegacySourceDataEntityBuilder.java +++ b/src/main/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/LegacySourceDataEntityBuilder.java @@ -1,15 +1,15 @@ package org.ld4l.bib2lod.entitybuilders.marcxml.ld4l; -import org.ld4l.bib2lod.datatypes.Ld4lCustomDatatypes.BibDatatype; import org.ld4l.bib2lod.entity.Entity; import org.ld4l.bib2lod.entitybuilders.BuildParams; import org.ld4l.bib2lod.entitybuilders.marcxml.MarcxmlEntityBuilder; -import org.ld4l.bib2lod.ontology.Type; import org.ld4l.bib2lod.ontology.ld4l.Ld4lDatatypeProp; /** - * Builds an entity used to store unparsed, unnormalized legacy data. May or - * may not have a specific type assigned. + * Builds an entity used to store unparsed, unnormalized legacy data. Use + * when no specific type is assigned; if there is a specific type, use the + * builder for that type and add the datatype to the appropriate literal + * value. */ public class LegacySourceDataEntityBuilder extends MarcxmlEntityBuilder { @@ -24,13 +24,7 @@ public Entity build(BuildParams params) throws EntityBuilderException { Entity entity = new Entity(); - entity.addAttribute(Ld4lDatatypeProp.LABEL, label, - BibDatatype.LEGACY_SOURCE_DATA); - - Type type = params.getType(); - if (type != null) { - entity.addType(type); - } + entity.addLegacySourceDataAttribute(Ld4lDatatypeProp.LABEL, label); return entity; } diff --git a/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/LegacySourceDataEntityBuilderTest.java b/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/LegacySourceDataEntityBuilderTest.java index f42b9fdc3..d204985d3 100644 --- a/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/LegacySourceDataEntityBuilderTest.java +++ b/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/LegacySourceDataEntityBuilderTest.java @@ -49,14 +49,4 @@ public void testLabelHasDatatype() throws Exception { Ld4lDatatypeProp.LABEL).toLiteral()); } - @Test - public void testType() throws Exception { - Type type = Ld4lActivityType.ACTIVITY; - BuildParams params = new BuildParams() - .setType(type) - .setValue("Legacy data entity"); - Entity entity = builder.build(params); - Assert.assertTrue(entity.hasType(type)); - } - } From 6674764b04b99cf2db4e303257a5a23ffe472793 Mon Sep 17 00:00:00 2001 From: Rebecca Younes Date: Mon, 25 Sep 2017 14:25:00 -0400 Subject: [PATCH 04/14] Add missing Extent type --- .../marcxml/ld4l/PhysicalDescriptionBuilder.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/PhysicalDescriptionBuilder.java b/src/main/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/PhysicalDescriptionBuilder.java index 575c162f1..379c3e562 100644 --- a/src/main/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/PhysicalDescriptionBuilder.java +++ b/src/main/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/PhysicalDescriptionBuilder.java @@ -4,6 +4,7 @@ import org.ld4l.bib2lod.entitybuilders.BuildParams; import org.ld4l.bib2lod.entitybuilders.marcxml.MarcxmlEntityBuilder; import org.ld4l.bib2lod.ontology.ld4l.Ld4lDatatypeProp; +import org.ld4l.bib2lod.ontology.ld4l.Ld4lExtentType; import org.ld4l.bib2lod.ontology.ld4l.Ld4lObjectProp; import org.ld4l.bib2lod.records.xml.marcxml.MarcxmlDataField; import org.ld4l.bib2lod.records.xml.marcxml.MarcxmlSubfield; @@ -64,7 +65,7 @@ private Entity convert_300() { Entity entity = null; if (subfield.hasCode('a')) { - entity = new Entity(); + entity = new Entity(Ld4lExtentType.EXTENT); entity.addAttribute(Ld4lDatatypeProp.LABEL, subfield.getTextValue()); parent.addRelationship(Ld4lObjectProp.HAS_EXTENT, entity); } From 32f1ec21aff369f32677a8f6143beceeb308965a Mon Sep 17 00:00:00 2001 From: Rebecca Younes Date: Mon, 25 Sep 2017 14:25:25 -0400 Subject: [PATCH 05/14] AgentBuilder methods; clean up unit tests --- .../marcxml/MarcxmlEntityBuilder.java | 14 +- .../marcxml/ld4l/AgentBuilder.java | 149 ++++++++---------- .../activities/ProviderActivityBuilder.java | 2 +- .../ld4l/AdminMetadataBuilderTest.java | 32 ++-- .../marcxml/ld4l/AgentBuilderTest.java | 23 +-- .../marcxml/ld4l/IdentifierBuilderTest.java | 13 -- .../LegacySourceDataEntityBuilderTest.java | 2 - .../marcxml/ld4l/LocationBuilderTest.java | 22 +-- .../ld4l/PhysicalDescriptionBuilderTest.java | 43 +++-- .../marcxml/ld4l/TitleBuilderTest.java | 44 +++--- 10 files changed, 134 insertions(+), 210 deletions(-) diff --git a/src/main/java/org/ld4l/bib2lod/entitybuilders/marcxml/MarcxmlEntityBuilder.java b/src/main/java/org/ld4l/bib2lod/entitybuilders/marcxml/MarcxmlEntityBuilder.java index 0d2d09560..8189819cb 100644 --- a/src/main/java/org/ld4l/bib2lod/entitybuilders/marcxml/MarcxmlEntityBuilder.java +++ b/src/main/java/org/ld4l/bib2lod/entitybuilders/marcxml/MarcxmlEntityBuilder.java @@ -19,15 +19,6 @@ public class MarcxmlEntityBuilder extends BaseEntityBuilder { -/* - * TODO - * Record as a whole - done - * Field as a whole - * Field with one or more specific subfields - * Field iterating through each subfield (e.g., each subfield generates a distinct entity - * Field iterating through all subfields (or is that just field as a whole?) - */ - @SuppressWarnings("unused") private static final Logger LOGGER = LogManager.getLogger(); @@ -194,8 +185,5 @@ protected Entity buildFromString( return entity; } - - - - + } diff --git a/src/main/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/AgentBuilder.java b/src/main/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/AgentBuilder.java index ca2b2112c..da5bfa041 100644 --- a/src/main/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/AgentBuilder.java +++ b/src/main/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/AgentBuilder.java @@ -18,10 +18,8 @@ public class AgentBuilder extends MarcxmlEntityBuilder { private static ObjectProp DEFAULT_RELATIONSHIP = Ld4lObjectProp.HAS_AGENT; - private Entity agent; private MarcxmlDataField field; private Entity grandparent; - private String name; private Entity parent; private ObjectProp relationship; private MarcxmlSubfield subfield; @@ -34,7 +32,7 @@ public Entity build(BuildParams params) throws EntityBuilderException { parseBuildParams(params); - buildAgent(); + Entity agent = buildAgent(); parent.addRelationship(relationship, agent); @@ -42,9 +40,7 @@ public Entity build(BuildParams params) throws EntityBuilderException { } private void reset() { - this.agent = null; this.field = null; - this.name = null; this.parent = null; this.relationship = null; this.subfield = null; @@ -63,13 +59,12 @@ private void parseBuildParams(BuildParams params) if (type != null && ! (type instanceof Ld4lAgentType)) { throw new EntityBuilderException("Invalid agent type"); } - - this.name = params.getValue(); + this.subfield = (MarcxmlSubfield) params.getSubfield(); this.field = (MarcxmlDataField) params.getField(); - if (name == null && subfield == null && field == null) { - throw new EntityBuilderException("A name value, subfield, or " + - "field is required to build an agent."); + if (subfield == null && field == null) { + throw new EntityBuilderException("A subfield or field is " + + "required to build an agent."); } this.relationship = params.getRelationship(); @@ -80,18 +75,75 @@ private void parseBuildParams(BuildParams params) this.grandparent = params.getGrandparent(); } + + private Entity buildAgent() { + + Entity agent = null; + + // Subfield only + if (field == null) { + agent = new Entity(Ld4lAgentType.defaultType()); + agent.addAttribute(Ld4lDatatypeProp.NAME, + subfield.getTrimmedTextValue()); + + } else { + switch (field.getTag()) { + case "100": + agent = convert100(); + break; + case "260": + agent = convert260(); + break; + default: + break; + } + } + + return agent; + } + + private Entity convert100() { + + // Person or Family type + Type type = field.getFirstIndicator() == 3 ? + Ld4lAgentType.FAMILY : Ld4lAgentType.PERSON; + Entity agent = new Entity(type); + + // Name + agent.addAttribute(Ld4lDatatypeProp.NAME, + field.getSubfield('a').getTrimmedTextValue()); + + return agent; + } + + private Entity convert260() { + + Entity agent = new Entity(Ld4lAgentType.defaultType()); + + if (subfield != null) { + agent.addAttribute(Ld4lDatatypeProp.NAME, + subfield.getTrimmedTextValue()); + } + + agent = dedupeAgent(agent); + + return agent; + } + /** * If this agent duplicates an agent of another activity of the same * type for the same bib resource, use that agent rather than creating a * new one. Current deduping is based only on the agent name strings, * since that is what is available in, e.g., MARC 260$b. */ - private void dedupeAgent() { + private Entity dedupeAgent(Entity agent) { if (grandparent == null) { - return; + return agent; } + String name = agent.getValue(Ld4lDatatypeProp.NAME); + List activities = grandparent.getChildren( Ld4lObjectProp.HAS_ACTIVITY, parent.getType()); for (Entity activity : activities) { @@ -101,77 +153,12 @@ private void dedupeAgent() { String agentName = existingAgent.getValue(Ld4lDatatypeProp.NAME); if (name.equals(agentName)) { - agent = existingAgent; + return existingAgent; } } - } - } - - private void buildAgent() { - - // Use type specified in build params, if any. - if (type == null) { - // Otherwise determine type from input data. - type = getType(); - } - - this.agent = new Entity(type); - - addAgentName(); - - dedupeAgent(); - } - - private void addAgentName() { - - if (name == null) { - if (subfield != null) { - this.name = subfield.getTrimmedTextValue(); - } else { - this.name = buildNameFromDataField(agent); - } - } - - if (name != null) { - agent.addAttribute(Ld4lDatatypeProp.NAME, name); - } - } - - /** - * Determines type from input data. Defaults to Ld4lAgentType default - * type. Never returns null. - */ - private Type getType() { - - if (field != null && field.getTag().equals("100")) { - if (field.getFirstIndicator() == 3) { - return Ld4lAgentType.FAMILY; - } else { - return Ld4lAgentType.PERSON; - } - } - - return Ld4lAgentType.defaultType(); - } - - private String buildNameFromDataField(Entity agent) { - - /* - * Note that in field 100, ind1 value 0 means given name first, - * value 1 means family name first, but since for now we are not - * parsing the individual name parts we just set the generic name - * property. - * - * TODO: if first indicator == 1, split on comma, assign first part - * to family name and last part to given name. - * - * TODO Add other agent attributes from other subfields. - */ - if (field != null && field.getTag().equals("100")) { - return field.getSubfield('a').getTrimmedTextValue(); - } + } - return null; - } + return agent; + } } diff --git a/src/main/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/activities/ProviderActivityBuilder.java b/src/main/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/activities/ProviderActivityBuilder.java index e11f61587..c841b498c 100644 --- a/src/main/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/activities/ProviderActivityBuilder.java +++ b/src/main/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/activities/ProviderActivityBuilder.java @@ -67,10 +67,10 @@ protected void buildAgent(MarcxmlSubfield subfield) EntityBuilder builder = getBuilder(Ld4lAgentType.defaultType()); BuildParams params = new BuildParams() + .setField(field) .setGrandparent(parent) .setParent(activity) .setSubfield(subfield); - //.setType(Ld4lAgentType.superclass()); builder.build(params); } diff --git a/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/AdminMetadataBuilderTest.java b/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/AdminMetadataBuilderTest.java index 9c1f760c8..8b8d776f3 100644 --- a/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/AdminMetadataBuilderTest.java +++ b/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/AdminMetadataBuilderTest.java @@ -25,37 +25,29 @@ */ public class AdminMetadataBuilderTest extends AbstractTestClass { - public static final MockMarcxml TEST_RECORD = MockMarcxml.parse( - "" + - "01050cam a22003011 4500" + - "20130330145647.0" + - "860506s1957 nyua b 000 0 eng " + - "" + - "main title" + - "" + - "" + - "fre" + - "NIC" + - "NIC" + - "CtY" + - "rda" + - "appm" + - "" + - ""); - + public static final MockMarcxml TEST_RECORD = MINIMAL_RECORD.openCopy() + .addControlfield("005", "20130330145647.0") + .addDatafield("040", " ", " ") + .addSubfield("b", "fre") + .addSubfield("c", "NIC") + .addSubfield("d", "NIC") + .addSubfield("d", "CtY") + .addSubfield("e", "rda") + .addSubfield("e", "appm") + .lock(); + public static final MockMarcxml SOURCE_040$a = TEST_RECORD.openCopy() .findDatafield("040") .addSubfield("a", "NIC") .deleteSubfield("c") .lock(); - public static final MockMarcxml SOURCE_040$a$c = TEST_RECORD.openCopy() .findDatafield("040") .addSubfield("a", "NIC") .lock(); - public static final MockMarcxml INVALID_005_VALUE = MINIMAL_RECORD.openCopy() + public static final MockMarcxml INVALID_005_VALUE = MINIMAL_RECORD.openCopy() .addControlfield("005", "20130330") .lock(); diff --git a/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/AgentBuilderTest.java b/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/AgentBuilderTest.java index c534409c3..6144d95be 100644 --- a/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/AgentBuilderTest.java +++ b/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/AgentBuilderTest.java @@ -98,7 +98,7 @@ public void nullParent_ThrowsException() throws Exception { @Test public void noNameOrSubfield_ThrowsException() throws Exception { expectException(EntityBuilderException.class, - "A name value, subfield, or field is required"); + "A subfield or field is required"); BuildParams params = new BuildParams() .setParent(new Entity()); agentBuilder.build(params); @@ -115,27 +115,6 @@ public void invalidType_ThrowsException() throws Exception { agentBuilder.build(params); } - @Test - public void testTypeFromBuildParam() throws Exception { - Type type = Ld4lAgentType.PERSON; - BuildParams params = new BuildParams() - .setType(type) - .addSubfield(buildSubfieldFromString(NAME_SUBFIELD)) - .setParent(new Entity()); - Entity agent = agentBuilder.build(params); - Assert.assertTrue(agent.hasType(type)); - } - - @Test - public void testNameFromBuildParam() throws Exception { - String name = "E.J. Brill"; - BuildParams params = new BuildParams() - .setValue(name) - .setParent(new Entity()); - Entity agent = agentBuilder.build(params); - Assert.assertEquals(name, agent.getValue(Ld4lDatatypeProp.NAME)); - } - @Test public void testNameFromSubfield() throws Exception { BuildParams params = new BuildParams() diff --git a/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/IdentifierBuilderTest.java b/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/IdentifierBuilderTest.java index 65742015e..72d741c9a 100644 --- a/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/IdentifierBuilderTest.java +++ b/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/IdentifierBuilderTest.java @@ -248,19 +248,6 @@ private Entity buildIdentifier(MockMarcxml input, return buildIdentifier(new Entity(), input, tag, code); } - private void buildAndExpectException( - Entity entity, MockMarcxml input, String tag, String error) - throws Exception { - expectException(EntityBuilderException.class, error); - buildIdentifier(entity, input, tag); - } - - @SuppressWarnings("unused") - private void buildAndExpectException(MockMarcxml input, String tag, - String error) throws Exception { - buildAndExpectException(new Entity(), input, tag, error); - } - private void buildAndExpectException(Entity entity, MockMarcxml input, String tag, char code, String error) throws Exception { diff --git a/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/LegacySourceDataEntityBuilderTest.java b/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/LegacySourceDataEntityBuilderTest.java index d204985d3..3115a0810 100644 --- a/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/LegacySourceDataEntityBuilderTest.java +++ b/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/LegacySourceDataEntityBuilderTest.java @@ -9,8 +9,6 @@ import org.ld4l.bib2lod.entity.Entity; import org.ld4l.bib2lod.entitybuilders.BuildParams; import org.ld4l.bib2lod.entitybuilders.EntityBuilder.EntityBuilderException; -import org.ld4l.bib2lod.ontology.Type; -import org.ld4l.bib2lod.ontology.ld4l.Ld4lActivityType; import org.ld4l.bib2lod.ontology.ld4l.Ld4lDatatypeProp; import org.ld4l.bib2lod.testing.AbstractTestClass; diff --git a/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/LocationBuilderTest.java b/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/LocationBuilderTest.java index aa0183126..3fcbe2091 100644 --- a/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/LocationBuilderTest.java +++ b/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/LocationBuilderTest.java @@ -28,26 +28,8 @@ * Tests class LocationBuilder. */ public class LocationBuilderTest extends AbstractTestClass { - - public static final MockMarcxml DUPLICATE_LOCATIONS = MockMarcxml.parse( - "" + - "01050cam a22003011 4500" + - "102063" + - "860506s1957 nyua b 000 0 eng " + - "" + - "full title" + - "" + - "" + - "Leiden" + - "E.J. Brill" + - "" + - "" + - "Leiden :" + - "E.J. Brill" + - "" + - ""); - - public static final MockMarcxml _260_TWO_FIELDS_TWO_PUBLISHERS = MINIMAL_RECORD.openCopy() + + public static final MockMarcxml DUPLICATE_LOCATIONS = MINIMAL_RECORD.openCopy() .addControlfield("001", "102063") .addDatafield("260", "3", " ") .addSubfield("a", "Leiden") diff --git a/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/PhysicalDescriptionBuilderTest.java b/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/PhysicalDescriptionBuilderTest.java index c376aae1e..a93375b9b 100644 --- a/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/PhysicalDescriptionBuilderTest.java +++ b/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/PhysicalDescriptionBuilderTest.java @@ -7,10 +7,14 @@ import org.junit.BeforeClass; import org.junit.Test; import org.ld4l.bib2lod.entity.Entity; +import org.ld4l.bib2lod.entity.InstanceEntity; import org.ld4l.bib2lod.entitybuilders.BuildParams; import org.ld4l.bib2lod.entitybuilders.EntityBuilderFactory; +import org.ld4l.bib2lod.ontology.Type; import org.ld4l.bib2lod.ontology.ld4l.Ld4lDatatypeProp; +import org.ld4l.bib2lod.ontology.ld4l.Ld4lExtentType; import org.ld4l.bib2lod.ontology.ld4l.Ld4lObjectProp; +import org.ld4l.bib2lod.records.xml.marcxml.MarcxmlDataField; import org.ld4l.bib2lod.testing.AbstractTestClass; import org.ld4l.bib2lod.testing.BaseMockBib2LodObjectFactory; import org.ld4l.bib2lod.testing.xml.testrecord.MockMarcxml; @@ -20,11 +24,11 @@ */ public class PhysicalDescriptionBuilderTest extends AbstractTestClass { - private static final MockMarcxml _300_NO_$A = MINIMAL_RECORD.openCopy() + private static final MockMarcxml _300_NO_$a = MINIMAL_RECORD.openCopy() .addDatafield("300", "", "").addSubfield("c", "23 cm") .lock(); - private static final MockMarcxml _300_EXTENT = _300_NO_$A.openCopy() + private static final MockMarcxml _300_EXTENT = _300_NO_$a.openCopy() .findDatafield("300") .deleteSubfield("c") .addSubfield("a", "123 p.") @@ -32,6 +36,7 @@ public class PhysicalDescriptionBuilderTest extends AbstractTestClass { private static BaseMockBib2LodObjectFactory factory; private InstanceBuilder instanceBuilder; + private PhysicalDescriptionBuilder physDescrBuilder; @BeforeClass public static void setUpOnce() throws Exception { @@ -42,7 +47,8 @@ public static void setUpOnce() throws Exception { @Before public void setUp() { - this.instanceBuilder = new InstanceBuilder(); + this.instanceBuilder = new InstanceBuilder(); + this.physDescrBuilder = new PhysicalDescriptionBuilder(); } // --------------------------------------------------------------------- @@ -51,24 +57,31 @@ public void setUp() { @Test public void no300_Succeeds() throws Exception { - buildInstance(); + buildInstance(MockMarcxml.MINIMAL_RECORD); } @Test public void no300$a_Succeeds() throws Exception { - buildInstance(_300_NO_$A); + buildInstance(_300_NO_$a); } @Test - public void testExtent() throws Exception { + public void testInstanceHasExtent() throws Exception { Entity instance = buildInstance(_300_EXTENT); Assert.assertNotNull(instance.getChild(Ld4lObjectProp.HAS_EXTENT)); } + @Test + public void testExtentType() throws Exception { + Entity extent = buildPhysicalDescription(_300_EXTENT, + Ld4lExtentType.EXTENT, "300", 'a'); + Assert.assertTrue(extent.hasType(Ld4lExtentType.EXTENT)); + } + @Test public void testExtentLabel() throws Exception { - Entity extent = buildInstance(_300_EXTENT).getChild( - Ld4lObjectProp.HAS_EXTENT); + Entity extent = buildPhysicalDescription(_300_EXTENT, + Ld4lExtentType.EXTENT, "300", 'a'); Assert.assertEquals("123 p.", extent.getValue(Ld4lDatatypeProp.LABEL)); } @@ -77,13 +90,19 @@ public void testExtentLabel() throws Exception { // Helper methods // --------------------------------------------------------------------- - private Entity buildInstance() throws Exception { - return buildInstance(MockMarcxml.MINIMAL_RECORD); - } - private Entity buildInstance(MockMarcxml input) throws Exception { BuildParams params = new BuildParams() .setRecord(input.toRecord()); return instanceBuilder.build(params); } + + private Entity buildPhysicalDescription(MockMarcxml input, Type type, + String tag, char code) throws Exception { + MarcxmlDataField field = input.toRecord().getDataField(tag); + BuildParams params = new BuildParams() + .setParent(new InstanceEntity()) + .setField(field) + .setSubfield(field.getSubfield(code)); + return physDescrBuilder.build(params); + } } diff --git a/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/TitleBuilderTest.java b/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/TitleBuilderTest.java index 6eb74a033..5f67bf502 100644 --- a/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/TitleBuilderTest.java +++ b/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/TitleBuilderTest.java @@ -16,7 +16,6 @@ import org.ld4l.bib2lod.entitybuilders.EntityBuilderFactory; import org.ld4l.bib2lod.ontology.ld4l.Ld4lDatatypeProp; import org.ld4l.bib2lod.ontology.ld4l.Ld4lObjectProp; -import org.ld4l.bib2lod.records.Record; import org.ld4l.bib2lod.testing.AbstractTestClass; import org.ld4l.bib2lod.testing.BaseMockBib2LodObjectFactory; import org.ld4l.bib2lod.testing.xml.testrecord.MockMarcxml; @@ -72,26 +71,28 @@ public void setUp() throws Exception { public void nullRecord_ThrowsException() throws Exception { expectException(EntityBuilderException.class, "A record is required"); - buildTitle(new Entity(), (Record) null); + builder.build(new BuildParams()); } @Test public void nullBibEntity_ThrowsException() throws Exception { expectException(EntityBuilderException.class, "A parent entity is required"); - buildTitle((Entity) null, MINIMAL_RECORD); + BuildParams params = new BuildParams() + .setRecord(MINIMAL_RECORD.toRecord()); + builder.build(params); } @Test public void testTitleElementCount() throws Exception { - Entity title = buildTitle(new Entity(), TITLE_WITH_TWO_SUBTITLES); + Entity title = buildTitle(TITLE_WITH_TWO_SUBTITLES); List titleElements = title.getChildren(Ld4lObjectProp.HAS_PART); Assert.assertEquals(3, titleElements.size()); } @Test public void testTitleElementRank() throws Exception { - Entity title = buildTitle(new Entity(), TITLE_WITH_TWO_SUBTITLES); + Entity title = buildTitle(TITLE_WITH_TWO_SUBTITLES); List titleElements = title.getChildren(Ld4lObjectProp.HAS_PART); List expected = new ArrayList<>( @@ -108,36 +109,32 @@ public void testTitleElementRank() throws Exception { @Test public void testTitleValueFromMainTitleElement() throws Exception { - buildTitleAndExpectValue(new Entity(), MINIMAL_RECORD, "main title"); + buildTitleAndExpectValue(MINIMAL_RECORD, "main title"); } @Test public void testTitleValueTrimWhitespace() throws Exception { - buildTitleAndExpectValue( - new Entity(), TITLE_WITH_WHITESPACE, "main title"); + buildTitleAndExpectValue(TITLE_WITH_WHITESPACE, "main title"); } @Test public void testTitleValueWithFinalSpaceColon() throws Exception { - buildTitleAndExpectValue( - new Entity(), TITLE_WITH_FINAL_SPACE_COLON, "main title"); + buildTitleAndExpectValue(TITLE_WITH_FINAL_SPACE_COLON, "main title"); } @Test public void testTitleValueWithFinalColon() throws Exception { - buildTitleAndExpectValue( - new Entity(), TITLE_WITH_FINAL_COLON, "main title"); + buildTitleAndExpectValue(TITLE_WITH_FINAL_COLON, "main title"); } @Test public void testTitleValueWithSubtitle() throws Exception { - buildTitleAndExpectValue( - new Entity(), TITLE_WITH_SUBTITLE, "main title : subtitle"); + buildTitleAndExpectValue(TITLE_WITH_SUBTITLE, "main title : subtitle"); } @Test public void testTitleValueWithTwoSubtitles() throws Exception { - buildTitleAndExpectValue(new Entity(), TITLE_WITH_TWO_SUBTITLES, + buildTitleAndExpectValue(TITLE_WITH_TWO_SUBTITLES, "main title : subtitle one : subtitle two"); } @@ -145,22 +142,17 @@ public void testTitleValueWithTwoSubtitles() throws Exception { // Helper methods // --------------------------------------------------------------------- - private Entity buildTitle(Entity bibEntity, MockMarcxml marcxml) - throws Exception { - return buildTitle(bibEntity, marcxml.toRecord()); - } - - private Entity buildTitle(Entity bibEntity, Record record) + private Entity buildTitle(MockMarcxml marcxml) throws Exception { BuildParams params = new BuildParams() - .setParent(bibEntity) - .setRecord(record); - return builder.build(params); + .setParent(new Entity()) + .setRecord(marcxml.toRecord()); + return builder.build(params); } private void buildTitleAndExpectValue( - Entity bibEntity, MockMarcxml marcxml, String value) throws Exception { - Entity title = buildTitle(bibEntity, marcxml); + MockMarcxml marcxml, String value) throws Exception { + Entity title = buildTitle(marcxml); Assert.assertEquals(value, title.getAttribute(Ld4lDatatypeProp.VALUE).getValue()); } From 5ae5956ad2919a695671a2943ecb05eaa16d7e43 Mon Sep 17 00:00:00 2001 From: Rebecca Younes Date: Mon, 25 Sep 2017 14:35:52 -0400 Subject: [PATCH 06/14] Tweak method names --- .../marcxml/ld4l/AdminMetadataBuilder.java | 15 +++++++-------- .../entitybuilders/marcxml/ld4l/AgentBuilder.java | 4 +++- .../marcxml/ld4l/AuthorActivityBuilder.java | 4 ++-- .../marcxml/ld4l/IdentifierBuilder.java | 4 ++-- .../marcxml/ld4l/InstanceBuilder.java | 4 ++-- .../marcxml/ld4l/PhysicalDescriptionBuilder.java | 4 ++-- .../entitybuilders/marcxml/ld4l/TitleBuilder.java | 6 +++--- .../entitybuilders/marcxml/ld4l/WorkBuilder.java | 4 ++-- .../activities/ManufacturerActivityBuilder.java | 4 ++-- .../ld4l/activities/PublisherActivityBuilder.java | 14 +++++++------- .../marcxml/ld4l/AgentBuilderTest.java | 2 -- 11 files changed, 32 insertions(+), 33 deletions(-) diff --git a/src/main/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/AdminMetadataBuilder.java b/src/main/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/AdminMetadataBuilder.java index 98525b3b2..a1cb07386 100644 --- a/src/main/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/AdminMetadataBuilder.java +++ b/src/main/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/AdminMetadataBuilder.java @@ -41,10 +41,9 @@ public Entity build(BuildParams params) throws EntityBuilderException { buildChildFromControlField(Ld4lIdentifierType.defaultType(), adminMetadata, record, "001"); - convert_040(); + convert040(); - convert_005(); - + convert005(); if (adminMetadata.isEmpty()) { return null; @@ -78,7 +77,7 @@ private void parseBuildParams(BuildParams params) } } - private void convert_040() throws EntityBuilderException { + private void convert040() throws EntityBuilderException { MarcxmlDataField field = record.getDataField("040"); @@ -174,15 +173,15 @@ private void addDescriptionConventions(MarcxmlDataField field) } } - private void convert_005() throws EntityBuilderException { + private void convert005() throws EntityBuilderException { - MarcxmlControlField field_005 = record.getControlField("005"); + MarcxmlControlField field = record.getControlField("005"); - if (field_005 == null) { + if (field == null) { return; } - String value = field_005.getTextValue(); + String value = field.getTextValue(); // Convert format 20130330145647.0 to 2013-03-30T14:56:47 if (! PATTERN_005.matcher(value).matches()) { throw new EntityBuilderException( diff --git a/src/main/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/AgentBuilder.java b/src/main/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/AgentBuilder.java index da5bfa041..083f52409 100644 --- a/src/main/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/AgentBuilder.java +++ b/src/main/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/AgentBuilder.java @@ -34,7 +34,9 @@ public Entity build(BuildParams params) throws EntityBuilderException { Entity agent = buildAgent(); - parent.addRelationship(relationship, agent); + if (agent != null) { + parent.addRelationship(relationship, agent); + } return agent; } diff --git a/src/main/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/AuthorActivityBuilder.java b/src/main/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/AuthorActivityBuilder.java index 78837f5e0..ac448e1bd 100644 --- a/src/main/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/AuthorActivityBuilder.java +++ b/src/main/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/AuthorActivityBuilder.java @@ -25,7 +25,7 @@ public void build() throws EntityBuilderException { switch (field.getTag()) { case "100": - convert_100(); + convert100(); break; default: break; @@ -33,7 +33,7 @@ public void build() throws EntityBuilderException { } - private void convert_100() throws EntityBuilderException { + private void convert100() throws EntityBuilderException { this.activity = new Entity(TYPE); EntityBuilder builder = getBuilder(Ld4lAgentType.defaultType()); diff --git a/src/main/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/IdentifierBuilder.java b/src/main/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/IdentifierBuilder.java index 2e8b7828f..8b248163c 100644 --- a/src/main/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/IdentifierBuilder.java +++ b/src/main/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/IdentifierBuilder.java @@ -162,7 +162,7 @@ private Entity build(MarcxmlDataField field, BuildParams params) (MarcxmlSubfield) params.getSubfields().get(0); if (field.getTag().equals("035")) { - identifier = convert_035(subfield); + identifier = convert035(subfield); } return identifier; @@ -172,7 +172,7 @@ private Entity build(MarcxmlDataField field, BuildParams params) * Builds an identifier from field 035. Returns null if the identifier * value is already attached to the resource's AdminMetadata object. */ - private Entity convert_035(MarcxmlSubfield subfield) + private Entity convert035(MarcxmlSubfield subfield) throws EntityBuilderException { Entity identifier; diff --git a/src/main/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/InstanceBuilder.java b/src/main/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/InstanceBuilder.java index e8acf0e66..aadee0639 100644 --- a/src/main/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/InstanceBuilder.java +++ b/src/main/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/InstanceBuilder.java @@ -82,10 +82,10 @@ private void parseBuildParams(BuildParams params) } private void buildIdentifiers() throws EntityBuilderException { - convert_035(); + convert035(); } - private void convert_035() throws EntityBuilderException { + private void convert035() throws EntityBuilderException { // 035 is a repeating field List fields = record.getDataFields("035"); diff --git a/src/main/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/PhysicalDescriptionBuilder.java b/src/main/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/PhysicalDescriptionBuilder.java index 379c3e562..02e14933b 100644 --- a/src/main/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/PhysicalDescriptionBuilder.java +++ b/src/main/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/PhysicalDescriptionBuilder.java @@ -54,13 +54,13 @@ private Entity convertByField() { switch (field.getTag()) { case "300": - return convert_300(); + return convert300(); default: return null; } } - private Entity convert_300() { + private Entity convert300() { Entity entity = null; diff --git a/src/main/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/TitleBuilder.java b/src/main/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/TitleBuilder.java index 45167489f..99164c7a6 100644 --- a/src/main/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/TitleBuilder.java +++ b/src/main/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/TitleBuilder.java @@ -98,9 +98,9 @@ private void buildTitleElements() throws EntityBuilderException { titleElements = new ArrayList<>(); // Note that every record must have a 245 - MarcxmlDataField field_245 = record.getDataField("245"); + MarcxmlDataField field = record.getDataField("245"); - for (MarcxmlSubfield subfield : field_245.getSubfields()) { + for (MarcxmlSubfield subfield : field.getSubfields()) { char code = subfield.getCode(); @@ -108,7 +108,7 @@ private void buildTitleElements() throws EntityBuilderException { // 245$a always stores the full title. If 130 and/or 240 are // present,the $a fields should be the same. case 'a': - addNonSortAndMainTitleElements(field_245, subfield); + addNonSortAndMainTitleElements(field, subfield); break; case 'b': addSubtitleElements(subfield); diff --git a/src/main/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/WorkBuilder.java b/src/main/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/WorkBuilder.java index 221f9c7d5..408e12c0f 100644 --- a/src/main/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/WorkBuilder.java +++ b/src/main/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/WorkBuilder.java @@ -111,8 +111,8 @@ private void addLanguages() { /* TODO Codes not the same between lexvo and lc. Just use lc URIs * for now. Eventually need a concordance. */ // Language from 008 - MarcxmlControlField field_008 = record.getControlField("008"); - String code = field_008.getTextSubstring(35,38); + MarcxmlControlField field = record.getControlField("008"); + String code = field.getTextSubstring(35,38); if (code != null && code.length() > 0) { // Lexvo iso639-3 codes are not completely identical with LC work.addExternalRelationship(Ld4lObjectProp.HAS_LANGUAGE, diff --git a/src/main/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/activities/ManufacturerActivityBuilder.java b/src/main/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/activities/ManufacturerActivityBuilder.java index 241bce0c0..7afe195ad 100644 --- a/src/main/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/activities/ManufacturerActivityBuilder.java +++ b/src/main/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/activities/ManufacturerActivityBuilder.java @@ -21,11 +21,11 @@ public void build() throws EntityBuilderException { // Not sure if any other tags apply if (field.getTag().equals("260")) { - convert_260(); + convert260(); } } - private void convert_260() + private void convert260() throws EntityBuilderException { MarcxmlDataField datafield = (MarcxmlDataField) field; diff --git a/src/main/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/activities/PublisherActivityBuilder.java b/src/main/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/activities/PublisherActivityBuilder.java index 1ff8a77f2..bd956f57c 100644 --- a/src/main/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/activities/PublisherActivityBuilder.java +++ b/src/main/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/activities/PublisherActivityBuilder.java @@ -30,10 +30,10 @@ public void build() throws EntityBuilderException { switch (field.getTag()) { case "008": - convert_008(); + convert008(); break; case "260": - convert_260(); + convert260(); break; default: break; @@ -41,9 +41,9 @@ public void build() throws EntityBuilderException { } - private void convert_008() { + private void convert008() { - MarcxmlControlField field_008 = (MarcxmlControlField) field; + MarcxmlControlField controlfield = (MarcxmlControlField) field; this.activity = new Entity(TYPE); @@ -52,14 +52,14 @@ private void convert_008() { Ld4lNamedIndividual.CURRENT); // Publication date - String year = field_008.getTextSubstring(7, 11); + String year = controlfield.getTextSubstring(7, 11); if (! StringUtils.isBlank(year)) { activity.addAttribute( Ld4lDatatypeProp.DATE, year, BibDatatype.EDTF); } // Publication location - String location = field_008.getTextSubstring(15, 18); + String location = controlfield.getTextSubstring(15, 18); if (! StringUtils.isBlank(location)) { // Two or three characters - "ne", "nyu" location = location.trim(); @@ -68,7 +68,7 @@ private void convert_008() { } } - private void convert_260() + private void convert260() throws EntityBuilderException { MarcxmlDataField datafield = (MarcxmlDataField) field; diff --git a/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/AgentBuilderTest.java b/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/AgentBuilderTest.java index 6144d95be..dc1797a55 100644 --- a/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/AgentBuilderTest.java +++ b/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/AgentBuilderTest.java @@ -14,8 +14,6 @@ import org.ld4l.bib2lod.entitybuilders.BuildParams; import org.ld4l.bib2lod.entitybuilders.EntityBuilder.EntityBuilderException; import org.ld4l.bib2lod.entitybuilders.EntityBuilderFactory; -import org.ld4l.bib2lod.ontology.Type; -import org.ld4l.bib2lod.ontology.ld4l.Ld4lAgentType; import org.ld4l.bib2lod.ontology.ld4l.Ld4lDatatypeProp; import org.ld4l.bib2lod.ontology.ld4l.Ld4lInstanceType; import org.ld4l.bib2lod.ontology.ld4l.Ld4lObjectProp; From 1d87f589ba02cc2fb94531f5374aff571fc10c88 Mon Sep 17 00:00:00 2001 From: Rebecca Younes Date: Tue, 26 Sep 2017 12:31:49 -0400 Subject: [PATCH 07/14] Simplify ProviderActivityBuilder unit tests MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Build activity directly, don’t need to build instance first. --- .../ld4l/activities/ActivityBuilder.java | 8 +-- .../ProviderActivityBuilderTest.java | 53 ++++++++++++------- 2 files changed, 35 insertions(+), 26 deletions(-) diff --git a/src/main/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/activities/ActivityBuilder.java b/src/main/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/activities/ActivityBuilder.java index c537df1ab..b415465f5 100644 --- a/src/main/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/activities/ActivityBuilder.java +++ b/src/main/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/activities/ActivityBuilder.java @@ -21,9 +21,6 @@ public class ActivityBuilder extends MarcxmlEntityBuilder { @SuppressWarnings("unused") private static final Logger LOGGER = LogManager.getLogger(); - - private static final Ld4lActivityType DEFAULT_TYPE = - (Ld4lActivityType) Ld4lActivityType.defaultType(); protected Entity activity; protected Entity parent; @@ -85,12 +82,9 @@ private void parseBuildParams(BuildParams params) this.field = (MarcxmlTaggedField) field; this.type = (Ld4lActivityType) params.getType(); - if (type == null) { - type = DEFAULT_TYPE; - } else if (! (type instanceof Ld4lActivityType)) { + if (type != null && ! (type instanceof Ld4lActivityType)) { throw new EntityBuilderException("Invalid type."); } - /* * This needs to be a list of MarcxmlSubfields in order diff --git a/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/activities/ProviderActivityBuilderTest.java b/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/activities/ProviderActivityBuilderTest.java index ea4dd3865..93f19f437 100644 --- a/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/activities/ProviderActivityBuilderTest.java +++ b/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/activities/ProviderActivityBuilderTest.java @@ -2,6 +2,10 @@ import static org.ld4l.bib2lod.testing.xml.testrecord.MockMarcxml.MINIMAL_RECORD; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + import org.junit.Assert; import org.junit.Before; import org.junit.BeforeClass; @@ -9,10 +13,12 @@ import org.ld4l.bib2lod.entity.Entity; import org.ld4l.bib2lod.entitybuilders.BuildParams; import org.ld4l.bib2lod.entitybuilders.EntityBuilderFactory; -import org.ld4l.bib2lod.entitybuilders.marcxml.ld4l.InstanceBuilder; import org.ld4l.bib2lod.entitybuilders.marcxml.ld4l.MarcxmlToLd4lEntityBuilderFactory; import org.ld4l.bib2lod.ontology.ld4l.Ld4lDatatypeProp; import org.ld4l.bib2lod.ontology.ld4l.Ld4lObjectProp; +import org.ld4l.bib2lod.records.RecordField; +import org.ld4l.bib2lod.records.xml.marcxml.MarcxmlDataField; +import org.ld4l.bib2lod.records.xml.marcxml.MarcxmlRecord; import org.ld4l.bib2lod.testing.AbstractTestClass; import org.ld4l.bib2lod.testing.BaseMockBib2LodObjectFactory; import org.ld4l.bib2lod.testing.xml.testrecord.MockMarcxml; @@ -21,7 +27,7 @@ * Tests class ProviderActivityBuilder. */ public class ProviderActivityBuilderTest extends AbstractTestClass { - + public static final MockMarcxml _260_PUBLISHER = MINIMAL_RECORD.openCopy() .findDatafield("245").findSubfield("a").setValue("full title") .addDatafield("260", " ", " ") @@ -31,7 +37,7 @@ public class ProviderActivityBuilderTest extends AbstractTestClass { .lock(); private static BaseMockBib2LodObjectFactory factory; - private InstanceBuilder instanceBuilder; + private PublisherActivityBuilder builder; @BeforeClass public static void setUpOnce() throws Exception { @@ -42,7 +48,8 @@ public static void setUpOnce() throws Exception { @Before public void setUp() { - this.instanceBuilder = new InstanceBuilder(); + //this.instanceBuilder = new InstanceBuilder(); + this.builder = new PublisherActivityBuilder(); } @@ -52,29 +59,26 @@ public void setUp() { @Test public void testLocation_260() throws Exception { - Entity instance = buildInstance(_260_PUBLISHER); - Entity activity = (instance.getChildren(Ld4lObjectProp.HAS_ACTIVITY) - .get(1)); - Entity location = activity.getChild(Ld4lObjectProp.HAS_LOCATION); + Entity activity = buildActivity(_260_PUBLISHER, "260", + Arrays.asList('a')); + Entity agent = activity.getChild(Ld4lObjectProp.HAS_LOCATION); Assert.assertEquals("New York", - location.getValue(Ld4lDatatypeProp.NAME)); + agent.getValue(Ld4lDatatypeProp.NAME)); } @Test public void testAgent_260() throws Exception { - Entity instance = buildInstance(_260_PUBLISHER); - Entity activity = (instance.getChildren(Ld4lObjectProp.HAS_ACTIVITY) - .get(1)); + Entity activity = buildActivity(_260_PUBLISHER, "260", + Arrays.asList('b')); Entity agent = activity.getChild(Ld4lObjectProp.HAS_AGENT); Assert.assertEquals("Grune & Stratton", - agent.getValue(Ld4lDatatypeProp.NAME)); + agent.getValue(Ld4lDatatypeProp.NAME)); } @Test public void testDate_260() throws Exception { - Entity instance = buildInstance(_260_PUBLISHER); - Entity activity = (instance.getChildren(Ld4lObjectProp.HAS_ACTIVITY) - .get(1)); + Entity activity = buildActivity(_260_PUBLISHER, "260", + Arrays.asList('c')); Assert.assertEquals("1957", activity.getValue(Ld4lDatatypeProp.DATE)); } @@ -83,8 +87,19 @@ public void testDate_260() throws Exception { // Helper methods // --------------------------------------------------------------------- - private Entity buildInstance(MockMarcxml input) throws Exception { - return instanceBuilder - .build(new BuildParams().setRecord(input.toRecord())); + private Entity buildActivity(MockMarcxml input, String tag, + List codes) throws Exception { + MarcxmlRecord record = input.toRecord(); + MarcxmlDataField field = record.getDataField(tag); + List subfields = new ArrayList<>(); + for (char code : codes) { + subfields.add(field.getSubfield(code)); + } + BuildParams params = new BuildParams() + .setParent(new Entity()) + .setRecord(record) + .setField(record.getDataField(tag)) + .setSubfields(subfields); + return builder.build(params); } } From 3766e00b91194f09335840c2bbdb69f19c540cbc Mon Sep 17 00:00:00 2001 From: Rebecca Younes Date: Tue, 26 Sep 2017 13:44:35 -0400 Subject: [PATCH 08/14] Simplify ActivityBuilder unit tests MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Build activity directly, don’t need to build instance first. --- .../ld4l/activities/ActivityBuilder.java | 5 -- .../ld4l/activities/ActivityBuilderTest.java | 39 +++++++------ .../ManufacturerActivityBuilderTest.java | 56 +++++++++++-------- 3 files changed, 51 insertions(+), 49 deletions(-) diff --git a/src/main/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/activities/ActivityBuilder.java b/src/main/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/activities/ActivityBuilder.java index b415465f5..c9caf4e8e 100644 --- a/src/main/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/activities/ActivityBuilder.java +++ b/src/main/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/activities/ActivityBuilder.java @@ -81,11 +81,6 @@ private void parseBuildParams(BuildParams params) } this.field = (MarcxmlTaggedField) field; - this.type = (Ld4lActivityType) params.getType(); - if (type != null && ! (type instanceof Ld4lActivityType)) { - throw new EntityBuilderException("Invalid type."); - } - /* * This needs to be a list of MarcxmlSubfields in order * to get the codes, but in BuildParams it's just a list of diff --git a/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/activities/ActivityBuilderTest.java b/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/activities/ActivityBuilderTest.java index 8f165bb5f..06745bda5 100644 --- a/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/activities/ActivityBuilderTest.java +++ b/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/activities/ActivityBuilderTest.java @@ -10,16 +10,17 @@ import org.ld4l.bib2lod.entitybuilders.BuildParams; import org.ld4l.bib2lod.entitybuilders.EntityBuilder.EntityBuilderException; import org.ld4l.bib2lod.entitybuilders.EntityBuilderFactory; -import org.ld4l.bib2lod.entitybuilders.marcxml.ld4l.InstanceBuilder; import org.ld4l.bib2lod.entitybuilders.marcxml.ld4l.MarcxmlToLd4lEntityBuilderFactory; import org.ld4l.bib2lod.ontology.ld4l.Ld4lActivityType; import org.ld4l.bib2lod.ontology.ld4l.Ld4lDatatypeProp; -import org.ld4l.bib2lod.ontology.ld4l.Ld4lObjectProp; +import org.ld4l.bib2lod.records.xml.marcxml.MarcxmlRecord; import org.ld4l.bib2lod.records.xml.marcxml.MarcxmlSubfield; import org.ld4l.bib2lod.testing.AbstractTestClass; import org.ld4l.bib2lod.testing.BaseMockBib2LodObjectFactory; import org.ld4l.bib2lod.testing.xml.XmlTestUtils; import org.ld4l.bib2lod.testing.xml.testrecord.MockMarcxml; + + public class ActivityBuilderTest extends AbstractTestClass { public static final MockMarcxml _260_PUBLISHER = MINIMAL_RECORD.openCopy() @@ -29,8 +30,7 @@ public class ActivityBuilderTest extends AbstractTestClass { .lock(); private static BaseMockBib2LodObjectFactory factory; - private PublisherActivityBuilder activityBuilder; - private InstanceBuilder instanceBuilder; + private PublisherActivityBuilder builder; @BeforeClass public static void setUpOnce() throws Exception { @@ -41,8 +41,7 @@ public static void setUpOnce() throws Exception { @Before public void setUp() { - this.activityBuilder = new PublisherActivityBuilder(); - this.instanceBuilder = new InstanceBuilder(); + this.builder = new PublisherActivityBuilder(); } // --------------------------------------------------------------------- @@ -55,7 +54,7 @@ public void nullParent() throws Exception { "A parent entity is required"); BuildParams params = new BuildParams() .setParent(null); - activityBuilder.build(params); + builder.build(params); } @Test @@ -66,7 +65,7 @@ public void nullField_ThrowsException() throws Exception { .setParent(new Entity()) .setRecord(null) .setField(null); - activityBuilder.build(params); + builder.build(params); } @Test @@ -79,30 +78,30 @@ public void invalidFieldType_ThrowsException() throws Exception { .setField(new MarcxmlSubfield( XmlTestUtils.buildElementFromString( "test"))); - activityBuilder.build(params); + builder.build(params); } @Test public void testAddLabel() throws Exception { - Entity activity = buildActivity(_260_PUBLISHER); + Entity activity = buildActivity(_260_PUBLISHER, "260"); Assert.assertEquals(Ld4lActivityType.PUBLISHER_ACTIVITY.label(), activity.getValue(Ld4lDatatypeProp.LABEL)); } + + // --------------------------------------------------------------------- // Helper methods // --------------------------------------------------------------------- - protected Entity buildActivity(MockMarcxml input) throws Exception { - BuildParams params = new BuildParams() - .setRecord(input.toRecord()); - return buildActivity(params); - } - - - private Entity buildActivity(BuildParams params) throws Exception { - Entity instance = instanceBuilder.build(params); - return instance.getChild(Ld4lObjectProp.HAS_ACTIVITY); + private Entity buildActivity(MockMarcxml input, String tag) + throws Exception { + MarcxmlRecord record = input.toRecord(); + BuildParams params = new BuildParams() + .setParent(new Entity()) + .setRecord(record) + .setField(record.getDataField(tag)); + return builder.build(params); } } diff --git a/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/activities/ManufacturerActivityBuilderTest.java b/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/activities/ManufacturerActivityBuilderTest.java index 940e2ab2f..202801d66 100644 --- a/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/activities/ManufacturerActivityBuilderTest.java +++ b/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/activities/ManufacturerActivityBuilderTest.java @@ -2,6 +2,10 @@ import static org.ld4l.bib2lod.testing.xml.testrecord.MockMarcxml.MINIMAL_RECORD; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + import org.junit.Assert; import org.junit.Before; import org.junit.BeforeClass; @@ -13,7 +17,10 @@ import org.ld4l.bib2lod.entitybuilders.marcxml.ld4l.MarcxmlToLd4lEntityBuilderFactory; import org.ld4l.bib2lod.ontology.ld4l.Ld4lActivityType; import org.ld4l.bib2lod.ontology.ld4l.Ld4lObjectProp; +import org.ld4l.bib2lod.records.RecordField; import org.ld4l.bib2lod.records.RecordField.RecordFieldException; +import org.ld4l.bib2lod.records.xml.marcxml.MarcxmlDataField; +import org.ld4l.bib2lod.records.xml.marcxml.MarcxmlRecord; import org.ld4l.bib2lod.testing.AbstractTestClass; import org.ld4l.bib2lod.testing.BaseMockBib2LodObjectFactory; import org.ld4l.bib2lod.testing.xml.testrecord.MockMarcxml; @@ -21,7 +28,7 @@ public class ManufacturerActivityBuilderTest extends AbstractTestClass { private static BaseMockBib2LodObjectFactory factory; - private InstanceBuilder instanceBuilder; + private ManufacturerActivityBuilder builder; @BeforeClass public static void setUpOnce() throws Exception { @@ -32,24 +39,8 @@ public static void setUpOnce() throws Exception { @Before public void setUp() throws RecordFieldException { - this.instanceBuilder = new InstanceBuilder(); + this.builder = new ManufacturerActivityBuilder(); } - -// public static final MockMarcxml _260_MANUFACTURER = MockMarcxml.parse( -// "" + -// "01050cam a22003011 4500" + -// "102063" + -// "860506s1957 nyua b 000 0 eng " + -// "" + -// "full title" + -// "" + -// "" + -// "Oak Ridge, Tenn. :" + -// "Oak Ridge National Laboratory " + -// "1974" + -// "" + -// "" -// ); public static final MockMarcxml _260_MANUFACTURER = MINIMAL_RECORD.openCopy() .addControlfield("001", "102063") @@ -65,12 +56,29 @@ public void setUp() throws RecordFieldException { @Test public void testManufacturer_260() throws Exception { - BuildParams params = new BuildParams() - .setRecord(_260_MANUFACTURER.toRecord()); - Entity instance = instanceBuilder.build(params); - Assert.assertEquals(1, - instance.getChildren(Ld4lObjectProp.HAS_ACTIVITY, - Ld4lActivityType.MANUFACTURER_ACTIVITY).size()); + Entity activity = buildActivity(_260_MANUFACTURER, "260", + Arrays.asList('e', 'f', 'g')); + Assert.assertEquals(Ld4lActivityType.MANUFACTURER_ACTIVITY, activity.getType()); } + + // --------------------------------------------------------------------- + // Helper methods + // --------------------------------------------------------------------- + + private Entity buildActivity(MockMarcxml input, String tag, + List codes) throws Exception { + MarcxmlRecord record = input.toRecord(); + MarcxmlDataField field = record.getDataField(tag); + List subfields = new ArrayList<>(); + for (char code : codes) { + subfields.add(field.getSubfield(code)); + } + BuildParams params = new BuildParams() + .setParent(new Entity()) + .setRecord(record) + .setField(record.getDataField(tag)) + .setSubfields(subfields); + return builder.build(params); + } } From fc2b6d87cdc539726a4163e832f5a15409d2a0a3 Mon Sep 17 00:00:00 2001 From: Rebecca Younes Date: Tue, 26 Sep 2017 14:17:16 -0400 Subject: [PATCH 09/14] Simplify ProviderActivityBuilder unit tests MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Build activity directly, don’t need to build instance first. --- .../marcxml/ld4l/InstanceBuilderTest.java | 23 +++- .../PublisherActivityBuilderTest.java | 100 ++++++++---------- 2 files changed, 68 insertions(+), 55 deletions(-) diff --git a/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/InstanceBuilderTest.java b/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/InstanceBuilderTest.java index d1f2f0078..55dcb1a3b 100644 --- a/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/InstanceBuilderTest.java +++ b/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/InstanceBuilderTest.java @@ -199,7 +199,28 @@ public void testTwoPublishers_260() throws Exception { Entity instance = buildInstance(_260_ONE_FIELD_TWO_PUBLISHERS); Assert.assertEquals(3, instance.getChildren(Ld4lObjectProp.HAS_ACTIVITY).size()); - } + } + + + // TODO +// public void testThreePublishers() throws Exception { +// Entity activity = buildActivity(TWO_260, "260") +// BuildParams params = new BuildParams().setRecord(TWO_260.toRecord()); +// Entity instance = instanceBuilder.build(params); +// Assert.assertEquals(3, +// instance.getChildren(Ld4lObjectProp.HAS_ACTIVITY, +// Ld4lActivityType.PUBLISHER_ACTIVITY).size()); +// } + +// @Test +// public void testCurrentPublishers_008_260() throws Exception { +// BuildParams params = new BuildParams() +// .setRecord(_260_CURRENT_PUBLISHER.toRecord()); +// Entity instance = instanceBuilder.build(params); +// Assert.assertEquals(2, +// instance.getChildren(Ld4lObjectProp.HAS_ACTIVITY, +// Ld4lActivityType.PUBLISHER_ACTIVITY).size()); +// } // --------------------------------------------------------------------- // Helper methods diff --git a/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/activities/PublisherActivityBuilderTest.java b/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/activities/PublisherActivityBuilderTest.java index f0b4a3280..82b399ca7 100644 --- a/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/activities/PublisherActivityBuilderTest.java +++ b/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/activities/PublisherActivityBuilderTest.java @@ -2,6 +2,9 @@ import static org.ld4l.bib2lod.testing.xml.testrecord.MockMarcxml.MINIMAL_RECORD; +import java.util.ArrayList; +import java.util.List; + import org.apache.jena.rdf.model.Literal; import org.apache.jena.rdf.model.ResourceFactory; import org.junit.Assert; @@ -14,13 +17,15 @@ import org.ld4l.bib2lod.entity.Entity; import org.ld4l.bib2lod.entitybuilders.BuildParams; import org.ld4l.bib2lod.entitybuilders.EntityBuilderFactory; -import org.ld4l.bib2lod.entitybuilders.marcxml.ld4l.InstanceBuilder; import org.ld4l.bib2lod.entitybuilders.marcxml.ld4l.MarcxmlToLd4lEntityBuilderFactory; -import org.ld4l.bib2lod.ontology.ld4l.Ld4lActivityType; import org.ld4l.bib2lod.ontology.ld4l.Ld4lDatatypeProp; import org.ld4l.bib2lod.ontology.ld4l.Ld4lNamedIndividual; import org.ld4l.bib2lod.ontology.ld4l.Ld4lNamespace; import org.ld4l.bib2lod.ontology.ld4l.Ld4lObjectProp; +import org.ld4l.bib2lod.records.RecordField; +import org.ld4l.bib2lod.records.xml.marcxml.MarcxmlDataField; +import org.ld4l.bib2lod.records.xml.marcxml.MarcxmlRecord; +import org.ld4l.bib2lod.records.xml.marcxml.MarcxmlTaggedField; import org.ld4l.bib2lod.testing.AbstractTestClass; import org.ld4l.bib2lod.testing.BaseMockBib2LodObjectFactory; import org.ld4l.bib2lod.testing.xml.testrecord.MockMarcxml; @@ -78,7 +83,7 @@ public class PublisherActivityBuilderTest extends AbstractTestClass { private static BaseMockBib2LodObjectFactory factory; - private InstanceBuilder instanceBuilder; + private PublisherActivityBuilder builder; @BeforeClass public static void setUpOnce() throws Exception { @@ -89,7 +94,7 @@ public static void setUpOnce() throws Exception { @Before public void setUp() { - this.instanceBuilder = new InstanceBuilder(); + this.builder = new PublisherActivityBuilder(); } // --------------------------------------------------------------------- @@ -98,14 +103,14 @@ public void setUp() { @Test public void testPublisherStatus_008() throws Exception { - Entity activity = buildActivity(); + Entity activity = buildActivity("008"); Assert.assertEquals(Ld4lNamedIndividual.CURRENT.uri(), activity.getExternal(Ld4lObjectProp.HAS_STATUS)); } @Test public void testPublisherDate_008() throws Exception { - Entity activity = buildActivity(); + Entity activity = buildActivity("008"); Attribute date = activity.getAttribute(Ld4lDatatypeProp.DATE); Literal literal = ResourceFactory.createTypedLiteral("1957", EdtfType.getRdfDatatype()); @@ -114,21 +119,21 @@ public void testPublisherDate_008() throws Exception { @Test public void testTwoCharPubLocation_008() throws Exception { - Entity activity = buildActivity(_008_TWO_CHAR_PUB_LOCATION); + Entity activity = buildActivity(_008_TWO_CHAR_PUB_LOCATION, "008"); Assert.assertEquals("http://id.loc.gov/vocabulary/countries/ne", activity.getExternal(Ld4lObjectProp.HAS_LOCATION)); } @Test public void testPublisherLocation_008() throws Exception { - Entity activity = buildActivity(); + Entity activity = buildActivity("008"); Assert.assertEquals("http://id.loc.gov/vocabulary/countries/nyu", activity.getExternal(Ld4lObjectProp.HAS_LOCATION)); } @Test public void testLocation_008() throws Exception { - Entity activity = buildActivity(); + Entity activity = buildActivity("008"); String locationUri = activity.getExternal(Ld4lObjectProp.HAS_LOCATION); Assert.assertEquals( @@ -137,12 +142,12 @@ public void testLocation_008() throws Exception { @Test public void noLocation_008_Succeeds() throws Exception { - buildActivity(_008_NO_LOCATION); + buildActivity(_008_NO_LOCATION, "008"); } @Test public void testActivityDate_008() throws Exception { - Entity activity = buildActivity(); + Entity activity = buildActivity("008"); Attribute attribute = activity.getAttribute(Ld4lDatatypeProp.DATE); Literal literal = ResourceFactory.createTypedLiteral( "1957", BibDatatype.EDTF.rdfType()); @@ -151,40 +156,19 @@ public void testActivityDate_008() throws Exception { @Test public void blankDate_008_Succeeds() throws Exception { - buildActivity(_008_NO_DATE); + buildActivity(_008_NO_DATE, "008"); } @Test public void testCurrentPublisher_008() throws Exception { - Entity activity = buildActivity(); + Entity activity = buildActivity("008"); Assert.assertEquals(Ld4lNamedIndividual.CURRENT.uri(), activity.getExternal(Ld4lObjectProp.HAS_STATUS)); } - @Test - public void testThreePublishers() throws Exception { - BuildParams params = new BuildParams().setRecord(TWO_260.toRecord()); - Entity instance = instanceBuilder.build(params); - Assert.assertEquals(3, - instance.getChildren(Ld4lObjectProp.HAS_ACTIVITY, - Ld4lActivityType.PUBLISHER_ACTIVITY).size()); - } - - @Test - public void testCurrentPublishers_008_260() throws Exception { - BuildParams params = new BuildParams() - .setRecord(_260_CURRENT_PUBLISHER.toRecord()); - Entity instance = instanceBuilder.build(params); - Assert.assertEquals(2, - instance.getChildren(Ld4lObjectProp.HAS_ACTIVITY, - Ld4lActivityType.PUBLISHER_ACTIVITY).size()); - } - public void testCurrentPublisher_260_ind1Value3() throws Exception { - Entity instance = buildInstance(_260_CURRENT_PUBLISHER); - Entity activity = (instance.getChildren(Ld4lObjectProp.HAS_ACTIVITY)) - .get(1); + Entity activity = buildActivity(_260_CURRENT_PUBLISHER, "260"); Assert.assertEquals(Ld4lNamedIndividual.CURRENT.uri(), activity.getExternal(Ld4lObjectProp.HAS_STATUS)); } @@ -192,9 +176,7 @@ public void testCurrentPublisher_260_ind1Value3() @Test public void testCurrentPublisherStatus_ind1ValueEmpty() throws Exception { - Entity instance = buildInstance(_260_CURRENT_PUBLISHER); - Entity activity = (instance.getChildren(Ld4lObjectProp.HAS_ACTIVITY)) - .get(1); + Entity activity = buildActivity(_260_CURRENT_PUBLISHER, "260"); Assert.assertEquals(Ld4lNamedIndividual.CURRENT.uri(), activity.getExternal(Ld4lObjectProp.HAS_STATUS)); } @@ -204,26 +186,36 @@ public void testCurrentPublisherStatus_ind1ValueEmpty() // Helper methods // --------------------------------------------------------------------- - private Entity buildActivity() throws Exception { - BuildParams params = new BuildParams() - .setRecord(MINIMAL_RECORD.toRecord()); - return buildActivity(params); + private Entity buildActivity(String tag) + throws Exception { + return buildActivity(MINIMAL_RECORD, tag, null); } - - private Entity buildActivity(MockMarcxml input) throws Exception { - BuildParams params = new BuildParams().setRecord(input.toRecord()); - return buildActivity(params); - } - private Entity buildActivity(BuildParams params) - throws Exception { - Entity instance = instanceBuilder.build(params); - return instance.getChild(Ld4lObjectProp.HAS_ACTIVITY); + private Entity buildActivity(MockMarcxml input, String tag) + throws Exception { + return buildActivity(input, tag, null); } - private Entity buildInstance(MockMarcxml input) throws Exception { - BuildParams params = new BuildParams().setRecord(input.toRecord()); - return instanceBuilder.build(params); + private Entity buildActivity(MockMarcxml input, String tag, + List codes) throws Exception { + MarcxmlRecord record = input.toRecord(); + MarcxmlTaggedField field = record.getTaggedField(tag); + + BuildParams params = new BuildParams() + .setParent(new Entity()) + .setRecord(record) + .setField(field); + + if (field instanceof MarcxmlDataField && codes != null) { + List subfields = new ArrayList<>(); + for (char code : codes) { + subfields.add(((MarcxmlDataField)field).getSubfield(code)); + } + params.setSubfields(subfields); + } + + return builder.build(params); } + } From 2a365a4977aed9c7dcb369625ea1506a47043be6 Mon Sep 17 00:00:00 2001 From: Rebecca Younes Date: Tue, 26 Sep 2017 14:20:36 -0400 Subject: [PATCH 10/14] Remove unneeded code from unit test class --- .../ld4l/activities/PublisherActivityBuilderTest.java | 8 -------- 1 file changed, 8 deletions(-) diff --git a/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/activities/PublisherActivityBuilderTest.java b/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/activities/PublisherActivityBuilderTest.java index 82b399ca7..4efb9befd 100644 --- a/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/activities/PublisherActivityBuilderTest.java +++ b/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/activities/PublisherActivityBuilderTest.java @@ -82,16 +82,8 @@ public class PublisherActivityBuilderTest extends AbstractTestClass { "text"; - private static BaseMockBib2LodObjectFactory factory; private PublisherActivityBuilder builder; - @BeforeClass - public static void setUpOnce() throws Exception { - factory = new BaseMockBib2LodObjectFactory(); - factory.addInstance(EntityBuilderFactory.class, - new MarcxmlToLd4lEntityBuilderFactory()); - } - @Before public void setUp() { this.builder = new PublisherActivityBuilder(); From f704bed0eeb0a5feac260e6ff4fb0466aebbc7c3 Mon Sep 17 00:00:00 2001 From: Rebecca Younes Date: Tue, 26 Sep 2017 14:29:37 -0400 Subject: [PATCH 11/14] Add test for instance-activity relationship --- .../ld4l/activities/ActivityBuilderTest.java | 27 ++++++++++++++----- .../activities/AuthorActivityBuilderTest.java | 11 ++------ 2 files changed, 22 insertions(+), 16 deletions(-) diff --git a/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/activities/ActivityBuilderTest.java b/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/activities/ActivityBuilderTest.java index 06745bda5..8e4a8d16e 100644 --- a/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/activities/ActivityBuilderTest.java +++ b/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/activities/ActivityBuilderTest.java @@ -10,9 +10,11 @@ import org.ld4l.bib2lod.entitybuilders.BuildParams; import org.ld4l.bib2lod.entitybuilders.EntityBuilder.EntityBuilderException; import org.ld4l.bib2lod.entitybuilders.EntityBuilderFactory; +import org.ld4l.bib2lod.entitybuilders.marcxml.ld4l.InstanceBuilder; import org.ld4l.bib2lod.entitybuilders.marcxml.ld4l.MarcxmlToLd4lEntityBuilderFactory; import org.ld4l.bib2lod.ontology.ld4l.Ld4lActivityType; import org.ld4l.bib2lod.ontology.ld4l.Ld4lDatatypeProp; +import org.ld4l.bib2lod.ontology.ld4l.Ld4lObjectProp; import org.ld4l.bib2lod.records.xml.marcxml.MarcxmlRecord; import org.ld4l.bib2lod.records.xml.marcxml.MarcxmlSubfield; import org.ld4l.bib2lod.testing.AbstractTestClass; @@ -30,7 +32,8 @@ public class ActivityBuilderTest extends AbstractTestClass { .lock(); private static BaseMockBib2LodObjectFactory factory; - private PublisherActivityBuilder builder; + private PublisherActivityBuilder activityBuilder; + private InstanceBuilder instanceBuilder; @BeforeClass public static void setUpOnce() throws Exception { @@ -41,7 +44,8 @@ public static void setUpOnce() throws Exception { @Before public void setUp() { - this.builder = new PublisherActivityBuilder(); + this.activityBuilder = new PublisherActivityBuilder(); + this.instanceBuilder = new InstanceBuilder(); } // --------------------------------------------------------------------- @@ -54,7 +58,7 @@ public void nullParent() throws Exception { "A parent entity is required"); BuildParams params = new BuildParams() .setParent(null); - builder.build(params); + activityBuilder.build(params); } @Test @@ -65,7 +69,7 @@ public void nullField_ThrowsException() throws Exception { .setParent(new Entity()) .setRecord(null) .setField(null); - builder.build(params); + activityBuilder.build(params); } @Test @@ -78,7 +82,7 @@ public void invalidFieldType_ThrowsException() throws Exception { .setField(new MarcxmlSubfield( XmlTestUtils.buildElementFromString( "test"))); - builder.build(params); + activityBuilder.build(params); } @Test @@ -88,9 +92,13 @@ public void testAddLabel() throws Exception { activity.getValue(Ld4lDatatypeProp.LABEL)); } + @Test + public void testRelationshipToBibResource() throws Exception { + Entity instance = buildInstance(MINIMAL_RECORD); + Assert.assertNotNull(instance.getChild(Ld4lObjectProp.HAS_ACTIVITY)); + } - // --------------------------------------------------------------------- // Helper methods // --------------------------------------------------------------------- @@ -102,6 +110,11 @@ private Entity buildActivity(MockMarcxml input, String tag) .setParent(new Entity()) .setRecord(record) .setField(record.getDataField(tag)); - return builder.build(params); + return activityBuilder.build(params); + } + + private Entity buildInstance(MockMarcxml input) throws Exception { + return instanceBuilder.build( + new BuildParams().setRecord(input.toRecord())); } } diff --git a/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/activities/AuthorActivityBuilderTest.java b/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/activities/AuthorActivityBuilderTest.java index 65d3785ff..3b27af9c5 100644 --- a/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/activities/AuthorActivityBuilderTest.java +++ b/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/activities/AuthorActivityBuilderTest.java @@ -44,17 +44,10 @@ public void setUp() { // --------------------------------------------------------------------- // The tests // --------------------------------------------------------------------- + @Test - public void testActivityTypeSpecified_100() throws Exception { - Entity activity = buildActivity(_100_AUTHOR, - Ld4lActivityType.AUTHOR_ACTIVITY); - Assert.assertEquals(Ld4lActivityType.AUTHOR_ACTIVITY, - activity.getType()); - } - - @Test - public void testActivityTypeNotSpecified_100() throws Exception { + public void testActivityType_100() throws Exception { Entity activity = buildActivity(_100_AUTHOR); Assert.assertEquals(Ld4lActivityType.AUTHOR_ACTIVITY, activity.getType()); From 5bf326a23f8c2b7fd57a98d223ce2bd6c39f3371 Mon Sep 17 00:00:00 2001 From: Rebecca Younes Date: Tue, 26 Sep 2017 14:34:49 -0400 Subject: [PATCH 12/14] Add test for work-activity relationship --- .../ld4l/activities/ActivityBuilderTest.java | 23 ++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/activities/ActivityBuilderTest.java b/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/activities/ActivityBuilderTest.java index 8e4a8d16e..dac955831 100644 --- a/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/activities/ActivityBuilderTest.java +++ b/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/activities/ActivityBuilderTest.java @@ -12,6 +12,7 @@ import org.ld4l.bib2lod.entitybuilders.EntityBuilderFactory; import org.ld4l.bib2lod.entitybuilders.marcxml.ld4l.InstanceBuilder; import org.ld4l.bib2lod.entitybuilders.marcxml.ld4l.MarcxmlToLd4lEntityBuilderFactory; +import org.ld4l.bib2lod.entitybuilders.marcxml.ld4l.WorkBuilder; import org.ld4l.bib2lod.ontology.ld4l.Ld4lActivityType; import org.ld4l.bib2lod.ontology.ld4l.Ld4lDatatypeProp; import org.ld4l.bib2lod.ontology.ld4l.Ld4lObjectProp; @@ -31,9 +32,15 @@ public class ActivityBuilderTest extends AbstractTestClass { .addDatafield("260", " ", " ").addSubfield("b", "Grune & Stratton,") .lock(); + public static final MockMarcxml _100_AUTHOR = MINIMAL_RECORD.openCopy() + .findDatafield("245").findSubfield("a").setValue("full title") + .addDatafield("100", "0", " ").addSubfield("a", "Manya K'Omalowete a Djonga,") + .lock(); + private static BaseMockBib2LodObjectFactory factory; private PublisherActivityBuilder activityBuilder; private InstanceBuilder instanceBuilder; + private WorkBuilder workBuilder; @BeforeClass public static void setUpOnce() throws Exception { @@ -46,6 +53,7 @@ public static void setUpOnce() throws Exception { public void setUp() { this.activityBuilder = new PublisherActivityBuilder(); this.instanceBuilder = new InstanceBuilder(); + this.workBuilder = new WorkBuilder(); } // --------------------------------------------------------------------- @@ -93,10 +101,16 @@ public void testAddLabel() throws Exception { } @Test - public void testRelationshipToBibResource() throws Exception { + public void testRelationshipToInstance() throws Exception { Entity instance = buildInstance(MINIMAL_RECORD); Assert.assertNotNull(instance.getChild(Ld4lObjectProp.HAS_ACTIVITY)); } + + @Test + public void testRelationshipToWork() throws Exception { + Entity work = buildWork(_100_AUTHOR); + Assert.assertNotNull(work.getChild(Ld4lObjectProp.HAS_ACTIVITY)); + } // --------------------------------------------------------------------- @@ -117,4 +131,11 @@ private Entity buildInstance(MockMarcxml input) throws Exception { return instanceBuilder.build( new BuildParams().setRecord(input.toRecord())); } + + private Entity buildWork(MockMarcxml input) throws Exception { + BuildParams params = new BuildParams() + .setParent(new Entity()) + .setRecord(input.toRecord()); + return workBuilder.build(params); + } } From d9f561f4433896ef82c05b926d03f518571ddafd Mon Sep 17 00:00:00 2001 From: Rebecca Younes Date: Wed, 27 Sep 2017 10:46:10 -0400 Subject: [PATCH 13/14] Simplify unit tests; add tests for link to parent --- .../marcxml/ld4l/InstanceBuilder.java | 1 - .../marcxml/ld4l/LocationBuilder.java | 18 ++--- .../activities/ProviderActivityBuilder.java | 3 +- .../ld4l/AdminMetadataBuilderTest.java | 8 ++ .../marcxml/ld4l/IdentifierBuilderTest.java | 7 ++ .../marcxml/ld4l/InstanceBuilderTest.java | 48 ++++++----- .../marcxml/ld4l/ItemBuilderTest.java | 33 +++++--- .../marcxml/ld4l/LocationBuilderTest.java | 79 +++++++++---------- .../ld4l/PhysicalDescriptionBuilderTest.java | 50 ++++-------- .../marcxml/ld4l/TitleBuilderTest.java | 15 +++- .../marcxml/ld4l/TitleElementBuilderTest.java | 35 ++++++-- .../marcxml/ld4l/WorkBuilderTest.java | 17 ++-- .../ld4l/activities/ActivityBuilderTest.java | 52 ++++-------- .../activities/AuthorActivityBuilderTest.java | 10 --- .../ManufacturerActivityBuilderTest.java | 2 - .../PublisherActivityBuilderTest.java | 4 - .../xml/marcxml/MarcxmlRecordTest.java | 4 +- 17 files changed, 199 insertions(+), 187 deletions(-) diff --git a/src/main/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/InstanceBuilder.java b/src/main/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/InstanceBuilder.java index aadee0639..1f82974d6 100644 --- a/src/main/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/InstanceBuilder.java +++ b/src/main/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/InstanceBuilder.java @@ -119,7 +119,6 @@ private void buildTitles() throws EntityBuilderException { private void buildPhysicalDescriptions() throws EntityBuilderException { - // TODO Not sure yet if there are others. buildExtent(); } diff --git a/src/main/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/LocationBuilder.java b/src/main/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/LocationBuilder.java index 53e99858d..eab679fa5 100644 --- a/src/main/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/LocationBuilder.java +++ b/src/main/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/LocationBuilder.java @@ -26,14 +26,16 @@ public Entity build(BuildParams params) throws EntityBuilderException { reset(); parseBuildParams(params); + if (name == null) { + name = subfield.getTrimmedTextValue(); + } - Entity existingLocation = findDuplicateLocation(); if (existingLocation != null) { this.location = existingLocation; } else { - this.location = buildFromString( - type, Ld4lDatatypeProp.NAME, name); + this.location = buildFromString(Ld4lLocationType.defaultType(), + Ld4lDatatypeProp.NAME, name); } parent.addRelationship(Ld4lObjectProp.HAS_LOCATION, location); @@ -58,13 +60,6 @@ private void parseBuildParams(BuildParams params) throw new EntityBuilderException( "A parent entity is required to build a location."); } - - this.type = params.getType(); - if (type == null) { - type = Ld4lLocationType.defaultType(); - } else if (! (type instanceof Ld4lLocationType)) { - throw new EntityBuilderException("Invalid location type"); - } this.subfield = (MarcxmlSubfield) params.getSubfield(); this.name = params.getValue(); @@ -74,9 +69,6 @@ private void parseBuildParams(BuildParams params) "A subfield or name value is required to build a " + "location."); } - if (name == null) { - name = subfield.getTrimmedTextValue(); - } this.grandparent = params.getGrandparent(); } diff --git a/src/main/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/activities/ProviderActivityBuilder.java b/src/main/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/activities/ProviderActivityBuilder.java index c841b498c..13e772451 100644 --- a/src/main/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/activities/ProviderActivityBuilder.java +++ b/src/main/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/activities/ProviderActivityBuilder.java @@ -51,8 +51,7 @@ protected void buildLocation(MarcxmlSubfield subfield) BuildParams params = new BuildParams() .setGrandparent(parent) .setParent(activity) - .addSubfield(subfield) - .setType(Ld4lLocationType.defaultType()); + .addSubfield(subfield); builder.build(params); } diff --git a/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/AdminMetadataBuilderTest.java b/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/AdminMetadataBuilderTest.java index 8b8d776f3..a84a39f97 100644 --- a/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/AdminMetadataBuilderTest.java +++ b/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/AdminMetadataBuilderTest.java @@ -199,10 +199,18 @@ public void invalidDateTimeValue_005_ThrowsException() throws Exception { "Invalid value for control field 005"); } + @Test + public void testRelationshipToInstance() throws Exception { + Entity instance = new InstanceEntity(); + Entity adminMetadata = buildAdminMetadata(instance, TEST_RECORD); + Assert.assertTrue(instance.hasChild(Ld4lObjectProp.HAS_ADMIN_METADATA, adminMetadata)); + } + // --------------------------------------------------------------------- // Helper methods // --------------------------------------------------------------------- + private Entity buildAdminMetadata(Entity entity, MockMarcxml input) throws Exception { BuildParams params = new BuildParams() diff --git a/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/IdentifierBuilderTest.java b/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/IdentifierBuilderTest.java index 72d741c9a..50a3207c9 100644 --- a/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/IdentifierBuilderTest.java +++ b/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/IdentifierBuilderTest.java @@ -207,6 +207,13 @@ public void testValueWithNoSource_035() throws Exception { Entity identifier = buildIdentifier(_035_NO_ORG_CODE, "035", 'a'); Assert.assertEquals("1345399", identifier.getValue(Ld4lDatatypeProp.VALUE)); } + + @Test + public void testRelationshipToResource() throws Exception { + Entity instance = new Entity(); + Entity identifier = buildIdentifier(instance, _035_NIC, "035", 'a'); + Assert.assertTrue(instance.hasChild(Ld4lObjectProp.IDENTIFIED_BY, identifier)); + } // --------------------------------------------------------------------- diff --git a/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/InstanceBuilderTest.java b/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/InstanceBuilderTest.java index 55dcb1a3b..63c2230ac 100644 --- a/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/InstanceBuilderTest.java +++ b/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/InstanceBuilderTest.java @@ -74,6 +74,19 @@ public class InstanceBuilderTest extends AbstractTestClass { .addSubfield("c", "date2") .lock(); + public static final MockMarcxml TWO_260 = MINIMAL_RECORD.openCopy() + .addControlfield("001", "102063") + .addDatafield("260", "3", " ") + .addSubfield("a", "Lugduni Batavorum :") + .addSubfield("b", "E.J. Brill") + .addDatafield("260", "3", " ") + .addSubfield("a", "Leiden :") + .addSubfield("b", "E.J. Brill") + .lock(); + + public static final MockMarcxml _260_CURRENT_PUBLISHER = _260_PUBLISHER.openCopy() + .findDatafield("260").setInd1("3").lock(); + private static BaseMockBib2LodObjectFactory factory; private InstanceBuilder builder; @@ -202,25 +215,24 @@ public void testTwoPublishers_260() throws Exception { } - // TODO -// public void testThreePublishers() throws Exception { -// Entity activity = buildActivity(TWO_260, "260") -// BuildParams params = new BuildParams().setRecord(TWO_260.toRecord()); -// Entity instance = instanceBuilder.build(params); -// Assert.assertEquals(3, -// instance.getChildren(Ld4lObjectProp.HAS_ACTIVITY, -// Ld4lActivityType.PUBLISHER_ACTIVITY).size()); -// } + @Test + public void testThreePublishers() throws Exception { + BuildParams params = new BuildParams().setRecord(TWO_260.toRecord()); + Entity instance = builder.build(params); + Assert.assertEquals(3, + instance.getChildren(Ld4lObjectProp.HAS_ACTIVITY, + Ld4lActivityType.PUBLISHER_ACTIVITY).size()); + } -// @Test -// public void testCurrentPublishers_008_260() throws Exception { -// BuildParams params = new BuildParams() -// .setRecord(_260_CURRENT_PUBLISHER.toRecord()); -// Entity instance = instanceBuilder.build(params); -// Assert.assertEquals(2, -// instance.getChildren(Ld4lObjectProp.HAS_ACTIVITY, -// Ld4lActivityType.PUBLISHER_ACTIVITY).size()); -// } + @Test + public void testCurrentPublishers_008_260() throws Exception { + BuildParams params = new BuildParams() + .setRecord(_260_CURRENT_PUBLISHER.toRecord()); + Entity instance = builder.build(params); + Assert.assertEquals(2, + instance.getChildren(Ld4lObjectProp.HAS_ACTIVITY, + Ld4lActivityType.PUBLISHER_ACTIVITY).size()); + } // --------------------------------------------------------------------- // Helper methods diff --git a/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/ItemBuilderTest.java b/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/ItemBuilderTest.java index 690ae68a0..bf47731dd 100644 --- a/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/ItemBuilderTest.java +++ b/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/ItemBuilderTest.java @@ -1,5 +1,7 @@ package org.ld4l.bib2lod.entitybuilders.marcxml.ld4l; +import static org.ld4l.bib2lod.testing.xml.testrecord.MockMarcxml.MINIMAL_RECORD; + import org.junit.Assert; import org.junit.Before; import org.junit.Test; @@ -33,7 +35,7 @@ public void nullRelatedInstance_ThrowsException() throws Exception { expectException(EntityBuilderException.class, "A related instance is required"); BuildParams params = new BuildParams() - .setRecord(MockMarcxml.MINIMAL_RECORD.toRecord()); + .setRecord(MINIMAL_RECORD.toRecord()); builder.build(params); } @@ -48,21 +50,32 @@ public void nullRecord_ThrowsException() throws Exception { @Test public void testItemType() throws Exception { - BuildParams params = new BuildParams() - .setRecord(MockMarcxml.MINIMAL_RECORD.toRecord()) - .setParent(new Entity()); - Entity item = builder.build(params); + Entity item = buildItem(MINIMAL_RECORD); Assert.assertTrue(item.hasType(Ld4lItemType.ITEM)); } @Test public void testInstanceHasItem() throws Exception { Entity instance = new InstanceEntity(); - BuildParams params = new BuildParams() - .setRecord(MockMarcxml.MINIMAL_RECORD.toRecord()) - .setParent(instance); - Entity item = builder.build(params); + Entity item = buildItem(instance, MINIMAL_RECORD); Assert.assertTrue(instance.hasChild(Ld4lObjectProp.HAS_ITEM, item)); - } + } + + // --------------------------------------------------------------------- + // Helper methods + // --------------------------------------------------------------------- + + private Entity buildItem(MockMarcxml input) + throws Exception { + return buildItem(new Entity(), input); + } + + private Entity buildItem(Entity parent, MockMarcxml input) + throws Exception { + BuildParams params = new BuildParams() + .setParent(parent) + .setRecord(input.toRecord()); + return builder.build(params); + } } diff --git a/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/LocationBuilderTest.java b/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/LocationBuilderTest.java index 3fcbe2091..aa504d661 100644 --- a/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/LocationBuilderTest.java +++ b/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/LocationBuilderTest.java @@ -12,12 +12,8 @@ import org.ld4l.bib2lod.entitybuilders.BuildParams; import org.ld4l.bib2lod.entitybuilders.EntityBuilder.EntityBuilderException; import org.ld4l.bib2lod.entitybuilders.EntityBuilderFactory; -import org.ld4l.bib2lod.ontology.Type; import org.ld4l.bib2lod.ontology.ld4l.Ld4lDatatypeProp; -import org.ld4l.bib2lod.ontology.ld4l.Ld4lInstanceType; -import org.ld4l.bib2lod.ontology.ld4l.Ld4lLocationType; import org.ld4l.bib2lod.ontology.ld4l.Ld4lObjectProp; -import org.ld4l.bib2lod.records.RecordField.RecordFieldException; import org.ld4l.bib2lod.records.xml.marcxml.MarcxmlSubfield; import org.ld4l.bib2lod.testing.AbstractTestClass; import org.ld4l.bib2lod.testing.BaseMockBib2LodObjectFactory; @@ -48,8 +44,8 @@ public class LocationBuilderTest extends AbstractTestClass { "Leiden :"; private static BaseMockBib2LodObjectFactory factory; - private InstanceBuilder instanceBuilder; private LocationBuilder locationBuilder; + private InstanceBuilder instanceBuilder; @BeforeClass public static void setUpOnce() throws Exception { @@ -59,9 +55,9 @@ public static void setUpOnce() throws Exception { } @Before - public void setUp() { - this.instanceBuilder = new InstanceBuilder(); + public void setUp() { this.locationBuilder = new LocationBuilder(); + this.instanceBuilder = new InstanceBuilder(); } // --------------------------------------------------------------------- @@ -84,46 +80,16 @@ public void noNameOrSubfield_ThrowsException() throws Exception { locationBuilder.build(params); } - @Test - public void invalidType_ThrowsException() throws Exception { - expectException(EntityBuilderException.class, - "Invalid location type"); - BuildParams params = new BuildParams() - .setType(Ld4lInstanceType.INSTANCE) - .addSubfield(buildSubfieldFromString(NAME_SUBFIELD)) - - .setParent(new Entity()); - locationBuilder.build(params); - } - - @Test - public void testTypeFromBuildParam() throws Exception { - Type type = Ld4lLocationType.LOCATION; - BuildParams params = new BuildParams() - .setType(type) - .addSubfield(buildSubfieldFromString(NAME_SUBFIELD)) - - .setParent(new Entity()); - Entity location = locationBuilder.build(params); - Assert.assertTrue(location.hasType(type)); - } - @Test public void testNameFromBuildParam() throws Exception { String name = "Leiden"; - BuildParams params = new BuildParams() - .setValue(name) - .setParent(new Entity()); - Entity location = locationBuilder.build(params); + Entity location = buildLocation(name); Assert.assertEquals(name, location.getValue(Ld4lDatatypeProp.NAME)); } @Test public void testNameFromSubfield() throws Exception { - BuildParams params = new BuildParams() - .addSubfield(buildSubfieldFromString(NAME_SUBFIELD)) - .setParent(new Entity()); - Entity location = locationBuilder.build(params); + Entity location = buildLocation(buildSubfieldFromString(NAME_SUBFIELD)); Assert.assertEquals("Leiden", location.getValue(Ld4lDatatypeProp.NAME)); } @@ -155,15 +121,46 @@ public void testBuildNewLocation() throws Exception { activity2.getChild(Ld4lObjectProp.HAS_LOCATION)); } + @Test + public void testRelationshipToResource() throws Exception { + Entity activity = new Entity(); + Entity location = buildLocation(activity, "Leiden"); + Assert.assertTrue(activity.hasChild(Ld4lObjectProp.HAS_LOCATION, location)); + } // --------------------------------------------------------------------- // Helper methods // --------------------------------------------------------------------- - private MarcxmlSubfield buildSubfieldFromString( - String element) throws RecordFieldException { + private MarcxmlSubfield buildSubfieldFromString(String element) + throws Exception { return new MarcxmlSubfield( XmlTestUtils.buildElementFromString(element)); } + + private Entity buildLocation(MarcxmlSubfield subfield) + throws Exception { + return buildLocation(new Entity(), subfield); + } + + private Entity buildLocation(Entity entity, MarcxmlSubfield subfield) + throws Exception { + BuildParams params = new BuildParams() + .setParent(entity) + .setSubfield(subfield); + return locationBuilder.build(params); + } + + private Entity buildLocation(String value) throws Exception { + return buildLocation(new Entity(), value); + } + + private Entity buildLocation(Entity entity, String value) + throws Exception { + BuildParams params = new BuildParams() + .setParent(entity) + .setValue(value); + return locationBuilder.build(params); + } } diff --git a/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/PhysicalDescriptionBuilderTest.java b/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/PhysicalDescriptionBuilderTest.java index a93375b9b..336ef4062 100644 --- a/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/PhysicalDescriptionBuilderTest.java +++ b/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/PhysicalDescriptionBuilderTest.java @@ -4,19 +4,15 @@ import org.junit.Assert; import org.junit.Before; -import org.junit.BeforeClass; import org.junit.Test; import org.ld4l.bib2lod.entity.Entity; -import org.ld4l.bib2lod.entity.InstanceEntity; import org.ld4l.bib2lod.entitybuilders.BuildParams; -import org.ld4l.bib2lod.entitybuilders.EntityBuilderFactory; import org.ld4l.bib2lod.ontology.Type; import org.ld4l.bib2lod.ontology.ld4l.Ld4lDatatypeProp; import org.ld4l.bib2lod.ontology.ld4l.Ld4lExtentType; import org.ld4l.bib2lod.ontology.ld4l.Ld4lObjectProp; import org.ld4l.bib2lod.records.xml.marcxml.MarcxmlDataField; import org.ld4l.bib2lod.testing.AbstractTestClass; -import org.ld4l.bib2lod.testing.BaseMockBib2LodObjectFactory; import org.ld4l.bib2lod.testing.xml.testrecord.MockMarcxml; /** @@ -33,42 +29,29 @@ public class PhysicalDescriptionBuilderTest extends AbstractTestClass { .deleteSubfield("c") .addSubfield("a", "123 p.") .lock(); - - private static BaseMockBib2LodObjectFactory factory; - private InstanceBuilder instanceBuilder; - private PhysicalDescriptionBuilder physDescrBuilder; - - @BeforeClass - public static void setUpOnce() throws Exception { - factory = new BaseMockBib2LodObjectFactory(); - factory.addInstance(EntityBuilderFactory.class, - new MarcxmlToLd4lEntityBuilderFactory()); - } + + private PhysicalDescriptionBuilder builder; @Before - public void setUp() { - this.instanceBuilder = new InstanceBuilder(); - this.physDescrBuilder = new PhysicalDescriptionBuilder(); + public void setUp() { + this.builder = new PhysicalDescriptionBuilder(); } // --------------------------------------------------------------------- // The tests // --------------------------------------------------------------------- - @Test - public void no300_Succeeds() throws Exception { - buildInstance(MockMarcxml.MINIMAL_RECORD); - } - @Test public void no300$a_Succeeds() throws Exception { - buildInstance(_300_NO_$a); + buildPhysicalDescription(_300_NO_$a, Ld4lExtentType.EXTENT, "300", 'c'); } @Test public void testInstanceHasExtent() throws Exception { - Entity instance = buildInstance(_300_EXTENT); - Assert.assertNotNull(instance.getChild(Ld4lObjectProp.HAS_EXTENT)); + Entity instance = new Entity(); + Entity extent = buildPhysicalDescription(_300_EXTENT, + Ld4lExtentType.EXTENT, "300", 'a', instance); + Assert.assertTrue(instance.hasChild(Ld4lObjectProp.HAS_EXTENT, extent)); } @Test @@ -89,20 +72,19 @@ public void testExtentLabel() throws Exception { // --------------------------------------------------------------------- // Helper methods // --------------------------------------------------------------------- - - private Entity buildInstance(MockMarcxml input) throws Exception { - BuildParams params = new BuildParams() - .setRecord(input.toRecord()); - return instanceBuilder.build(params); + + private Entity buildPhysicalDescription(MockMarcxml input, Type type, + String tag, char code) throws Exception { + return buildPhysicalDescription(input, type, tag, code, new Entity()); } private Entity buildPhysicalDescription(MockMarcxml input, Type type, - String tag, char code) throws Exception { + String tag, char code, Entity parent) throws Exception { MarcxmlDataField field = input.toRecord().getDataField(tag); BuildParams params = new BuildParams() - .setParent(new InstanceEntity()) + .setParent(parent) .setField(field) .setSubfield(field.getSubfield(code)); - return physDescrBuilder.build(params); + return builder.build(params); } } diff --git a/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/TitleBuilderTest.java b/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/TitleBuilderTest.java index 5f67bf502..e480c2c83 100644 --- a/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/TitleBuilderTest.java +++ b/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/TitleBuilderTest.java @@ -137,6 +137,14 @@ public void testTitleValueWithTwoSubtitles() throws Exception { buildTitleAndExpectValue(TITLE_WITH_TWO_SUBTITLES, "main title : subtitle one : subtitle two"); } + + @Test + public void testRelationshipToParent() throws Exception { + Entity bibResource = new Entity(); + Entity title = buildTitle(MINIMAL_RECORD, bibResource); + Assert.assertTrue(bibResource.hasChild( + Ld4lObjectProp.HAS_PREFERRED_TITLE, title)); + } // --------------------------------------------------------------------- // Helper methods @@ -144,8 +152,13 @@ public void testTitleValueWithTwoSubtitles() throws Exception { private Entity buildTitle(MockMarcxml marcxml) throws Exception { + return buildTitle(marcxml, new Entity()); + } + + private Entity buildTitle(MockMarcxml marcxml, Entity entity) + throws Exception { BuildParams params = new BuildParams() - .setParent(new Entity()) + .setParent(entity) .setRecord(marcxml.toRecord()); return builder.build(params); } diff --git a/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/TitleElementBuilderTest.java b/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/TitleElementBuilderTest.java index e92e5194a..1e7aae921 100644 --- a/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/TitleElementBuilderTest.java +++ b/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/TitleElementBuilderTest.java @@ -7,6 +7,7 @@ import org.ld4l.bib2lod.entitybuilders.BuildParams; import org.ld4l.bib2lod.entitybuilders.EntityBuilder.EntityBuilderException; import org.ld4l.bib2lod.ontology.ld4l.Ld4lDatatypeProp; +import org.ld4l.bib2lod.ontology.ld4l.Ld4lObjectProp; import org.ld4l.bib2lod.ontology.ld4l.Ld4lTitleElementType; import org.ld4l.bib2lod.ontology.ld4l.Ld4lTitleType; import org.ld4l.bib2lod.testing.AbstractTestClass; @@ -140,23 +141,41 @@ public void testPreserveFinalSpaceInNonSortElement() throws Exception { buildAndExpectValue(Ld4lTitleElementType.NON_SORT_ELEMENT, NON_SORT_ELEMENT_WITH_FINAL_SPACE, "L' "); } + + @Test + public void testRelationshipToTitle() throws Exception { + Entity bibResource = new Entity(); + Entity titleElement = buildTitleElement( + Ld4lTitleElementType.MAIN_TITLE_ELEMENT, "main title", + bibResource); + Assert.assertTrue(bibResource.hasChild( + Ld4lObjectProp.HAS_PART, titleElement)); + } // --------------------------------------------------------------------- // Helper methods // --------------------------------------------------------------------- - private void buildAndExpectValue(Ld4lTitleElementType type, - String inputValue, String expectedValue) - throws EntityBuilderException { + String value, String expectedValue) throws Exception { + Entity titleElement = buildTitleElement(type, value); + Assert.assertEquals(expectedValue, titleElement.getAttribute( + Ld4lDatatypeProp.VALUE).getValue()); + } + + private Entity buildTitleElement(Ld4lTitleElementType type, + String value, Entity title) throws Exception { BuildParams params = new BuildParams() - .setParent(new Entity()) - .setValue(inputValue) + .setParent(title) + .setValue(value) .setType(type); - Entity titleElement = builder.build(params); - Assert.assertEquals(expectedValue, - titleElement.getAttribute(Ld4lDatatypeProp.VALUE).getValue()); + return builder.build(params); + } + + private Entity buildTitleElement(Ld4lTitleElementType type, + String value) throws Exception { + return buildTitleElement(type, value, new Entity()); } } diff --git a/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/WorkBuilderTest.java b/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/WorkBuilderTest.java index adb14b8d9..1acaae779 100644 --- a/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/WorkBuilderTest.java +++ b/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/WorkBuilderTest.java @@ -44,13 +44,11 @@ public class WorkBuilderTest extends AbstractTestClass { public static final MockMarcxml AUTHOR_ACTIVITY = MINIMAL_RECORD.openCopy() .addDatafield("100", "1", "") - //.findDatafield("100") .addSubfield("a", "Austen, Jane") .lock(); private static BaseMockBib2LodObjectFactory factory; - // private InstanceBuilder instanceBuilder; private WorkBuilder workBuilder; @BeforeClass @@ -114,13 +112,19 @@ public void testAuthorActivity() throws Exception { Ld4lActivityType.AUTHOR_ACTIVITY).size()); } - + @Test + public void testRelationshipToInstance() throws Exception { + Entity instance = new Entity(); + Entity work = buildWork(MINIMAL_RECORD, instance); + Assert.assertTrue(instance.hasChild(Ld4lObjectProp.IS_INSTANCE_OF, work)); + } + // --------------------------------------------------------------------- // Helper methods // --------------------------------------------------------------------- - private Entity buildWork(MockMarcxml marcxml, InstanceEntity instance) + private Entity buildWork(MockMarcxml marcxml, Entity instance) throws Exception { BuildParams params = new BuildParams() .setParent(instance) @@ -130,8 +134,7 @@ private Entity buildWork(MockMarcxml marcxml, InstanceEntity instance) private Entity buildWork(MockMarcxml marcxml) throws Exception { - return buildWork(marcxml, new InstanceEntity()); + return buildWork(marcxml, new Entity()); } - - + } diff --git a/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/activities/ActivityBuilderTest.java b/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/activities/ActivityBuilderTest.java index dac955831..10adfab81 100644 --- a/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/activities/ActivityBuilderTest.java +++ b/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/activities/ActivityBuilderTest.java @@ -10,9 +10,7 @@ import org.ld4l.bib2lod.entitybuilders.BuildParams; import org.ld4l.bib2lod.entitybuilders.EntityBuilder.EntityBuilderException; import org.ld4l.bib2lod.entitybuilders.EntityBuilderFactory; -import org.ld4l.bib2lod.entitybuilders.marcxml.ld4l.InstanceBuilder; import org.ld4l.bib2lod.entitybuilders.marcxml.ld4l.MarcxmlToLd4lEntityBuilderFactory; -import org.ld4l.bib2lod.entitybuilders.marcxml.ld4l.WorkBuilder; import org.ld4l.bib2lod.ontology.ld4l.Ld4lActivityType; import org.ld4l.bib2lod.ontology.ld4l.Ld4lDatatypeProp; import org.ld4l.bib2lod.ontology.ld4l.Ld4lObjectProp; @@ -38,9 +36,7 @@ public class ActivityBuilderTest extends AbstractTestClass { .lock(); private static BaseMockBib2LodObjectFactory factory; - private PublisherActivityBuilder activityBuilder; - private InstanceBuilder instanceBuilder; - private WorkBuilder workBuilder; + private PublisherActivityBuilder builder; @BeforeClass public static void setUpOnce() throws Exception { @@ -51,9 +47,7 @@ public static void setUpOnce() throws Exception { @Before public void setUp() { - this.activityBuilder = new PublisherActivityBuilder(); - this.instanceBuilder = new InstanceBuilder(); - this.workBuilder = new WorkBuilder(); + this.builder = new PublisherActivityBuilder(); } // --------------------------------------------------------------------- @@ -66,7 +60,7 @@ public void nullParent() throws Exception { "A parent entity is required"); BuildParams params = new BuildParams() .setParent(null); - activityBuilder.build(params); + builder.build(params); } @Test @@ -77,7 +71,7 @@ public void nullField_ThrowsException() throws Exception { .setParent(new Entity()) .setRecord(null) .setField(null); - activityBuilder.build(params); + builder.build(params); } @Test @@ -90,7 +84,7 @@ public void invalidFieldType_ThrowsException() throws Exception { .setField(new MarcxmlSubfield( XmlTestUtils.buildElementFromString( "test"))); - activityBuilder.build(params); + builder.build(params); } @Test @@ -101,41 +95,29 @@ public void testAddLabel() throws Exception { } @Test - public void testRelationshipToInstance() throws Exception { - Entity instance = buildInstance(MINIMAL_RECORD); - Assert.assertNotNull(instance.getChild(Ld4lObjectProp.HAS_ACTIVITY)); - } - - @Test - public void testRelationshipToWork() throws Exception { - Entity work = buildWork(_100_AUTHOR); - Assert.assertNotNull(work.getChild(Ld4lObjectProp.HAS_ACTIVITY)); + public void testRelationshipToResource() throws Exception { + Entity instance = new Entity(); + Entity activity = buildActivity(instance, _260_PUBLISHER, "260"); + Assert.assertTrue(instance.hasChild(Ld4lObjectProp.HAS_ACTIVITY, activity)); } - // --------------------------------------------------------------------- // Helper methods // --------------------------------------------------------------------- private Entity buildActivity(MockMarcxml input, String tag) throws Exception { + return buildActivity(new Entity(), input, tag); + } + + private Entity buildActivity(Entity parent, MockMarcxml input, String tag) + throws Exception { MarcxmlRecord record = input.toRecord(); BuildParams params = new BuildParams() - .setParent(new Entity()) + .setParent(parent) .setRecord(record) .setField(record.getDataField(tag)); - return activityBuilder.build(params); - } - - private Entity buildInstance(MockMarcxml input) throws Exception { - return instanceBuilder.build( - new BuildParams().setRecord(input.toRecord())); - } - - private Entity buildWork(MockMarcxml input) throws Exception { - BuildParams params = new BuildParams() - .setParent(new Entity()) - .setRecord(input.toRecord()); - return workBuilder.build(params); + return builder.build(params); } + } diff --git a/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/activities/AuthorActivityBuilderTest.java b/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/activities/AuthorActivityBuilderTest.java index 3b27af9c5..cd723e028 100644 --- a/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/activities/AuthorActivityBuilderTest.java +++ b/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/activities/AuthorActivityBuilderTest.java @@ -11,7 +11,6 @@ import org.ld4l.bib2lod.entitybuilders.EntityBuilderFactory; import org.ld4l.bib2lod.entitybuilders.marcxml.ld4l.AuthorActivityBuilder; import org.ld4l.bib2lod.entitybuilders.marcxml.ld4l.MarcxmlToLd4lEntityBuilderFactory; -import org.ld4l.bib2lod.ontology.Type; import org.ld4l.bib2lod.ontology.ld4l.Ld4lActivityType; import org.ld4l.bib2lod.ontology.ld4l.Ld4lObjectProp; import org.ld4l.bib2lod.testing.AbstractTestClass; @@ -70,14 +69,5 @@ private Entity buildActivity(MockMarcxml record) .setParent(new Entity()); return builder.build(params); } - - private Entity buildActivity( - MockMarcxml record, Type type) throws Exception { - BuildParams params = new BuildParams() - .setField(record.toRecord().getDataField("100")) - .setType(type) - .setParent(new Entity()); - return builder.build(params); - } } diff --git a/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/activities/ManufacturerActivityBuilderTest.java b/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/activities/ManufacturerActivityBuilderTest.java index 202801d66..34c79e634 100644 --- a/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/activities/ManufacturerActivityBuilderTest.java +++ b/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/activities/ManufacturerActivityBuilderTest.java @@ -13,10 +13,8 @@ import org.ld4l.bib2lod.entity.Entity; import org.ld4l.bib2lod.entitybuilders.BuildParams; import org.ld4l.bib2lod.entitybuilders.EntityBuilderFactory; -import org.ld4l.bib2lod.entitybuilders.marcxml.ld4l.InstanceBuilder; import org.ld4l.bib2lod.entitybuilders.marcxml.ld4l.MarcxmlToLd4lEntityBuilderFactory; import org.ld4l.bib2lod.ontology.ld4l.Ld4lActivityType; -import org.ld4l.bib2lod.ontology.ld4l.Ld4lObjectProp; import org.ld4l.bib2lod.records.RecordField; import org.ld4l.bib2lod.records.RecordField.RecordFieldException; import org.ld4l.bib2lod.records.xml.marcxml.MarcxmlDataField; diff --git a/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/activities/PublisherActivityBuilderTest.java b/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/activities/PublisherActivityBuilderTest.java index 4efb9befd..306401b2a 100644 --- a/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/activities/PublisherActivityBuilderTest.java +++ b/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/activities/PublisherActivityBuilderTest.java @@ -9,15 +9,12 @@ import org.apache.jena.rdf.model.ResourceFactory; import org.junit.Assert; import org.junit.Before; -import org.junit.BeforeClass; import org.junit.Test; import org.ld4l.bib2lod.datatypes.Ld4lCustomDatatypes.BibDatatype; import org.ld4l.bib2lod.datatypes.Ld4lCustomDatatypes.EdtfType; import org.ld4l.bib2lod.entity.Attribute; import org.ld4l.bib2lod.entity.Entity; import org.ld4l.bib2lod.entitybuilders.BuildParams; -import org.ld4l.bib2lod.entitybuilders.EntityBuilderFactory; -import org.ld4l.bib2lod.entitybuilders.marcxml.ld4l.MarcxmlToLd4lEntityBuilderFactory; import org.ld4l.bib2lod.ontology.ld4l.Ld4lDatatypeProp; import org.ld4l.bib2lod.ontology.ld4l.Ld4lNamedIndividual; import org.ld4l.bib2lod.ontology.ld4l.Ld4lNamespace; @@ -27,7 +24,6 @@ import org.ld4l.bib2lod.records.xml.marcxml.MarcxmlRecord; import org.ld4l.bib2lod.records.xml.marcxml.MarcxmlTaggedField; import org.ld4l.bib2lod.testing.AbstractTestClass; -import org.ld4l.bib2lod.testing.BaseMockBib2LodObjectFactory; import org.ld4l.bib2lod.testing.xml.testrecord.MockMarcxml; diff --git a/src/test/java/org/ld4l/bib2lod/records/xml/marcxml/MarcxmlRecordTest.java b/src/test/java/org/ld4l/bib2lod/records/xml/marcxml/MarcxmlRecordTest.java index 8b5a5c8f0..1539a3422 100644 --- a/src/test/java/org/ld4l/bib2lod/records/xml/marcxml/MarcxmlRecordTest.java +++ b/src/test/java/org/ld4l/bib2lod/records/xml/marcxml/MarcxmlRecordTest.java @@ -2,6 +2,8 @@ package org.ld4l.bib2lod.records.xml.marcxml; +import static org.ld4l.bib2lod.testing.xml.testrecord.MockMarcxml.MINIMAL_RECORD; + import java.util.List; import org.junit.Assert; @@ -140,7 +142,7 @@ public void duplicateNonRepeatingDataFields_Ignored() throws Exception { @Test public void validRecord_Succeeds() throws Exception { // No exception - buildRecord(MockMarcxml.MINIMAL_RECORD); + buildRecord(MINIMAL_RECORD); } // --------------------------------------------------------------------- From 5ac57b1d68a6483013aeedd1cec84b43a13d68f5 Mon Sep 17 00:00:00 2001 From: Rebecca Younes Date: Wed, 27 Sep 2017 11:26:52 -0400 Subject: [PATCH 14/14] Add and reorg instance builder tests --- .../marcxml/ld4l/InstanceBuilderTest.java | 132 ++++++++++-------- 1 file changed, 72 insertions(+), 60 deletions(-) diff --git a/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/InstanceBuilderTest.java b/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/InstanceBuilderTest.java index 63c2230ac..899b49e3a 100644 --- a/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/InstanceBuilderTest.java +++ b/src/test/java/org/ld4l/bib2lod/entitybuilders/marcxml/ld4l/InstanceBuilderTest.java @@ -37,15 +37,13 @@ public class InstanceBuilderTest extends AbstractTestClass { .addSubfield("b", "Grune & Stratton,") .addSubfield("c", "1957.") .lock(); - - public static final MockMarcxml _260_PUBLISHER_AND_MANUFACTURER = MINIMAL_RECORD.openCopy() - .findDatafield("245").findSubfield("a").setValue("full title") - .addDatafield("260", " ", " ") - .addSubfield("a", "Springfield, Va. :") - .addSubfield("b", "National Technical Information Service,") - .addSubfield("c", "1974-") - .addSubfield("e", "(Oak Ridge, Tenn. :") - .addSubfield("f", "Oak Ridge National Laboratory ") + + public static final MockMarcxml _260_ONE_FIELD_TWO_PUBLISHERS = _260_PUBLISHER.openCopy() + .replaceDatafield("260", "2", " ") + .addSubfield("a", "place1") + .addSubfield("c", "date1") + .addSubfield("b", "name2") + .addSubfield("c", "date2") .lock(); public static final MockMarcxml _260_TWO_FIELDS_TWO_PUBLISHERS = MINIMAL_RECORD.openCopy() @@ -57,8 +55,18 @@ public class InstanceBuilderTest extends AbstractTestClass { .addSubfield("a", "place1") .addSubfield("b", "name2") .addSubfield("c", "date2") - .lock(); - + .lock(); + + public static final MockMarcxml _260_PUBLISHER_AND_MANUFACTURER = MINIMAL_RECORD.openCopy() + .findDatafield("245").findSubfield("a").setValue("full title") + .addDatafield("260", " ", " ") + .addSubfield("a", "Springfield, Va. :") + .addSubfield("b", "National Technical Information Service,") + .addSubfield("c", "1974-") + .addSubfield("e", "(Oak Ridge, Tenn. :") + .addSubfield("f", "Oak Ridge National Laboratory ") + .lock(); + public static final MockMarcxml _260_TWO_PUBLISHERS_AND_MANUFACTURER = _260_TWO_FIELDS_TWO_PUBLISHERS.openCopy() .findDatafield("260", 0) @@ -66,27 +74,14 @@ public class InstanceBuilderTest extends AbstractTestClass { .addSubfield("f", "name1") .lock(); - public static final MockMarcxml _260_ONE_FIELD_TWO_PUBLISHERS = _260_PUBLISHER.openCopy() - .replaceDatafield("260", "2", " ") - .addSubfield("a", "place1") - .addSubfield("c", "date1") - .addSubfield("b", "name2") - .addSubfield("c", "date2") - .lock(); - - public static final MockMarcxml TWO_260 = MINIMAL_RECORD.openCopy() - .addControlfield("001", "102063") - .addDatafield("260", "3", " ") - .addSubfield("a", "Lugduni Batavorum :") - .addSubfield("b", "E.J. Brill") - .addDatafield("260", "3", " ") - .addSubfield("a", "Leiden :") - .addSubfield("b", "E.J. Brill") - .lock(); - public static final MockMarcxml _260_CURRENT_PUBLISHER = _260_PUBLISHER.openCopy() .findDatafield("260").setInd1("3").lock(); + public static final MockMarcxml MULTIPLE_035 = MINIMAL_RECORD.openCopy() + .addDatafield("035", " ", " ").addSubfield("a", "(NIC)notisAAL3258") + .addDatafield("035", " ", " ").addSubfield("a", "(OCoLC)1345399") + .lock(); + private static BaseMockBib2LodObjectFactory factory; private InstanceBuilder builder; @@ -120,6 +115,14 @@ public void minimalRecord_Succeeds() throws Exception { buildInstance(MINIMAL_RECORD); } + @Test + public void testMultipleIdentifiers_035() throws Exception { + Entity instance = + buildInstance(MULTIPLE_035); + Assert.assertEquals(2, + instance.getChildren(Ld4lObjectProp.IDENTIFIED_BY).size()); + } + @Test public void testResponsibilityStatement() throws Exception { Entity instance = @@ -143,6 +146,16 @@ public void testPasTwoFieldsTwoPublishers_260() throws Exception { Assert.assertEquals(2, instance.getAttributes( Ld4lDatatypeProp.PROVISION_ACTIVITY_STATEMENT).size()); } + + public void testTwoFieldsTwoPublishers_260() throws Exception { + BuildParams params = new BuildParams().setRecord( + _260_TWO_FIELDS_TWO_PUBLISHERS.toRecord()); + Entity instance = builder.build(params); + // Third publisher is from 008 + Assert.assertEquals(3, + instance.getChildren(Ld4lObjectProp.HAS_ACTIVITY, + Ld4lActivityType.PUBLISHER_ACTIVITY).size()); + } @Test public void testPasFirstPublisher_260() throws Exception { @@ -166,6 +179,14 @@ public void testPasOneFieldTwoPublishers_260() throws Exception { Assert.assertEquals(1, instance.getAttributes( Ld4lDatatypeProp.PROVISION_ACTIVITY_STATEMENT).size()); } + + @Test + public void testOneFieldTwoPublishers_260() throws Exception { + Entity instance = buildInstance(_260_ONE_FIELD_TWO_PUBLISHERS); + // Third publisher is from 008 + Assert.assertEquals(3, instance.getChildren( + Ld4lObjectProp.HAS_ACTIVITY).size()); + } @Test public void testPasOneFieldTwoPublishersValue_260() throws Exception { @@ -182,48 +203,39 @@ public void testPasPublisherAndManufacturer_260() throws Exception { Ld4lDatatypeProp.PROVISION_ACTIVITY_STATEMENT).size()); } - @Test - public void testPasTwoPublishersAndManufacturer_260() throws Exception { - Entity instance = buildInstance(_260_TWO_PUBLISHERS_AND_MANUFACTURER); - Assert.assertEquals(3, instance.getAttributes( - Ld4lDatatypeProp.PROVISION_ACTIVITY_STATEMENT).size()); - } - @Test - public void testManufacturerWithPublisher() throws Exception { + public void testPublisherWithhManufacturer() throws Exception { Entity instance = buildInstance(_260_PUBLISHER_AND_MANUFACTURER); List activities = instance.getChildren(Ld4lObjectProp.HAS_ACTIVITY); - Assert.assertEquals(Ld4lActivityType.MANUFACTURER_ACTIVITY, - activities.get(2).getType()); - } + Assert.assertEquals(Ld4lActivityType.PUBLISHER_ACTIVITY, + activities.get(0).getType()); + } @Test - public void testPublisherWithManufacturer() throws Exception { + public void testManufacturerWithPublisher() throws Exception { Entity instance = buildInstance(_260_PUBLISHER_AND_MANUFACTURER); List activities = instance.getChildren(Ld4lObjectProp.HAS_ACTIVITY); - Assert.assertEquals(Ld4lActivityType.PUBLISHER_ACTIVITY, - activities.get(0).getType()); - } - - @Test - public void testTwoPublishers_260() throws Exception { - Entity instance = buildInstance(_260_ONE_FIELD_TWO_PUBLISHERS); - Assert.assertEquals(3, - instance.getChildren(Ld4lObjectProp.HAS_ACTIVITY).size()); + Assert.assertEquals(Ld4lActivityType.MANUFACTURER_ACTIVITY, + activities.get(2).getType()); } - - @Test - public void testThreePublishers() throws Exception { - BuildParams params = new BuildParams().setRecord(TWO_260.toRecord()); - Entity instance = builder.build(params); - Assert.assertEquals(3, - instance.getChildren(Ld4lObjectProp.HAS_ACTIVITY, - Ld4lActivityType.PUBLISHER_ACTIVITY).size()); + @Test + public void testPasTwoPublishersAndManufacturer_260() throws Exception { + Entity instance = buildInstance(_260_TWO_PUBLISHERS_AND_MANUFACTURER); + Assert.assertEquals(3, instance.getAttributes( + Ld4lDatatypeProp.PROVISION_ACTIVITY_STATEMENT).size()); } - + + @Test + public void testTwoPublishersAndManufacturer_260() throws Exception { + Entity instance = buildInstance(_260_TWO_PUBLISHERS_AND_MANUFACTURER); + // Third publisher is from 008 + Assert.assertEquals(4, instance.getChildren( + Ld4lObjectProp.HAS_ACTIVITY).size()); + } + @Test public void testCurrentPublishers_008_260() throws Exception { BuildParams params = new BuildParams() @@ -232,7 +244,7 @@ public void testCurrentPublishers_008_260() throws Exception { Assert.assertEquals(2, instance.getChildren(Ld4lObjectProp.HAS_ACTIVITY, Ld4lActivityType.PUBLISHER_ACTIVITY).size()); - } + } // --------------------------------------------------------------------- // Helper methods