문제

방법에 대한 아이디어 베스트 Java 기반 웹 응용 프로그램의 기사 개정 내역을 구현하여 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

최대 절전 모드 인터셉터 저장 프로세스 및 사용을 가로 채 웁니다 캐스터 XML 이전 객체의 XML 문자열을 만듭니다.

클래스와 ID는 특정 객체의 개정을 얻는 데 사용됩니다.

Google-Diff-Match-Patch HTML Diff 파일을 작성하는 데 사용됩니다

도움이 되었습니까?

해결책

최상의 솔루션은 이미 버전을 지원하는 데이터베이스 또는 스토리지를 사용하는 것입니다. Apache Jackrabbit.

이것이 옵션이 아닌 경우 기사를 보관할 위치를 결정해야합니다. 파일 시스템에서? 그런 다음 각 기사를 디렉토리로 만들고 개정판을 숫자 (00001, 00002 등)로 저장하고 마지막 개정 번호를 특수 파일에 넣습니다. current). 그런 다음 얼마나 많은 버전이 있는지 신속하게 찾을 수 있습니다. current) 그리고 앞뒤로 가십시오.

데이터베이스를 사용하는 경우 기사 테이블에 버전 번호 필드를 추가하고 두 번째 테이블이나 현재 버전이 어떤 플래그를 추가하십시오. 당신은 또한 선택할 수 있습니다 max(version) 그러나 이러한 SQL 구성은 꽤 추악하고 혼란스러워하는 경향이 있습니다. 이 정보를 다른 곳에서 저장하는 것이 훨씬 간단합니다.

편집] Diffs를 생성하려면이 프로젝트를보십시오. Google-Diff-Match-Patch

다른 팁

후드 아래에 기존 VC (예 : SVN)를 사용합니다. 거기에는 개정 내역이 있습니다. 남은 것은 앱에서 VC에 이르기까지 인터페이스입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top