Search in sources :

Example 1 with Oclc

use of cz.mzk.recordmanager.server.model.Oclc 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 2 with Oclc

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

the class MetadataMarcRecord method getOclcs.

@Override
public List<Oclc> getOclcs() {
    List<Oclc> result = new ArrayList<>();
    if (getLanguages().contains("cze"))
        return result;
    for (DataField df : underlayingMarc.getDataFields("035")) {
        Subfield subA = df.getSubfield('a');
        if (subA == null) {
            continue;
        }
        Matcher matcher = OCLC_PATTERN.matcher(subA.getData());
        if (matcher.matches() && matcher.groupCount() >= 2) {
            Oclc oclc = new Oclc();
            oclc.setOclcStr(matcher.group(2));
            result.add(oclc);
        }
    }
    return result;
}
Also used : DataField(org.marc4j.marc.DataField) Matcher(java.util.regex.Matcher) ArrayList(java.util.ArrayList) Oclc(cz.mzk.recordmanager.server.model.Oclc) Subfield(org.marc4j.marc.Subfield)

Example 3 with Oclc

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

the class MetadataDublinCoreRecord method getOclcs.

@Override
public List<Oclc> getOclcs() {
    List<String> identifiers = dcRecord.getIdentifiers();
    List<Oclc> oclcs = new ArrayList<>();
    if (getLanguages().contains("cze"))
        return oclcs;
    Matcher matcher;
    for (String f : identifiers) {
        matcher = DC_OCLC_PATTERN.matcher(f);
        if (matcher.find()) {
            Oclc oclc = new Oclc();
            oclc.setOclcStr(matcher.group(1).trim());
            oclcs.add(oclc);
        }
    }
    return oclcs;
}
Also used : Matcher(java.util.regex.Matcher) ArrayList(java.util.ArrayList) Oclc(cz.mzk.recordmanager.server.model.Oclc)

Example 4 with Oclc

use of cz.mzk.recordmanager.server.model.Oclc 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

Oclc (cz.mzk.recordmanager.server.model.Oclc)4 Cnb (cz.mzk.recordmanager.server.model.Cnb)2 Ean (cz.mzk.recordmanager.server.model.Ean)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 ShortTitle (cz.mzk.recordmanager.server.model.ShortTitle)2 Title (cz.mzk.recordmanager.server.model.Title)2 ArrayList (java.util.ArrayList)2 Matcher (java.util.regex.Matcher)2 PublisherNumber (cz.mzk.recordmanager.server.model.PublisherNumber)1 UnsupportedEncodingException (java.io.UnsupportedEncodingException)1 MessageDigest (java.security.MessageDigest)1 NoSuchAlgorithmException (java.security.NoSuchAlgorithmException)1 Session (org.hibernate.Session)1 DataField (org.marc4j.marc.DataField)1 Subfield (org.marc4j.marc.Subfield)1