public void TestConstructor() { var df = factory.NewDataField("245", '1', '0'); Assert.AreEqual("245", df.Tag); Assert.AreEqual('1', df.Indicator1); Assert.AreEqual('0', df.Indicator2); }
private IDataField ParseDataField(String tag, byte[] field) { using (var bais = new InputStream(field)) { char ind1 = (char)bais.ReadByte(); char ind2 = (char)bais.ReadByte(); var dataField = factory.NewDataField(); dataField.Tag = tag; dataField.Indicator1 = ind1; dataField.Indicator2 = ind2; int code; int size; int readByte; byte[] data; ISubfield subfield; while (true) { readByte = bais.ReadByte(); if (readByte < 0) { break; } switch (readByte) { case Constants.US: code = bais.ReadByte(); if (code < 0) { throw new IOException("unexpected end of data field"); } if (code == Constants.FT) { break; } size = GetSubfieldLength(bais); data = new byte[size]; bais.Read(data); subfield = factory.NewSubfield(); subfield.Code = (char)code; subfield.Data = GetDataAsString(data); dataField.AddSubfield(subfield); break; case Constants.FT: break; } } return(dataField); } }
public void TestWriteOfRecordWithIndicatorlessSubfield() { var record = StaticTestRecords.GetSummerlandRecord(); MarcFactory factory = StaticTestRecords.getFactory(); var badField = factory.NewDataField(); badField.Tag = "911"; badField.AddSubfield(factory.NewSubfield('a', "HAZMARC - INDICATORLESS FIELD DETECTED - MOPP LEVEL 4")); record.AddVariableField(badField); using (var output = new MemoryStream()) { using (MarcXmlWriter writer = new MarcXmlWriter(output, true)) { writer.Write(record); } } }
private void LoadRecord(XElement recordElement, ref IRecord rec) { foreach (var elem in recordElement.Elements()) { switch (elem.Name.LocalName) { case LEADER: rec.Leader = factory.NewLeader(elem.Value); break; case CONTROLFIELD: rec.AddVariableField( factory.NewControlField( elem.Attribute(TAG_ATTR).Value, elem.Value)); break; case DATAFIELD: var ind1 = elem.Attribute(IND_1_ATTR) != null?elem.Attribute(IND_1_ATTR).Value : " "; var ind2 = elem.Attribute(IND_2_ATTR) != null?elem.Attribute(IND_2_ATTR).Value : " "; dataField = factory.NewDataField( elem.Attribute(TAG_ATTR).Value, string.IsNullOrEmpty(ind1) ? ' ' : ind1[0], string.IsNullOrEmpty(ind2) ? ' ' : ind2[0]); foreach (var subField in elem.Elements(XName.Get(SUBFIELD, Constants.MARCXML_NS_URI)).Select(a => factory.NewSubfield( a.Attribute(CODE_ATTR).Value[0], a.Value))) { dataField.AddSubfield(subField); } rec.AddVariableField(dataField); break; default: break; } } }
private static IRecord MakeSummerlandRecord() { var sumland = factory.NewRecord("00714cam a2200205 a 4500"); sumland.AddVariableField(factory.NewControlField("001", "12883376")); sumland.AddVariableField(factory.NewControlField("005", "20030616111422.0")); sumland.AddVariableField(factory.NewControlField("008", "020805s2002 nyu j 000 1 eng ")); sumland.AddVariableField(factory.NewDataField("020", ' ', ' ', "a", "0786808772")); sumland.AddVariableField(factory.NewDataField("020", ' ', ' ', "a", "0786816155 (pbk.)")); sumland.AddVariableField(factory.NewDataField("040", ' ', ' ', "a", "DLC", "c", "DLC", "d", "DLC")); sumland.AddVariableField(factory.NewDataField("100", '1', ' ', "a", "Chabon, Michael.")); sumland.AddVariableField(factory.NewDataField("245", '1', '0', "a", "Summerland /", "c", "Michael Chabon.")); sumland.AddVariableField(factory.NewDataField("250", ' ', ' ', "a", "1st ed.")); sumland.AddVariableField(factory.NewDataField("260", ' ', ' ', "a", "New York :", "b", "Miramax Books/Hyperion Books for Children,", "c", "c2002.")); sumland.AddVariableField(factory.NewDataField("300", ' ', ' ', "a", "500 p. ;", "c", "22 cm.")); sumland.AddVariableField(factory.NewDataField("520", ' ', ' ', "a", "Ethan Feld, the worst baseball player in the history of the game, finds himself recruited by a 100-year-old scout to help a band of fairies triumph over an ancient enemy.")); sumland.AddVariableField(factory.NewDataField("650", ' ', '1', "a", "Fantasy.")); sumland.AddVariableField(factory.NewDataField("650", ' ', '1', "a", "Baseball", "v", "Fiction.")); sumland.AddVariableField(factory.NewDataField("650", ' ', '1', "a", "Magic", "v", "Fiction.")); return(sumland); }
static StaticTestRecords() { factory = MarcFactory.Instance; chabon[0] = factory.NewRecord("00759cam a2200229 a 4500"); chabon[0].AddVariableField(factory.NewControlField("001", "11939876")); chabon[0].AddVariableField(factory.NewControlField("005", "20041229190604.0")); chabon[0].AddVariableField(factory.NewControlField("008", "000313s2000 nyu 000 1 eng ")); chabon[0].AddVariableField(factory.NewDataField("020", ' ', ' ', "a", "0679450041 (acid-free paper)")); chabon[0].AddVariableField(factory.NewDataField("040", ' ', ' ', "a", "DLC", "c", "DLC", "d", "DLC")); chabon[0].AddVariableField(factory.NewDataField("100", '1', ' ', "a", "Chabon, Michael.")); chabon[0].AddVariableField(factory.NewDataField("245", '1', '4', "a", "The amazing adventures of Kavalier and Clay :", "b", "a novel /", "c", "Michael Chabon.")); chabon[0].AddVariableField(factory.NewDataField("260", ' ', ' ', "a", "New York :", "b", "Random House,", "c", "c2000.")); chabon[0].AddVariableField(factory.NewDataField("300", ' ', ' ', "a", "639 p. ;", "c", "25 cm.")); chabon[0].AddVariableField(factory.NewDataField("650", ' ', '0', "a", "Comic books, strips, etc.", "x", "Authorship", "v", "Fiction.")); chabon[0].AddVariableField(factory.NewDataField("650", ' ', '0', "a", "Heroes in mass media", "v", "Fiction.")); chabon[0].AddVariableField(factory.NewDataField("650", ' ', '0', "a", "Czech Americans", "v", "Fiction.")); chabon[0].AddVariableField(factory.NewDataField("651", ' ', '0', "a", "New York (N.Y.)", "v", "Fiction.")); chabon[0].AddVariableField(factory.NewDataField("650", ' ', '0', "a", "Young men", "v", "Fiction.")); chabon[0].AddVariableField(factory.NewDataField("650", ' ', '0', "a", "Cartoonists", "v", "Fiction.")); chabon[0].AddVariableField(factory.NewDataField("655", ' ', '7', "a", "Humorous stories.", "2", "gsafd")); chabon[0].AddVariableField(factory.NewDataField("655", ' ', '7', "a", "Bildungsromane.", "2", "gsafd")); chabon[1] = factory.NewRecord("00714cam a2200205 a 4500"); chabon[1].AddVariableField(factory.NewControlField("001", "12883376")); chabon[1].AddVariableField(factory.NewControlField("005", "20030616111422.0")); chabon[1].AddVariableField(factory.NewControlField("008", "020805s2002 nyu j 000 1 eng ")); chabon[1].AddVariableField(factory.NewDataField("020", ' ', ' ', "a", "0786808772")); chabon[1].AddVariableField(factory.NewDataField("020", ' ', ' ', "a", "0786816155 (pbk.)")); chabon[1].AddVariableField(factory.NewDataField("040", ' ', ' ', "a", "DLC", "c", "DLC", "d", "DLC")); chabon[1].AddVariableField(factory.NewDataField("100", '1', ' ', "a", "Chabon, Michael.")); chabon[1].AddVariableField(factory.NewDataField("245", '1', '0', "a", "Summerland /", "c", "Michael Chabon.")); chabon[1].AddVariableField(factory.NewDataField("250", ' ', ' ', "a", "1st ed.")); chabon[1].AddVariableField(factory.NewDataField("260", ' ', ' ', "a", "New York :", "b", "Miramax Books/Hyperion Books for Children,", "c", "c2002.")); chabon[1].AddVariableField(factory.NewDataField("300", ' ', ' ', "a", "500 p. ;", "c", "22 cm.")); chabon[1].AddVariableField(factory.NewDataField("520", ' ', ' ', "a", "Ethan Feld, the worst baseball player in the history of the game, finds himself recruited by a 100-year-old scout to help a band of fairies triumph over an ancient enemy.")); chabon[1].AddVariableField(factory.NewDataField("650", ' ', '1', "a", "Fantasy.")); chabon[1].AddVariableField(factory.NewDataField("650", ' ', '1', "a", "Baseball", "v", "Fiction.")); chabon[1].AddVariableField(factory.NewDataField("650", ' ', '1', "a", "Magic", "v", "Fiction.")); summerland[0] = MakeSummerlandRecord(); }