gpt4 book ai didi

java - 为基于 Java 的 Web 应用程序实现文章修订历史

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:29:26 25 4
gpt4 key购买 nike

关于如何最好我可以为基于 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 Hibernate Interceptor会拦截保存过程和使用Castor XML创建旧对象的 XML 字符串。

class 和 id 用于获取特定对象的修订。

google-diff-match-patch将用于创建 HTML 差异文件

最佳答案

最好的解决方案是使用已经支持版本的数据库或存储,例如 Apache Jackrabbit .

如果那不是一个选项,那么您必须决定要将文章存储在何处。在文件系统上?然后将每篇文章制作成一个目录,并将修订保存为数字(00001、00002 等),并将最后修订的编号放在一个特殊文件中(如 current)。然后您可以快速找出有多少个版本(只需查看 current)并前进和后退。

如果您使用数据库,则将版本号字段添加到文章表并添加第二个表或一个标志,说明当前版本是哪个。您也可以使用 max(version) 进行选择,但这些 SQL 结构往往非常丑陋且令人困惑。将此信息保存在别处要简单得多。

[编辑] 要生成差异,请查看此项目:google-diff-match-patch

关于java - 为基于 Java 的 Web 应用程序实现文章修订历史,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1673709/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com