Skip to content

Commit

Permalink
Fixed throwing exceptions in interfaces' implementations
Browse files Browse the repository at this point in the history
  • Loading branch information
AndreosGhost committed Oct 24, 2014
1 parent 584bec9 commit da7f5d6
Show file tree
Hide file tree
Showing 6 changed files with 70 additions and 55 deletions.
38 changes: 18 additions & 20 deletions src/ru/fizteh/fivt/storage/strings/Table.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,68 +7,66 @@
* @author Dmitriy Komanov
*/
public interface Table {

/**
* Возвращает название базы данных.
*/
String getName();

/**
* Получает значение по указанному ключу.
*
* @param key Ключ.
* @param key
* Ключ.
* @return Значение. Если не найдено, возвращает null.
*
* @throws IllegalArgumentException Если значение параметра key является null.
* @throws IllegalArgumentException
* Если значение параметра key является null.
*/
String get(String key);

/**
* Устанавливает значение по указанному ключу.
*
* @param key Ключ.
* @param value Значение.
* @return Значение, которое было записано по этому ключу ранее. Если ранее значения не было записано,
* возвращает null.
*
* @throws IllegalArgumentException Если значение параметров key или value является null.
* @param key
* Ключ.
* @param value
* Значение.
* @return Значение, которое было записано по этому ключу ранее. Если ранее значения не было
* записано, возвращает null.
* @throws IllegalArgumentException
* Если значение параметров key или value является null.
*/
String put(String key, String value);

/**
* Удаляет значение по указанному ключу.
*
* @param key Ключ.
* @param key
* Ключ.
* @return Значение. Если не найдено, возвращает null.
*
* @throws IllegalArgumentException Если значение параметра key является null.
* @throws IllegalArgumentException
* Если значение параметра key является null.
*/
String remove(String key);

/**
* Возвращает количество ключей в таблице.
*
* @return Количество ключей в таблице.
*/
int size();

/**
* Выполняет фиксацию изменений.
*
* @return Количество сохранённых ключей.
* @throws ru.fizteh.fivt.students.fedorov_andrew.databaselibrary.exception.DatabaseException
* If failed to persist table
*/
int commit();

/**
* Выполняет откат изменений с момента последней фиксации.
*
* @return Количество отменённых ключей.
*/
int rollback();

/**
* Выводит список ключей таблицы
*
* @return Список ключей.
*/
List<String> list();
Expand Down
34 changes: 19 additions & 15 deletions src/ru/fizteh/fivt/storage/strings/TableProvider.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,31 +5,35 @@
* @author Dmitriy Komanov
*/
public interface TableProvider {

/**
* Возвращает таблицу с указанным названием.
*
* @param name Название таблицы.
* @return Объект, представляющий таблицу. Если таблицы с указанным именем не существует, возвращает null.
* @throws IllegalArgumentException Если название таблицы null или имеет недопустимое значение.
* @param name
* Название таблицы.
* @return Объект, представляющий таблицу. Если таблицы с указанным именем не существует,
* возвращает null.
* @throws IllegalArgumentException
* Если название таблицы null или имеет недопустимое значение.
*/
Table getTable(String name);
Table getTable(String name) throws IllegalArgumentException;

/**
* Создаёт таблицу с указанным названием.
*
* @param name Название таблицы.
* @param name
* Название таблицы.
* @return Объект, представляющий таблицу. Если таблица уже существует, возвращает null.
* @throws IllegalArgumentException Если название таблицы null или имеет недопустимое значение.
* @throws IllegalArgumentException
* Если название таблицы null или имеет недопустимое значение.
*/
Table createTable(String name);
Table createTable(String name) throws IllegalArgumentException;

/**
* Удаляет таблицу с указанным названием.
*
* @param name Название таблицы.
* @throws IllegalArgumentException Если название таблицы null или имеет недопустимое значение.
* @throws IllegalStateException Если таблицы с указанным названием не существует.
* @param name
* Название таблицы.
* @throws IllegalArgumentException
* Если название таблицы null или имеет недопустимое значение.
* @throws IllegalStateException
* Если таблицы с указанным названием не существует.
*/
void removeTable(String name);
void removeTable(String name) throws IllegalArgumentException;
}
16 changes: 8 additions & 8 deletions src/ru/fizteh/fivt/storage/strings/TableProviderFactory.java
Original file line number Diff line number Diff line change
@@ -1,20 +1,20 @@
package ru.fizteh.fivt.storage.strings;

/**
* Представляет интерфейс для создание экземпляров {@link TableProvider}. Предполагается, что реализация интерфейса
* фабрики будет иметь публичный конструктор без параметров.
*
* Представляет интерфейс для создание экземпляров {@link ru.fizteh.fivt.storage.strings.TableProvider}.
* Предполагается, что реализация интерфейса фабрики будет иметь публичный конструктор без
* параметров.
* @author Fedor Lavrentyev
* @author Dmitriy Komanov
*/
public interface TableProviderFactory {

/**
* Возвращает объект для работы с базой данных.
*
* @param dir Директория с файлами базы данных.
* @param dir
* Директория с файлами базы данных.
* @return Объект для работы с базой данных.
* @throws IllegalArgumentException Если значение директории null или имеет недопустимое значение.
* @throws IllegalArgumentException
* Если значение директории null или имеет недопустимое значение.
*/
TableProvider create(String dir);
TableProvider create(String dir) throws IllegalArgumentException;
}
Original file line number Diff line number Diff line change
Expand Up @@ -35,12 +35,14 @@ public class DBTableProvider implements TableProvider {
}

@Override
public TableImpl getTable(String name) throws IllegalArgumentException, DatabaseException {
public TableImpl getTable(String name) throws IllegalArgumentException {
Utility.checkTableNameIsCorrect(name);
if (tables.containsKey(name)) {
TableImpl table = tables.get(name);
if (table == null) {
throw new TableCorruptException(name);
throw new IllegalArgumentException(
"Failed to get table",
new TableCorruptException(name));
}
return table;
} else {
Expand All @@ -49,7 +51,7 @@ public TableImpl getTable(String name) throws IllegalArgumentException, Database
}

@Override
public TableImpl createTable(String name) throws IllegalArgumentException, DatabaseException {
public TableImpl createTable(String name) throws IllegalArgumentException {
Utility.checkTableNameIsCorrect(name);
Path tablePath = databaseRoot.resolve(name);

Expand All @@ -59,7 +61,11 @@ public TableImpl createTable(String name) throws IllegalArgumentException, Datab
try {
Files.createDirectory(tablePath);
} catch (IOException exc) {
throw new DatabaseException("Failed to create table directory", exc);
throw new IllegalArgumentException(
"Bad name given",
new DatabaseException(
"Failed to create table directory",
exc));
}
}

Expand All @@ -69,7 +75,7 @@ public TableImpl createTable(String name) throws IllegalArgumentException, Datab
}

@Override
public void removeTable(String name) throws IllegalArgumentException, DatabaseException {
public void removeTable(String name) throws IllegalArgumentException {
Utility.checkTableNameIsCorrect(name);
Path tablePath = databaseRoot.resolve(name);

Expand All @@ -88,7 +94,10 @@ public void removeTable(String name) throws IllegalArgumentException, DatabaseEx
} catch (IOException exc) {
//mark as corrupt
tables.put(name, null);
throw new DatabaseException("Cannot remove table " + name + " from file system", exc);
throw new IllegalArgumentException(
"Bad name given",
new DatabaseException(
"Cannot remove table " + name + " from file system", exc));
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
public class DBTableProviderFactory implements TableProviderFactory {

@Override
public DBTableProvider create(String dir) throws DatabaseException, IllegalArgumentException {
public DBTableProvider create(String dir) throws IllegalArgumentException {
if (dir == null) {
throw new IllegalArgumentException("Directory must not be null");
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -187,12 +187,16 @@ public int size() {
}

@Override
public int commit() throws DatabaseException {
int diffsCount = 0;
for (TablePart part : tableParts.values()) {
diffsCount += part.commit();
public int commit() {
try {
int diffsCount = 0;
for (TablePart part : tableParts.values()) {
diffsCount += part.commit();
}
return diffsCount;
} catch (DatabaseException exc) {
return -1;
}
return diffsCount;
}

@Override
Expand Down

0 comments on commit da7f5d6

Please sign in to comment.