1 /* 2 * The SmartWeb Framework 3 * Copyright (C) 2004-2006 4 * 5 * This library is free software; you can redistribute it and/or 6 * modify it under the terms of the GNU Lesser General Public 7 * License as published by the Free Software Foundation; either 8 * version 2.1 of the License, or (at your option) any later version. 9 * 10 * This library 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 GNU 13 * Lesser General Public License for more details. 14 * 15 * You should have received a copy of the GNU Lesser General Public 16 * License along with this library; if not, write to the Free Software 17 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 18 * 19 * For further informations on the SmartWeb Framework please visit 20 * 21 * http://smartweb.sourceforge.net 22 */ 23 24 package net.smartlab.web.registry; 25 26 import org.hibernate.Criteria; 27 import org.hibernate.HibernateException; 28 29 30 /** 31 * TODO documentation 32 * 33 * @author rlogiacco 34 */ 35 public interface DeduplicationStrategy { 36 37 /*#net.smartlab.web.registry.DeduplicationCode code*/ 38 /** 39 * This method is used to compute a pseudo <code>Hash Code</code> to 40 * find out if similar entries exists into the database allowing to drop 41 * duplicated entries and mantaining the archive cleaner. The algorithm used 42 * to compute the deduplication code should be consistent and based on 43 * business rules, here is provided a basic implementation useful only for 44 * simple and basic business. This method should be called before any 45 * insertion or update. 46 * @param entity 47 * @uml.property name="deduplicationCode" default="new net.smartlab.web.registry.DeduplicationCode()" 48 * @uml.associationEnd multiplicity="(1 1)" aggregation="shared" inverse="deduplicationStrategy:net.smartlab.registry.DeduplicationCode" 49 * @return 50 */ 51 public DeduplicationCode digest(Entity entity); 52 53 /** 54 * TODO documentation 55 * 56 * @param criteria 57 * @param code 58 * @return 59 * @throws HibernateException 60 */ 61 public Criteria getCriteria(Criteria criteria, DeduplicationCode code) throws HibernateException; 62 }