Package com.bhle.access.oai

Source Code of com.bhle.access.oai.RecordProviderImpl

package com.bhle.access.oai;

import java.net.MalformedURLException;
import java.net.URI;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;

import proai.MetadataFormat;
import proai.Record;
import proai.SetInfo;
import proai.error.NoMetadataFormatsException;

import com.bhle.access.util.FedoraURI;
import com.bhle.access.util.FedoraUtil;
import com.bhle.access.util.StaticURI;

public class RecordProviderImpl implements RecordProvider {

  private SetInfoPrivoder setInfoPrivoder;

  private MetadataFormatProvider metadataFormatProvider;

  public RecordProviderImpl(SetInfoPrivoder setInfoPrivoder,
      MetadataFormatProvider metadataFormatProvider) {
    super();
    this.setInfoPrivoder = setInfoPrivoder;
    this.metadataFormatProvider = metadataFormatProvider;
  }

  @Override
  public Collection<Record> getRecordCollection(Date from, Date until,
      String mdPrefix) {
    Collection<Record> result = new ArrayList<Record>();

    MetadataFormatImpl metadataFormat = (MetadataFormatImpl) getMetadataFormat(mdPrefix);

    for (SetInfo setInfo : setInfoPrivoder.getSetInfoCollection()) {
      SetInfoImpl setInfoImpl = (SetInfoImpl) setInfo;
      String[] pids = FedoraUtil.getAllInstances(setInfoImpl
          .getContentModel());
      for (String pid : pids) {
        Date lastModifiedDate = FedoraUtil.getLastModifiedDate(pid
            .split("/")[1]);
        if (lastModifiedDate.after(from)
            && lastModifiedDate.before(until)) {
          FedoraURI fedoraURI = new FedoraURI(URI.create(pid + "/"
              + metadataFormat.getDatastream()));
          result.add(buildRecord(fedoraURI, metadataFormat, setInfo,
              lastModifiedDate));
        }
      }
    }

    return result;
  }

  private Record buildRecord(FedoraURI fedoraURI,
      MetadataFormat metadataFormat, SetInfo setInfo,
      Date lastModifiedDate) {
    try {
      return new RecordImpl(fedoraURI.getPid(),
          metadataFormat.getPrefix(), lastModifiedDate,
          setInfo.getSetSpec(), StaticURI.toStaticFileUri(fedoraURI)
              .toURL());
    } catch (MalformedURLException e) {
      e.printStackTrace();
    }
    return null;
  }

  private MetadataFormat getMetadataFormat(String mdPrefix) {
    MetadataFormat metadataFormat = null;
    for (MetadataFormat md : metadataFormatProvider
        .getMetadataFormatCollection()) {
      if (md.getPrefix().equals(mdPrefix)) {
        metadataFormat = md;
      }
    }
    if (metadataFormat == null) {
      throw new NoMetadataFormatsException();
    }

    return metadataFormat;
  }
}
TOP

Related Classes of com.bhle.access.oai.RecordProviderImpl

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.