// GraphTea Project: http://github.com/graphtheorysoftware/GraphTea
// Copyright (C) 2012 Graph Theory Software Foundation: http://GraphTheorySoftware.com
// Copyright (C) 2008 Mathematical Science Department of Sharif University of Technology
// Distributed under the terms of the GNU General Public License (GPL): http://www.gnu.org/licenses/
package graphtea.plugins.commandline.commands;
import graphtea.graph.atributeset.GraphAttrSet;
import graphtea.graph.graph.Edge;
import graphtea.graph.graph.GraphModel;
import graphtea.graph.graph.Vertex;
import graphtea.platform.core.BlackBoard;
import graphtea.platform.lang.CommandAttitude;
import graphtea.platform.parameter.Parameter;
import graphtea.plugins.main.GraphData;
import graphtea.plugins.main.core.actions.edge.AddEdge;
/**
* @author amir khosrowshahi , Mohammad Ali Rostami
* @email rostamiev@gmail.com
*/
public class EdgeCommands {
BlackBoard bb;
private GraphData datas;
public EdgeCommands(BlackBoard bb) {
this.bb = bb;
datas = new GraphData(bb);
}
@CommandAttitude(name = "add_edge", abbreviation = "_ae")
public void addEdge(@Parameter(name = "first vertex label")String label1
, @Parameter(name = "second vertex label")String label2) throws ShellCommandException {
try {
AddEdge.doJob(((GraphModel) bb.getData(GraphAttrSet.name)), getVertexByLabel(label1), getVertexByLabel(label2));
} catch (NullPointerException e) {
throw new ShellCommandException("your entered vertex label doesnt exist");
// Init.run.ext_console.error("your entered vertex label doesnt exist!");
}
}
@CommandAttitude(name = "remove_edge", abbreviation = "_re"
, description = "Removes an Edge")
public void removeEdge(@Parameter(name = "vertex 1 label :")String label1
, @Parameter(name = "vertex 2 label:")String label2) {
datas.getGraph().removeEdge(getEdge(label1, label2));
}
@CommandAttitude(name = "get_edge", abbreviation = "_ge"
, description = "return the specific edge")
private Edge getEdge(String label1, String label2) {
return datas.getGraph().getEdge(getVertexByLabel(label1), getVertexByLabel(label2));
}
@CommandAttitude(name = "set_edge_label", abbreviation = "_sel")
public void setEdgeLabel(@Parameter(name = "first vertex label :")String label1
, @Parameter(name = "second vertex label :")String label2,
@Parameter(name = "new edge label :")String newLabel) throws ShellCommandException {
try {
getEdge(label1, label2).setLabel(newLabel);
} catch (NullPointerException e) {
throw new ShellCommandException("your entered a edge label that doesn't exist!");
// Init.run.ext_console.error("your entered a edge label that doesn't exist!");
}
}
@CommandAttitude(name = "set_edge_weight", abbreviation = "_sew")
public void setEdgeWeight(@Parameter(name = "first vertex label :")String label1
, @Parameter(name = "second vertex label :")String label2,
@Parameter(name = "new edge weight :")int newWeight) throws ShellCommandException {
try {
getEdge(label1, label2).setWeight(newWeight);
} catch (NullPointerException e) {
throw new ShellCommandException("your entered edge doesn't exist!");
// Init.run.ext_console.error("your entered edge doesn't exist!");
}
}
@CommandAttitude(name = "get_edge_label", abbreviation = "_gel")
public String getEdgeLabel(@Parameter(name = "first vertex label :")String label1
, @Parameter(name = "second vertex label :")String label2) throws ShellCommandException {
try {
//Init.run.ext_console.printlnResult(getEdge(label1, label2).model.getLabel());
return getEdge(label1, label2).getLabel();
} catch (NullPointerException e) {
throw new ShellCommandException("your entered edge doesn't exist!");
}
}
@CommandAttitude(name = "get_edge_weight", abbreviation = "_gew")
public int getEdgeWeight(@Parameter(name = "first vertex label :")String label1
, @Parameter(name = "second vertex label :")String label2) throws ShellCommandException {
try {
//Init.run.ext_console.printlnResult(getEdge(label1, label2).model.getWeight());
return getEdge(label1, label2).getWeight();
} catch (NullPointerException e) {
throw new ShellCommandException("your entered edge doesn't exist!");
}
}
Vertex getVertexByID(String id) {
int ID = Integer.parseInt(id);
for (Vertex v : datas.getGraph()) {
//Init.run.ext_console.printlnResult(v.getId());
if (v.getId() == ID)
return v;
}
return null;
}
Vertex getVertexByLabel(String label) {
for (Vertex v : datas.getGraph()) {
if (v.getLabel().equals(label))
return v;
}
return null;
}
}