/* * GeoTools - The Open Source Java GIS Toolkit * http://geotools.org * * (C) 2002-2008, Open Source Geospatial Foundation (OSGeo) * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. */ package org.geotools.graph.structure; import java.util.Iterator; /** * Represents a component of a graph. Graph components * model "real life" entities. These entities are represented by an * underyling object reference. * * @see Graph * * @author Justin Deoliveira, Refractions Research Inc, jdeolive@refractions.net * * * @source $URL$ */ public interface Graphable { /** * Returns an identifier for the component. This number is not * necessarily persistent or unique. * * @return Identifying integer. */ public int getID(); /** * Sets the identifying integer for the component. * * @param id New identifying integer. */ public void setID(int id); /** * Determines if the component has been marked as visited. The visited * flag serves as a binary switch for the component which can be used * for graph queries, graph traversals, or user defined purposes. * * @return True if visited(on), false if unvisited(off). */ public boolean isVisited(); /** * Marks the component as being visited/unvisited. The visited * flag serves as a binary switch for the component which can be used * for graph queries, graph traversals, or user defined purposes. * * @param visited True if visited(on), false if unvisited(off). */ public void setVisited(boolean visited); /** * Returns the value of the counter for the component. Graph components * have a counter associated with them to be used for graph queries, graph * traversals, or user defined purposes. * * @return int The value of the counter for the component. */ public int getCount(); /** * Sets the value of the counter for the component. Graph components * have a counter associated with them to be used for graph queries, graph * traversals, or user defined purposes. * * @param count The new value of the counter for the component. */ public void setCount(int count); /** * Returns the underlying object referenced by the graph component. * * @return Underlying object reference, the entity being modelled by * graph component. */ public Object getObject(); /** * Sets the underlying object reference for the component. * * @param obj The entity being modelled by the graph component. */ public void setObject(Object obj); /** * Returns an iterator over any related components. A graph component is * related to other components of the graph of similary type through some * relationship. * * @return Iterator An iterator over other components of the graph that * are related to the component. */ public Iterator getRelated(); }