This repository has been 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;
}