11package team .shellsort ;
22
3- import team .shellsort .input .ConsoleDataProvider ;
4- import team .shellsort .input .FileDataProvider ;
5- import team .shellsort .input .RandomDataProvider ;
63import team .shellsort .model .Car ;
74import team .shellsort .strategy .ByModel ;
85import team .shellsort .strategy .ByPower ;
@@ -49,7 +46,7 @@ public class App {
4946 */
5047 public static void main (String [] args ) {
5148 System .out .println ("=== ShellSort App (черновик интеграции) ===" );
52- // runMenuLoop();
49+ runMenuLoop ();
5350 System .out .println ("Завершено. До встречи!" );
5451 }
5552
@@ -59,41 +56,41 @@ public static void main(String[] args) {
5956 *
6057 * <p>Цикл продолжается, пока пользователь не выберет пункт «Выход».
6158 */
62- // private static void runMenuLoop() {
63- // while (true) {
64- // int source = askSource();
65- // if (source == 0) {
66- // break;
67- // }
68- //
69- // int limit = askInt("Введите количество элементов (1..1000): ", 1, 1000);
70- // SortStrategy strategy = askStrategy();
71- //
72- // // ===== Загрузка данных =====
73- // // TODO (Давид + Артём): заменить mock на реальные провайдеры после интеграции Validator’а
74- // // Пример будущего кода:
75- // // DataProvider dp = switch (source) {
76- // // case 1 -> new ConsoleDataProvider(SC, new LineParser());
77- // // case 2 -> new FileDataProvider(/* path или запрос пути */);
78- // // case 3 -> new RandomDataProvider(/* seed? */);
79- // // case 4 -> new MockDataProviderAdapter(); // если захотим оставить mock
80- // // default -> throw new IllegalStateException("Неожиданный источник: " + source);
81- // // };
82- // // LoadResult lr = dp.load(); // либо dp.load(limit), если финальная сигнатура с лимитом
83- // // List<Car> cars = lr.validCars(); // имя метода — как договоримся
84- // List<Car> cars = loadMockData(limit);
85- //
86- // // ===== Сортировка =====
87- // cars.sort(strategy.comparator());
88- //
89- // // ===== Вывод =====
90- // printCars(cars);
91- //
92- // if (!askYesNo("Ещё раз? (y/n): ")) {
93- // break;
94- // }
95- // }
96- // }
59+ private static void runMenuLoop () {
60+ while (true ) {
61+ int source = askSource ();
62+ if (source == 0 ) {
63+ break ;
64+ }
65+
66+ int limit = askInt ("Введите количество элементов (1..1000): " , 1 , 1000 );
67+ SortStrategy strategy = askStrategy ();
68+
69+ // ===== Загрузка данных =====
70+ // TODO (Давид + Артём): заменить mock на реальные провайдеры после интеграции Validator’а
71+ // Пример будущего кода:
72+ // DataProvider dp = switch (source) {
73+ // case 1 -> new ConsoleDataProvider(SC, new LineParser());
74+ // case 2 -> new FileDataProvider(/* path или запрос пути */);
75+ // case 3 -> new RandomDataProvider(/* seed? */);
76+ // case 4 -> new MockDataProviderAdapter(); // если захотим оставить mock
77+ // default -> throw new IllegalStateException("Неожиданный источник: " + source);
78+ // };
79+ // LoadResult lr = dp.load(); // либо dp.load(limit), если финальная сигнатура с лимитом
80+ // List<Car> cars = lr.validCars(); // имя метода — как договоримся
81+ List <Car > cars = loadMockData (limit );
82+
83+ // ===== Сортировка =====
84+ cars .sort (strategy .comparator ());
85+
86+ // ===== Вывод =====
87+ printCars (cars );
88+
89+ if (!askYesNo ("Ещё раз? (y/n): " )) {
90+ break ;
91+ }
92+ }
93+ }
9794
9895 /**
9996 * Отображает меню выбора источника данных и возвращает выбранный пункт.
@@ -132,20 +129,20 @@ private static int askSource() {
132129 *
133130 * @return выбранная стратегия сортировки
134131 */
135- // private static SortStrategy askStrategy() {
136- // System.out.println();
137- // System.out.println("Выберите стратегию сортировки:");
138- // System.out.println(" 1) По модели (ignore case, nulls last) -> год -> мощность");
139- // System.out.println(" 2) По мощности -> модель (ignore case) -> год");
140- // System.out.println(" 3) По году -> модель (ignore case) -> мощность");
141- // int choice = askInt("Ваш выбор: ", 1, 3);
142- // return switch (choice) {
143- // case 1 -> new ByModel();
144- // case 2 -> new ByPower();
145- // case 3 -> new ByYear();
146- // default -> throw new IllegalStateException("Неожиданный выбор: " + choice);
147- // };
148- // }
132+ private static SortStrategy askStrategy () {
133+ System .out .println ();
134+ System .out .println ("Выберите стратегию сортировки:" );
135+ System .out .println (" 1) По модели (ignore case, nulls last) -> год -> мощность" );
136+ System .out .println (" 2) По мощности -> модель (ignore case) -> год" );
137+ System .out .println (" 3) По году -> модель (ignore case) -> мощность" );
138+ int choice = askInt ("Ваш выбор: " , 1 , 3 );
139+ return switch (choice ) {
140+ case 1 -> new ByModel ();
141+ case 2 -> new ByPower ();
142+ case 3 -> new ByYear ();
143+ default -> throw new IllegalStateException ("Неожиданный выбор: " + choice );
144+ };
145+ }
149146
150147 /**
151148 * Создаёт и возвращает список тестовых объектов {@code Car}.
0 commit comments