package com.aventstack.extentreports.model;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.NoSuchElementException;
public class AbstractStructure<T> implements Serializable {
private static final long serialVersionUID = -2630417398255980331L;
private transient List<T> list;
AbstractStructure() {
list = Collections.synchronizedList(new ArrayList<>());
}
public void add(T t) {
list.add(t);
}
public T get(int x) {
return list.get(x);
}
public T getLast() {
if (list.size() == 0)
return null;
return list.get(list.size() - 1);
}
public List<T> getAll() {
return list;
}
public int size() {
if (list == null)
return 0;
return list.size();
}
public TIterator getIterator() { return new TIterator(); }
// log iterator
private class TIterator implements Iterator<T> {
private int index;
TIterator() {
index = 0;
}
@Override
public boolean hasNext() {
return list != null && list.size() >= index + 1;
}
@Override
public T next() {
if (hasNext()) {
return list.get(index++);
}
throw new NoSuchElementException();
}
@Override
public void remove() {
list.remove(index);
}
}
}