From 8f8a6871994593d525ca2a2f2bfae712d14507a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibaut=20D=C3=A9mare?= Date: Wed, 5 Feb 2014 19:38:50 +0100 Subject: [PATCH] Add the 'add edge' command --- .../gama/extension/IKeywordGSAdditional.java | 3 + .../extension/sender/AddEdgeStatement.java | 56 +++++++++++++++++++ .../gama/extension/sender/GSSender.java | 5 +- 3 files changed, 61 insertions(+), 3 deletions(-) create mode 100644 src/org/graphstream/gama/extension/sender/AddEdgeStatement.java diff --git a/src/org/graphstream/gama/extension/IKeywordGSAdditional.java b/src/org/graphstream/gama/extension/IKeywordGSAdditional.java index 9abe739..03d8f71 100644 --- a/src/org/graphstream/gama/extension/IKeywordGSAdditional.java +++ b/src/org/graphstream/gama/extension/IKeywordGSAdditional.java @@ -24,7 +24,10 @@ public class IKeywordGSAdditional implements IKeyword { public static final String ATTRIBUTE_VALUE = "gs_attribute_value"; public static final String EDGE_ID = "gs_edge_id"; public static final String HOST = "gs_host"; + public static final String IS_DIRECTED = "gs_is_directed"; public static final String NODE_ID = "gs_node_id"; + public static final String NODE_ID_FROM = "gs_node_id_from"; + public static final String NODE_ID_TO = "gs_node_id_to"; public static final String PORT = "gs_port"; public static final String SENDERID = "gs_sender_id"; public static final String STEP_NUMBER = "gs_step_number"; diff --git a/src/org/graphstream/gama/extension/sender/AddEdgeStatement.java b/src/org/graphstream/gama/extension/sender/AddEdgeStatement.java new file mode 100644 index 0000000..9f429e4 --- /dev/null +++ b/src/org/graphstream/gama/extension/sender/AddEdgeStatement.java @@ -0,0 +1,56 @@ +package org.graphstream.gama.extension.sender; + +import msi.gama.precompiler.ISymbolKind; +import msi.gama.precompiler.GamlAnnotations.facet; +import msi.gama.precompiler.GamlAnnotations.facets; +import msi.gama.precompiler.GamlAnnotations.inside; +import msi.gama.precompiler.GamlAnnotations.symbol; +import msi.gama.runtime.IScope; +import msi.gama.runtime.exceptions.GamaRuntimeException; +import msi.gaml.descriptions.IDescription; +import msi.gaml.expressions.IExpression; +import msi.gaml.statements.AbstractStatement; +import msi.gaml.statements.IStatement; +import msi.gaml.types.IType; + +import org.graphstream.gama.extension.GSManager; +import org.graphstream.gama.extension.IKeywordGSAdditional; + +@symbol(name = IKeywordGSAdditional.ADD_NODE, kind = ISymbolKind.SINGLE_STATEMENT, with_sequence = false) +@inside(kinds = { ISymbolKind.BEHAVIOR, ISymbolKind.SINGLE_STATEMENT }) +@facets(value = { @facet(name = IKeywordGSAdditional.SENDERID, type = IType.STRING, optional = false), + @facet(name = IKeywordGSAdditional.EDGE_ID, type = IType.STRING, optional = false), + @facet(name = IKeywordGSAdditional.NODE_ID_FROM, type = IType.STRING, optional = false), + @facet(name = IKeywordGSAdditional.NODE_ID_TO, type = IType.STRING, optional = false), + @facet(name = IKeywordGSAdditional.IS_DIRECTED, type = IType.BOOL, optional = false)}) +public class AddEdgeStatement extends AbstractStatement implements IStatement{ + + final IExpression senderid; + final IExpression edgeid; + final IExpression nodefrom; + final IExpression nodeto; + final IExpression directed; + + public AddEdgeStatement(IDescription desc) { + super(desc); + senderid = getFacet(IKeywordGSAdditional.SENDERID); + edgeid = getFacet(IKeywordGSAdditional.EDGE_ID); + nodefrom = getFacet(IKeywordGSAdditional.NODE_ID_FROM); + nodeto = getFacet(IKeywordGSAdditional.NODE_ID_TO); + directed = getFacet(IKeywordGSAdditional.IS_DIRECTED); + } + + @Override + protected Object privateExecuteIn(IScope scope) throws GamaRuntimeException { + String s = (String)(senderid.value(scope)); + String eid = (String)(edgeid.value(scope)); + String nfrom = (String)(nodefrom.value(scope)); + String nto = (String)(nodeto.value(scope)); + boolean d = (Boolean)(edgeid.value(scope)); + GSSender sender = GSManager.getSender(s); + sender.sendEdgeAdded(eid, nfrom, nto, d); + return null; + } + + +} \ No newline at end of file diff --git a/src/org/graphstream/gama/extension/sender/GSSender.java b/src/org/graphstream/gama/extension/sender/GSSender.java index 09018de..b67bb85 100644 --- a/src/org/graphstream/gama/extension/sender/GSSender.java +++ b/src/org/graphstream/gama/extension/sender/GSSender.java @@ -39,9 +39,8 @@ public class GSSender { nsSender.nodeAdded(sourceId, newEvent(), nodeId); } - public void sendEdgeAdded(long fromId, long toId, boolean directed) { - nsSender.edgeAdded(sourceId, newEvent(), fromId + "_" + toId, fromId - + "", toId + "", directed); + public void sendEdgeAdded(String edgeId, String fromId, String toId, boolean directed) { + nsSender.edgeAdded(sourceId, newEvent(), edgeId, fromId, toId, directed); } public void sendNodeRemoved(long nodeId) { -- GitLab