Search in sources :

Example 1 with Ean

use of cz.mzk.recordmanager.server.model.Ean in project RecordManager2 by moravianlibrary.

the class EanUtilsTest method createEanObjectTest.

@Test
public void createEanObjectTest() {
    Ean ean = new Ean();
    ean.setEan(8593026341407L);
    ean.setOrderInRecord(1L);
    ean.setNote("note");
    Assert.assertEquals(Ean.create(8593026341407L, 1L, "note"), ean);
}
Also used : Ean(cz.mzk.recordmanager.server.model.Ean) Test(org.testng.annotations.Test)

Example 2 with Ean

use of cz.mzk.recordmanager.server.model.Ean in project RecordManager2 by moravianlibrary.

the class MarcDSL method getIsmns.

public List<String> getIsmns() {
    List<String> results = new ArrayList<>();
    List<Ean> eans;
    if (results.isEmpty() && (!(eans = metadataRecord.getEANs()).isEmpty()) && metadataRecord.getDetectedFormatList().contains(HarvestedRecordFormatEnum.MUSICAL_SCORES)) {
        for (Ean ean : eans) {
            Long year = metadataRecord.getPublicationYear();
            results.add((year != null && year >= 2008L) ? ean.getEan().toString() : "M" + ean.getEan().toString().substring(4));
        }
    }
    results.addAll(record.getFields("024", field -> field.getIndicator1() == '2', 'a'));
    return results;
}
Also used : java.util(java.util) SubfieldExtractionMethod(cz.mzk.recordmanager.server.marc.SubfieldExtractionMethod) Constants(cz.mzk.recordmanager.server.util.Constants) MetadataRecord(cz.mzk.recordmanager.server.metadata.MetadataRecord) ISBNUtils(cz.mzk.recordmanager.server.util.identifier.ISBNUtils) SolrUtils(cz.mzk.recordmanager.server.util.SolrUtils) Chars(com.google.common.primitives.Chars) BaseDSL(cz.mzk.recordmanager.server.scripting.BaseDSL) IOFormat(cz.mzk.recordmanager.server.export.IOFormat) IOException(java.io.IOException) Collectors(java.util.stream.Collectors) Title(cz.mzk.recordmanager.server.model.Title) Matcher(java.util.regex.Matcher) Subfield(org.marc4j.marc.Subfield) MappingResolver(cz.mzk.recordmanager.server.scripting.MappingResolver) RecordFunction(cz.mzk.recordmanager.server.scripting.function.RecordFunction) DataField(org.marc4j.marc.DataField) Entry(java.util.Map.Entry) Ean(cz.mzk.recordmanager.server.model.Ean) Pattern(java.util.regex.Pattern) HarvestedRecordFormatEnum(cz.mzk.recordmanager.server.model.HarvestedRecordFormat.HarvestedRecordFormatEnum) MarcRecord(cz.mzk.recordmanager.server.marc.MarcRecord) StopWordsResolver(cz.mzk.recordmanager.server.scripting.StopWordsResolver) ISSNUtils(cz.mzk.recordmanager.server.util.identifier.ISSNUtils) Ean(cz.mzk.recordmanager.server.model.Ean)

Example 3 with Ean

use of cz.mzk.recordmanager.server.model.Ean in project RecordManager2 by moravianlibrary.

the class HashingDedupKeyParser method computeHashValue.

/**
 * Compute SHA1 hash of deduplication keys from given {@link DedupKeysencapsulator}
 * @param encapsulator
 * @return
 */
protected String computeHashValue(final DedupKeysencapsulator encapsulator) {
    try {
        // change of hash function also requires changes in database row
        MessageDigest md = MessageDigest.getInstance("SHA-1");
        for (Title t : encapsulator.getTitles()) {
            md.update(t.getTitleStr().getBytes("utf-8"));
        }
        for (Isbn i : encapsulator.getIsbns()) {
            md.update(i.getIsbn().byteValue());
        }
        for (Issn i : encapsulator.getIssns()) {
            md.update(i.getIssn().getBytes());
        }
        for (Ismn i : encapsulator.getIsmns()) {
            md.update(i.getIsmn().byteValue());
        }
        for (Cnb c : encapsulator.getCnbs()) {
            md.update(c.getCnb().getBytes());
        }
        if (encapsulator.getPublicationYear() != null) {
            md.update(encapsulator.getPublicationYear().byteValue());
        }
        for (HarvestedRecordFormat hrfe : encapsulator.getFormats()) {
            md.update(hrfe.getName().getBytes());
        }
        if (encapsulator.getAuthorAuthKey() != null) {
            md.update(encapsulator.getAuthorAuthKey().getBytes());
        }
        if (encapsulator.getAuthorString() != null) {
            md.update(encapsulator.getAuthorString().getBytes());
        }
        if (encapsulator.getScale() != null) {
            md.update(encapsulator.getScale().byteValue());
        }
        if (encapsulator.getUuid() != null) {
            md.update(encapsulator.getUuid().getBytes());
        }
        if (encapsulator.getPages() != null) {
            md.update(encapsulator.getPages().byteValue());
        }
        if (encapsulator.getIssnSeries() != null) {
            md.update(encapsulator.getIssnSeries().getBytes());
        }
        if (encapsulator.getIssnSeriesOrder() != null) {
            md.update(encapsulator.getIssnSeriesOrder().getBytes());
        }
        for (Oclc o : encapsulator.getOclcs()) {
            md.update(o.getOclcStr().getBytes());
        }
        for (String l : encapsulator.getLanguages()) {
            md.update(l.getBytes());
        }
        if (encapsulator.getClusterId() != null) {
            md.update(encapsulator.getClusterId().getBytes());
        }
        if (encapsulator.getRaw001Id() != null) {
            md.update(encapsulator.getRaw001Id().getBytes());
        }
        if (encapsulator.getSourceInfoT() != null) {
            md.update(encapsulator.getSourceInfoT().getBytes());
        }
        if (encapsulator.getSourceInfoX() != null) {
            md.update(encapsulator.getSourceInfoX().getBytes());
        }
        if (encapsulator.getSourceInfoG() != null) {
            md.update(encapsulator.getSourceInfoG().getBytes());
        }
        for (Ean ean : encapsulator.getEans()) {
            md.update(ean.getEan().byteValue());
        }
        for (PublisherNumber publisherNumber : encapsulator.getPublisherNumbers()) {
            md.update(publisherNumber.getPublisherNumber().getBytes("utf-8"));
        }
        for (ShortTitle st : encapsulator.getShortTitles()) {
            md.update(st.getShortTitleStr().getBytes("utf-8"));
        }
        byte[] hash = md.digest();
        StringBuilder sb = new StringBuilder();
        for (byte b : hash) {
            sb.append(String.format("%02x", b));
        }
        return sb.toString();
    } catch (NoSuchAlgorithmException e) {
    // should never be thrown, SHA-1 is required by Java specification
    } catch (UnsupportedEncodingException uee) {
        throw new DedupKeyParserException("Uncoding problems in hash computation", uee);
    }
    return "";
}
Also used : Issn(cz.mzk.recordmanager.server.model.Issn) Title(cz.mzk.recordmanager.server.model.Title) ShortTitle(cz.mzk.recordmanager.server.model.ShortTitle) Ismn(cz.mzk.recordmanager.server.model.Ismn) UnsupportedEncodingException(java.io.UnsupportedEncodingException) NoSuchAlgorithmException(java.security.NoSuchAlgorithmException) Oclc(cz.mzk.recordmanager.server.model.Oclc) Ean(cz.mzk.recordmanager.server.model.Ean) Isbn(cz.mzk.recordmanager.server.model.Isbn) ShortTitle(cz.mzk.recordmanager.server.model.ShortTitle) Cnb(cz.mzk.recordmanager.server.model.Cnb) HarvestedRecordFormat(cz.mzk.recordmanager.server.model.HarvestedRecordFormat) MessageDigest(java.security.MessageDigest) PublisherNumber(cz.mzk.recordmanager.server.model.PublisherNumber)

Example 4 with Ean

use of cz.mzk.recordmanager.server.model.Ean in project RecordManager2 by moravianlibrary.

the class MetadataMarcRecord method getEANs.

@Override
public List<Ean> getEANs() {
    List<Ean> results = new ArrayList<>();
    Long eanCounter = 0L;
    Ean ean;
    for (DataField df : underlayingMarc.getDataFields("024")) {
        try {
            ean = EANUtils.createEan(df);
        } catch (NoDataException nde) {
            continue;
        } catch (NumberFormatException nfe) {
            logger.info(String.format("Invalid EAN: %s", nfe.getMessage()));
            continue;
        }
        ean.setOrderInRecord(++eanCounter);
        results.add(ean);
    }
    return results;
}
Also used : Ean(cz.mzk.recordmanager.server.model.Ean) DataField(org.marc4j.marc.DataField) ArrayList(java.util.ArrayList) NoDataException(cz.mzk.recordmanager.server.util.identifier.NoDataException)

Example 5 with Ean

use of cz.mzk.recordmanager.server.model.Ean in project RecordManager2 by moravianlibrary.

the class HarvestedRecordDAOHibernate method dropDedupKeys.

@Override
public void dropDedupKeys(HarvestedRecord hr) {
    if (hr == null || hr.getId() == null) {
        return;
    }
    Session session = sessionFactory.getCurrentSession();
    // don't delete keys for not managed entities
    if (!session.contains(hr)) {
        System.out.println("NOT CONT");
        return;
    }
    hr.setAuthorAuthKey(null);
    hr.setAuthorString(null);
    hr.setClusterId(null);
    hr.setPages(null);
    hr.setPublicationYear(null);
    hr.setRaw001Id(null);
    hr.setScale(null);
    hr.setUuid(null);
    hr.setSourceInfoT(null);
    hr.setSourceInfoX(null);
    hr.setSourceInfoG(null);
    hr.setIssnSeries(null);
    hr.setIssnSeriesOrder(null);
    hr.setWeight(null);
    List<Title> titles = hr.getTitles();
    hr.setTitles(new ArrayList<>());
    for (Title t : titles) {
        session.delete(t);
    }
    List<ShortTitle> shortTitles = hr.getShortTitles();
    hr.setShortTitles(new ArrayList<>());
    for (ShortTitle st : shortTitles) {
        session.delete(st);
    }
    List<Isbn> isbns = hr.getIsbns();
    hr.setIsbns(new ArrayList<>());
    for (Isbn i : isbns) {
        session.delete(i);
    }
    List<Issn> issns = hr.getIssns();
    hr.setIssns(new ArrayList<>());
    for (Issn i : issns) {
        session.delete(i);
    }
    List<Ismn> ismns = hr.getIsmns();
    hr.setIsmns(new ArrayList<>());
    for (Ismn i : ismns) {
        session.delete(i);
    }
    List<Oclc> oclcs = hr.getOclcs();
    hr.setOclcs(new ArrayList<>());
    for (Oclc o : oclcs) {
        session.delete(o);
    }
    List<Cnb> cnbs = hr.getCnb();
    hr.setCnb(new ArrayList<>());
    for (Cnb c : cnbs) {
        session.delete(c);
    }
    List<Ean> eans = hr.getEans();
    hr.setEans(new ArrayList<>());
    for (Ean ean : eans) {
        session.delete(ean);
    }
    List<HarvestedRecordFormat> physicalFormats = hr.getPhysicalFormats();
    hr.getPhysicalFormats().clear();
    for (HarvestedRecordFormat hrf : physicalFormats) {
        session.delete(hrf);
    }
    hr.setLanguages(new ArrayList<>());
    session.update(hr);
    session.flush();
}
Also used : Issn(cz.mzk.recordmanager.server.model.Issn) Title(cz.mzk.recordmanager.server.model.Title) ShortTitle(cz.mzk.recordmanager.server.model.ShortTitle) Ismn(cz.mzk.recordmanager.server.model.Ismn) Oclc(cz.mzk.recordmanager.server.model.Oclc) Ean(cz.mzk.recordmanager.server.model.Ean) ShortTitle(cz.mzk.recordmanager.server.model.ShortTitle) Isbn(cz.mzk.recordmanager.server.model.Isbn) Cnb(cz.mzk.recordmanager.server.model.Cnb) HarvestedRecordFormat(cz.mzk.recordmanager.server.model.HarvestedRecordFormat) Session(org.hibernate.Session)

Aggregations

Ean (cz.mzk.recordmanager.server.model.Ean)5 Title (cz.mzk.recordmanager.server.model.Title)3 Cnb (cz.mzk.recordmanager.server.model.Cnb)2 HarvestedRecordFormat (cz.mzk.recordmanager.server.model.HarvestedRecordFormat)2 Isbn (cz.mzk.recordmanager.server.model.Isbn)2 Ismn (cz.mzk.recordmanager.server.model.Ismn)2 Issn (cz.mzk.recordmanager.server.model.Issn)2 Oclc (cz.mzk.recordmanager.server.model.Oclc)2 ShortTitle (cz.mzk.recordmanager.server.model.ShortTitle)2 DataField (org.marc4j.marc.DataField)2 Chars (com.google.common.primitives.Chars)1 IOFormat (cz.mzk.recordmanager.server.export.IOFormat)1 MarcRecord (cz.mzk.recordmanager.server.marc.MarcRecord)1 SubfieldExtractionMethod (cz.mzk.recordmanager.server.marc.SubfieldExtractionMethod)1 MetadataRecord (cz.mzk.recordmanager.server.metadata.MetadataRecord)1 HarvestedRecordFormatEnum (cz.mzk.recordmanager.server.model.HarvestedRecordFormat.HarvestedRecordFormatEnum)1 PublisherNumber (cz.mzk.recordmanager.server.model.PublisherNumber)1 BaseDSL (cz.mzk.recordmanager.server.scripting.BaseDSL)1 MappingResolver (cz.mzk.recordmanager.server.scripting.MappingResolver)1 StopWordsResolver (cz.mzk.recordmanager.server.scripting.StopWordsResolver)1