[exo-jcr-commits] exo-jcr SVN: r3632 - jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl.
do-not-reply at jboss.org
do-not-reply at jboss.org
Thu Dec 9 06:17:46 EST 2010
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
*
More information about the exo-jcr-commits
mailing list