use of cz.mzk.recordmanager.server.dc.DublinCoreRecord in project RecordManager2 by moravianlibrary.
the class KrameriusFulltextProcessor method process.
@Override
public HarvestedRecord process(HarvestedRecord item) throws Exception {
logger.debug("Processing Harvested Record: " + item.toString() + " uniqueId: " + item.getUniqueId());
String policy;
String model;
// read complete HarvestedRecord using DAO
HarvestedRecord rec = recordDao.findByIdAndHarvestConfiguration(item.getUniqueId().getRecordId(), confId);
InputStream is = new ByteArrayInputStream(rec.getRawRecord());
// get Kramerius policy from record
try {
DublinCoreRecord dcRecord = parser.parseRecord(is);
MetadataDublinCoreRecord mdrc = new MetadataDublinCoreRecord(dcRecord);
policy = mdrc.getPolicyKramerius();
model = mdrc.getModelKramerius();
} catch (InvalidDcException e) {
logger.warn("InvalidDcException for record with id:" + item.getUniqueId());
logger.warn(e.getMessage());
// doesn't do anything, just returns rec from DAO and writes a message into log
return rec;
}
// modify read HarvestedRecord only if following condition is fulfilled
if (policy.equals("public") || downloadPrivateFulltexts) {
logger.debug("Processor: privacy condition fulfilled, reading pages");
String rootUuid = rec.getUniqueId().getRecordId();
List<FulltextKramerius> pages;
if (model.equals("periodical")) {
logger.info("Using (periodical) fultexter \"for root\" for uuid " + rootUuid + ".");
pages = fulltexter.getFulltextForRoot(rootUuid);
} else {
logger.info("Using (monograph/default) fultexter \"for parent\" for uuid " + rootUuid + ".");
pages = fulltexter.getFulltextObjects(rootUuid);
}
// if we got empty list in pages => do nothing, return original record
if (pages.isEmpty()) {
return rec;
}
// delete old FulltextKramerius from database before adding new ones
fmDao.deleteFulltext(rec.getId());
rec.setFulltextKramerius(pages);
} else {
logger.debug("Processor: privacy condition is NOT fulfilled, skipping record");
}
return rec;
}
use of cz.mzk.recordmanager.server.dc.DublinCoreRecord in project RecordManager2 by moravianlibrary.
the class IdentifiersDublinCoreRecordFunctionsTest method getISBNs.
@Test
public void getISBNs() {
DublinCoreRecord record = new DublinCoreRecordImpl();
record.addIdentifier("ISBN:0385424728");
DublinCoreFunctionContext dcContext = new DublinCoreFunctionContext(record);
List<String> isbns = functions.getISBNs(dcContext);
Assert.assertFalse(isbns.isEmpty());
Assert.assertEquals(isbns.get(0), "0385424728");
}
use of cz.mzk.recordmanager.server.dc.DublinCoreRecord in project RecordManager2 by moravianlibrary.
the class IdentifiersDublinCoreRecordFunctions method getISBNs.
public List<String> getISBNs(DublinCoreFunctionContext dcContext) {
List<String> isbns = new ArrayList<String>();
DublinCoreRecord record = dcContext.record();
for (String ident : record.getIdentifiers()) {
Matcher matcher = ISBN_PATTERN.matcher(ident);
if (matcher.matches()) {
isbns.add(matcher.group(1));
}
}
return isbns;
}
use of cz.mzk.recordmanager.server.dc.DublinCoreRecord in project RecordManager2 by moravianlibrary.
the class DublinCoreScriptFactoryTest method test.
@Test
public void test() {
InputStream is1 = getClass().getResourceAsStream("/groovy/BaseDublinCore.groovy");
MappingScript<DublinCoreFunctionContext> script = factory.create(is1);
DublinCoreRecord record = new DublinCoreRecordImpl();
record.addTitle("test");
DublinCoreFunctionContext dcContext = new DublinCoreFunctionContext(record);
Map<String, Object> entries = script.parse(dcContext);
Assert.assertEquals(entries.size(), 1);
Assert.assertEquals(entries.get("title"), "test");
}
Aggregations