Refactoring 2
- added a forgotten method in Vertex & test - fixed Mark, now is Obj
This commit is contained in:
@@ -116,7 +116,7 @@ public interface Graph<V, W extends Number> extends Iterable<V> {
|
||||
* @throws NullPointerException if one of the param is null
|
||||
* @throws IllegalArgumentException if the vertex is not contained in the graph
|
||||
*/
|
||||
void mark(V vertex, String mark) throws NullPointerException, IllegalArgumentException;
|
||||
void mark(V vertex, Object mark) throws NullPointerException, IllegalArgumentException;
|
||||
|
||||
/**
|
||||
* Remove the selected mark from the vertex.<br>
|
||||
@@ -126,7 +126,7 @@ public interface Graph<V, W extends Number> extends Iterable<V> {
|
||||
* @throws NullPointerException if a param is null
|
||||
* @throws IllegalArgumentException if the vertex is not contained in the graph
|
||||
*/
|
||||
void unMark(V vertex, String mark) throws NullPointerException, IllegalArgumentException;
|
||||
void unMark(V vertex, Object mark) throws NullPointerException, IllegalArgumentException;
|
||||
|
||||
/**
|
||||
* Unmark the vertex selected.<br>
|
||||
@@ -148,7 +148,7 @@ public interface Graph<V, W extends Number> extends Iterable<V> {
|
||||
* @throws NullPointerException if the vertex is null
|
||||
* @throws IllegalArgumentException if the vertex is not contained in the graph
|
||||
*/
|
||||
Collection<String> getMarks(V vertex) throws NullPointerException, IllegalArgumentException;
|
||||
Collection<Object> getMarks(V vertex) throws NullPointerException, IllegalArgumentException;
|
||||
|
||||
/**
|
||||
* Remove the selected mark from all the vertices
|
||||
@@ -156,7 +156,7 @@ public interface Graph<V, W extends Number> extends Iterable<V> {
|
||||
* @param mark the mark to remove
|
||||
* @throws NullPointerException if the mark is null
|
||||
*/
|
||||
void unMarkAll(String mark) throws NullPointerException;
|
||||
void unMarkAll(Object mark) throws NullPointerException;
|
||||
|
||||
/**
|
||||
* Remove all the marker to all the vertex.<br>
|
||||
@@ -488,7 +488,7 @@ public interface Graph<V, W extends Number> extends Iterable<V> {
|
||||
* @param marker the marker
|
||||
* @return a sub-graph of the current graph
|
||||
*/
|
||||
Graph<V, W> subGraph(String marker);
|
||||
Graph<V, W> subGraph(Object marker);
|
||||
|
||||
/**
|
||||
* Get the minimum path from the source vertex to the destination vertex.<br>
|
||||
|
||||
@@ -32,7 +32,7 @@ public class MapGraph<V, W extends Number> implements Graph<V, W> {
|
||||
/**
|
||||
* Map that contains the vertex as key and all the marker as the value associated with that vertex.
|
||||
*/
|
||||
private final Map<V, Set<String>> marked = new HashMap<>();
|
||||
private final Map<V, Set<Object>> marked = new HashMap<>();
|
||||
|
||||
/**
|
||||
* Need this variable for not calculating each time the SCC or the cyclic part if the graph doesn't change
|
||||
@@ -103,16 +103,16 @@ public class MapGraph<V, W extends Number> implements Graph<V, W> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void mark(V vertex, String mark) throws NullPointerException, IllegalArgumentException {
|
||||
public void mark(V vertex, Object mark) throws NullPointerException, IllegalArgumentException {
|
||||
checkNullAndExist(vertex);
|
||||
checkNull(mark);
|
||||
|
||||
Set<String> set = marked.computeIfAbsent(vertex, (m) -> new HashSet<>());
|
||||
Set<Object> set = marked.computeIfAbsent(vertex, (m) -> new HashSet<>());
|
||||
set.add(mark);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void unMark(V vertex, String mark) throws NullPointerException, IllegalArgumentException {
|
||||
public void unMark(V vertex, Object mark) throws NullPointerException, IllegalArgumentException {
|
||||
checkNullAndExist(vertex);
|
||||
checkNull(mark);
|
||||
marked.get(vertex).remove(mark);
|
||||
@@ -125,13 +125,13 @@ public class MapGraph<V, W extends Number> implements Graph<V, W> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Set<String> getMarks(V vertex) throws NullPointerException, IllegalArgumentException {
|
||||
public Set<Object> getMarks(V vertex) throws NullPointerException, IllegalArgumentException {
|
||||
checkNullAndExist(vertex);
|
||||
return marked.computeIfAbsent(vertex, (m) -> new HashSet<>());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void unMarkAll(String mark) {
|
||||
public void unMarkAll(Object mark) {
|
||||
checkNull(mark);
|
||||
marked.forEach((v, m) -> m.remove(mark));
|
||||
}
|
||||
@@ -394,7 +394,7 @@ public class MapGraph<V, W extends Number> implements Graph<V, W> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public Graph<V, W> subGraph(final String marker) {
|
||||
public Graph<V, W> subGraph(final Object marker) {
|
||||
final Graph<V, W> graph = new MapGraph<>();
|
||||
final Set<V> allVertices = new HashSet<>();
|
||||
|
||||
|
||||
@@ -57,17 +57,29 @@ public class Vertex<V> {
|
||||
*
|
||||
* @param mark the marker
|
||||
* @throws NullPointerException if the marker is null
|
||||
* @throws UnsupportedOperationException if the vertes is not in the graph anymore
|
||||
* @throws UnsupportedOperationException if the vertex is not in the graph anymore
|
||||
*/
|
||||
public void mark(String mark) throws NullPointerException, UnsupportedOperationException {
|
||||
public void mark(Object mark) throws NullPointerException, UnsupportedOperationException {
|
||||
throwIfNotContained();
|
||||
graph.mark(vertex, mark);
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove the specified mark from this vertex
|
||||
*
|
||||
* @param mark the marker
|
||||
* @throws NullPointerException if the mark is null
|
||||
* @throws UnsupportedOperationException if the vertex is not in the graph anymore
|
||||
*/
|
||||
public void unMark(Object mark) throws UnsupportedOperationException {
|
||||
throwIfNotContained();
|
||||
graph.unMark(vertex, mark);
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove all the marker from the vertex
|
||||
*
|
||||
* @throws UnsupportedOperationException if the vertes is not in the graph anymore
|
||||
* @throws UnsupportedOperationException if the vertex is not in the graph anymore
|
||||
*/
|
||||
public void unMark() throws UnsupportedOperationException {
|
||||
throwIfNotContained();
|
||||
@@ -78,9 +90,9 @@ public class Vertex<V> {
|
||||
* Get all the marks that are associated with this vertex
|
||||
*
|
||||
* @return a set of marks
|
||||
* @throws UnsupportedOperationException if the vertes is not in the graph anymore
|
||||
* @throws UnsupportedOperationException if the vertex is not in the graph anymore
|
||||
*/
|
||||
public Collection<String> getMarks() throws UnsupportedOperationException {
|
||||
public Collection<Object> getMarks() throws UnsupportedOperationException {
|
||||
throwIfNotContained();
|
||||
return graph.getMarks(vertex);
|
||||
}
|
||||
|
||||
@@ -1140,6 +1140,7 @@ public class TestGraph {
|
||||
shouldThrow(nullException, () -> vertex.addChild(null, 3));
|
||||
shouldThrow(nullException, () -> vertex.addChild(null, null));
|
||||
shouldThrow(nullException, () -> vertex.mark(null));
|
||||
shouldThrow(nullException, () -> vertex.unMark(null));
|
||||
shouldThrow(nullException, () -> vertex.removeChild(null));
|
||||
shouldThrow(new NullPointerException(), () -> vertex.visit(null, null));
|
||||
|
||||
@@ -1185,6 +1186,13 @@ public class TestGraph {
|
||||
shouldContain(graph.getMarks(vertex.getValue()), "ciao", "ciao2");
|
||||
vertex.unMark();
|
||||
shouldContain(vertex.getMarks());
|
||||
vertex.mark("cio");
|
||||
vertex.mark(1);
|
||||
shouldContain(vertex.getMarks(), "cio", 1);
|
||||
vertex.unMark(1);
|
||||
shouldContain(vertex.getMarks(), "cio");
|
||||
vertex.unMark("cio");
|
||||
shouldContain(vertex.getMarks());
|
||||
|
||||
vertex.removeChild("1");
|
||||
shouldContain(vertex.getChildren(), "2");
|
||||
|
||||
Reference in New Issue
Block a user