config.setRepository(repositoryName);
config.setWorkspace(workspaceName);
config.setBackupType(BackupManager.FULL_BACKUP_ONLY);
config.setBackupDir(backDir);
BackupChain bch = backupManagerImpl.startBackup(config);
// wait till full backup will stop
while (bch.getFullBackupState() != BackupChain.FINISHED)
{
Thread.yield();
Thread.sleep(30);
}
if (bch != null)
{
backupManagerImpl.stopBackup(bch);
}
// clean existed workspace
// get all backupable components
List<Backupable> backupable =
repositoryService.getRepository(repositoryName).getWorkspaceContainer(wsEntry.getName())
.getComponentInstancesOfType(Backupable.class);
// close all session
forceCloseSession(repositoryName, wsEntry.getName());
repositoryService.getRepository(repositoryName).removeWorkspace(wsEntry.getName());
// clean
for (Backupable component : backupable)
{
component.clean();
}
// restore
BackupChainLog bclog = new BackupChainLog(new File(bch.getLogFilePath()));
JobWorkspaceRestore job =
new JobWorkspaceRestore(repositoryService, backupManagerImpl, repositoryName, new File(bclog.getLogFilePath()), bclog
.getOriginalWorkspaceEntry());