public void insertEdge(String startKey, String endKey, int weight) {
		Vertex startVertex = getVertex(startKey);
		Vertex endVertex = getVertex(endKey);

		if (startVertex == null) {
			insertVertex(startKey);
			startVertex = getVertex(startKey);
		}
		if (endVertex == null) {
			insertVertex(endKey);
			endVertex = getVertex(endKey);
		}

		Edge edge = new Edge(startVertex, endVertex, weight);

		EdgeListObject elo = new EdgeListObject(edge);
		if (this.edgeList == null)
			this.edgeList = new ArrayList<EdgeListObject>();
		this.edgeList.add(elo);
		edge.setEdgeListObject(elo);
		if (graphType == Type.DIRECTED) {
			if (startVertex.getOutEdges() == null)
				startVertex.setOutEdges(new ArrayList<EdgeListObject>());
			startVertex.getOutEdges().add(elo);

			if (endVertex.getInEdges() == null)
				endVertex.setInEdges(new ArrayList<EdgeListObject>());
			endVertex.getInEdges().add(elo);
		}

		EdgeListObject startAugmentedEdgeObject = new EdgeListObject(edge);
		if (startVertex.getIncidenceList() == null)
			startVertex.setIncidenceList(new ArrayList<EdgeListObject>());
		startVertex.getIncidenceList().add(startAugmentedEdgeObject);
		edge.setStartAugmentedEdgeObject(startAugmentedEdgeObject);

		EdgeListObject endAugmentedEdgeObject = new EdgeListObject(edge);
		if (endVertex.getIncidenceList() == null)
			endVertex.setIncidenceList(new ArrayList<EdgeListObject>());
		endVertex.getIncidenceList().add(endAugmentedEdgeObject);
		edge.setEndAugmentedEdgeObject(endAugmentedEdgeObject);

		System.out.println("Inserted edge: " + startKey + "--" + weight + "--"
				+ endKey);

	}