001/* 002 * #%L 003 * Netarchivesuite - harvester 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.harvester.harvesting.distribute; 024 025import dk.netarkivet.common.distribute.Channels; 026import dk.netarkivet.harvester.datamodel.HarvestChannel; 027import dk.netarkivet.harvester.distribute.HarvesterChannels; 028import dk.netarkivet.harvester.distribute.HarvesterMessage; 029import dk.netarkivet.harvester.distribute.HarvesterMessageVisitor; 030 031/** 032 * Message sent by the HarvesterStatusReceiver after processing a {@link HarvesterRegistrationRequest} message. 033 * It notifies crawlers whether a given harvest channel effectively matches a {@link HarvestChannel} defined in the 034 * harvest database. 035 */ 036@SuppressWarnings({"serial"}) 037public class HarvesterRegistrationResponse extends HarvesterMessage { 038 039 /** The harvest channel name. */ 040 private final String harvestChannelName; 041 042 /** If true, the name matches an existing {@link HarvestChannel}. */ 043 private final boolean isValid; 044 045 /** 046 * Whether the matching {@link HarvestChannel} handles snapshot or focused harvests. Meaningless if {@link #isValid} 047 * is false. 048 */ 049 private final boolean isSnapshot; 050 051 /** 052 * Constructor from fields. 053 * 054 * @param harvestChannelName the harvest channel name 055 * @param isValid whether the given name denotes an existing channel 056 * @param isSnapshot true if the channel accepts snapshot harvest, false for partial. 057 */ 058 public HarvesterRegistrationResponse(final String harvestChannelName, final boolean isValid, 059 final boolean isSnapshot) { 060 super(HarvesterChannels.getHarvesterRegistrationResponseChannel(), Channels.getError()); 061 this.harvestChannelName = harvestChannelName; 062 this.isValid = isValid; 063 this.isSnapshot = isSnapshot; 064 } 065 066 @Override 067 public void accept(HarvesterMessageVisitor v) { 068 v.visit(this); 069 } 070 071 /** 072 * @return the harvestChannelName 073 */ 074 public final String getHarvestChannelName() { 075 return harvestChannelName; 076 } 077 078 /** 079 * @return the isValid 080 */ 081 public final boolean isValid() { 082 return isValid; 083 } 084 085 /** 086 * @return the isSnapshot 087 */ 088 public final boolean isSnapshot() { 089 return isSnapshot; 090 } 091 092}