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 }