diff options
| author | Bananeweizen <bananeweizen@gmx.de> | 2012-11-11 11:40:27 +0100 |
|---|---|---|
| committer | Bananeweizen <bananeweizen@gmx.de> | 2012-11-11 11:40:27 +0100 |
| commit | 47c20caaefce9a11ef1a8247ad25e97231f29979 (patch) | |
| tree | 32c60377edb0f066ae2243c4b919b9cc25667f08 /main/src/cgeo/geocaching/utils | |
| parent | ce6b28bb617a2ec02c68356159ac5ba9bd531c0c (diff) | |
| download | cgeo-47c20caaefce9a11ef1a8247ad25e97231f29979.zip cgeo-47c20caaefce9a11ef1a8247ad25e97231f29979.tar.gz cgeo-47c20caaefce9a11ef1a8247ad25e97231f29979.tar.bz2 | |
fix #1973: Logs gone after online logging
Diffstat (limited to 'main/src/cgeo/geocaching/utils')
| -rw-r--r-- | main/src/cgeo/geocaching/utils/LazyInitializedList.java | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/main/src/cgeo/geocaching/utils/LazyInitializedList.java b/main/src/cgeo/geocaching/utils/LazyInitializedList.java new file mode 100644 index 0000000..6061394 --- /dev/null +++ b/main/src/cgeo/geocaching/utils/LazyInitializedList.java @@ -0,0 +1,68 @@ +package cgeo.geocaching.utils; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +public abstract class LazyInitializedList<ElementType> implements Iterable<ElementType> { + + private List<ElementType> list; + + public List<ElementType> get() { + initializeList(); + return list; + } + + private void initializeList() { + if (list == null) { + list = loadFromDatabase(); + } + } + + protected abstract List<ElementType> loadFromDatabase(); + + public void add(final ElementType element) { + initializeList(); + list.add(element); + } + + public void prepend(final ElementType element) { + initializeList(); + list.add(0, element); + } + + public void set(final List<ElementType> elements) { + list = new ArrayList<ElementType>(elements); + } + + public boolean isEmpty() { + initializeList(); + return list.isEmpty(); + } + + public ElementType remove(final int index) { + initializeList(); + return list.remove(index); + } + + public void add(int index, final ElementType element) { + initializeList(); + list.add(index, element); + } + + public int size() { + initializeList(); + return list.size(); + } + + @Override + public Iterator<ElementType> iterator() { + initializeList(); + return list.iterator(); + } + + public ElementType get(final int index) { + initializeList(); + return list.get(index); + } +} |
