package org.exoplatform.services.cms.documents;
import javax.jcr.Node;
import javax.jcr.version.Version;
import java.util.List;
/**
* Created by The eXo Platform SEA
* Author : eXoPlatform
* toannh@exoplatform.com
* On 8/13/15
* #comments here
*/
public interface AutoVersionService {
public final String DRIVES_AUTO_VERSION = "ecms.documents.versioning.drives";
public final String DRIVES_AUTO_VERSION_MAX = "ecms.documents.versions.max";
public final String DRIVES_AUTO_VERSION_EXPIRED = "ecms.documents.versions.expiration";
public final int DOCUMENT_AUTO_DEFAULT_VERSION_MAX=0;
public final int DOCUMENT_AUTO_DEFAULT_VERSION_EXPIRED=0;
public final String PERSONAL_DRIVE_PARRTEN = "/Users/${userId}/Private";
public final String GROUP_DRIVE_PARRTEN = "/Groups${groupId}/Documents";
public final String PERSONAL_DRIVE_PREFIX = "/Users";
public final String GROUP_DRIVE_PREFIX = "/Groups";
/**
* Versioning for document
* @param currentNode
* @return created version
* @throws Exception
*/
public Version autoVersion(Node currentNode) throws Exception;
/**
* Versioning for document
* @param currentNode
* @param isSkipCheckDrive
* @return created version
* @throws Exception
*/
Version autoVersion(Node currentNode, boolean isSkipCheckDrive) throws Exception;
/**
* Versioning for document
* @param currentNode
* @param sourceNode
* @throws Exception
*/
public void autoVersion(Node currentNode, Node sourceNode) throws Exception;
/**
* Check support versioning of document
* @param nodePath
* @return
* @throws Exception
*/
public boolean isVersionSupport(String nodePath, String workspace) throws Exception;
/**
* Get List of Drive supported versioning
* @return List of Drive supported versioning
*/
public List<String> getDriveAutoVersion();
/**
* Versioning for document at Drive dont support Autoversioning
* @param currentNode
* @param sourceNode
* @param isSkipDriveCheck
* @throws Exception
*/
void autoVersion(Node currentNode, Node sourceNode, boolean isSkipDriveCheck) throws Exception;
}