/* * Copyright (C) 2009 eXo Platform SAS. * * This is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as * published by the Free Software Foundation; either version 2.1 of * the License, or (at your option) any later version. * * This software is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this software; if not, write to the Free * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA * 02110-1301 USA, or see the FSF site: http://www.fsf.org. */ package org.exoplatform.services.jcr.ext.backup; import org.exoplatform.services.jcr.config.RepositoryConfigurationException; import org.exoplatform.services.jcr.config.RepositoryEntry; import org.exoplatform.services.jcr.config.WorkspaceEntry; import org.exoplatform.services.jcr.ext.backup.impl.BackupMessage; import org.exoplatform.services.jcr.ext.backup.impl.JobRepositoryRestore; import org.exoplatform.services.jcr.ext.backup.impl.JobWorkspaceRestore; import java.io.File; import java.util.List; import java.util.Map; import java.util.Set; import javax.jcr.RepositoryException; /** * Created by The eXo Platform SARL .<br> * * @author Gennady Azarenkov * @version $Id: $ */ public interface BackupManager { /** * The full backup only the type of backup. */ static final int FULL_BACKUP_ONLY = 0; /** * The full and incremental backup the type of backup. */ static final int FULL_AND_INCREMENTAL = 1; /** * Getting current backups. * * @return Set * return the set of current backups */ Set<BackupChain> getCurrentBackups(); /** * Getting current repository backups. * * @return Set * return the set of current backups */ Set<RepositoryBackupChain> getCurrentRepositoryBackups(); /** * Getting list of restores. * * @return List * return the list of backups */ List<JobWorkspaceRestore> getRestores(); /** * Getting last restore by repository and workspace name. * * @param repositoryName * String, the repository name * @param workspaceName * String, the workspace name * @return JobWorkspaceRestore * return the job to restore */ JobWorkspaceRestore getLastRestore(String repositoryName, String workspaceName); /** * Getting list of repository restores. * * @return List * return the list of backups */ List<JobRepositoryRestore> getRepositoryRestores(); /** * Getting last repository restore by repository name. * * @param repositoryName * String, the repository name * @return JobWorkspaceRestore * return the job to restore */ JobRepositoryRestore getLastRepositoryRestore(String repositoryName); /** * Getting all backup logs . * * @return BackupChainLog[] * return the all backup logs */ BackupChainLog[] getBackupsLogs(); /** * Getting all repository backup logs. * * @return RepositoryBackupChainLog[] * return the all repository backup logs */ RepositoryBackupChainLog[] getRepositoryBackupsLogs(); /** * Starting backup. * * @param config * BackupConfig, the backup configuration * @return BackupChain * return the backup chain * @throws BackupOperationException BackupOperationException * will be generate the exception BackupOperationException * @throws BackupConfigurationException * will be generate the exception BackupConfigurationException * @throws RepositoryException * will be generate the exception RepositoryException * @throws RepositoryConfigurationException * will be generate the exception RepositoryConfigurationException */ BackupChain startBackup(BackupConfig config) throws BackupOperationException, BackupConfigurationException, RepositoryException, RepositoryConfigurationException; /** * Stop backup. * * @param backup * BackupChain, the backup chain */ void stopBackup(BackupChain backup); /** * Finding current backup by repository and workspace. * * @param reposytore * String, the repository name * @param workspace * String, the workspace name * @return BackupChain * return the current backup */ BackupChain findBackup(String reposytore, String workspace); /** * Finding current backup by identifier. * * @param backupId * String the backup identifier * @return BackupChain * return the current backup */ BackupChain findBackup(String backupId); /** * Restore from backup. * * @param log * BackupChainLog, the backup log * @param repositoryName * String, repository name * @param workspaceEntry * WorkspaceEntry, the workspace entry * @param asynchronous * boolean, in 'true' then asynchronous restore. * @throws BackupOperationException * will be generate the exception BackupOperationException * @throws BackupConfigurationException * will be generate the exception BackupConfigurationException * @throws RepositoryException * will be generate the exception RepositoryException * @throws RepositoryConfigurationException * will be generate the exception RepositoryConfigurationException */ void restore(BackupChainLog log, String repositoryName, WorkspaceEntry workspaceEntry, boolean asynchronous) throws BackupOperationException, BackupConfigurationException, RepositoryException, RepositoryConfigurationException; /** * Getting the backup messages. * * @return BackupMessage[] * return the backup messages */ BackupMessage[] getMessages(); /** * Getting backup directory. * * @return File * return the backup directory */ File getBackupDirectory(); /** * Getting full backup type. * * @return Sting * return FQN to full backup type */ String getFullBackupType(); /** * Getting incremental backup type. * * @return String * return FQN to full backup type */ String getIncrementalBackupType(); /** * Getting default incremental job period. * * @return long * return the default incremental job period */ long getDefaultIncrementalJobPeriod(); /** * Starting repository backup. * * @param config * RepositoryBackupConfig, the backup configuration to repository * @return RepositoryBackupChain * return the repository backup chain * @throws BackupOperationException BackupOperationException * will be generate the exception BackupOperationException * @throws BackupConfigurationException * will be generate the exception BackupConfigurationException * @throws RepositoryException * will be generate the exception RepositoryException * @throws RepositoryConfigurationException * will be generate the exception RepositoryConfigurationException */ RepositoryBackupChain startBackup(RepositoryBackupConfig config) throws BackupOperationException, BackupConfigurationException, RepositoryException, RepositoryConfigurationException; /** * Stop backup. * * @param backup * RepositoryBackupChain, the repositroy backup chain */ void stopBackup(RepositoryBackupChain backup); /** * Repository restore from backup. * * @param log * RepositoryBackupChainLog, the repository backup log * @param repositoryEntry * RepositoryEntry, the repository entry * @param workspaceNamesCorrespondMap * the map with correspondence workspace name in RepositoryEntry and RepositoryBackupChainLog. * @param asynchronous * boolean, in 'true' then asynchronous restore. * @throws BackupOperationException * will be generate the exception BackupOperationException * @throws BackupConfigurationException * will be generate the exception BackupConfigurationException * @throws RepositoryException * will be generate the exception RepositoryException * @throws RepositoryConfigurationException * will be generate the exception RepositoryConfigurationException */ void restore(RepositoryBackupChainLog log, RepositoryEntry repositoryEntry, Map<String, String> workspaceNamesCorrespondMap, boolean asynchronous) throws BackupOperationException, BackupConfigurationException, RepositoryException, RepositoryConfigurationException; /** * Repository restore from backup. * * @param log * RepositoryBackupChainLog, the repository backup log * @param repositoryEntry * RepositoryEntry, the repository entry * @param asynchronous * boolean, in 'true' then asynchronous restore. * @throws BackupOperationException * will be generate the exception BackupOperationException * @throws BackupConfigurationException * will be generate the exception BackupConfigurationException * @throws RepositoryException * will be generate the exception RepositoryException * @throws RepositoryConfigurationException * will be generate the exception RepositoryConfigurationException */ void restore(RepositoryBackupChainLog log, RepositoryEntry repositoryEntry, boolean asynchronous) throws BackupOperationException, BackupConfigurationException, RepositoryException, RepositoryConfigurationException; /** * Repository restore from backup. * * @param log * RepositoryBackupChainLog, the repository backup log * @param repositoryEntry * RepositoryEntry, the repository entry * @param asynchronous * boolean, in 'true' then asynchronous restore. * @param removeJobOnceOver * boolean, in 'true' then restore job well remove after restore. * @throws BackupOperationException * will be generate the exception BackupOperationException * @throws BackupConfigurationException * will be generate the exception BackupConfigurationException * @throws RepositoryException * will be generate the exception RepositoryException * @throws RepositoryConfigurationException * will be generate the exception RepositoryConfigurationException */ void restore(RepositoryBackupChainLog log, RepositoryEntry repositoryEntry, boolean asynchronous, boolean removeJobOnceOver) throws BackupOperationException, BackupConfigurationException, RepositoryException, RepositoryConfigurationException; /** * Finding current backup by repository. * * @param repository * String, the repository name * @return RepositoryBackupChain * return the current backup to repository */ RepositoryBackupChain findRepositoryBackup(String repository); /** * Finding current backup by id. * * @param id * String, the repository name * @return RepositoryBackupChain * return the current backup to repository */ RepositoryBackupChain findRepositoryBackupId(String id); }