public BePressArticleIterator( ArchivalUnit au, SubTreeArticleIterator.Spec spec, boolean isSection) { super(au, spec); String volumeAsString = au.getConfiguration().get(ConfigParamDescr.VOLUME_NUMBER.getKey()); String journalAbbr = au.getConfiguration().get(ConfigParamDescr.JOURNAL_ABBR.getKey()); if (isSection) { journalAbbr = journalAbbr + "/" + au.getConfiguration().get("journal_section"); } // pick up issue level and lower (make (art)?[0-9]+ optional because a few au's have article // at issue level this.pattern = Pattern.compile( String.format( "/%s/((([^0-9]+/)?(vol)?%s/(iss)?[0-9]+(/(art)?[0-9]+)?)|(vol%s/(?-i:[A-Z])[0-9]+))$", journalAbbr, volumeAsString, volumeAsString), Pattern.CASE_INSENSITIVE); this.TOC_pattern = Pattern.compile( String.format("/%s/([^0-9]+/)?(vol)?%s/(iss)?[0-9]+$", journalAbbr, volumeAsString), Pattern.CASE_INSENSITIVE); }
public class TestEmlsPlugin extends LockssTestCase { private DefinablePlugin plugin; static final String BASE_URL_KEY = ConfigParamDescr.BASE_URL.getKey(); static final String VOL_KEY = ConfigParamDescr.VOLUME_NUMBER.getKey(); public void setUp() throws Exception { super.setUp(); plugin = new DefinablePlugin(); plugin.initPlugin(getMockLockssDaemon(), "org.lockss.plugin.emls.EmlsPlugin"); } public void testGetAuNullConfig() throws ArchivalUnit.ConfigurationException { try { plugin.configureAu(null, null); fail("Didn't throw ArchivalUnit.ConfigurationException"); } catch (ArchivalUnit.ConfigurationException e) { } } private DefinableArchivalUnit makeAuFromProps(Properties props) throws ArchivalUnit.ConfigurationException { Configuration config = ConfigurationUtil.fromProps(props); return (DefinableArchivalUnit) plugin.configureAu(config, null); } public void testGetAuHandlesBadUrl() throws ArchivalUnit.ConfigurationException, MalformedURLException { Properties props = new Properties(); props.setProperty(BASE_URL_KEY, "blah"); props.setProperty(VOL_KEY, "3"); try { DefinableArchivalUnit au = makeAuFromProps(props); fail("Didn't throw InstantiationException when given a bad url"); } catch (ArchivalUnit.ConfigurationException auie) { ConfigParamDescr.InvalidFormatException murle = (ConfigParamDescr.InvalidFormatException) auie.getCause(); assertNotNull(auie.getCause()); } } public void testGetAuConstructsProperAu() throws ArchivalUnit.ConfigurationException, MalformedURLException { Properties props = new Properties(); props.setProperty(BASE_URL_KEY, "http://extra.shu.ac.uk/emls/"); props.setProperty(VOL_KEY, "3"); DefinableArchivalUnit au = makeAuFromProps(props); assertEquals( "Early Modern Literary Studies Plugin, Base URL http://extra.shu.ac.uk/emls/, Volume 3", au.getName()); } public void testGetPluginId() { assertEquals("org.lockss.plugin.emls.EmlsPlugin", plugin.getPluginId()); } public void testGetAuConfigProperties() { for (Iterator iter = plugin.getLocalAuConfigDescrs().iterator(); iter.hasNext(); ) { ConfigParamDescr desc = (ConfigParamDescr) iter.next(); if (desc.equals(ConfigParamDescr.BASE_URL)) { continue; } if (desc.equals(ConfigParamDescr.VOLUME_NUMBER)) { continue; } if ("issues".equals(desc.getKey())) { assertEquals(ConfigParamDescr.TYPE_SET, desc.getType()); assertFalse(desc.isDefinitional()); continue; } fail("Unexpected config param: " + desc.getKey()); } } }