Advertisement
Guest User

Untitled

a guest
Feb 16th, 2017
270
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.65 KB | None | 0 0
  1. package l2f.gameserver.dao;
  2.  
  3. import l2f.gameserver.ConfigHolder;
  4. import org.slf4j.Logger;
  5. import org.slf4j.LoggerFactory;
  6.  
  7. import java.io.File;
  8. import java.io.IOException;
  9. import java.text.SimpleDateFormat;
  10. import java.util.Arrays;
  11. import java.util.Calendar;
  12. import java.util.regex.Matcher;
  13. import java.util.regex.Pattern;
  14.  
  15. public final class DatabaseBackupManager
  16. {
  17.     private static final Logger LOG = LoggerFactory.getLogger(DatabaseBackupManager.class);
  18.     private static final Pattern DATABASE_NAME_PATTERN = Pattern.compile("jdbc:mysql://localhost/(.+?)\\?(.+?)");
  19.    
  20.     public static String doBackup(boolean logToConsole)
  21.     {
  22.         String databaseName = getDatabaseName();
  23.         if(databaseName == null)
  24.         {
  25.             String error = "Backup: Error while getting Database Name!";
  26.             if(logToConsole)
  27.                 LOG.error(error);
  28.             return error;
  29.         }
  30.         String path = getPath(databaseName);
  31.         if(path == null)
  32.         {
  33.             String error = "Error while creating Backup File!";
  34.             if(logToConsole)
  35.                 LOG.error(error);
  36.             return error;
  37.         }
  38.         String pathToDump = ConfigHolder.getString("MySqlDumpPath");
  39.         if(!pathToDump.isEmpty())
  40.             pathToDump += "\\";
  41.         String cmd = pathToDump + "mysqldump -u" + ConfigHolder.getString("Login") + " -p" + ConfigHolder.getString("Password") + " " + databaseName + " -r " + path;
  42.         return executeCMD(cmd, logToConsole);
  43.     }
  44.    
  45.     private static String executeCMD(String cmd, boolean logToConsole)
  46.     {
  47.         try
  48.         {
  49.             if(logToConsole)
  50.                 LOG.info("Executing CMD: " + cmd);
  51.             Process runtimeProcess = Runtime.getRuntime().exec(cmd);
  52.             int processComplete = runtimeProcess.waitFor();
  53.            
  54.             String returnMsg;
  55.             if (processComplete == 0)
  56.             {
  57.                 returnMsg = "Backup finished successfully!";
  58.                 if(logToConsole)
  59.                     LOG.info(returnMsg);
  60.             }
  61.             else
  62.             {
  63.                 returnMsg = "Backup Failed! Code: " + processComplete;
  64.                 if(logToConsole)
  65.                     LOG.info(returnMsg);
  66.             }
  67.             return returnMsg;
  68.         }
  69.         catch (IOException | InterruptedException ex)
  70.         {
  71.             LOG.error("Error while making Backup!", ex);
  72.             return ex.getMessage() + " Error!";
  73.         }
  74.     }
  75.    
  76.     private static String getDatabaseName()
  77.     {
  78.         Matcher m = DATABASE_NAME_PATTERN.matcher(ConfigHolder.getString("URL"));
  79.        
  80.         if(m.find())
  81.         {
  82.             return m.group(1);
  83.         }
  84.        
  85.         return null;
  86.     }
  87.    
  88.     private static String getPath(String databaseName)
  89.     {
  90.         Calendar c = Calendar.getInstance();
  91.         String folderPath = new File("").getAbsolutePath() + "/log/backups";
  92.         new File(folderPath).mkdir();
  93.            
  94.         SimpleDateFormat format1 = new SimpleDateFormat("yyyy-MM-dd_HH.mm");
  95.         String formatted = format1.format(c.getTime());
  96.         return folderPath + "/" + databaseName + "_" + formatted + ".sql";
  97.     }
  98. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement