Валидатор пишет "Методы интерфейса StorageStrategy должны быть реализованы в FileStorageStrategy таким образом, чтобы обеспечивать корректную работу Shortener созданного на его основе."
package com.javarush.task.task33.task3310;
import com.javarush.task.task33.task3310.strategy.FileStorageStrategy;
import com.javarush.task.task33.task3310.strategy.HashMapStorageStrategy;
import com.javarush.task.task33.task3310.strategy.OurHashMapStorageStrategy;
import com.javarush.task.task33.task3310.strategy.StorageStrategy;
import java.util.Date;
import java.util.HashSet;
import java.util.Set;
public class Solution {
public static void main(String[] args) {
testStrategy(new HashMapStorageStrategy(), 10000);
testStrategy(new OurHashMapStorageStrategy(), 10000);
testStrategy(new FileStorageStrategy(), 100);
}
public static Set<Long> getIds(Shortener shortener, Set<String> strings) {
Set<Long> result = new HashSet<>();
for (String string : strings)
result.add(shortener.getId(string));
return result;
}
public static Set<String> getStrings(Shortener shortener, Set<Long> keys) {
Set<String> result = new HashSet<>();
for (Long id : keys)
result.add(shortener.getString(id));
return result;
}
public static void testStrategy(StorageStrategy strategy, long elementsNumber) {
//Выводим на экран имя класса стратегии.
Helper.printMessage(strategy.getClass().getSimpleName());
//Генерируем множество строк.
Set<String> strings = new HashSet<>();
for (long i = 0; i < elementsNumber; i++)
strings.add(Helper.generateRandomString());
//Создаем Shortener.
Shortener shortener = new Shortener(strategy);
//Замеряем время работы getIds.
long timeBegin = new Date().getTime();
Set<Long> keys = getIds(shortener, strings);
long timeEnd = new Date().getTime();
Helper.printMessage("время работы getIds: " + (timeEnd - timeBegin) + "ms");
//Замеряем время работы getStrings.
timeBegin = new Date().getTime();
Set<String> returnedStrings = getStrings(shortener, keys);
timeEnd = new Date().getTime();
Helper.printMessage("время работы getStrings: " + (timeEnd - timeBegin) + "ms");
//Сравниваем содержимое множеств строк.
Helper.printMessage(strings.equals(returnedStrings) ? "Тест пройден." : "Тест не пройден.");
}
}