/* * Copyright (C) 2014 Jan Pokorsky * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package cz.cas.lib.proarc.urnnbn; import cz.cas.lib.proarc.mix.MixType; import cz.cas.lib.proarc.mods.ModsDefinition; import cz.cas.lib.proarc.urnnbn.model.registration.DigitalDocument; import cz.cas.lib.proarc.urnnbn.model.registration.Import; import cz.cas.lib.proarc.urnnbn.model.registration.Monograph; import cz.cas.lib.proarc.urnnbn.model.registration.MonographVolume; import cz.cas.lib.proarc.urnnbn.model.registration.OriginatorTypeType; import cz.cas.lib.proarc.urnnbn.model.registration.OtherEntity; import cz.cas.lib.proarc.urnnbn.model.registration.PeriodicalIssue; import cz.cas.lib.proarc.urnnbn.model.registration.PeriodicalIssue.TitleInfo; import cz.cas.lib.proarc.urnnbn.model.registration.PrimaryOriginator; import cz.cas.lib.proarc.urnnbn.model.registration.Publication; import cz.cas.lib.proarc.urnnbn.model.registration.TechnicalMetadata; import java.math.BigInteger; import javax.xml.bind.JAXB; import org.junit.After; import org.junit.AfterClass; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; import static org.junit.Assert.*; /** * * @author Jan Pokorsky */ public class NdkEntityFactoryTest { private NdkEntityFactory factory; public NdkEntityFactoryTest() { } @BeforeClass public static void setUpClass() { } @AfterClass public static void tearDownClass() { } @Before public void setUp() { factory = new NdkEntityFactory(); } @After public void tearDown() { } @Test public void testCreatePeriodicalIssueImport() throws Exception { ModsDefinition periodicalMods = mods("registration/ndkPeriodical.xml"); ModsDefinition periodicalIssueMods = mods("registration/ndkPeriodicalIssue.xml"); ModsDefinition periodicalVolumeMods = mods("registration/ndkPeriodicalVolume.xml"); MixType mix = mix("registration/mix.xml"); Import imp = factory.createPeriodicalIssueImport( periodicalMods, periodicalVolumeMods, periodicalIssueMods, mix, null); assertNotNull(imp); PeriodicalIssue pi = imp.getPeriodicalIssue(); assertNotNull("PeriodicalIssue", pi); assertEquals("ccnb", "cnb002372844", pi.getCcnb()); assertNull("issn", pi.getIssn()); assertNull("otherOriginator", pi.getOtherOriginator()); PrimaryOriginator primaryOriginator = pi.getPrimaryOriginator(); assertNotNull("primaryOriginator", primaryOriginator); assertEquals("primaryOriginator.type", OriginatorTypeType.CORPORATION, primaryOriginator.getType()); assertEquals("primaryOriginator.value", "Okresní pedagogické středisko Hradec Králové", primaryOriginator.getValue()); Publication pub = pi.getPublication(); assertNotNull("publication", pub); assertEquals("place", "Hradec Králové", pub.getPlace()); assertEquals("publisher", "Okresní pedagogické středisko", pub.getPublisher()); assertEquals("1967", pub.getYear()); TitleInfo titleInfo = pi.getTitleInfo(); assertNotNull(titleInfo); assertEquals("Škola", titleInfo.getPeriodicalTitle()); assertEquals("1", titleInfo.getVolumeTitle()); assertEquals("1-2", titleInfo.getIssueTitle()); DigitalDocument dd = imp.getDigitalDocument(); assertNotNull("DigitalDocument", dd); assertEquals("uuid", dd.getRegistrarScopeIdentifiers().getId().get(0).getType()); assertEquals("18ac200c-7e1a-4367-a089-71077231da1c", dd.getRegistrarScopeIdentifiers().getId().get(0).getValue()); TechnicalMetadata tm = dd.getTechnicalMetadata(); assertNotNull(tm); // assertEquals(new Double("0"), tm.getCompression().getRatio()); assertEquals("Unknown", tm.getCompression().getValue()); assertEquals("image/jp2", tm.getFormat().getValue()); assertEquals("1.0", tm.getFormat().getVersion()); assertEquals(new BigInteger("2721"), tm.getPictureSize().getHeight()); assertEquals(new BigInteger("1985"), tm.getPictureSize().getWidth()); assertEquals(new BigInteger("118"), tm.getResolution().getHorizontal()); assertEquals(new BigInteger("118"), tm.getResolution().getVertical()); // JAXB.marshal(imp, new StreamResult(System.out)); } @Test public void testCreatePeriodicalIssueImport_Supplement() throws Exception { ModsDefinition periodicalMods = mods("registration/ndkPeriodical2.xml"); ModsDefinition periodicalIssueMods = mods("registration/ndkPeriodical2VolumeSupplement.xml"); ModsDefinition periodicalVolumeMods = mods("registration/ndkPeriodical2Volume.xml"); MixType mix = mix("registration/mix.xml"); Import imp = factory.createPeriodicalIssueImport( periodicalMods, periodicalVolumeMods, periodicalIssueMods, mix, null); assertNotNull(imp); PeriodicalIssue pi = imp.getPeriodicalIssue(); assertNotNull(pi); assertEquals("ccnb", "cnb000356910", pi.getCcnb()); assertEquals("issn", "0862-6545", pi.getIssn()); assertNull("otherOriginator", pi.getOtherOriginator()); TitleInfo titleInfo = pi.getTitleInfo(); assertNotNull(titleInfo); assertEquals("Respekt", titleInfo.getPeriodicalTitle()); assertEquals("10", titleInfo.getVolumeTitle()); assertEquals("Bibliografický přehled článků za r. 1999", titleInfo.getIssueTitle()); assertNotNull(imp.getDigitalDocument()); } @Test public void testCreateMonographImport() throws Exception { ModsDefinition monographMods = mods("registration/ndkMonograph.xml"); MixType mix = mix("registration/mix.xml"); Import imp = factory.createMonographImport(monographMods, mix, null); assertNotNull(imp); Monograph mv = imp.getMonograph(); assertNotNull(mv); assertEquals("cnb000389898", mv.getCcnb()); assertNull(mv.getIsbn()); assertEquals("Průvodce českým rájem", mv.getTitleInfo().getTitle()); assertEquals("stopadesát výletů z Turnova ; [Jičín a okolí]", mv.getTitleInfo().getSubTitle()); assertNotNull(imp.getDigitalDocument()); } @Test public void testCreateMultipartMonographImport() throws Exception { ModsDefinition titleMods = mods("registration/ndkMultipartTitle.xml"); ModsDefinition volumeMods = mods("registration/ndkMultipartVolume.xml"); MixType mix = mix("registration/mix.xml"); Import imp = factory.createMultipartMonographImport(titleMods, volumeMods, mix, null); assertNotNull(imp); MonographVolume mv = imp.getMonographVolume(); assertNotNull(mv); assertEquals("cnb000963966", mv.getCcnb()); assertEquals("80-7201-204-5 (1. díl)", mv.getIsbn()); assertEquals("1", mv.getTitleInfo().getVolumeTitle()); assertEquals("Průvodce judikaturou Evropského soudního dvora", mv.getTitleInfo().getMonographTitle()); assertNotNull(imp.getDigitalDocument()); } @Test public void testCreateMultipartMonographImport_Supplement() throws Exception { ModsDefinition titleMods = mods("registration/ndkMultipartTitle2.xml"); ModsDefinition volumeMods = mods("registration/ndkMultipartTitle2Supplement.xml"); MixType mix = mix("registration/mix.xml"); Import imp = factory.createMultipartMonographImport(titleMods, volumeMods, mix, null); assertNotNull(imp); MonographVolume mv = imp.getMonographVolume(); assertNotNull(mv); assertNull(mv.getCcnb()); assertEquals("978-0-19-459881-1 (student's book : brož.)", mv.getIsbn()); assertEquals("Student's book", mv.getTitleInfo().getVolumeTitle()); assertEquals("English file", mv.getTitleInfo().getMonographTitle()); assertNotNull(imp.getDigitalDocument()); } @Test public void testCreateCartographicImport() throws Exception { ModsDefinition titleMods = mods("registration/ndkCartographic.xml"); MixType mix = mix("registration/mix.xml"); Import imp = factory.createCartographicImport(titleMods, mix, null); assertNotNull(imp); OtherEntity entity = imp.getOtherEntity(); assertNotNull(entity); assertEquals("cnb002500216", entity.getCcnb()); assertEquals("cartographic", entity.getDocumentType()); assertEquals("978-80-7324-393-7 (složeno)", entity.getIsbn()); assertEquals("Krkonoše", entity.getTitleInfo().getTitle()); assertEquals("turistická mapa 1:50 000", entity.getTitleInfo().getSubTitle()); assertNotNull(imp.getDigitalDocument()); } @Test public void testCreateSheetMusicImport() throws Exception { ModsDefinition titleMods = mods("registration/ndkSheetMusic.xml"); MixType mix = mix("registration/mix.xml"); Import imp = factory.createSheetMusicImport(titleMods, mix, null); assertNotNull(imp); OtherEntity entity = imp.getOtherEntity(); assertNotNull(entity); assertEquals("cnb002405684", entity.getCcnb()); assertEquals("sheetmusic", entity.getDocumentType()); assertEquals("978-80-7262-933-6 (brož.)", entity.getIsbn()); assertEquals("Xpěvník", entity.getTitleInfo().getTitle()); assertNull(entity.getTitleInfo().getSubTitle()); assertNotNull(imp.getDigitalDocument()); } static ModsDefinition mods(String filename) { return JAXB.unmarshal(NdkEntityFactoryTest.class.getResource(filename), ModsDefinition.class); } static MixType mix(String filename) { return JAXB.unmarshal(NdkEntityFactoryTest.class.getResource(filename), MixType.class); } }