Java ベースの Web アプリケーションの記事改訂履歴の実装
-
16-09-2019 - |
質問
方法についてのアイデアはありますか 最高 Java ベースの Web アプリケーションの記事の改訂履歴を実装し、AuditLog に保存できます。
StackOverflow には、SVN クライアントとほぼ同じように、バージョン間の違いを確認できる機能がすでに備わっています。
これは実装というよりも設計に関する質問です。
追加:これらの変更を Web ページに表示するにはどうすればよいでしょうか?
追加:提案されたソリューション
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
あ 休止状態 インターセプター インターセプトします 保存プロセスと使用 キャスター XML 古いオブジェクトの XML 文字列を作成します。
クラスと ID は、特定のオブジェクトのリビジョンを取得するために使用されます。
Google-diff-match-patch HTML diff ファイルの作成に使用されます
解決
最善の解決策は、すでにバージョンをサポートしているデータベースまたはストレージを使用することです。たとえば、 アパッチジャックウサギ.
それができない場合は、記事を保存する場所を決定する必要があります。ファイルシステム上でしょうか?次に、各記事をディレクトリにしてリビジョンを番号 (00001、00002 など) として保存し、最後のリビジョンの番号を特別なファイル (例: current
)。そうすれば、バージョンがいくつあるかをすぐに知ることができます(調べてみてください) current
)そして前後に進みます。
データベースを使用する場合は、記事テーブルにバージョン番号フィールドを追加し、現在のバージョンを示す 2 番目のテーブルまたはフラグを追加します。で選択することもできます max(version)
しかし、これらの SQL 構造は非常に醜く、混乱を招く傾向があります。この情報を別の場所に保存する方がはるかに簡単です。
[編集] 差分を生成するには、このプロジェクトを見てください。 Google-diff-match-patch
他のヒント
内部では既存の VCS (SVN など) を使用します。そこには改訂履歴があります。あとはアプリから VCS へのインターフェースを作成するだけです。