package com.rapidftr.datastore; import java.util.Enumeration; import java.util.Vector; import com.rapidftr.model.Child; import com.rapidftr.utilities.ChildSorter; import com.rapidftr.utilities.ImageHelper; public class Children { private final Vector vector; private ChildSorter childSorter; public Children(Vector vector) { this(vector, new ChildSorter()); } public Children(Vector vector, ChildSorter sorter) { this.vector = vector; this.childSorter = sorter; } public Children(Child[] array) { vector = new Vector(); for (int i = 0; i < array.length; i++) { vector.addElement(array[i]); } } public int count() { return vector.size(); } public void forEachChild(ChildAction action) { Enumeration elements = vector.elements(); while (elements.hasMoreElements()) { Child child = (Child) elements.nextElement(); action.execute(child); } } public Child[] toArray() { Child[] array = new Child[count()]; vector.copyInto(array); return array; } public Children sortBy(final Field field, final boolean isAscending) { Child[] children = toArray(); childSorter.sort(children, isAscending, field); return new Children(children); } public Children sortBy(StringField stringField) { return sortBy(stringField,true); } public Object[] getChildrenAndImages() { int size = pageSize() <= count() ? pageSize() : count(); Object[] childrenAndImages = new Object[size]; for (int i = 0; i < size; i++) { childrenAndImages[i] = getImagePairAt(i); } return childrenAndImages; } public Object[] getImagePairAt(int i) { Object[] childImagePair = new Object[2]; Child child = (Child) vector.elementAt(i); childImagePair[0] = child; childImagePair[1] = new ImageHelper().getThumbnail(child.getImageLocation()); return childImagePair; } private int pageSize(){ return 10; } public Children getChildrenToUpload() { Vector result = new Vector(); Enumeration elements = vector.elements(); while(elements.hasMoreElements()){ Child child = (Child)elements.nextElement(); if (child.isNewChild() || child.isUpdated()) { result.addElement(child); } } return new Children(result); } }