1 /* 2 * This file is part of *** M y C o R e *** 3 * See http://www.mycore.de/ for details. 4 * 5 * MyCoRe is free software: you can redistribute it and/or modify 6 * it under the terms of the GNU General Public License as published by 7 * the Free Software Foundation, either version 3 of the License, or 8 * (at your option) any later version. 9 * 10 * MyCoRe is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 * GNU General Public License for more details. 14 * 15 * You should have received a copy of the GNU General Public License 16 * along with MyCoRe. If not, see <http://www.gnu.org/licenses/>. 17 */ 18 19 package org.mycore.datamodel.metadata.share; 20 21 import org.mycore.access.MCRAccessException; 22 import org.mycore.common.MCRPersistenceException; 23 import org.mycore.datamodel.metadata.MCRObject; 24 25 /** 26 * @author Thomas Scheffler (yagee) 27 * @see MCRMetadataShareAgentFactory 28 */ 29 public interface MCRMetadataShareAgent { 30 31 /** 32 * Determines if shareable metadata changed from <code>oldVersion</code> to <code>newVersion</code> 33 * @param oldVersion previous version of MCRObject 34 * @param newVersion new version of MCRObject 35 */ 36 boolean shareableMetadataChanged(MCRObject oldVersion, MCRObject newVersion); 37 38 /** 39 * updates all recipients of shareable metadata from <code>holder</code>. 40 * @param holder usually the parent object that can distrivute metadata 41 * @throws MCRAccessException 42 * @throws MCRPersistenceException 43 */ 44 void distributeMetadata(MCRObject holder) throws MCRPersistenceException, MCRAccessException; 45 46 /** 47 * Include shareable metadata from <code>holder</code> before persisting <code>recipient</code>. 48 * @param recipient on update/create before handling events. 49 */ 50 void receiveMetadata(MCRObject recipient); 51 }