Refactor monitor and exceptions
[lgpl/argeo-commons.git] / org.argeo.cms / src / org / argeo / cms / internal / backup / SystemBackup.java
index 5036cc481aa9ad65db557a8d78d22b43a8d0be69..36d3e0b2deaa91b7b15d9a5d796ae62e7d239b8d 100644 (file)
@@ -29,7 +29,8 @@ import org.apache.commons.vfs2.FileSystemOptions;
 import org.apache.commons.vfs2.Selectors;
 import org.apache.commons.vfs2.UserAuthenticator;
 import org.apache.commons.vfs2.impl.DefaultFileSystemConfigBuilder;
-import org.argeo.ArgeoException;
+import org.argeo.cms.CmsException;
+import org.argeo.util.LangUtils;
 
 /**
  * Combines multiple backups and transfer them to a remote location. Purges
@@ -52,25 +53,22 @@ public class SystemBackup implements Runnable {
        @Override
        public void run() {
                if (atomicBackups.size() == 0)
-                       throw new ArgeoException("No atomic backup listed");
+                       throw new CmsException("No atomic backup listed");
                List<String> failures = new ArrayList<String>();
 
-               SimpleBackupContext backupContext = new SimpleBackupContext(
-                               fileSystemManager, backupsBase, systemName);
+               SimpleBackupContext backupContext = new SimpleBackupContext(fileSystemManager, backupsBase, systemName);
 
                // purge older backups
                FileSystemOptions opts = new FileSystemOptions();
                try {
-                       DefaultFileSystemConfigBuilder.getInstance().setUserAuthenticator(
-                                       opts, userAuthenticator);
+                       DefaultFileSystemConfigBuilder.getInstance().setUserAuthenticator(opts, userAuthenticator);
                } catch (FileSystemException e) {
-                       throw new ArgeoException("Cannot create authentication", e);
+                       throw new CmsException("Cannot create authentication", e);
                }
 
                try {
 
-                       backupPurge.purge(fileSystemManager, backupsBase, systemName,
-                                       backupContext.getDateFormat(), opts);
+                       backupPurge.purge(fileSystemManager, backupsBase, systemName, backupContext.getDateFormat(), opts);
                } catch (Exception e) {
                        failures.add("Purge " + backupsBase + " failed: " + e.getMessage());
                        log.error("Purge of " + backupsBase + " failed", e);
@@ -79,19 +77,16 @@ public class SystemBackup implements Runnable {
                // perform backup
                for (AtomicBackup atomickBackup : atomicBackups) {
                        try {
-                               String target = atomickBackup.backup(fileSystemManager,
-                                               backupsBase, backupContext, opts);
+                               String target = atomickBackup.backup(fileSystemManager, backupsBase, backupContext, opts);
                                if (log.isDebugEnabled())
                                        log.debug("Performed backup " + target);
                        } catch (Exception e) {
-                               String msg = "Atomic backup " + atomickBackup.getName()
-                                               + " failed: " + ArgeoException.chainCausesMessages(e);
+                               String msg = "Atomic backup " + atomickBackup.getName() + " failed: "
+                                               + LangUtils.chainCausesMessages(e);
                                failures.add(msg);
                                log.error(msg);
                                if (log.isTraceEnabled())
-                                       log.trace(
-                                                       "Stacktrace of atomic backup "
-                                                                       + atomickBackup.getName() + " failure.", e);
+                                       log.trace("Stacktrace of atomic backup " + atomickBackup.getName() + " failure.", e);
                        }
                }
 
@@ -104,33 +99,25 @@ public class SystemBackup implements Runnable {
                        // authentication
                        FileSystemOptions remoteOpts = new FileSystemOptions();
                        try {
-                               DefaultFileSystemConfigBuilder.getInstance()
-                                               .setUserAuthenticator(remoteOpts, auth);
-                               backupPurge.purge(fileSystemManager, remoteBase, systemName,
-                                               backupContext.getDateFormat(), remoteOpts);
+                               DefaultFileSystemConfigBuilder.getInstance().setUserAuthenticator(remoteOpts, auth);
+                               backupPurge.purge(fileSystemManager, remoteBase, systemName, backupContext.getDateFormat(), remoteOpts);
                        } catch (Exception e) {
-                               failures.add("Purge " + remoteBase + " failed: "
-                                               + e.getMessage());
+                               failures.add("Purge " + remoteBase + " failed: " + e.getMessage());
                                log.error("Cannot purge " + remoteBase, e);
                        }
 
                        try {
-                               localBaseFo = fileSystemManager.resolveFile(backupsBase + '/'
-                                               + backupContext.getRelativeFolder(), opts);
-                               remoteBaseFo = fileSystemManager.resolveFile(remoteBase + '/'
-                                               + backupContext.getRelativeFolder(), remoteOpts);
+                               localBaseFo = fileSystemManager.resolveFile(backupsBase + '/' + backupContext.getRelativeFolder(),
+                                               opts);
+                               remoteBaseFo = fileSystemManager.resolveFile(remoteBase + '/' + backupContext.getRelativeFolder(),
+                                               remoteOpts);
                                remoteBaseFo.copyFrom(localBaseFo, Selectors.SELECT_ALL);
                                if (log.isDebugEnabled())
-                                       log.debug("Copied backup to " + remoteBaseFo + " from "
-                                                       + localBaseFo);
+                                       log.debug("Copied backup to " + remoteBaseFo + " from " + localBaseFo);
                                // }
                        } catch (Exception e) {
-                               failures.add("Dispatch to " + remoteBase + " failed: "
-                                               + e.getMessage());
-                               log.error(
-                                               "Cannot dispatch backups from "
-                                                               + backupContext.getRelativeFolder() + " to "
-                                                               + remoteBase, e);
+                               failures.add("Dispatch to " + remoteBase + " failed: " + e.getMessage());
+                               log.error("Cannot dispatch backups from " + backupContext.getRelativeFolder() + " to " + remoteBase, e);
                        }
                        BackupUtils.closeFOQuietly(localBaseFo);
                        BackupUtils.closeFOQuietly(remoteBaseFo);
@@ -140,14 +127,11 @@ public class SystemBackup implements Runnable {
                if (failures.size() > 0) {
                        StringBuffer buf = new StringBuffer();
                        for (String failure : failures) {
-                               buf.append('\n').append(failureCount).append(" - ")
-                                               .append(failure);
+                               buf.append('\n').append(failureCount).append(" - ").append(failure);
                                failureCount++;
                        }
-                       throw new ArgeoException(failureCount
-                                       + " error(s) when running the backup,"
-                                       + " check the logs and the backups as soon as possible."
-                                       + buf);
+                       throw new CmsException(failureCount + " error(s) when running the backup,"
+                                       + " check the logs and the backups as soon as possible." + buf);
                }
        }
 
@@ -179,53 +163,54 @@ public class SystemBackup implements Runnable {
                this.remoteBases = remoteBases;
        }
 
-//     public static void main(String args[]) {
-//             while (true) {
-//                     try {
-//                             StandardFileSystemManager fsm = new StandardFileSystemManager();
-//                             fsm.init();
-//
-//                             SystemBackup systemBackup = new SystemBackup();
-//                             systemBackup.setSystemName("mySystem");
-//                             systemBackup
-//                                             .setBackupsBase("/home/mbaudier/dev/src/commons/server/runtime/org.argeo.server.core/target");
-//                             systemBackup.setFileSystemManager(fsm);
-//
-//                             List<AtomicBackup> atomicBackups = new ArrayList<AtomicBackup>();
-//
-//                             MySqlBackup mySqlBackup = new MySqlBackup("root", "", "test");
-//                             atomicBackups.add(mySqlBackup);
-//                             PostgreSqlBackup postgreSqlBackup = new PostgreSqlBackup(
-//                                             "argeo", "argeo", "gis_template");
-//                             atomicBackups.add(postgreSqlBackup);
-//                             SvnBackup svnBackup = new SvnBackup(
-//                                             "/home/mbaudier/tmp/testsvnrepo");
-//                             atomicBackups.add(svnBackup);
-//
-//                             systemBackup.setAtomicBackups(atomicBackups);
-//
-//                             Map<String, UserAuthenticator> remoteBases = new HashMap<String, UserAuthenticator>();
-//                             StaticUserAuthenticator userAuthenticator = new StaticUserAuthenticator(
-//                                             null, "demo", "demo");
-//                             remoteBases.put("sftp://localhost/home/mbaudier/test",
-//                                             userAuthenticator);
-//                             systemBackup.setRemoteBases(remoteBases);
-//
-//                             systemBackup.run();
-//
-//                             fsm.close();
-//                     } catch (FileSystemException e) {
-//                             // TODO Auto-generated catch block
-//                             e.printStackTrace();
-//                             System.exit(1);
-//                     }
-//
-//                     // wait
-//                     try {
-//                             Thread.sleep(120 * 1000);
-//                     } catch (InterruptedException e) {
-//                             e.printStackTrace();
-//                     }
-//             }
-//     }
+       // public static void main(String args[]) {
+       // while (true) {
+       // try {
+       // StandardFileSystemManager fsm = new StandardFileSystemManager();
+       // fsm.init();
+       //
+       // SystemBackup systemBackup = new SystemBackup();
+       // systemBackup.setSystemName("mySystem");
+       // systemBackup
+       // .setBackupsBase("/home/mbaudier/dev/src/commons/server/runtime/org.argeo.server.core/target");
+       // systemBackup.setFileSystemManager(fsm);
+       //
+       // List<AtomicBackup> atomicBackups = new ArrayList<AtomicBackup>();
+       //
+       // MySqlBackup mySqlBackup = new MySqlBackup("root", "", "test");
+       // atomicBackups.add(mySqlBackup);
+       // PostgreSqlBackup postgreSqlBackup = new PostgreSqlBackup(
+       // "argeo", "argeo", "gis_template");
+       // atomicBackups.add(postgreSqlBackup);
+       // SvnBackup svnBackup = new SvnBackup(
+       // "/home/mbaudier/tmp/testsvnrepo");
+       // atomicBackups.add(svnBackup);
+       //
+       // systemBackup.setAtomicBackups(atomicBackups);
+       //
+       // Map<String, UserAuthenticator> remoteBases = new HashMap<String,
+       // UserAuthenticator>();
+       // StaticUserAuthenticator userAuthenticator = new StaticUserAuthenticator(
+       // null, "demo", "demo");
+       // remoteBases.put("sftp://localhost/home/mbaudier/test",
+       // userAuthenticator);
+       // systemBackup.setRemoteBases(remoteBases);
+       //
+       // systemBackup.run();
+       //
+       // fsm.close();
+       // } catch (FileSystemException e) {
+       // // TODO Auto-generated catch block
+       // e.printStackTrace();
+       // System.exit(1);
+       // }
+       //
+       // // wait
+       // try {
+       // Thread.sleep(120 * 1000);
+       // } catch (InterruptedException e) {
+       // e.printStackTrace();
+       // }
+       // }
+       // }
 }