01: package it.unimi.dsi.mg4j.index.cluster;
02:
03: /*
04: * MG4J: Managing Gigabytes for Java
05: *
06: * Copyright (C) 2006-2007 Sebastiano Vigna
07: *
08: * This library is free software; you can redistribute it and/or modify it
09: * under the terms of the GNU Lesser General Public License as published by the Free
10: * Software Foundation; either version 2.1 of the License, or (at your option)
11: * any later version.
12: *
13: * This library is distributed in the hope that it will be useful, but
14: * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
15: * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
16: * for more details.
17: *
18: * You should have received a copy of the GNU Lesser General Public License
19: * along with this program; if not, write to the Free Software
20: * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
21: *
22: */
23:
24: import it.unimi.dsi.util.Properties;
25:
26: import java.io.Serializable;
27:
28: /** A common ancestor interface for all partitioning strategies.
29: *
30: * <p>When partitioning an index, there are a few pieces of data that
31: * must be provided independenly of the particular strategy chosen. This
32: * interface embodies methods to access them.
33: *
34: * <p>Each local index is defined by an integer starting from 0 up to
35: * {@link #numberOfLocalIndices()} − 1. Each local index is also associated with a
36: * set of {@link #properties()} that is usually merged with the property file
37: * of the local index.
38: *
39: * @see it.unimi.dsi.mg4j.index.cluster.ClusteringStrategy
40: * @author Sebastiano Vigna
41: */
42:
43: public interface PartitioningStrategy extends Serializable {
44:
45: /** Returns the number of local indices created by this strategy.
46: * @return the number of local indices created by this strategy.
47: */
48: int numberOfLocalIndices();
49:
50: /** Returns an array of properties, one for each local index, that specify additional information about local indices.
51: *
52: * @return an array of properties, one for each local index; any element
53: * can be <code>null</code> (in that case, the set of properties is assumed to be empty).
54: */
55: Properties[] properties();
56: }
|