/*******************************************************************************
* Copyright (c) 2012-2013 EclipseSource Muenchen GmbH and others.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Otto von Wesendonk, Edgar Mueller - initial API and implementation
* Edgar Mueller - API annotations
******************************************************************************/
package org.eclipse.emf.emfstore.server.model;
import java.util.List;
import org.eclipse.emf.emfstore.server.model.versionspec.ESPrimaryVersionSpec;
import org.eclipse.emf.emfstore.server.model.versionspec.ESTagVersionSpec;
/**
* When querying the history API successfully, the result is a set of {@link ESHistoryInfo}.
* Each ESHistoryInfo contains pointers to versions, in form of PrimaryVersionIdentier,
* as well as possible tags, the log message for the given version
* and optionally the changes for this version.
*
* @author emueller
* @author wesendon
*
* @noextend This interface is not intended to be extended by clients.
* @noimplement This interface is not intended to be implemented by clients.
*/
public interface ESHistoryInfo {
/**
* Returns the version the history information is associated with.
*
* @return the {@link ESPrimaryVersionSpec} of the history information
*/
ESPrimaryVersionSpec getPrimarySpec();
/**
* Returns a list of the {@link ESPrimaryVersionSpec}s that followed this version.
*
* @return a list containing the next {@link ESPrimaryVersionSpec}s
*/
List<ESPrimaryVersionSpec> getNextSpecs();
/**
* Returns the {@link ESPrimaryVersionSpec} of the previous version.
*
* @return the previous version
*/
ESPrimaryVersionSpec getPreviousSpec();
/**
* Returns an optional list of {@link ESPrimaryVersionSpec}s that identifies the versions
* this version was merged from.
*
* @return an optional list of branch versions this version was merged from
*/
List<ESPrimaryVersionSpec> getMergedFromSpecs();
/**
* Returns an optional list of {@link ESPrimaryVersionSpec}s that identifies the versions
* this version was merged from.
*
* @return an optional list of branch versions this version was merged from
*/
List<ESPrimaryVersionSpec> getMergedToSpecs();
/**
* Returns the {@link ESLogMessage} that was specified when a commit succeeded.
*
* @return the log message that is associated with this history information
*/
ESLogMessage getLogMessage();
/**
* Returns the tag specifiers associated with this history.
*
* @return a list of tag specifiers
*/
List<ESTagVersionSpec> getTagSpecs();
/**
* Returns the {@link ESChangePackage} containing the changes associated
* with this history.
*
* @return the change package containing the changes.
*/
ESChangePackage getChangePackage();
}