Реализация журнала изменений статей для веб-приложения на базе Java

StackOverflow https://stackoverflow.com/questions/1673709

Вопрос

Есть какие-нибудь идеи о том, как Лучшие я могу реализовать журнал изменений статей для веб-приложения на базе Java и сохранить его в AuditLog

В StackOverflow уже есть такая функция, позволяющая видеть различия от одной версии к другой, почти как в SVN-клиентах.

Это скорее вопрос дизайна, чем реализации.

дополнение:Как бы отобразить эти изменения на веб-странице?

дополнение:Предлагаемое решение

Article
--------------------------------
    Integer id
    String title
    String body
    List<Tag> tags
    AppUser createdBy
    Date createdDate

AuditLog
--------------------------------
    Integer id
    Integer objectId
    Operation operation // enum with UPDATE and DELETE. I won't audit an insert
    Date createdDate
    AppUser createdBy
    String class
    String revisionXML
    String comment

A Впадать в спящий режим Перехватчик перехватит процесс сохранения и использования Рицинус XML чтобы создать XML-строку старого объекта.

Класс и идентификатор используются для получения изменений определенного объекта.

google-diff-match-исправление будет использоваться для создания HTML-файлов различий

Это было полезно?

Решение

Лучшим решением было бы использовать базу данных или хранилище, которые уже поддерживают версии, например Кролик - Апач.

Если это невозможно, то вы должны решить, где вы хотите хранить статьи.В файловой системе?Затем создайте для каждой статьи каталог и сохраните ревизии в виде номеров (00001, 00002 и т.д.) И поместите номер последней ревизии в специальный файл (например current).Тогда вы сможете быстро узнать, сколько существует версий (просто загляните в current) и ходите вперед и назад.

Если вы используете базу данных, добавьте поле с номером версии в таблицу article и добавьте вторую таблицу или флаг, указывающий, какая из них является текущей версией.Вы также можете выбрать с помощью max(version) но эти SQL-конструкции, как правило, довольно уродливы и сбивают с толку.Гораздо проще сохранить эту информацию в другом месте.

[РЕДАКТИРОВАТЬ] Чтобы сгенерировать различия, посмотрите на этот проект: google-diff-match-исправление

Другие советы

Я бы использовал существующий VCS (например, SVN) под капотом.Там у вас есть история изменений - все, что осталось создать, это интерфейс вашего приложения к VCS.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top