} 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 the command line arguments
*/
public static void main(String [] args) {
// Разбираем параметры командной строки
final Map<String, List<String>> options = parseOptions(args);
// Class dr = Class.forName("org.firebirdsql.jdbc.FBDriver");
// Connection c = DriverManager.getConnection("jdbc:firebirdsql://localhost:3050/G:/Tanya/BD/FILMBASE.FDB",
// "sysdba", "masterkey");
// Для каждой опции выполняем нужные операции
for (String option: options.keySet()) {
final Collection<String> values = options.get(option);
if (LIST_PERSONS.equals(option)) {
// Обработка команды вывода списка киноперсон
checkOptionValues(LIST_PERSONS, values, 0);
listPersons();
} else if (LIST_FILMS.equals(option)) {
// Обработка команды вывода списка фильмов
// Команда может иметь ноль или один аргумент
if (values.isEmpty()) {
// Команда не имеет аргументов:
listFilms();
} else if (values.size() == 1) {
// Команда имеет один аргумент
// -o_films <genre>
final Iterator<String> iterator = values.iterator();
final String genre = iterator.next();
listFilmsForGenre(genre);
} else {
// Недопустимое число аргументов для команды.
// Выводим справку и выходим.
System.out.println("Недопустимое значение для опции " + option);
printHelp();
}
} else if (ADD_FILMS.equals(option)) {
// Обработка команды добавления фильмов
// Команда имеет один аргумент - имя xml-файла с фильмами
checkOptionValues(option, values, 1);
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.