Package com.bhle.access.util

Source Code of com.bhle.access.util.FedoraURI

package com.bhle.access.util;

import java.net.URI;
import java.text.DecimalFormat;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.akubraproject.UnsupportedIdException;

public class FedoraURI {

  public static String GUID_BANK_ID;

  public void setGuidBankId(String bankId) {
    FedoraURI.GUID_BANK_ID = bankId;
  }

  public static String DEFAULT_NAMESPACE;

  public void setDefaultNamespace(String namespace) {
    FedoraURI.DEFAULT_NAMESPACE = namespace;
  }

  public static String DEFAULT_SCHEME = "info";

  private static DecimalFormat DECIMAL_FORMAT = new DecimalFormat("00000");

  private URI uri;

  private String scheme;
  private String pid;
  private String namespace;
  private String guid;
  private String dsid;
  private String serialNumber;

  public FedoraURI() {
  }

  public FedoraURI(URI uri) {
    this.uri = uri;

    this.scheme = uri.getScheme();
    String path = uri.getSchemeSpecificPart();
    Pattern pattern = Pattern
        .compile("^fedora/((\\w+):(?:[^-/]+)-([^-/]+)-?(\\d*))/?(\\S*)$");
    Matcher matcher = pattern.matcher(path);
    if (matcher.find()) {
      pid = matcher.group(1);
      namespace = matcher.group(2);
      guid = matcher.group(3);
      serialNumber = matcher.group(4);
      dsid = matcher.group(5);
    } else {
      try {
        throw new UnsupportedIdException(uri);
      } catch (UnsupportedIdException e) {
        e.printStackTrace();
      }
    }
  }

  public String getPid() {
    return pid;
  }

  public String getNamespace() {
    return namespace;
  }

  public String getGuid() {
    return guid;
  }

  public String getDsid() {
    return dsid;
  }

  public String getScheme() {
    return scheme;
  }

  public String getSerialNumber() {
    return serialNumber;
  }

  public URI toURI() {
    return uri;
  }

  public URI getItemURI() {
    return URI.create(scheme + ":fedora/" + pid);
  }

  public static String getPidFromGuid(String guid) {
    return FedoraURI.DEFAULT_NAMESPACE + ":" + GUID_BANK_ID + "-" + guid;
  }

  public static String getGuidFromPid(String pid) {
    return pid.split("-")[1];
  }

  public static FedoraURI getFedoraUri(String guid, String dsid) {
    return new FedoraURI(URI.create(DEFAULT_SCHEME + ":fedora/"
        + getPidFromGuid(guid) + "/" + dsid));
  }

  public static FedoraURI getFedoraUri(String guid, int index, String dsid) {
    String serialNumber = DECIMAL_FORMAT.format(index);
    return new FedoraURI(URI.create(DEFAULT_SCHEME + ":fedora/"
        + getPidFromGuid(guid) + "-" + serialNumber + "/" + dsid));
  }
}
TOP

Related Classes of com.bhle.access.util.FedoraURI

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.