TrustGrapher  r52
A playabale simulator for modelling trust between agents
D:/src/cu/trustGrapher/graphs/SimFeedbackGraph.java
Go to the documentation of this file.
00001 
00002 package cu.trustGrapher.graphs;
00003 
00004 import cu.trustGrapher.eventplayer.TrustLogEvent;
00005 import cu.trustGrapher.graphs.edges.SimFeedbackEdge;
00006 import cu.repsystestbed.entities.Agent;
00007 import cu.repsystestbed.graphs.FeedbackHistoryEdgeFactory;
00008 import cu.repsystestbed.graphs.FeedbackHistoryGraph;
00009 import cu.trustGrapher.loading.GraphConfig;
00010 
00011 import org.jgrapht.graph.SimpleDirectedGraph;
00012 
00018 public class SimFeedbackGraph extends SimAbstractGraph {
00019 
00021 
00025     public SimFeedbackGraph(GraphConfig graphConfig) {
00026         super(graphConfig, (SimpleDirectedGraph) new FeedbackHistoryGraph(new FeedbackHistoryEdgeFactory()));
00027     }
00028     
00030 
00037     @Override
00038     public void graphEvent(TrustLogEvent event, boolean forward) {
00039         Agent src = ensureAgentExists(event.getAssessor(), this), sink = ensureAgentExists(event.getAssessee(), this);
00040         SimFeedbackEdge dynEdge = (SimFeedbackEdge) ensureEdgeExists(src, sink, this);
00041         SimFeedbackEdge refEdge = (SimFeedbackEdge) referenceGraph.findEdge(src, sink);
00042         double feedback = event.getFeedback();
00043         if (forward) {
00044             //Add the feedback to the full edge so it can be seen in the viewer            
00045             dynEdge.addFeedback(src, sink, feedback);
00046             refEdge.addFeedback(src, sink, feedback);
00047         } else {
00048             dynEdge.removeFeedback(feedback);
00049             refEdge.removeFeedback(feedback);
00050             if (dynEdge.feedbacks.isEmpty()){
00051                 removeEdgeAndVertices(dynEdge); //Remove the dynamic edge
00052             }
00053         }
00054     }
00055 
00060     @Override
00061     public void graphConstructionEvent(TrustLogEvent event) {
00062         if (event != null) {
00063             Agent src = ensureAgentExists(event.getAssessor(), referenceGraph);
00064             Agent sink = ensureAgentExists(event.getAssessee(), referenceGraph);
00065             ensureEdgeExists(src, sink, referenceGraph);
00066         }
00067        
00068     }
00069 }
00071