TrustGrapher
r52
A playabale simulator for modelling trust between agents
|
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