package cs221.groupk.common; import java.io.Serializable; import java.util.Vector; import cs221.groupk.exceptions.database.*; import cs221.groupk.common.*; /** * SaleItemList provides access methods to the list of sale items. This class * is the price lookup, but the information here is only accessable via the * Disk interface methods. * Its methods are only accessable through those made public in the Disk class. * * <P><I>Code spell-checked - Chris Milner - 5th December 2000.</I><P> * * @author <A HREF="mailto:[email protected]">Paul Smith</A> */ public class SaleItemList implements Constants, Serializable { protected Vector saleItems; protected int saleListID; //used for database normalisation and synchronisation. protected static UserSet userSet; protected boolean accessable; protected boolean admin; public SaleItemList() throws InsufficientAccessPrivilegeException { throw new InsufficientAccessPrivilegeException("You cannot access a sale item list without a valid UserSet."); } public SaleItemList(UserSet userSet) throws InsufficientAccessPrivilegeException, UserSetInvalidException { try { if (userSet != null) { this.userSet = userSet; if (!((this.userSet.getCurrentAccessLevel() == VALIDATION_SUCCESFULL_ALL) || (this.userSet.getCurrentAccessLevel() == VALIDATION_SUCCESFULL_STATIONS) || (this.userSet.getCurrentAccessLevel() == VALIDATION_SUCCESFULL_BOTTOM_STATION) || (this.userSet.getCurrentAccessLevel() == VALIDATION_SUCCESFULL_TOP_STATION))) { throw new InsufficientAccessPrivilegeException("Specified UserSet has not been validated."); } if(this.userSet.getCurrentAccessLevel() == VALIDATION_SUCCESFULL_ALL) { admin = true; } else { admin = false; } } else { throw new UserSetInvalidException("The supplied UserSet was not valid."); } } catch(Exception e) { throw new UserSetInvalidException("The supplied UserSet was not valid."); } } /** * getItem returns a specifed item, or throws an exception if it isnt found. */ public SaleItem getItem(int index) throws SaleItemNotFoundException, SaleItemIndexOutOfBounds { if (index > saleItems.size()) { throw new SaleItemIndexOutOfBounds("The specifed Index is out of range."); } SaleItem si; try { si = (SaleItem) saleItems.elementAt(index); } catch(Exception e) { throw new SaleItemNotFoundException("Sale Item not Found."); } return si; } /** * getSaleListID returns the ID of this list. */ public int getSaleListID() { return saleListID; } /** * equals compares this SaleItemList with another SaleItemList - test - * returning true if all the attributes in this class, and all the SaleItems * within it matches those being tested. */ public boolean equals(SaleItemList test) { if (test.saleListID == this.saleListID) {//same ID. if(test.count() == this.count()) {//Same # of items. return true;//IMPLEMENT CHECK EACH ITEM ONE BY ONE! } } return false; } /** * addItem adds theSaleItem, and returns its position, or a negative error * code. * @throws InsufficientAccessPrivilegeException is thrown if a user without * Admin status attempts to access them, or the current user has not been * validated. */ public int addItem(SaleItem saleItem) throws InsufficientAccessPrivilegeException { if(!admin) { throw new InsufficientAccessPrivilegeException("You do do not have the access rights to make this change."); } saleItems.add(saleItem); return OPERATION_SUCESS; } /** * setSaleListID Sets this Lists sale id with theSaleListID. * @param int theSaleListID - specifies the SaleListID to set. * @throws InsufficientAccessPrivilegeException is thrown if a user without * Admin status attempts to access them, or the current user has not been * validated. */ public void setSaleListID(int theSaleListID) throws InsufficientAccessPrivilegeException { if(!admin) { throw new InsufficientAccessPrivilegeException("You do do not have the access rights to make this change."); } } /** * replaceSaleItem looks for theOldSaleItem, and if found replaces it with * theNewSaleItem. The return value specifes if the operation failed, and * why. * @throws InsufficientAccessPrivilegeException is thrown if a user without * Admin status attempts to access them, or the current user has not been * validated. */ public int replaceSaleItem(SaleItem theOldSaleItem, SaleItem theNewSaleItem) throws InsufficientAccessPrivilegeException, SaleItemNotFoundException { if(!admin) { throw new InsufficientAccessPrivilegeException("You do do not have the access rights to make this change."); } return -1; } /** * count returns the number of <CODE>SaleItems</CODE> in this <CODE> * <CODE>SaleItemList</CODE>. This method has been declared as final to * prevent it from being overridden in subsequent sub-classes, as this class * simply returns the result of a call to <CODE>saleItems.count()</CODE> * @return the number of SaleItems within this <CODE>SaleItemList</CODE> */ public final int count() { return saleItems.size(); } }Page automatically generated on: 28/12/00 at: 7:58:13 PM.