All Downloads are FREE. Search and download functionalities are using the official Maven repository.

de.gwdg.metadataqa.marc.utils.unimarc.UnimarcConverter Maven / Gradle / Ivy

package de.gwdg.metadataqa.marc.utils.unimarc;

import de.gwdg.metadataqa.marc.dao.DataField;
import org.apache.commons.lang3.StringUtils;

import java.util.List;

public class UnimarcConverter {

  public static String tagFromUnimarc(String tag) {
    if (tag.equals("100")) {
      tag = "008";
    }
    return tag;
  }

  public static String contentFromUnimarc(String tag, String content) {
    // System.err.println("contentFromUnimarc: " + tag + ") " + content);
    String ind1 = content.substring(0, 1);
    String ind2 = content.substring(1, 2);
    List subfields = DataField.parseSubfields(content.substring(2));
    if (tag.equals("100")) {
      // tag = "008";
      String source = null;
      for (String[] subfield : subfields) {
        if (subfield[0].equals("a")) {
          source = subfield[1];
          break;
        }
      }
      System.err.println("contentFromUnimarc: '" + source + "'");
      content = convert100to008(source);
      System.err.println("toMarc21: '" + content + "'");
    }
    return content;
  }

  private static String convert100to008(String source) {
    StringBuffer sb = new StringBuffer();
    System.err.println("0/1) " + source.substring(0, 1));
    // DATE ENTERED ON FILE
    sb.append(source.substring(2, 8));
    System.err.printf("#1 %d: '%s'\n", sb.length(), sb.toString());

    // TYPE OF DATE/PUBLICATION STATUS
    sb.append(StringUtils.replaceChars(source.substring(8, 9), "abcdefghij", "cdusrqmtpe"));
    System.err.printf("#2 %d: '%s'\n", sb.length(), sb.toString());

    // DATE 1/BEGINNING DATE OF PUBL.
    sb.append(source.substring(9, 13));
    System.err.printf("#3 %d: '%s'\n", sb.length(), sb.toString());

    // DATE 2/ENDING DATE OF PUBLICATION
    sb.append(source.substring(13, 17));
    System.err.printf("#4 %d: '%s'\n", sb.length(), sb.toString());

    // PLACE OF PUBLICATION, PROD., OR EXECUTION
    sb.append(StringUtils.replaceChars(source.substring(19, 20), "bcadekmu", "abjcdeg "));
    System.err.printf("%d: '%s'\n", sb.length(), sb.toString());

    sb.append("     ");
    System.err.printf("%d: '%s'\n", sb.length(), sb.toString());

    sb.append(StringUtils.replaceChars(source.substring(22, 23), "abcdefghy", "fsllcizo "));
    System.err.printf("%d: '%s'\n", sb.length(), sb.toString());

    sb.append("    ");
    System.err.printf("%d: '%s'\n", sb.length(), sb.toString());

    sb.append(source.substring(36, 36));
    System.err.printf("%d: '%s'\n", sb.length(), sb.toString());

    sb.append("    ");
    System.err.printf("%d: '%s'\n", sb.length(), sb.toString());

    sb.append(StringUtils.replaceChars(source.substring(23, 24), "01", " o"));
    System.err.printf("%d: '%s'\n", sb.length(), sb.toString());

    sb.append("  ");
    System.err.printf("%d: '%s'\n", sb.length(), sb.toString());

    return sb.toString();
  }

  public static String leaderFromUnimarc(String leader) {
    System.err.println(leader);
    return leader;
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy