This repository was archived by the owner on Nov 30, 2021. It is now read-only.
  
  
  - 
                Notifications
    You must be signed in to change notification settings 
- Fork 0
MarketEmployeeRole
        Matthew Pohlmann edited this page Jan 1, 2014 
        ·
        1 revision
      
    ####Description A market employee works for a MarketManager by collecting items from shelves and keeping track of inventory.
####Class Signature
public class MarketEmployeeRole extends Role implements MarketEmployeeRole {}####Data
String name;
Map<String, Item> inventory;enum RequestState {PENDING, PROCESSED};
enum RequestType {ITEM, CAR};
private class RetrievalRequest {
	List<Item> items;
	int id;
	OrderState state;
	MarketManager manager;
	
	public Order(MarketManager m, List<Item> i, int id, OrderState s) {...};
}####Scheduler
if Ǝ RetrievalRequest r in requests ∋ r.state == OrderState.PENDING then,
    ProcessOrder(o);
    return true;####Messages
public void msgRetrieveItems(MarketManager manager, List<Item> items, id) {
	// Add the new order to the list of orders
	orders.add(new RetrievalRequest(manager, items, id, RequestState.PENDING, RequestType.ITEMS));
	
    stateChanged();
}public void msgRetrieveCar(MarketManager manager, int id) {
	orders.add(new RetrievalRequest(manager, id, RequestState.PENDING, RequestType.CAR));
}
####Actions
```Java
private void ProcessRequest(RetrievalRequest r) {
	// For each item in the order, go retrieve it and update the inventory, 
	for (Item i : r.item) {
		/*
		 * Animation code will go here
		 * The employee will walk to the appropriate "shelf" to get the item
		 */
		i.quantity--;
	}
	
	// Give the items to the manager
	r.manager.msgHereAreYourItems(this, r.items, r.id);
	
	// The order has now been processed
	r.state = OrderState.PROCESSED;
}