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 {
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.