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; 028 029/** 030 * Base class for unified ARC/WARC record API: 031 */ 032public abstract class ArchiveRecordBase { 033 034 /** Is this record from an ARC file. */ 035 public boolean bIsArc; 036 037 /** Is this record from a WARC file. */ 038 public boolean bIsWarc; 039 040 /** 041 * Return the wrapped Heritrix archive header 042 * 043 * @return the wrapped Heritrix archive header 044 */ 045 public abstract ArchiveHeaderBase getHeader(); 046 047 /** 048 * Return the payload input stream. 049 * 050 * @return the payload input stream 051 */ 052 public abstract InputStream getInputStream(); 053 054 /** 055 * Factory method for creating a wrapped Heritrix record. 056 * 057 * @param archiveRecord Heritrix archive record 058 * @return wrapped Heritrix record 059 */ 060 public static ArchiveRecordBase wrapArchiveRecord(ArchiveRecord archiveRecord) { 061 return new HeritrixArchiveRecordWrapper(archiveRecord); 062 } 063 064}