1 package org.codehaus.plexus.util.dag;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 import java.io.Serializable;
20 import java.util.ArrayList;
21 import java.util.List;
22
23
24
25
26
27 public class Vertex implements Cloneable, Serializable {
28
29
30
31 private String label = null;
32
33 List<Vertex> children = new ArrayList<>();
34
35 List<Vertex> parents = new ArrayList<>();
36
37
38
39
40
41 public Vertex(final String label) {
42 this.label = label;
43 }
44
45
46
47
48
49 public String getLabel() {
50 return label;
51 }
52
53 public void addEdgeTo(final Vertex vertex) {
54 children.add(vertex);
55 }
56
57 public void removeEdgeTo(final Vertex vertex) {
58 children.remove(vertex);
59 }
60
61 public void addEdgeFrom(final Vertex vertex) {
62 parents.add(vertex);
63 }
64
65 public void removeEdgeFrom(final Vertex vertex) {
66 parents.remove(vertex);
67 }
68
69 public List<Vertex> getChildren() {
70 return children;
71 }
72
73
74
75
76
77
78 public List<String> getChildLabels() {
79 final List<String> retValue = new ArrayList<>(children.size());
80
81 for (Vertex vertex : children) {
82 retValue.add(vertex.getLabel());
83 }
84 return retValue;
85 }
86
87
88
89
90
91
92 public List<Vertex> getParents() {
93 return parents;
94 }
95
96
97
98
99
100
101 public List<String> getParentLabels() {
102 final List<String> retValue = new ArrayList<>(parents.size());
103
104 for (Vertex vertex : parents) {
105 retValue.add(vertex.getLabel());
106 }
107 return retValue;
108 }
109
110
111
112
113
114
115 public boolean isLeaf() {
116 return children.size() == 0;
117 }
118
119
120
121
122
123
124 public boolean isRoot() {
125 return parents.size() == 0;
126 }
127
128
129
130
131
132
133 public boolean isConnected() {
134 return isRoot() || isLeaf();
135 }
136
137 @Override
138 public Object clone() throws CloneNotSupportedException {
139
140 final Object retValue = super.clone();
141
142 return retValue;
143 }
144
145 @Override
146 public String toString() {
147 return "Vertex{" + "label='" + label + "'" + "}";
148 }
149 }