View Javadoc

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  }