Question

Toutes les idées de la façon dont meilleur je peux mettre en œuvre l'article historique des révisions pour une application Web Java et enregistrez-le dans AuditLog

StackOverflow a déjà une telle fonctionnalité permettant à un pour voir les différences d'une version à l'autre, presque comme des clients SVN.

Ceci est plus d'une conception que la question de la mise en œuvre.

plus: Comment peut-on afficher ces changements sur la page Web?

Addition: Solution proposée

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

Hibernate Interceptor interceptera le processus d'enregistrement et d'utiliser Castor XML pour créer une chaîne XML du ancien objet.

La classe et id est utilisé pour obtenir les révisions d'un objet particulier.

google-diff match-patch sera utilisé pour créer des fichiers HTML diff

Était-ce utile?

La solution

La meilleure solution serait d'utiliser une base de données ou de stockage qui prend en charge les versions déjà, par exemple Apache Jackrabbit .

Si ce n'est pas une option, vous devez décider où vous voulez stocker les articles. Sur le système de fichiers? Ensuite, faire chaque article un répertoire et enregistrer les révisions des chiffres (00001, 00002, etc.) et mettre le numéro de la dernière révision dans un fichier spécial (comme current). Ensuite, vous pouvez rapidement savoir combien de versions il y a (il suffit de regarder dans current) et aller de l'avant et à l'arrière.

Si vous utilisez une base de données, puis ajoutez un champ de numéro de version à la table de l'article et ajouter une deuxième table ou un drapeau qui dit que l'on est la version actuelle. Vous pouvez également sélectionner avec max(version) mais ces constructions SQL ont tendance à être assez laid et confus. Il est beaucoup plus simple d'enregistrer ces informations ailleurs.

[EDIT] Pour générer diffs, regardez ce projet: google-diff -match-patch

Autres conseils

J'utiliser un VCS existant (par exemple, SVN) sous le capot. Là, vous avez l'historique des révisions - tout ce qui reste à faire est une interface de votre application au VCS

.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top