1 /* ========================================== 2 * JGraphT : a free Java graph-theory library 3 * ========================================== 4 * 5 * Project Info: http://jgrapht.sourceforge.net/ 6 * Project Creator: Barak Naveh (http://sourceforge.net/users/barak_naveh) 7 * 8 * (C) Copyright 2003-2006, by Barak Naveh and Contributors. 9 * 10 * This library is free software; you can redistribute it and/or modify it 11 * under the terms of the GNU Lesser General Public License as published by 12 * the Free Software Foundation; either version 2.1 of the License, or 13 * (at your option) any later version. 14 * 15 * This library is distributed in the hope that it will be useful, but 16 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 17 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public 18 * License for more details. 19 * 20 * You should have received a copy of the GNU Lesser General Public License 21 * along with this library; if not, write to the Free Software Foundation, 22 * Inc., 23 * 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. 24 */ 25 /* ------------------- 26 * GraphGenerator.java 27 * ------------------- 28 * (C) Copyright 2003-2006, by John V. Sichi and Contributors. 29 * 30 * Original Author: John V. Sichi 31 * Contributor(s): - 32 * 33 * $Id: GraphGenerator.java 504 2006-07-03 02:37:26Z perfecthash $ 34 * 35 * Changes 36 * ------- 37 * 16-Sep-2003 : Initial revision (JVS); 38 * 39 */ 40 package org.jgrapht.generate; 41 42 import java.util.*; 43 44 import org.jgrapht.*; 45 46 47 /** 48 * GraphGenerator defines an interface for generating new graph structures. 49 * 50 * @author John V. Sichi 51 * @since Sep 16, 2003 52 */ 53 public interface GraphGenerator<V, E, T> 54 { 55 56 //~ Methods --------------------------------------------------------------- 57 58 /** 59 * Generate a graph structure. The topology of the generated graph is 60 * dependent on the implementation. For graphs in which not all vertices 61 * share the same automorphism equivalence class, the generator may produce 62 * a labeling indicating the roles played by generated elements. This is the 63 * purpose of the resultMap parameter. For example, a generator for a wheel 64 * graph would designate a hub vertex. Role names used as keys in resultMap 65 * should be declared as public static final Strings by implementation 66 * classes. 67 * 68 * @param target receives the generated edges and vertices; if this is 69 * non-empty on entry, the result will be a disconnected graph 70 * since generated elements will not be connected to existing 71 * elements 72 * @param vertexFactory called to produce new vertices 73 * @param resultMap if non-null, receives implementation-specific mappings 74 * from String roles to graph elements (or collections of 75 * graph elements) 76 */ 77 public void generateGraph( 78 Graph<V, E> target, 79 VertexFactory<V> vertexFactory, 80 Map<String, T> resultMap); 81 } 82