Skip to content

Package: IndirectList

IndirectList

nameinstructionbranchcomplexitylinemethod
IndirectList()
M: 8 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 3 C: 0
0%
M: 1 C: 0
0%
IndirectList(Object, Field, UnitOfWorkImpl, List)
M: 0 C: 16
100%
M: 0 C: 2
100%
M: 0 C: 2
100%
M: 0 C: 5
100%
M: 0 C: 1
100%
add(Object)
M: 0 C: 11
100%
M: 1 C: 1
50%
M: 1 C: 1
50%
M: 0 C: 4
100%
M: 0 C: 1
100%
add(int, Object)
M: 0 C: 8
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 3
100%
M: 0 C: 1
100%
addAll(Collection)
M: 0 C: 11
100%
M: 1 C: 1
50%
M: 1 C: 1
50%
M: 0 C: 4
100%
M: 0 C: 1
100%
addAll(int, Collection)
M: 0 C: 12
100%
M: 1 C: 1
50%
M: 1 C: 1
50%
M: 0 C: 4
100%
M: 0 C: 1
100%
clear()
M: 0 C: 6
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 3
100%
M: 0 C: 1
100%
contains(Object)
M: 0 C: 5
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
containsAll(Collection)
M: 5 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 1 C: 0
0%
M: 1 C: 0
0%
equals(Object)
M: 7 C: 13
65%
M: 2 C: 2
50%
M: 2 C: 1
33%
M: 2 C: 3
60%
M: 0 C: 1
100%
get(int)
M: 0 C: 5
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
getReferencedCollection()
M: 0 C: 3
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
hashCode()
M: 4 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 1 C: 0
0%
M: 1 C: 0
0%
indexOf(Object)
M: 5 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 1 C: 0
0%
M: 1 C: 0
0%
isEmpty()
M: 0 C: 4
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
iterator()
M: 0 C: 9
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
lastIndexOf(Object)
M: 5 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 1 C: 0
0%
M: 1 C: 0
0%
listIterator()
M: 0 C: 9
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
listIterator(int)
M: 0 C: 10
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
remove(Object)
M: 0 C: 11
100%
M: 0 C: 2
100%
M: 0 C: 2
100%
M: 0 C: 4
100%
M: 0 C: 1
100%
remove(int)
M: 0 C: 9
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 3
100%
M: 0 C: 1
100%
removeAll(Collection)
M: 0 C: 11
100%
M: 1 C: 1
50%
M: 1 C: 1
50%
M: 0 C: 4
100%
M: 0 C: 1
100%
retainAll(Collection)
M: 0 C: 11
100%
M: 1 C: 1
50%
M: 1 C: 1
50%
M: 0 C: 4
100%
M: 0 C: 1
100%
set(int, Object)
M: 0 C: 10
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 3
100%
M: 0 C: 1
100%
size()
M: 0 C: 4
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
subList(int, int)
M: 15 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 1 C: 0
0%
M: 1 C: 0
0%
toArray()
M: 4 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 1 C: 0
0%
M: 1 C: 0
0%
toArray(Object[])
M: 5 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 1 C: 0
0%
M: 1 C: 0
0%
toString()
M: 0 C: 4
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%

Coverage

1: /**
2: * Copyright (C) 2016 Czech Technical University in Prague
3: *
4: * This program is free software: you can redistribute it and/or modify it under
5: * the terms of the GNU General Public License as published by the Free Software
6: * Foundation, either version 3 of the License, or (at your option) any
7: * later version.
8: *
9: * This program is distributed in the hope that it will be useful, but WITHOUT
10: * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
11: * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
12: * details. You should have received a copy of the GNU General Public License
13: * along with this program. If not, see <http://www.gnu.org/licenses/>.
14: */
15: package cz.cvut.kbss.jopa.adapters;
16:
17: import java.lang.reflect.Field;
18: import java.util.ArrayList;
19: import java.util.Collection;
20: import java.util.Iterator;
21: import java.util.List;
22: import java.util.ListIterator;
23:
24: import cz.cvut.kbss.jopa.sessions.UnitOfWorkImpl;
25:
26: public class IndirectList<E> extends IndirectCollection<List<E>> implements List<E> {
27:
28: private final List<E> internalList;
29:
30: /**
31: * No-arg constructor to allow clone building.
32: */
33: IndirectList() {
34: super();
35: this.internalList = new ArrayList<>();
36: }
37:
38: /**
39: * Create new indirect list backed by the specified referenced list.
40: *
41: * @param owner
42: * Owner of the list
43: * @param f
44: * The field holding this list
45: * @param uow
46: * Persistence context the owner belongs to
47: * @param referencedList
48: * The list to reference
49: * @throws NullPointerException
50: * If the {@code referencedList} is null
51: */
52: public IndirectList(Object owner, Field f, UnitOfWorkImpl uow, List<E> referencedList) {
53: super(owner, f, uow);
54:• if (referencedList == null) {
55: throw new NullPointerException("Null passed in as the referencedList.");
56: }
57: this.internalList = referencedList;
58: }
59:
60: @Override
61: public boolean add(E arg0) {
62: boolean res = internalList.add(arg0);
63:• if (res) {
64: persistChange();
65: }
66: return res;
67: }
68:
69: @Override
70: public void add(int arg0, E arg1) {
71: internalList.add(arg0, arg1);
72: persistChange();
73: }
74:
75: @Override
76: public boolean addAll(Collection<? extends E> arg0) {
77: boolean res = internalList.addAll(arg0);
78:• if (res) {
79: persistChange();
80: }
81: return res;
82: }
83:
84: @Override
85: public boolean addAll(int arg0, Collection<? extends E> arg1) {
86: boolean res = internalList.addAll(arg0, arg1);
87:• if (res) {
88: persistChange();
89: }
90: return res;
91: }
92:
93: @Override
94: public void clear() {
95: internalList.clear();
96: persistChange();
97: }
98:
99: @Override
100: public boolean contains(Object arg0) {
101: return internalList.contains(arg0);
102: }
103:
104: @Override
105: public boolean containsAll(Collection<?> arg0) {
106: return internalList.containsAll(arg0);
107: }
108:
109: @Override
110: public E get(int arg0) {
111: return internalList.get(arg0);
112: }
113:
114: @Override
115: public int indexOf(Object arg0) {
116: return internalList.indexOf(arg0);
117: }
118:
119: @Override
120: public boolean isEmpty() {
121: return internalList.isEmpty();
122: }
123:
124: @Override
125: public Iterator<E> iterator() {
126: return new IndirectIterator(internalList.iterator());
127: }
128:
129: @Override
130: public int lastIndexOf(Object arg0) {
131: return internalList.lastIndexOf(arg0);
132: }
133:
134: @Override
135: public ListIterator<E> listIterator() {
136: return new IndirectListIterator(internalList.listIterator());
137: }
138:
139: @Override
140: public ListIterator<E> listIterator(int arg0) {
141: return new IndirectListIterator(internalList.listIterator(arg0));
142: }
143:
144: @Override
145: public boolean remove(Object arg0) {
146: boolean res = internalList.remove(arg0);
147:• if (res) {
148: persistChange();
149: }
150: return res;
151: }
152:
153: @Override
154: public E remove(int arg0) {
155: E elem = internalList.remove(arg0);
156: persistChange();
157: return elem;
158: }
159:
160: @Override
161: public boolean removeAll(Collection<?> arg0) {
162: boolean res = internalList.removeAll(arg0);
163:• if (res) {
164: persistChange();
165: }
166: return res;
167: }
168:
169: @Override
170: public boolean retainAll(Collection<?> arg0) {
171: boolean res = internalList.retainAll(arg0);
172:• if (res) {
173: persistChange();
174: }
175: return res;
176: }
177:
178: @Override
179: public E set(int arg0, E arg1) {
180: E elem = internalList.set(arg0, arg1);
181: persistChange();
182: return elem;
183: }
184:
185: @Override
186: public int size() {
187: return internalList.size();
188: }
189:
190: @Override
191: public List<E> subList(int fromIndex, int toIndex) {
192: return new IndirectList<>(owner, field, persistenceContext, internalList.subList(fromIndex, toIndex));
193: }
194:
195: @Override
196: public Object[] toArray() {
197: return internalList.toArray();
198: }
199:
200: @Override
201: public <T> T[] toArray(T[] arg0) {
202: return internalList.toArray(arg0);
203: }
204:
205: @Override
206: public List<E> getReferencedCollection() {
207: return internalList;
208: }
209:
210: @Override
211: public boolean equals(Object o) {
212:• if (o instanceof List) {
213:• if (o instanceof IndirectList) {
214: return internalList.equals(((IndirectList) o).internalList);
215: }
216: return internalList.equals(o);
217: }
218: return false;
219: }
220:
221: @Override
222: public int hashCode() {
223: return internalList.hashCode();
224: }
225:
226: @Override
227: public String toString() {
228: return internalList.toString();
229: }
230:
231: private class IndirectIterator implements Iterator<E> {
232:
233: private final Iterator<E> it;
234:
235: private IndirectIterator(Iterator<E> it) {
236: this.it = it;
237: }
238:
239: @Override
240: public boolean hasNext() {
241: return it.hasNext();
242: }
243:
244: @Override
245: public E next() {
246: return it.next();
247: }
248:
249: @Override
250: public void remove() {
251: it.remove();
252: IndirectList.this.persistChange();
253: }
254: }
255:
256: private class IndirectListIterator implements ListIterator<E> {
257:
258: private final ListIterator<E> lit;
259:
260: private IndirectListIterator(ListIterator<E> lit) {
261: this.lit = lit;
262: }
263:
264: @Override
265: public boolean hasNext() {
266: return lit.hasNext();
267: }
268:
269: @Override
270: public E next() {
271: return lit.next();
272: }
273:
274: @Override
275: public boolean hasPrevious() {
276: return lit.hasPrevious();
277: }
278:
279: @Override
280: public E previous() {
281: return lit.previous();
282: }
283:
284: @Override
285: public int nextIndex() {
286: return lit.nextIndex();
287: }
288:
289: @Override
290: public int previousIndex() {
291: return lit.previousIndex();
292: }
293:
294: @Override
295: public void remove() {
296: lit.remove();
297: IndirectList.this.persistChange();
298: }
299:
300: @Override
301: public void set(E e) {
302: lit.set(e);
303: IndirectList.this.persistChange();
304: }
305:
306: @Override
307: public void add(E e) {
308: lit.add(e);
309: IndirectList.this.persistChange();
310: }
311: }
312: }