Skip to content

Commit

Permalink
issue #75: add tag 599, 690, 692
Browse files Browse the repository at this point in the history
  • Loading branch information
pkiraly committed Dec 7, 2020
1 parent a9b3a07 commit d73bb0a
Show file tree
Hide file tree
Showing 9 changed files with 283 additions and 2 deletions.
2 changes: 1 addition & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,4 @@
### Added

- British Library tags: 039, 091, 509, 539, 590, 591, 592, 594, 595, 596, 597, 598, 599,
690
690, 692
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,11 @@ public abstract class DataFieldDefinition implements Serializable {
protected List<FRBRFunction> functions;
protected FieldIndexer fieldIndexer = null;
protected SourceSpecificationType sourceSpecificationType = null;
protected boolean obsolete = false;
private CompilanceLevel nationalCompilanceLevel;
private CompilanceLevel minimalCompilanceLevel;


public String getTag() {
return tag;
}
Expand Down Expand Up @@ -242,6 +244,10 @@ public MarcVersion getMarcVersion() {
return Utils.getVersion(this);
}

public boolean isObsolete() {
return obsolete;
}

@Override
public String toString() {
return "DataFieldDefinition{" +
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
package de.gwdg.metadataqa.marc.definition.tags.bltags;

import de.gwdg.metadataqa.marc.definition.Cardinality;
import de.gwdg.metadataqa.marc.definition.DataFieldDefinition;
import de.gwdg.metadataqa.marc.definition.Indicator;

/**
* National Bibliography Issue Number
*/
public class Tag599 extends DataFieldDefinition {

private static Tag599 uniqueInstance;

private Tag599() {
initialize();
postCreation();
}

public static Tag599 getInstance() {
if (uniqueInstance == null)
uniqueInstance = new Tag599();
return uniqueInstance;
}

private void initialize() {

tag = "599";
label = "Notes Relating to an Original (RPS)";
mqTag = "notesRelatingToAnOriginal";
cardinality = Cardinality.Repeatable;
// descriptionUrl = "https://www.loc.gov/marc/bibliographic/bd037.html";
// setCompilanceLevels("O");

ind1 = new Indicator();
ind2 = new Indicator();

setSubfieldsWithCardinality(
"a", "Note relating to the copy filmed", "NR"
);

getSubfield("a")
.setMqTag("note");
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
package de.gwdg.metadataqa.marc.definition.tags.bltags;

import de.gwdg.metadataqa.marc.definition.Cardinality;
import de.gwdg.metadataqa.marc.definition.DataFieldDefinition;
import de.gwdg.metadataqa.marc.definition.Indicator;
import de.gwdg.metadataqa.marc.definition.general.validator.RegexValidator;

/**
* National Bibliography Issue Number
*/
public class Tag690 extends DataFieldDefinition {

private static Tag690 uniqueInstance;

private Tag690() {
initialize();
postCreation();
}

public static Tag690 getInstance() {
if (uniqueInstance == null)
uniqueInstance = new Tag690();
return uniqueInstance;
}

private void initialize() {

tag = "690";
label = "Collection Subset";
mqTag = "collectionSubset";
cardinality = Cardinality.Repeatable;
// descriptionUrl = "https://www.loc.gov/marc/bibliographic/bd037.html";
// setCompilanceLevels("O");

ind1 = new Indicator("Provides information on the content of subfield $a")
.setCodes(
"7", "Source specified in subfield $2"
)
.setMqTag("source");

ind2 = new Indicator();

setSubfieldsWithCardinality(
"a", "Collection subset", "NR",
"2", "Source of term", "NR"
);

getSubfield("a")
.setValidator(new RegexValidator("^.*[^\\.]$"))
.setMqTag("collectionSubset");

getSubfield("2")
.setValidator(new RegexValidator("^.*[^\\.]$"))
.setMqTag("source");
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
package de.gwdg.metadataqa.marc.definition.tags.bltags;

import de.gwdg.metadataqa.marc.definition.Cardinality;
import de.gwdg.metadataqa.marc.definition.DataFieldDefinition;
import de.gwdg.metadataqa.marc.definition.Indicator;
import de.gwdg.metadataqa.marc.definition.general.validator.RegexValidator;

/**
* National Bibliography Issue Number
*/
public class Tag692 extends DataFieldDefinition {

private static Tag692 uniqueInstance;

private Tag692() {
initialize();
postCreation();
}

public static Tag692 getInstance() {
if (uniqueInstance == null)
uniqueInstance = new Tag692();
return uniqueInstance;
}

private void initialize() {

tag = "692";
label = "Nineteenth Century Subject Series Field";
mqTag = "collectionSubset";
cardinality = Cardinality.Repeatable;
obsolete = true;
// descriptionUrl = "https://www.loc.gov/marc/bibliographic/bd037.html";
// setCompilanceLevels("O");

ind1 = new Indicator();

ind2 = new Indicator();

setSubfieldsWithCardinality(
"a", "General Collection subject code", "NR",
"b", "Linguistics collection code", "NR",
"c", "Visual Arts and Architecture collection code", "NR",
"e", "Publishing, the Book Trade & the Diffusion of Knowledge collection code", "NR",
"f", "Women Writers collection code", "NR",
"g", "Children’s Literature collection code", "NR",
"i", "Nineteenth Century Books on China collection code", "NR",
"p", "Year code", "NR"
);

getSubfield("a")
.setCodes(
"Agr", "Agriculture",
"Eco", "Economics",
"Edu", "Education",
"Geo", "Geography and topography",
"His", "History and archaeology",
"HoM", "Household management",
"Jur", "Jurisprudence",
"Med", "Medicine",
"Phi", "Philosophy",
"Pol", "Politics",
"Psy", "Psychology",
"Rec", "Recreation",
"Rel", "Religion",
"Sci", "Science",
"UsA", "Useful arts"
)
.setMqTag("general");

getSubfield("b")
.setCodes("L", "L")
.setMqTag("linguistics");

getSubfield("c")
.setCodes("A", "A")
.setMqTag("visualArtsAndArchitecture");

getSubfield("e")
.setCodes("B", "B")
.setMqTag("publishing");

getSubfield("f")
.setCodes("W", "W")
.setMqTag("womenWriters");

getSubfield("g")
.setCodes("C", "C")
.setMqTag("children");

getSubfield("i")
.setCodes(
"AS", "Anthropology & society",
"CE", "Economics & commerce",
"GS", "Geography",
"HS", "History of China",
"LA", "Literature & the arts",
"PG", "Politics & government",
"RP", "Religion and philosophy"
)
.setMqTag("onChina");

getSubfield("p")
.setValidator(new RegexValidator("^(x|\\d\\((\\d{2}/\\d{2}|\\d{2}-\\d{2})\\))$"))
.setMqTag("year");
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package de.gwdg.metadataqa.marc.definition.tags.bltags;

import org.junit.Test;

public class Tag599Test extends BLTagTest {

public Tag599Test() {
super(Tag599.getInstance());
}

@Test
public void testValidFields() {
validField("a", "Imperfect: wanting pt. 2 (N.T.), item contains {206} plates only; " +
"plate {13} of pt. 1 is mutilated, top right hand corner is missing.");
}

@Test
public void testInvalidFields() {
invalidField("c", "NLS copy dimensions: 16 cm.");
invalidField("1", "a", "NLS copy dimensions: 16 cm.");
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package de.gwdg.metadataqa.marc.definition.tags.bltags;

import de.gwdg.metadataqa.marc.DataField;
import org.junit.Test;

public class Tag690Test extends BLTagTest {

public Tag690Test() {
super(Tag690.getInstance());
}

@Test
public void testValidFields() {
validField(new DataField(tag, "7", " ", "a", "Management and Business Studies", "2", "blcoll"));
validField(new DataField(tag, "7", " ", "a", "Social Welfare", "2", "blcoll"));
}

@Test
public void testInvalidFields() {
invalidField("c", "NLS copy dimensions: 16 cm.");
invalidField("1", "a", "NLS copy dimensions: 16 cm.");
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package de.gwdg.metadataqa.marc.definition.tags.bltags;

import de.gwdg.metadataqa.marc.DataField;
import org.junit.Test;

public class Tag692Test extends BLTagTest {

public Tag692Test() {
super(Tag692.getInstance());
}

@Test
public void testValidFields() {
validField(new DataField(tag, " ", " ", "a", "Rec", "p", "x"));
validField(new DataField(tag, " ", " ", "a", "Rec", "p", "2(88/89)"));
validField(new DataField(tag, " ", " ", "a", "Rec", "p", "2(88-89)"));
}

@Test
public void testInvalidFields() {
invalidField("p", "x(88-89)");
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ public void testListTag() {
List<Class<? extends DataFieldDefinition>> tags = MarcTagLister.listTags();
assertNotNull(tags);
assertNotEquals(0, tags.size());
assertEquals(337, tags.size());
assertEquals(338, tags.size());
assertEquals("Tag010", tags.get(0).getSimpleName());
Map<String, Integer> versionCounter = new HashMap<>();
Map<MarcVersion, Integer> versionCounter2 = new HashMap<>();
Expand Down

0 comments on commit d73bb0a

Please sign in to comment.