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

- Обеспечить контроль ошибок во входных данных и различных ситуациях в БД

5.3. Выполнение работы

Индивидуальное задание.

- Из XML – файла добавление записей в базу.

- Экспорт данных в XML: рейтинги фильмов за последний год.

Выбор режима определяется опцией командной строки.

Класс Main.java.

package filmbase;

import java.io.IOException;

import java.sql.*;

import java.util.Arrays;

import java.util.Collection;

import java.util.HashMap;

import java.util.Iterator;

import java.util.LinkedList;

import java.util.List;

import java.util.Map;

import java.util.logging.Level;

import java.util.logging.Logger;

import javax.xml.stream.XMLStreamException;

import org.xml.sax.SAXException;

/**

 * Допустимые аргументы командной строки:

 *

 * args ::= -o_films                                      % вывести список фильмов

 *        | -o_persons                                      % вывести список киноперсон

 *        | -o_films <genre>                            % вывести фильмы указанного жанра

 *        | -a_films <filename>                        % добавить фильмы из файла

 *        | -d_films <filename>                        % удалить фильмы, указанные в файле

 *        | -r <year> <filename>                     % вывести средние рейтинги фильмов, указанного года, в заданный файл

 *

 * @author Tanya Wert

 */

public class Main {

    /**

     * Специальная ошибочная опция.

     * Для неё накапливаются значения при некорректных аргументах командной

     * строки

     */

    private final static String ERROR_OPTION = "";

    /**

     * Все остальные опции

     */

    private final static String LIST_FILMS = "-o_films";

    private final static String LIST_PERSONS = "-o_persons";

    private final static String ADD_FILMS = "-a_films";

    private final static String DELETE_FILMS = "-d_films";

    private final static String RATING = "-r";

    /**

     * Коллекция допустимых опций

     */

    private final static Collection<String> OPTIONS = Arrays.asList(

            LIST_FILMS,

            LIST_PERSONS,

            ADD_FILMS,

            DELETE_FILMS,

            RATING);

   /**

     * Разбирает аргументы командной строки на опции и их значения.

     * @param args  массив строк с аргументами.

     * @return  карта (отображение) опций на их значения.

     */

    private static Map<String, List<String>> parseOptions(final String[] args) {

        final Map<String, List<String>> options = new HashMap<String, List<String>>();

        int optind = 0;

        // Опция по умолчанию

        String current = ERROR_OPTION;

        // Кладем для опции по умолчанию пустую коллекцию значений

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

        while (optind < args.length) {

            final String option = args[optind];

            if (option.startsWith("-")) {

                // Если встретили недопустимую опцию

                if (!OPTIONS.contains(option)) {

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

                    printHelp();

                }

                // Делаем опцию текущей

                current = option;

                // Кладем для неё пустой список значений

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