Author: areshetnyak
Date: 2010-12-09 06:17:46 -0500 (Thu, 09 Dec 2010)
New Revision: 3632
Modified:
jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/JobRepositoryRestore.java
Log:
EXOJCR-1078 : JobRepositoryRestore was changed.
Modified:
jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/JobRepositoryRestore.java
===================================================================
---
jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/JobRepositoryRestore.java 2010-12-09
10:30:15 UTC (rev 3631)
+++
jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/JobRepositoryRestore.java 2010-12-09
11:17:46 UTC (rev 3632)
@@ -16,16 +16,6 @@
*/
package org.exoplatform.services.jcr.ext.backup.impl;
-import java.io.File;
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.List;
-import java.util.Map;
-
-import javax.jcr.InvalidItemStateException;
-import javax.jcr.NoSuchWorkspaceException;
-import javax.jcr.RepositoryException;
-
import org.exoplatform.services.jcr.RepositoryService;
import org.exoplatform.services.jcr.config.RepositoryEntry;
import org.exoplatform.services.jcr.config.SimpleParameterEntry;
@@ -34,14 +24,27 @@
import org.exoplatform.services.jcr.core.ManageableRepository;
import org.exoplatform.services.jcr.core.WorkspaceContainerFacade;
import org.exoplatform.services.jcr.ext.backup.BackupChainLog;
+import org.exoplatform.services.jcr.ext.backup.BackupOperationException;
import org.exoplatform.services.jcr.ext.backup.RepositoryBackupChainLog;
import org.exoplatform.services.jcr.ext.backup.RepositoryRestoreExeption;
-import org.exoplatform.services.jcr.impl.core.BackupWorkspaceInitializer;
+import org.exoplatform.services.jcr.ext.backup.impl.fs.FullBackupJob;
+import org.exoplatform.services.jcr.impl.core.RdbmsWorkspaceInitializer;
import org.exoplatform.services.jcr.impl.core.RepositoryImpl;
import org.exoplatform.services.jcr.impl.core.SessionRegistry;
+import org.exoplatform.services.jcr.impl.core.SysViewWorkspaceInitializer;
import org.exoplatform.services.log.ExoLogger;
import org.exoplatform.services.log.Log;
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.List;
+import java.util.Map;
+
+import javax.jcr.InvalidItemStateException;
+import javax.jcr.NoSuchWorkspaceException;
+import javax.jcr.RepositoryException;
+
/**
* Created by The eXo Platform SAS.
*
@@ -148,11 +151,14 @@
/**
* Will be restored the workspace.
* @throws RepositoryRestoreExeption
+ * @throws ClassNotFoundException
+ * @throws BackupOperationException
*
* @throws Throwable
* will be generated the Throwable
*/
- protected void restoreRepository() throws RepositoryRestoreExeption
+ protected void restoreRepository() throws RepositoryRestoreExeption,
BackupOperationException,
+ ClassNotFoundException
{
List<WorkspaceEntry> originalWorkspaceEntrys =
repositoryEntry.getWorkspaceEntries();
@@ -172,18 +178,9 @@
//getting backup chail log to system workspace.
BackupChainLog systemBackupChainLog =
workspacesMapping.get(systemWorkspaceEntry.getName());
- File fullBackupFile = new
File(systemBackupChainLog.getJobEntryInfos().get(0).getURL().getPath());
+
+ WorkspaceInitializerEntry wiEntry =
getWorkspaceInitializerEntry(systemBackupChainLog);
- // set the initializer SysViewWorkspaceInitializer
- WorkspaceInitializerEntry wiEntry = new WorkspaceInitializerEntry();
- wiEntry.setType(BackupWorkspaceInitializer.class.getCanonicalName());
-
- List<SimpleParameterEntry> wieParams = new
ArrayList<SimpleParameterEntry>();
- wieParams.add(new
SimpleParameterEntry(BackupWorkspaceInitializer.RESTORE_PATH_PARAMETER, fullBackupFile
- .getParent()));
-
- wiEntry.setParameters(wieParams);
-
// set initializer
systemWorkspaceEntry.setInitializer(wiEntry);
@@ -273,6 +270,62 @@
}
}
+ private WorkspaceInitializerEntry getWorkspaceInitializerEntry(BackupChainLog
systemBackupChainLog)
+ throws BackupOperationException, ClassNotFoundException
+ {
+ String fullBackupPath =
systemBackupChainLog.getJobEntryInfos().get(0).getURL().getPath();
+
+ String fullbackupType = null;
+ try
+ {
+ if
((Class.forName(systemBackupChainLog.getFullBackupType()).equals(FullBackupJob.class)))
+ {
+ fullbackupType = systemBackupChainLog.getFullBackupType();
+ }
+ else if ((Class.forName(systemBackupChainLog.getFullBackupType())
+
.equals(org.exoplatform.services.jcr.ext.backup.impl.rdbms.FullBackupJob.class)))
+ {
+ fullbackupType = systemBackupChainLog.getFullBackupType();
+ }
+ else
+ {
+ throw new BackupOperationException("Class \"" +
systemBackupChainLog.getFullBackupType()
+ + "\" is not support as full backup.");
+ }
+ }
+ catch (ClassNotFoundException e)
+ {
+ throw new BackupOperationException("Class \"" +
systemBackupChainLog.getFullBackupType() + "\" is not found.",
+ e);
+ }
+
+ WorkspaceInitializerEntry wiEntry = new WorkspaceInitializerEntry();
+ if ((Class.forName(fullbackupType).equals(FullBackupJob.class)))
+ {
+ // set the initializer SysViewWorkspaceInitializer
+ wiEntry.setType(SysViewWorkspaceInitializer.class.getCanonicalName());
+
+ List<SimpleParameterEntry> wieParams = new
ArrayList<SimpleParameterEntry>();
+ wieParams.add(new
SimpleParameterEntry(SysViewWorkspaceInitializer.RESTORE_PATH_PARAMETER,
fullBackupPath));
+
+ wiEntry.setParameters(wieParams);
+ }
+ else if ((Class.forName(fullbackupType)
+
.equals(org.exoplatform.services.jcr.ext.backup.impl.rdbms.FullBackupJob.class)))
+ {
+ // set the initializer RdbmsWorkspaceInitializer
+ wiEntry.setType(RdbmsWorkspaceInitializer.class.getCanonicalName());
+
+ List<SimpleParameterEntry> wieParams = new
ArrayList<SimpleParameterEntry>();
+ wieParams.add(new
SimpleParameterEntry(RdbmsWorkspaceInitializer.RESTORE_PATH_PARAMETER, (new File(
+ fullBackupPath).getParent())));
+
+ wiEntry.setParameters(wieParams);
+ }
+
+ return wiEntry;
+ }
+
/**
* Close all open session in repository
*
Show replies by date