package pl.com.bottega.documentmanagement.application;
import java.util.Collection;
import java.util.Scanner;
/**
* Created by maciuch on 21.08.16.
*/
public abstract class ConsoleApplication {
protected Scanner scanner = new Scanner(System.in);
public void run() {
while(true) {
printMenu();
String cmd = getCommand();
if(cmd.equals("quit"))
return;
execute(cmd);
}
}
private void printMenu() {
Collection<String> menuItems = menuItems();
for(String item : menuItems)
System.out.println(item);
}
public String getCommand() {
return scanner.nextLine();
}
private void execute(String cmd) {
CommandFactory commandFacotry = commandFactory();
Command command = commandFacotry.createCommand(cmd);
command.execute();
}
protected abstract CommandFactory commandFactory();
protected abstract Collection<String> menuItems();
}