blob: a618822cb8b33e2ca8c161214d7e416910e44a46 [file] [log] [blame]
Yuta HIGUCHI1fc395e2014-05-13 14:06:28 -07001package net.onrc.onos.core.intent;
2
3import java.util.Collection;
4import java.util.Iterator;
5import java.util.LinkedList;
6import java.util.List;
7import java.util.ListIterator;
8
Yuta HIGUCHI93d35ea2014-08-31 23:26:13 -07009import net.onrc.onos.core.topology.LinkData;
Yuta HIGUCHI1fc395e2014-05-13 14:06:28 -070010
11/**
Brian O'Connora581b9d2014-06-15 23:32:36 -070012 * Base class for Path representation, which implements the List interface.
Yuta HIGUCHI1fc395e2014-05-13 14:06:28 -070013 */
Yuta HIGUCHI93d35ea2014-08-31 23:26:13 -070014public class Path implements List<LinkData> {
Yuta HIGUCHI1fc395e2014-05-13 14:06:28 -070015
Yuta HIGUCHI93d35ea2014-08-31 23:26:13 -070016 private final List<LinkData> links;
Yuta HIGUCHI1fc395e2014-05-13 14:06:28 -070017
18 /**
19 * Default constructor to create an empty path.
20 */
21 public Path() {
Yuta HIGUCHI93d35ea2014-08-31 23:26:13 -070022 links = new LinkedList<LinkData>();
Yuta HIGUCHI1fc395e2014-05-13 14:06:28 -070023 }
24
Brian O'Connora581b9d2014-06-15 23:32:36 -070025 /**
26 * Returns a string representation of the path.
27 *
Yuta HIGUCHI93d35ea2014-08-31 23:26:13 -070028 * @return "[LinkData src->dst],..."
Brian O'Connora581b9d2014-06-15 23:32:36 -070029 */
Yuta HIGUCHI1fc395e2014-05-13 14:06:28 -070030 @Override
31 public String toString() {
32 StringBuilder builder = new StringBuilder();
Yuta HIGUCHI93d35ea2014-08-31 23:26:13 -070033 Iterator<LinkData> i = this.iterator();
Yuta HIGUCHI1fc395e2014-05-13 14:06:28 -070034 while (i.hasNext()) {
35 builder.append(i.next().toString());
36 if (i.hasNext()) {
37 builder.append(", ");
38 }
39 }
40 return builder.toString();
41 }
42
43 @Override
44 public int size() {
45 return links.size();
46 }
47
48 @Override
49 public boolean isEmpty() {
50 return links.isEmpty();
51 }
52
53 @Override
54 public boolean contains(Object o) {
55 return links.contains(o);
56 }
57
58 @Override
Yuta HIGUCHI93d35ea2014-08-31 23:26:13 -070059 public Iterator<LinkData> iterator() {
Yuta HIGUCHI1fc395e2014-05-13 14:06:28 -070060 return links.iterator();
61 }
62
63 @Override
64 public Object[] toArray() {
65 return links.toArray();
66 }
67
68 @Override
69 public <T> T[] toArray(T[] a) {
70 return links.toArray(a);
71 }
72
73 @Override
Yuta HIGUCHI93d35ea2014-08-31 23:26:13 -070074 public boolean add(LinkData d) {
75 return links.add(d);
Yuta HIGUCHI1fc395e2014-05-13 14:06:28 -070076 }
77
78 @Override
79 public boolean remove(Object o) {
80 return links.remove(o);
81 }
82
83 @Override
84 public boolean containsAll(Collection<?> c) {
85 return links.containsAll(c);
86 }
87
88 @Override
Yuta HIGUCHI93d35ea2014-08-31 23:26:13 -070089 public boolean addAll(Collection<? extends LinkData> c) {
Yuta HIGUCHI1fc395e2014-05-13 14:06:28 -070090 return links.addAll(c);
91 }
92
93 @Override
Yuta HIGUCHI93d35ea2014-08-31 23:26:13 -070094 public boolean addAll(int index, Collection<? extends LinkData> c) {
Yuta HIGUCHI1fc395e2014-05-13 14:06:28 -070095 return links.addAll(index, c);
96 }
97
98 @Override
99 public boolean removeAll(Collection<?> c) {
100 return links.removeAll(c);
101 }
102
103 @Override
104 public boolean retainAll(Collection<?> c) {
105 return links.retainAll(c);
106 }
107
108 @Override
109 public void clear() {
110 links.clear();
111 }
112
113 @Override
114 public boolean equals(Object o) {
115 return links.equals(o);
116 }
117
118 @Override
119 public int hashCode() {
120 return links.hashCode();
121 }
122
123 @Override
Yuta HIGUCHI93d35ea2014-08-31 23:26:13 -0700124 public LinkData get(int index) {
Yuta HIGUCHI1fc395e2014-05-13 14:06:28 -0700125 return links.get(index);
126 }
127
128 @Override
Yuta HIGUCHI93d35ea2014-08-31 23:26:13 -0700129 public LinkData set(int index, LinkData element) {
Yuta HIGUCHI1fc395e2014-05-13 14:06:28 -0700130 return links.set(index, element);
131 }
132
133 @Override
Yuta HIGUCHI93d35ea2014-08-31 23:26:13 -0700134 public void add(int index, LinkData element) {
Yuta HIGUCHI1fc395e2014-05-13 14:06:28 -0700135 links.add(index, element);
136 }
137
138 @Override
Yuta HIGUCHI93d35ea2014-08-31 23:26:13 -0700139 public LinkData remove(int index) {
Yuta HIGUCHI1fc395e2014-05-13 14:06:28 -0700140 return links.remove(index);
141 }
142
143 @Override
144 public int indexOf(Object o) {
145 return links.indexOf(o);
146 }
147
148 @Override
149 public int lastIndexOf(Object o) {
150 return links.lastIndexOf(o);
151 }
152
153 @Override
Yuta HIGUCHI93d35ea2014-08-31 23:26:13 -0700154 public ListIterator<LinkData> listIterator() {
Yuta HIGUCHI1fc395e2014-05-13 14:06:28 -0700155 return links.listIterator();
156 }
157
158 @Override
Yuta HIGUCHI93d35ea2014-08-31 23:26:13 -0700159 public ListIterator<LinkData> listIterator(int index) {
Yuta HIGUCHI1fc395e2014-05-13 14:06:28 -0700160 return links.listIterator(index);
161 }
162
163 @Override
Yuta HIGUCHI93d35ea2014-08-31 23:26:13 -0700164 public List<LinkData> subList(int fromIndex, int toIndex) {
Yuta HIGUCHI1fc395e2014-05-13 14:06:28 -0700165 return links.subList(fromIndex, toIndex);
166 }
167}