Startseite / Weiterführende Themen / Änderungsverfolgung / Beispiel: Zwischen Revisionen

Änderungen zwischen zwei Revisionen

GUI zur Auswahl der Revisionsgrenzen

Im zweiten Beispiel können die Revisionen komfortabel über eine GUI ausgewählt werden. Dazu muss zunächst ein neues Skript in der Vorlagen-Verwaltung des Projekts angelegt werden.

Im Formularbereich des Skripts können Eingabekomponenten zur Auswahl eines Start- und eines End-Datums für die gewünschten Revisionsgrenzen konfiguriert werden.

Analog zum ersten Beispiel können über die ausgewählten Daten anschließend die entsprechenden Revisionen geholt werden:

data = context.showForm();
if (data != null) {
context.logInfo("data=" + data);
from = data.get(context.getProject().getMasterLanguage(),
"from").get();
to = data.get(context.getProject().getMasterLanguage(),
"enddate").get();

if (from != null) {
context.logInfo(from + " -- " + to);
start = project.getRevision(from);
end = project.getRevision(to);
context.logInfo("startRev=" + start.id + ", endRev=" + end.id);

if (start.id <= end.id) {
revisions = project.getRevisions(start, end, 0, null);
} else {
revisions = project.getRevisions(end, start, 0, null);
}
context.logInfo("found '" + revisions.size() + "' revisions -> first=" + revisions.get(0) + ", last=" +
revisions.get(revisions.size() - 1));
checkChanges(revisions);
}}

In checkChanges werden die Änderungen ermittelt, die innerhalb dieser Revisionen stattgefunden haben. In diesem Beispiel werden Änderungen an Projektinhalten vom Operation-Type DELETE und CREATE (innerhalb der Inhalte-Verwaltung) berücksichtigt. Außerdem werden auch hier Änderungen an Datenbankinhalten des Projekts ermittelt:

Änderung durch Entfernen von Elementen in der Inhalte-Verwaltung:

case RevisionOperation.OperationType.DELETE:
deleteRoot = operation.getDeleteRootElement();
if (deleteRoot.getStoreType() == Store.Type.PAGESTORE) {
// include only pagestore
context.logInfo("found delete in pagestore (deleted node=" +
deleteRoot.getUid() + ") in revision=" +
getRevisionString(revision));
}
break;

Änderung durch Hinzufügen von Elementen im Projekt:

case RevisionOperation.OperationType.CREATE:
created = operation.getCreatedElement();
parent = operation.getParent();
context.logInfo("found created element in store '" +
created.getStoreType() + "' (created node=" +
created.getUid() + ", parent node=" + parent.getUid() + ") in
revision=" + getRevisionString(revision));
break;

Änderung durch Anlegen, Löschen, Ändern oder Freigeben von Datenbank-Inhalten:

case RevisionOperation.OperationType.CONTENT_COMMIT:
created = operation.getCreatedEntities();
changed = operation.getChangedEntities();
deleted = operation.getDeletedEntities();
released = operation.getReleasedEntities();
context.logInfo("found content changes in revision=" +
getRevisionString(revision));
context.logInfo("\t created entities(" + created.size() + ") "
+ created);
context.logInfo("\t changed entities(" + changed.size() + ") "
+ changed);
context.logInfo("\t deleted entities(" + deleted.size() + ") "
+ deleted);
context.logInfo("\t released entities(" + released.size() + ")
" + released);
break;

Die Ausgabe des Skripts erfolgt über die Javakonsole:

..
INFO 20.05.2008 15:44:50.317
startRev=6804, endRev=7677
found created element in store 'PAGESTORE' (created node=Testpage_131, parent node=Test_6C22873) in revision=7335
- Thu May 15 16:02:51 CEST 2008 (importStoreElement) - Admin – CREATE
..

© 2005 - 2024 Crownpeak Technology GmbH | Alle Rechte vorbehalten. | FirstSpirit 2024.13 | Datenschutz