194 lines
3.5 KiB
Java
194 lines
3.5 KiB
Java
package org.warp.jcwdb;
|
|
|
|
import java.io.IOException;
|
|
import java.util.*;
|
|
|
|
public class LightList<T> implements List<T> {
|
|
|
|
public final ArrayList<Long> internalList;
|
|
private final transient JCWDatabase db;
|
|
|
|
public LightList(JCWDatabase db, ArrayList<Long> internalList) {
|
|
this.internalList = internalList;
|
|
this.db = db;
|
|
}
|
|
|
|
@Override
|
|
public int size() {
|
|
return internalList.size();
|
|
}
|
|
|
|
@Override
|
|
public boolean isEmpty() {
|
|
return internalList.isEmpty();
|
|
}
|
|
|
|
@Override
|
|
public boolean contains(Object o) {
|
|
if (o != null) {
|
|
for (Long element : internalList) {
|
|
try {
|
|
EntryReference<T> ref = db.get(element);
|
|
if (o.equals(ref.value)) {
|
|
return true;
|
|
}
|
|
} catch (IOException e) {
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
@Override
|
|
public Iterator<T> iterator() {
|
|
final ArrayList<T> elements = new ArrayList<>();
|
|
for (Long element : internalList) {
|
|
try {
|
|
elements.add((T) db.get(element).value);
|
|
} catch (IOException e) {
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
return elements.iterator();
|
|
}
|
|
|
|
@Override
|
|
public T[] toArray() {
|
|
final T[] elements = (T[]) new Objects[internalList.size()];
|
|
for (int i = 0; i < elements.length; i++) {
|
|
try {
|
|
elements[i] = (T) db.get(internalList.get(i)).value;
|
|
} catch (IOException e) {
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
return elements;
|
|
}
|
|
|
|
@Override
|
|
public <T1> T1[] toArray(T1[] a) {
|
|
final T1[] elements = (T1[]) new Objects[internalList.size()];
|
|
for (int i = 0; i < elements.length; i++) {
|
|
try {
|
|
elements[i] = (T1) db.get(internalList.get(i)).value;
|
|
} catch (IOException e) {
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
return elements;
|
|
}
|
|
|
|
@Override
|
|
public boolean add(T o) {
|
|
EntryReference<T> ref;
|
|
try {
|
|
ref = db.add(o);
|
|
} catch (IOException e) {
|
|
throw (NullPointerException) new NullPointerException().initCause(e);
|
|
}
|
|
return internalList.add(ref.getIndex());
|
|
}
|
|
|
|
@Override
|
|
public boolean remove(Object o) {
|
|
EntryReference<T> ref;
|
|
try {
|
|
ref = db.add((T) o);
|
|
} catch (IOException e) {
|
|
throw (NullPointerException) new NullPointerException().initCause(e);
|
|
}
|
|
return internalList.remove(ref.getIndex());
|
|
}
|
|
|
|
@Override
|
|
public boolean containsAll(Collection<?> c) {
|
|
// TODO: implement
|
|
return false;
|
|
}
|
|
|
|
@Override
|
|
public boolean addAll(Collection<? extends T> c) {
|
|
// TODO: implement
|
|
return false;
|
|
}
|
|
|
|
@Override
|
|
public boolean addAll(int index, Collection<? extends T> c) {
|
|
// TODO: implement
|
|
return false;
|
|
}
|
|
|
|
@Override
|
|
public boolean removeAll(Collection<?> c) {
|
|
// TODO: implement
|
|
return false;
|
|
}
|
|
|
|
@Override
|
|
public boolean retainAll(Collection<?> c) {
|
|
// TODO: implement
|
|
return false;
|
|
}
|
|
|
|
@Override
|
|
public void clear() {
|
|
// TODO: implement
|
|
|
|
}
|
|
|
|
@Override
|
|
public T get(int index) {
|
|
// TODO: implement
|
|
return null;
|
|
}
|
|
|
|
@Override
|
|
public T set(int index, T element) {
|
|
// TODO: implement
|
|
return null;
|
|
}
|
|
|
|
@Override
|
|
public void add(int index, T element) {
|
|
// TODO: implement
|
|
|
|
}
|
|
|
|
@Override
|
|
public T remove(int index) {
|
|
// TODO: implement
|
|
return null;
|
|
}
|
|
|
|
@Override
|
|
public int indexOf(Object o) {
|
|
// TODO: implement
|
|
return 0;
|
|
}
|
|
|
|
@Override
|
|
public int lastIndexOf(Object o) {
|
|
// TODO: implement
|
|
return 0;
|
|
}
|
|
|
|
@Override
|
|
public ListIterator<T> listIterator() {
|
|
// TODO: implement
|
|
return null;
|
|
}
|
|
|
|
@Override
|
|
public ListIterator<T> listIterator(int index) {
|
|
// TODO: implement
|
|
return null;
|
|
}
|
|
|
|
@Override
|
|
public List<T> subList(int fromIndex, int toIndex) {
|
|
// TODO: implement
|
|
return null;
|
|
}
|
|
}
|