public int rollback() { currentTable.clear(); currentTable.putAll(committedTable); int countOfChanges = changedKeys; changedKeys = 0; return countOfChanges; }
public int commit() { try { currentTable.write(); } catch (MyException e) { throw new RuntimeException(); } committedTable.clear(); committedTable.putAll(currentTable); int countOfChanges = changedKeys; changedKeys = 0; return countOfChanges; }
public List<String> list() { List<String> result = new LinkedList<>(); for (String key : currentTable.keySet()) { result.add(key); } return result; }
@Override public final boolean exec(State fileMap, final String[] command) { if (command.length != 1) { System.err.println("exit: Usage - exit"); return false; } try { ((FileMap) fileMap).saveFileMap(); } catch (IOException e) { System.err.println(e.getMessage()); } System.exit(0); return true; }
public void execute(String[] args, FileMap fileMap) throws MyException { if (args.length > 1) { throw new MyException("list: too many arguments"); } int i = 0; for (String string : fileMap.keySet()) { if (i != 0) { System.out.print(", "); } System.out.print(string); ++i; } System.out.println(); }
public int size() { return currentTable.size(); }
public String get(String key) { if (key == null) { throw new IllegalArgumentException(); } return currentTable.get(key); }
protected MyTable(FileMap passedTable) { currentTable = passedTable; committedTable = new FileMap(); committedTable.putAll(passedTable); changedKeys = 0; }