Skip to content
This repository has been archived by the owner on Nov 30, 2021. It is now read-only.

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 requestsr.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;
}

Wiki Home | Design Home

Clone this wiki locally