strangedb/src/main/java/org/warp/jcwdb/LightList.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;
}
}