Pergunta

Todas as idéias de como melhor i pode implementar histórico de revisão artigo para uma aplicação web baseada em Java e salve-o em AuditLog

StackOverflow já tem a característica de tal permitindo que se possa ver as diferenças de uma versão para outra, quase como clientes SVN.

Este é mais um projeto que pergunta implementação.

Além: Como seria de exibir essas alterações na página web?

Além: Solução proposta

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 interceptar vontade o salvamento processo e uso Castor XML para criar uma cadeia de caracteres XML do antigo objeto.

A classe e id é usado para obter as revisões de um objeto particular.

google-diff-match-patch será utilizado para a criação de arquivos diff HTML

Foi útil?

Solução

A melhor solução seria a utilização de um banco de dados ou armazenamento que já suporta as versões, por exemplo Apache Jackrabbit .

Se isso não é uma opção, então você deve decidir onde você deseja armazenar os artigos. No sistema de arquivos? Então faça cada artigo um diretório e salvar as revisões como números (00001, 00002, etc.) e colocar o número da última revisão em um arquivo especial (como current). Em seguida, você pode rapidamente descobrir quantas versões existem (basta olhar para current) e ir para a frente e para trás.

Se você usar um banco de dados, em seguida, adicione um campo número da versão para a mesa de artigo e adicionar uma segunda mesa ou uma bandeira que diz qual a versão atual é. Você também pode selecionar com max(version) mas essas construções SQL tendem a ser muito feio e confuso. É muito mais simples para salvar essa informação em outro lugar.

[EDIT] Para gerar diffs, olhar para este projeto: google-diff -match-remendo

Outras dicas

Gostaria de usar um VCS existente (por exemplo, SVN) sob o capô. Lá você tem o histórico de revisão -. Tudo o que resta a fazer é uma interface de seu aplicativo para o VCS

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top