001: /*
002: * GeoTools - OpenSource mapping toolkit
003: * http://geotools.org
004: * (C) 2002-2006, GeoTools Project Managment Committee (PMC)
005: * (C) 2002, Refractions Reserach Inc.
006: *
007: * This library is free software; you can redistribute it and/or
008: * modify it under the terms of the GNU Lesser General Public
009: * License as published by the Free Software Foundation;
010: * version 2.1 of the License.
011: *
012: * This library is distributed in the hope that it will be useful,
013: * but WITHOUT ANY WARRANTY; without even the implied warranty of
014: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
015: * Lesser General Public License for more details.
016: */
017: package org.geotools.graph.structure;
018:
019: import java.util.Iterator;
020:
021: /**
022: * Represents a component of a graph. Graph components
023: * model "real life" entities. These entities are represented by an
024: * underyling object reference.
025: *
026: * @see Graph
027: *
028: * @author Justin Deoliveira, Refractions Research Inc, jdeolive@refractions.net
029: *
030: * @source $URL: http://svn.geotools.org/geotools/tags/2.4.1/modules/extension/graph/src/main/java/org/geotools/graph/structure/Graphable.java $
031: */
032: public interface Graphable {
033:
034: /**
035: * Returns an identifier for the component. This number is not
036: * necessarily persistent or unique.
037: *
038: * @return Identifying integer.
039: */
040: public int getID();
041:
042: /**
043: * Sets the identifying integer for the component.
044: *
045: * @param id New identifying integer.
046: */
047: public void setID(int id);
048:
049: /**
050: * Determines if the component has been marked as visited. The visited
051: * flag serves as a binary switch for the component which can be used
052: * for graph queries, graph traversals, or user defined purposes.
053: *
054: * @return True if visited(on), false if unvisited(off).
055: */
056: public boolean isVisited();
057:
058: /**
059: * Marks the component as being visited/unvisited. The visited
060: * flag serves as a binary switch for the component which can be used
061: * for graph queries, graph traversals, or user defined purposes.
062: *
063: * @param visited True if visited(on), false if unvisited(off).
064: */
065: public void setVisited(boolean visited);
066:
067: /**
068: * Returns the value of the counter for the component. Graph components
069: * have a counter associated with them to be used for graph queries, graph
070: * traversals, or user defined purposes.
071: *
072: * @return int The value of the counter for the component.
073: */
074: public int getCount();
075:
076: /**
077: * Sets the value of the counter for the component. Graph components
078: * have a counter associated with them to be used for graph queries, graph
079: * traversals, or user defined purposes.
080: *
081: * @param count The new value of the counter for the component.
082: */
083: public void setCount(int count);
084:
085: /**
086: * Returns the underlying object referenced by the graph component.
087: *
088: * @return Underlying object reference, the entity being modelled by
089: * graph component.
090: */
091: public Object getObject();
092:
093: /**
094: * Sets the underlying object reference for the component.
095: *
096: * @param obj The entity being modelled by the graph component.
097: */
098: public void setObject(Object obj);
099:
100: /**
101: * Returns an iterator over any related components. A graph component is
102: * related to other components of the graph of similary type through some
103: * relationship.
104: *
105: * @return Iterator An iterator over other components of the graph that
106: * are related to the component.
107: */
108: public Iterator getRelated();
109: }
|