View Javadoc

1   package org.molwind.graph;
2   
3   /*
4    * This file is part of Molwind.
5    *
6    * Molwind is free software: you can redistribute it and/or modify
7    * it under the terms of the GNU General Public License as published by
8    * the Free Software Foundation, either version 3 of the License, or
9    * (at your option) any later version.
10   *
11   * Molwind is distributed in the hope that it will be useful,
12   * but WITHOUT ANY WARRANTY; without even the implied warranty of
13   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14   * GNU General Public License for more details.
15   *
16   * You should have received a copy of the GNU General Public License
17   * along with Molwind. If not, see <http://www.gnu.org/licenses/>.
18   */
19  
20  import org.molwind.model.Relationship;
21  import org.molwind.model.WorldEntity;
22  
23  /**
24   * EntityGraph stores graphs of entities (= vertices) and relationships
25   * (= edges) among those.
26   *
27   * @author <a href="mailto:oliver.karch@molwind.org">Oliver Karch</a>
28   * @version 1.0
29   */
30  public interface EntityGraph extends Iterable {
31  
32      /**
33       * Adds an entity i.e. vertex to graph. If the vertex id is existing
34       * already the vertex is replaced.
35       *
36       * @param vertexId
37       *      the vertex id
38       * @param entity
39       *      the entity to add
40       */
41      void addEntity(String vertexId, WorldEntity entity);
42  
43      /**
44       * Finds the given vertex id.
45       *
46       * @param vertexId
47       *      the vertex id
48       * @return
49       *      the entity if it was found, null otherwise
50       */
51      WorldEntity findEntity(String vertexId);
52  
53      /**
54       * Adds a relationship edge between vertex vertexId1 and vertex vertexId2.
55       * For any non-existing vertex a new vertex is created.
56       *
57       * @param vertexId1
58       *      the first vertex id
59       * @param vertexId2
60       *      the second vertex id
61       * @param relation
62       *      the relationship represented by the edge
63       */
64      void addEdge(String vertexId1, String vertexId2,
65  		 Relationship relation,int weight);
66  
67      /**
68       * Analyzes the entity graph using the given analysis strategy.
69       *
70       * @param analyzer
71       *      the analysis strategy
72       */
73      void analyze(EntityGraphAnalyzer analyzer);
74      
75  
76  
77  }