Базы данных SQL-DDL и SQL-DML. Изучение транзакций. Программирование на языке SQL. Консольное приложение (Цикл лабораторных работ). Вариант № 1, страница 22

options.put(current, new LinkedList<String>());

            } else {

                // Добавляем аргумент командной строки к значениям опции

final List<String> values = options.get(current);

                assert values != null;

                values.add(option);

            }

optind++;

        }

        // Если для ошибочной опции найдено значение или найдено слишком мало

if (!options.get(ERROR_OPTION).isEmpty() || options.size() == 1) {

            // выводим справку и выходим

printHelp();

        }

        // Удаляем ошибочную опцию, так как она неважна

options.remove(ERROR_OPTION);

        return options;

    }

    /**

     * Проверяет число строк - значений для заданной опции.

     * В случае несовпадения ожидаемого и фактического количества значений

     * выводит справку и завершает работу.

*

     * @param option        опция

     * @param values        значения

     * @param expectedSize  ожидаемое количество значений

     */

private static void checkOptionValues(

            final String option,

            final Collection<String> values,

            final int expectedSize) {

        assert values != null;

        if (values.size() != expectedSize) {

            // Выводим сообщение об ошибке, справку и завершаем работу

System.out.println("Недопустимое значение для опции " + option);

printHelp();

        }

    }

    /**

     * Точка входа в программу

     *

     * @param args аргументы командной строки

     */

public static void main(final String[] args) throws SQLException {

        // Разбираем параметры командной строки

        final Map<String, List<String>> options = parseOptions(args);

        // Для каждой опции выполняем нужные операции

for (String option: options.keySet()) {

            final Collection<String> values = options.get(option);

            if (LIST_NOTE.equals(option)) {

                // Обработка команды вывода расписания

checkOptionValues(option, values, 1);

                final Iterator<String> iterator = values.iterator();

                final String fileName = iterator.next();

                listNote(fileName);

            }

    }

    }

    /**

     * Вывести справочную информацию и закончить работу

     */

private static void printHelp() {

System.out.println("Консольный клиент для работы с БД студентов");

System.out.println("Допустимые опции:");

for (String option: OPTIONS) {

            System.out.println(option);

        }

System.exit(-1);

    }

    /**

     * Выводит досье в xml-файл

     *

     * @param fileName  имя xml-файла, в который будут выведены результаты

*/

    private static void listNote(String fileName) {

        try {