001/* 002 * #%L 003 * Netarchivesuite - common 004 * %% 005 * Copyright (C) 2005 - 2014 The Royal Danish Library, the Danish State and University Library, 006 * the National Library of France and the Austrian National Library. 007 * %% 008 * This program is free software: you can redistribute it and/or modify 009 * it under the terms of the GNU Lesser General Public License as 010 * published by the Free Software Foundation, either version 2.1 of the 011 * License, or (at your option) any later version. 012 * 013 * This program is distributed in the hope that it will be useful, 014 * but WITHOUT ANY WARRANTY; without even the implied warranty of 015 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 016 * GNU General Lesser Public License for more details. 017 * 018 * You should have received a copy of the GNU General Lesser Public 019 * License along with this program. If not, see 020 * <http://www.gnu.org/licenses/lgpl-2.1.html>. 021 * #L% 022 */ 023package dk.netarkivet.common.utils.archive; 024 025import java.io.InputStream; 026 027import org.archive.io.ArchiveRecord; 028import org.archive.io.arc.ARCRecord; 029import org.archive.io.warc.WARCRecord; 030 031import dk.netarkivet.common.exceptions.ArgumentNotValid; 032 033/** 034 * Heritrix wrapper implementation of the abstract archive record interface. 035 */ 036public class HeritrixArchiveRecordWrapper extends ArchiveRecordBase { 037 038 /** 039 * The original Heritrix record, since it is also the record payload input stream. 040 */ 041 protected ArchiveRecord record; 042 043 /** The wrapper archive header. */ 044 protected ArchiveHeaderBase header; 045 046 /** 047 * Construct a Heritrix record wrapper object. 048 * 049 * @param record Heritrix record object 050 */ 051 public HeritrixArchiveRecordWrapper(ArchiveRecord record) { 052 ArgumentNotValid.checkNotNull(record, "record"); 053 this.record = record; 054 this.header = HeritrixArchiveHeaderWrapper.wrapArchiveHeader(this, record); 055 if (record instanceof ARCRecord) { 056 this.bIsArc = true; 057 } else if (record instanceof WARCRecord) { 058 this.bIsWarc = true; 059 } else { 060 throw new ArgumentNotValid("Unsupported ArchiveRecord type: " + record.getClass().getName()); 061 } 062 } 063 064 @Override 065 public ArchiveHeaderBase getHeader() { 066 return header; 067 } 068 069 @Override 070 public InputStream getInputStream() { 071 return record; 072 } 073 074}