Javolution 6.0.0 java
AtomicTableImpl.java
Go to the documentation of this file.
1 /*
2  * Javolution - Java(TM) Solution for Real-Time and Embedded Systems
3  * Copyright (C) 2012 - Javolution (http://javolution.org/)
4  * All rights reserved.
5  *
6  * Permission to use, copy, modify, and distribute this software is
7  * freely granted, provided that this notice is preserved.
8  */
9 package javolution.util.internal.table;
10 
11 import java.util.Collection;
12 import java.util.Iterator;
13 import java.util.ListIterator;
14 
18 
22 public class AtomicTableImpl<E> extends AtomicCollectionImpl<E> implements
23  TableService<E> {
24 
25  private static final long serialVersionUID = 0x600L; // Version.
26 
28  super(target);
29  }
30 
31  @Override
32  public synchronized void add(int index, E element) {
33  target().add(index, element);
35  }
36 
37  @Override
38  public synchronized boolean addAll(int index, Collection<? extends E> c) {
39  boolean changed = target().addAll(index, c);
40  if (changed && !updateInProgress()) immutable = cloneTarget();
41  return changed;
42  }
43 
44  @Override
45  public synchronized void addFirst(E element) {
46  target().addFirst(element);
48  }
49 
50  @Override
51  public synchronized void addLast(E element) {
52  target().addLast(element);
54  }
55 
56  @Override
57  public Iterator<E> descendingIterator() {
58  return new ReversedTableImpl<E>(this).iterator();
59  }
60 
61  @Override
62  public E element() {
63  return getFirst();
64  }
65 
66  @Override
67  public E get(int index) {
68  return targetView().get(index);
69  }
70 
71  @Override
72  public E getFirst() {
73  return targetView().getFirst();
74  }
75 
76  @Override
77  public E getLast() {
78  return targetView().getLast();
79  }
80 
81  @Override
82  public int indexOf(Object element) {
83  return targetView().indexOf(element);
84  }
85 
86  @Override
87  public ListIterator<E> iterator() {
88  return listIterator(0);
89  }
90 
91  @Override
92  public int lastIndexOf(Object element) {
93  return targetView().lastIndexOf(element);
94  }
95 
96  @Override
97  public ListIterator<E> listIterator() {
98  return listIterator(0);
99  }
100 
101  @Override
102  public ListIterator<E> listIterator(int index) {
103  return new TableIteratorImpl<E>(this, index); // Iterator view on this.
104  }
105 
106  @Override
107  public boolean offer(E e) {
108  return offerLast(e);
109  }
110 
111  @Override
112  public synchronized boolean offerFirst(E e) {
113  boolean changed = target().offerFirst(e);
114  if (changed && !updateInProgress()) immutable = cloneTarget();
115  return changed;
116  }
117 
118  @Override
119  public synchronized boolean offerLast(E e) {
120  boolean changed = target().offerLast(e);
121  if (changed && !updateInProgress()) immutable = cloneTarget();
122  return changed;
123  }
124 
125  @Override
126  public E peek() {
127  return peekFirst();
128  }
129 
130  @Override
131  public E peekFirst() {
132  return targetView().peekFirst();
133  }
134 
135  @Override
136  public E peekLast() {
137  return targetView().peekLast();
138  }
139 
140  @Override
141  public E poll() {
142  return pollFirst();
143  }
144 
145  @Override
146  public synchronized E pollFirst() {
147  E e = target().pollFirst();
148  if ((e != null) && !updateInProgress()) immutable = cloneTarget();
149  return e;
150  }
151 
152  @Override
153  public synchronized E pollLast() {
154  E e = target().pollLast();
155  if ((e != null) && !updateInProgress()) immutable = cloneTarget();
156  return e;
157  }
158 
159  @Override
160  public E pop() {
161  return removeFirst();
162  }
163 
164  @Override
165  public void push(E e) {
166  addFirst(e);
167  }
168 
169  @Override
170  public E remove() {
171  return removeFirst();
172  }
173 
174  @Override
175  public synchronized E remove(int index) {
176  E e = target().remove(index);
178  return e;
179  }
180 
181  @Override
182  public synchronized E removeFirst() {
183  E e = target().removeFirst();
185  return e;
186  }
187 
188  @Override
189  public synchronized boolean removeFirstOccurrence(Object o) {
190  boolean changed = target().removeFirstOccurrence(o);
191  if (changed && !updateInProgress()) immutable = cloneTarget();
192  return changed;
193  }
194 
195  @Override
196  public synchronized E removeLast() {
197  E e = target().removeLast();
199  return e;
200  }
201 
202  @Override
203  public synchronized boolean removeLastOccurrence(Object o) {
204  boolean changed = target().removeLastOccurrence(o);
205  if (changed && !updateInProgress()) immutable = cloneTarget();
206  return changed;
207  }
208 
209  @Override
210  public synchronized E set(int index, E element) {
211  E e = target().set(index, element);
213  return e;
214  }
215 
216  @Override
217  public CollectionService<E>[] split(int n) {
218  return SubTableImpl.splitOf(this, n); // Sub-views over this.
219  }
220 
221  @Override
222  public TableService<E> subList(int fromIndex, int toIndex) {
223  return new SubTableImpl<E>(this, fromIndex, toIndex); // View on this.
224  }
225 
226  @Override
228  return this;
229  }
230 
231  @Override
233  return (TableService<E>) super.targetView();
234  }
235 
237  @Override
238  protected TableService<E> target() {
239  return (TableService<E>) super.target();
240  }
241 
242 }
javolution.util.internal.table.AtomicTableImpl.offer
boolean offer(E e)
Definition: AtomicTableImpl.java:107
javolution.util.internal.table.AtomicTableImpl.pollFirst
synchronized E pollFirst()
Definition: AtomicTableImpl.java:146
javolution.util.internal.collection.AtomicCollectionImpl.updateInProgress
final boolean updateInProgress()
Definition: AtomicCollectionImpl.java:200
javolution.util.internal.table.AtomicTableImpl.lastIndexOf
int lastIndexOf(Object element)
Definition: AtomicTableImpl.java:92
javolution
javolution.util.internal
javolution.util.internal.table.AtomicTableImpl.getLast
E getLast()
Definition: AtomicTableImpl.java:77
javolution.util.service
Definition: BitSetService.java:9
javolution.util.internal.table.TableIteratorImpl
Definition: TableIteratorImpl.java:19
javolution.util.internal.table.AtomicTableImpl.addAll
synchronized boolean addAll(int index, Collection<? extends E > c)
Definition: AtomicTableImpl.java:38
javolution.util.internal.table.TableView.iterator
Iterator< E > iterator()
Definition: TableView.java:103
javolution.util.internal.collection.AtomicCollectionImpl.cloneTarget
CollectionService< E > cloneTarget()
Definition: AtomicCollectionImpl.java:191
javolution.util.internal.table.AtomicTableImpl.targetView
TableService< E > targetView()
Definition: AtomicTableImpl.java:232
javolution.util.internal.table.SubTableImpl.splitOf
static< E > CollectionService< E >[] splitOf(TableService< E > table, int n)
Definition: SubTableImpl.java:24
javolution.util.internal.collection
Definition: AtomicCollectionImpl.java:9
javolution.util.internal.table.AtomicTableImpl.AtomicTableImpl
AtomicTableImpl(TableService< E > target)
Definition: AtomicTableImpl.java:27
javolution.util.internal.table.AtomicTableImpl.push
void push(E e)
Definition: AtomicTableImpl.java:165
javolution.util.internal.table.AtomicTableImpl.indexOf
int indexOf(Object element)
Definition: AtomicTableImpl.java:82
javolution.util.internal.table.AtomicTableImpl.removeFirstOccurrence
synchronized boolean removeFirstOccurrence(Object o)
Definition: AtomicTableImpl.java:189
javolution.util.internal.table.AtomicTableImpl
Definition: AtomicTableImpl.java:23
javolution.util.internal.table.AtomicTableImpl.listIterator
ListIterator< E > listIterator()
Definition: AtomicTableImpl.java:97
javolution.util.internal.table.ReversedTableImpl
Definition: ReversedTableImpl.java:17
javolution.util.internal.table.AtomicTableImpl.split
CollectionService< E >[] split(int n)
Definition: AtomicTableImpl.java:217
javolution.util.service.CollectionService
Definition: CollectionService.java:25
javolution.util.internal.table.AtomicTableImpl.listIterator
ListIterator< E > listIterator(int index)
Definition: AtomicTableImpl.java:102
javolution.util.internal.table.AtomicTableImpl.target
TableService< E > target()
Definition: AtomicTableImpl.java:238
javolution.util.internal.table.AtomicTableImpl.subList
TableService< E > subList(int fromIndex, int toIndex)
Definition: AtomicTableImpl.java:222
javolution.util.internal.table.AtomicTableImpl.offerFirst
synchronized boolean offerFirst(E e)
Definition: AtomicTableImpl.java:112
javolution.util.internal.table.AtomicTableImpl.threadSafe
TableService< E > threadSafe()
Definition: AtomicTableImpl.java:227
javolution.util.internal.table.AtomicTableImpl.peek
E peek()
Definition: AtomicTableImpl.java:126
javolution.util.internal.table.AtomicTableImpl.poll
E poll()
Definition: AtomicTableImpl.java:141
javolution.util.internal.table.AtomicTableImpl.addFirst
synchronized void addFirst(E element)
Definition: AtomicTableImpl.java:45
javolution.util.internal.table.AtomicTableImpl.descendingIterator
Iterator< E > descendingIterator()
Definition: AtomicTableImpl.java:57
javolution.util.internal.collection.AtomicCollectionImpl
Definition: AtomicCollectionImpl.java:21
javolution.util.internal.table.AtomicTableImpl.iterator
ListIterator< E > iterator()
Definition: AtomicTableImpl.java:87
javolution.util.internal.table.SubTableImpl
Definition: SubTableImpl.java:18
javolution.util.internal.table.AtomicTableImpl.peekLast
E peekLast()
Definition: AtomicTableImpl.java:136
javolution.util.internal.table.AtomicTableImpl.offerLast
synchronized boolean offerLast(E e)
Definition: AtomicTableImpl.java:119
javolution.util.internal.table.AtomicTableImpl.getFirst
E getFirst()
Definition: AtomicTableImpl.java:72
javolution.util.service.TableService
Definition: TableService.java:21
javolution.util.internal.table.AtomicTableImpl.serialVersionUID
static final long serialVersionUID
Definition: AtomicTableImpl.java:25
javolution.util.internal.table.AtomicTableImpl.removeLast
synchronized E removeLast()
Definition: AtomicTableImpl.java:196
javolution.util.internal.table.AtomicTableImpl.peekFirst
E peekFirst()
Definition: AtomicTableImpl.java:131
javolution.util.internal.table.AtomicTableImpl.addLast
synchronized void addLast(E element)
Definition: AtomicTableImpl.java:51
javolution.util.internal.table.AtomicTableImpl.add
synchronized void add(int index, E element)
Definition: AtomicTableImpl.java:32
javolution.util.internal.table.AtomicTableImpl.removeFirst
synchronized E removeFirst()
Definition: AtomicTableImpl.java:182
javolution.util
Definition: FastBitSet.java:9
javolution.util.internal.table.AtomicTableImpl.pop
E pop()
Definition: AtomicTableImpl.java:160
javolution.util.internal.table.AtomicTableImpl.element
E element()
Definition: AtomicTableImpl.java:62
javolution.util.internal.table.AtomicTableImpl.removeLastOccurrence
synchronized boolean removeLastOccurrence(Object o)
Definition: AtomicTableImpl.java:203
javolution.util.internal.table.AtomicTableImpl.pollLast
synchronized E pollLast()
Definition: AtomicTableImpl.java:153
javolution.util.internal.collection.AtomicCollectionImpl.immutable
volatile CollectionService< E > immutable
Definition: AtomicCollectionImpl.java:52