В базу данных добавляется механизм транзакций. Изменения не записываются на диск до выполнения команды commit. Если пользователь хочет отменить изменения, сделанные с момента последнего вызова команды commit (например, если пользователь ошибся во вводе), то должна быть возможность откатить все эти изменения с помощью команды rollback.
Теперь приложение, помимо возможности запуска из командной строки, может быть запущено в рамках другого приложения (как библиотека). Библиотека должна реализовывать соответствующие интерфейсы, объявленные в пакете ru.fizteh.fivt.storage.strings (Table, TableProvider, TableProviderFactory).
Каждый метод каждого интерфейса должен быть покрыт модульными тестами (с помощью JUnit). Для классов-реализаций интерфейсов, где это разумно, также должны быть написаны тесты.
Контракт превращает ваше приложение в стороннюю библиотеку. Пользователь создает экземпляр вашей реализации
TableProviderFactory
конструктором по умолчанию. Эта фабрика нужна для того, чтобы создать экземпляр
TableProvider
с указанием пути до корня хранилища. Пользуясь экземпляром TableProvider
, пользователь может
создать или открыть одну или несколько таблиц. Получив экземпляр таблицы, пользователь вызывает нужные ему методы для
работы с данными.
size
Вывести число хранимых пар ключ-значение:
6
commit
Записать изменения на диск. Вывод - число измененных значений:
int
rollback
Откатить все изменения до предыдущего коммита (или до состояния на момент начала программы). Вывод - число откаченных изменений:
int
Если есть незакоммиченные изменения, команда должна выдавать сообщение об ошибке:
5 unsaved changes