public class ItemCache {
private final static int Max_cache_size = 5;
Vector<String> cache;
public ItemCache() {
cache = new Vector<String>();
}
public String getItem(String code) {
String barCode = null;
int pos = cache.indexOf(code);
if (pos != -1)
barCode = (String) cache.get(pos);
return barCode;
}
public void addItem(String code) {
// if the max limit is reached
// remove the LRU item
if (cache.size() == Max_cache_size) {
cache.remove(0);
}
cache.add(code);
}
}
public class ItemManager {
ItemCache cache;
DBManager manager;
public ItemManager() {
cache = new ItemCache();
manager = new DBManager();
}
public void activate(String code) {
if (cache.getItem(code) != null) {
System.out.println("Item Already Activated - cache");
} else {
if (manager.isActiveItem(code)) {
System.out.println(
"Item Already Activated - DB Access");
} else {
manager.activateItem(code);
System.out.println(
"Item Activated successfully");
//add to the cache
cache.addItem(code);
}
}
}
}
class DBManager {
public boolean isActiveItem(String code) {
//db access code goes here
//assume that the item is not already activated.
return false;
}
public void activateItem(String code) {
//db access code goes here
}
}
public class Client {
public static void main(String[] args) {
ItemManager manager = new ItemManager();
manager.activate("1001001000");
manager.activate("1001001001");
manager.activate("1001001002");
manager.activate("1001001000");
manager.activate("1001001004");
manager.activate("1001001005");
manager.activate("1001001006");
manager.activate("1001001002");
manager.activate("1001001004");
manager.activate("1001001002");
manager.activate("1001001000");
}
}