@Progerpen
Junior Android Developer

Как сохранять данные из html страницы в приложении Android?

В общем, есть таблица (studydep.miigaik.ru/index.php) с расписанием универа.
Я парсю её с помощью jsoup и могу получить строки / столбцы.
Как мне хранить эти данные из таблицы?
Идея такая - юзер выбирает факультет, курс, группу, приложение парсит эту таблицу и отображает в фрагментах по дням пары.
Если это делается с помощью БД, то какой и как это будет удобнее всего реализовать?
  • Вопрос задан
  • 116 просмотров
Решения вопроса 1
@code_batya
ORM+JPA+Hibernate+DAO.
Соединяемся с базой, затем шлем ей запрос, потом обрабатываем ответ.
Реализуем класс, хранящий элемент в бд как объект:
@Entity
@Table(name = "univer")//название таблицы в бд
public class UniverDataSet {
    @Column(name="course")//название колонки в базе
    private String course;
    @Column(name="group")
    private String group;

    public UniverDataSet(String group, String course) {
        this.course = course;
        this.group = group;
    }
    //...getters
}


Как делается запрос к бд:
public class UniverDAO {
    private Executor executor;
    //...
    public String getTimeTable(long id) throws SQLException {
        PreparedStatement stmt = executor.execQuery(
                "select * from users where id = '" + id + "'",
                resultSet -> {
                        resultSet.next();
                        return resultSet.getString(1);
                }
        );
    }
}

class Executor {
    UsersDAO dao;
    //...

    public <T> T execQuery(String query, ResultHandler<T> handler) throws SQLException {
        PreparedStatement stmt = connection.preparedStatement(query);
        ResultSet resultSet = stmt.execute();
        T value = handler.handle(resultSet);
        resultSet.close();
        stmt.close();
        return value;
    }
}

interface ResultHandler {
    void handle(ResultSet resultSet) throws SQLException;
}


ResultHandler создан для того, чтобы была возможность закрыть ресурс resultSet внутри метода Executor.execQuery()
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@402d
начинал с бейсика на УКНЦ в 1988
Приложение парсер живет до первой смены верстки.
Зашейте жестко факультет-курс-группа
Дайте человеку выбрать одну или несколько из них.
как угодно храните текущий результат парсинга = кеш. Хоть файлом. Лучше результаты парсинга. но если разбор
быстрый можно и html сложить.
по кнопке обновить запрашиваете и парсите страницу. Разобрали удачно - заменили кеш.
уведомили главную активити, что данные обновились.
Нет смысла такую поделку вылизывать и писать академически правильно. В плей выкладывать наверное тоже.

Ну а если хотите написать по человечески, то данные получайте от своего АПИ.
Ответ написан
Комментировать
azerphoenix
@azerphoenix Куратор тега Java
Java Software Engineer
Используйте обычный sqlite и этого будет предостаточно.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы