任何想法如何 最好的 我可以为基于 Java 的 Web 应用程序实现文章修订历史记录并将其保存在 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 字符串。

类和 ID 用于获取特定对象的修订版本。

谷歌差异匹配补丁 将用于创建 HTML diff 文件

有帮助吗?

解决方案

最好的解决方案将是使用其中已经支持版本中的一个数据库或存储,例如阿帕奇贾卡拉比特

如果这不是一个选项,然后你必须决定要存储的文章。在文件系统?然后,让每一篇文章的目录和修订保存为数字(00001,00002等),并把最后一次修订的数量在一个特殊的文件(如current)。然后你就可以很快找出多少个版本有(只是看看current)去前进和后退。

如果您使用的数据库,然后一个版本号的字段添加到物品表并添加一个第二表或其中说,目前的版本是哪一个的标志。你也可以用max(version)选择,但这些SQL结构往往是相当丑陋和混乱。它更简单到别处保存这些信息。

[编辑]为了产生的diff,看看这个项目:谷歌-DIFF -match贴片

其他提示

我将使用现有的VCS(例如,SVN)引擎盖下。有你有修订历史 - 所有剩下的要提出的是从你的应用程序的VCS接口

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top