package tmcsim.client.cadclientgui.data; import java.awt.List; import java.io.Serializable; import java.util.LinkedList; /** * This class extends a list and holds a list of CardfileDataObject alongside a * list of CardfileDataObject's Name Field. The index of the CFDO and Name field * should match at all times. Each instance of this class is meant to display * any one list in the Cardfile's tabbed panel. * * @author Vincent * */ public class CardfileList extends List implements Serializable { LinkedList list; public CardfileList() { super(); list = new LinkedList(); } /** * Inserts the object so it remains in sorted order lexicographically. * * @param cfdo * the object to be inserted * @return the inserted position */ public int addDataObject(CardfileDataObject cfdo) { int insertPosition = 0; if (list.size() == 0) { super.add(cfdo.getName()); list.add(cfdo); return 0; } if (cfdo.getName().compareTo(list.get(insertPosition).getName()) < 0) { super.add(cfdo.getName(), insertPosition); list.add(insertPosition, cfdo); return insertPosition; } while (insertPosition < list.size() && cfdo.getName().compareTo(list.get(insertPosition).getName()) > 0) { insertPosition++; } if (insertPosition < list.size()) { super.add(cfdo.getName(), insertPosition); list.add(insertPosition, cfdo); } else { super.add(cfdo.getName()); list.add(cfdo); } return insertPosition; } /** * Removes the CFDO and name field from both lists at the specified index. * * @param index */ public void removeDataObject(int index) { if (index >= 0 && index < list.size()) { super.remove(index); list.remove(index); } } /** * returns the CFDO as the specified index, null if a bad index was sent. * * @param index * @return the CFDO at the given index, or null if a bad index. */ public CardfileDataObject getCFDO(int index) { if (!(index < 0)) { return list.get(index); } return null; } /** * Removes the object at the specified index to be reinserted and sorted * into the list. */ public int resort(int index) { CardfileDataObject cfdoToInsert = list.remove(index); super.remove(index); return addDataObject(cfdoToInsert); } /** * Returns a LinkedList of CFDO that contain the search string. */ public LinkedList search(String search){ LinkedList returnList = new LinkedList(); for(int i = 0; i < list.size(); i++){ if(search.toLowerCase().equals(list.get(i).getCategory().toLowerCase()) || search.toLowerCase().equals(list.get(i).getName().toLowerCase()) || search.toLowerCase().equals(list.get(i).getAddress().toLowerCase()) || search.toLowerCase().equals(list.get(i).getCity().toLowerCase()) || search.toLowerCase().equals(list.get(i).getState().toLowerCase()) || search.toLowerCase().equals(list.get(i).getZip().toLowerCase()) || search.toLowerCase().equals(list.get(i).getPhone1().toLowerCase()) || search.toLowerCase().equals(list.get(i).getPhone2().toLowerCase()) || search.toLowerCase().equals(list.get(i).getFax().toLowerCase())){ returnList.add(list.get(i)); } } return returnList; } /** * Used for debugging. * @return the number of items in the list */ public int length() { return list.size(); } }