[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