com.venky.network.Network Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of core Show documentation
Show all versions of core Show documentation
Commonly used programming tasks in java
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.venky.network;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
/**
*
* @author venky
*/
public class Network {
public Network(){
}
final Map nodeMap = new HashMap();
final Map edgeMap = new HashMap();
public Node createNode(){
Node node = new Node();
synchronized (nodeMap){
node.setId(nodeMap.size());
nodeMap.put(node.getId(), node);
}
return node;
}
public Set getNodes(){
return nodeMap.keySet();
}
public Node getNode(int id){
return nodeMap.get(id);
}
public Edge getEdge(int id1, int id2){
return edgeMap.get(Edge.getKey(id1, id2));
}
public Edge createEdge(int id1 , int id2){
String edgeKey = Edge.getKey(id1, id2);
Edge e = edgeMap.get(edgeKey);
if (e == null){
synchronized(edgeMap){
e = edgeMap.get(edgeKey);
if (e == null){
e = new Edge();
e.connect(id1, id2);
edgeMap.put(edgeKey,e);
getNode(id1).addEdge(e);
getNode(id2).addEdge(e);
}
}
}
return e;
}
}