تطبيق تاريخ مراجعة المقال لتطبيق الويب المقيد Java

StackOverflow https://stackoverflow.com/questions/1673709

سؤال

أي أفكار حول كيف أفضل يمكنني تنفيذ تاريخ مراجعة المادة لتطبيق ويب مقره 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 من الكائن القديم.

يستخدم الفصل والمعرف للحصول على تنقيحات كائن معين.

Google-Diff-Match-Patch سيتم استخدامها لإنشاء ملفات فرق HTML

هل كانت مفيدة؟

المحلول

أفضل حل هو استخدام قاعدة بيانات أو تخزين يدعم بالفعل الإصدارات، على سبيل المثال اباتشي jackrabbit..

إذا لم يكن هذا خيارا، فيجب عليك تحديد المكان الذي تريد تخزين المقالات. في نظام الملفات؟ ثم قم بإجراء كل مقالة دليل وحفظ المراجعات كأرقام (00001، 00002، إلخ) ووضع عدد المراجعة الأخيرة في ملف خاص (مثل current). ثم يمكنك معرفة عدد الإصدارات بسرعة (انظر فقط إلى current) وتذهب إلى الأمام والعودة.

إذا كنت تستخدم قاعدة بيانات، فقم بإضافة حقل رقم الإصدار إلى جدول المقالة وإضافة جدول ثان أو علامة تقول أي إصدار واحد هو. يمكنك أيضا تحديد مع max(version) لكن هذه البنيات SQL تميل إلى أن تكون قبيحة وقبيحة جدا. إنه أكثر بساطة للغاية لحفظ هذه المعلومات في مكان آخر.

تحرير] لتوليد الضتبئ، انظر إلى هذا المشروع: Google-Diff-Match-Patch

نصائح أخرى

أود استخدام VCS موجودة (على سبيل المثال، SVN) تحت غطاء محرك السيارة. هناك سجل مراجعة - كل ما تبقى لجعله هو واجهة من تطبيقك إلى VCS.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top