001package org.nuxeo.snapshot.bean;
002
003import java.io.Serializable;
004
005import org.jboss.seam.ScopeType;
006import org.jboss.seam.annotations.In;
007import org.jboss.seam.annotations.Name;
008import org.jboss.seam.annotations.Scope;
009import org.nuxeo.ecm.core.api.CoreSession;
010import org.nuxeo.ecm.core.api.DocumentModel;
011import org.nuxeo.ecm.core.api.IdRef;
012import org.nuxeo.ecm.platform.ui.web.api.NavigationContext;
013import org.nuxeo.ecm.webapp.helpers.EventManager;
014import org.nuxeo.ecm.webapp.versioning.VersionedActions;
015import org.nuxeo.snapshot.Snapshot;
016
017@Name("vFolderActions")
018@Scope(ScopeType.PAGE)
019public class VFolderActionBean implements Serializable {
020
021    private static final long serialVersionUID = 1L;
022
023    @In(create = true)
024    protected VersionedActions versionedActions;
025
026    @In(create = true)
027    protected transient NavigationContext navigationContext;
028
029    @In(create = true, required = false)
030    protected transient CoreSession documentManager;
031
032    public String restoreToVersion() {
033        String vuuid = versionedActions.getSelectedVersionId();
034        if (vuuid != null) {
035
036            DocumentModel vfolder = documentManager.getDocument(new IdRef(vuuid));
037            DocumentModel livefolder = documentManager.getDocument(new IdRef(vfolder.getVersionSeriesId()));
038
039            Snapshot snap = livefolder.getAdapter(Snapshot.class);
040            DocumentModel restoredFolder = snap.restore(vfolder.getVersionLabel());
041
042            documentManager.save();
043
044            EventManager.raiseEventsOnDocumentChange(restoredFolder);
045            return navigationContext.navigateToDocument(restoredFolder, "after-edit");
046        }
047        return null;
048    }
049
050}