实现基于java的web应用程序的文章修订历史

jrcvhitl  于 2021-06-30  发布在  Java
关注(0)|答案(2)|浏览(353)

关于如何最好地实现基于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

hibernateinterceptor将截获保存过程,并使用CastorXML创建旧对象的xml字符串。
类和id用于获取特定对象的修订。
googlediff匹配补丁将用于创建html diff文件

s4chpxco

s4chpxco1#

最好的解决方案是使用已经支持版本的数据库或存储,例如apachejackrabbit。
如果这不是一个选择,那么你必须决定你想把文章存放在哪里。在文件系统上?然后把每一篇文章做成一个目录,把修订版保存为数字(00001、00002等),把上一次修订版的数字放在一个特殊的文件中(如 current ). 然后您可以很快找到有多少个版本(只需查看 current )向前和向后。
如果使用数据库,则向项目表中添加一个版本号字段,并添加第二个表或一个表示当前版本的标志。您也可以选择 max(version) 但是那些sql构造往往非常难看和混乱。把这些信息保存在别处要简单得多。
[编辑]要生成差异,请看这个项目:google diff match patch

cvxl0en2

cvxl0en22#

我会在引擎盖下使用现有的风投(例如,svn)。在这里你有修订历史-所有剩下来做的是一个接口,从你的应用程序到风投。

相关问题