mirror of
https://github.com/scm-manager/scm-manager.git
synced 2025-11-12 00:15:44 +01:00
create backup of old configuration files
This commit is contained in:
@@ -51,10 +51,13 @@ import sonia.scm.util.Util;
|
|||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FileOutputStream;
|
import java.io.FileOutputStream;
|
||||||
|
import java.io.FileWriter;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.OutputStream;
|
import java.io.OutputStream;
|
||||||
|
|
||||||
|
import java.text.MessageFormat;
|
||||||
import java.text.ParseException;
|
import java.text.ParseException;
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
|
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
|
||||||
@@ -103,7 +106,7 @@ public class ScmUpgradeHandler
|
|||||||
SCMContext.getContext().getVersion());
|
SCMContext.getContext().getVersion());
|
||||||
}
|
}
|
||||||
|
|
||||||
fixDate(configDirectory);
|
fixDate(baseDirectory, configDirectory);
|
||||||
}
|
}
|
||||||
|
|
||||||
// fresh installation
|
// fresh installation
|
||||||
@@ -150,18 +153,60 @@ public class ScmUpgradeHandler
|
|||||||
* Method description
|
* Method description
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
|
* @param baseDirectory
|
||||||
|
* @param note
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
private File createBackupDirectory(File baseDirectory, String note)
|
||||||
|
{
|
||||||
|
String date = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date());
|
||||||
|
File backupDirectory =
|
||||||
|
new File(baseDirectory, "backups".concat(File.separator).concat(date));
|
||||||
|
|
||||||
|
IOUtil.mkdirs(backupDirectory);
|
||||||
|
|
||||||
|
FileWriter writer = null;
|
||||||
|
|
||||||
|
note = MessageFormat.format(note, SCMContext.getContext().getVersion());
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
writer = new FileWriter(new File(backupDirectory, "note.txt"));
|
||||||
|
writer.write(note);
|
||||||
|
}
|
||||||
|
catch (IOException ex)
|
||||||
|
{
|
||||||
|
logger.error("could not write note.txt for backup", ex);
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
IOUtil.close(writer);
|
||||||
|
}
|
||||||
|
|
||||||
|
return backupDirectory;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Method description
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* @param baseDirectory
|
||||||
* @param configDirectory
|
* @param configDirectory
|
||||||
*/
|
*/
|
||||||
private void fixDate(File configDirectory)
|
private void fixDate(File baseDirectory, File configDirectory)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
DocumentBuilder builder =
|
DocumentBuilder builder =
|
||||||
DocumentBuilderFactory.newInstance().newDocumentBuilder();
|
DocumentBuilderFactory.newInstance().newDocumentBuilder();
|
||||||
|
File backupDirectory = createBackupDirectory(baseDirectory,
|
||||||
|
"upgrade to version {0}");
|
||||||
|
|
||||||
fixDate(builder, configDirectory, "users.xml");
|
fixDate(builder, configDirectory, backupDirectory, "users.xml");
|
||||||
fixDate(builder, configDirectory, "groups.xml");
|
fixDate(builder, configDirectory, backupDirectory, "groups.xml");
|
||||||
fixDate(builder, configDirectory, "repositories.xml");
|
fixDate(builder, configDirectory, backupDirectory, "repositories.xml");
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
@@ -175,6 +220,7 @@ public class ScmUpgradeHandler
|
|||||||
*
|
*
|
||||||
* @param builder
|
* @param builder
|
||||||
* @param configDirectory
|
* @param configDirectory
|
||||||
|
* @param backupDirectory
|
||||||
* @param filename
|
* @param filename
|
||||||
*
|
*
|
||||||
* @throws IOException
|
* @throws IOException
|
||||||
@@ -183,11 +229,14 @@ public class ScmUpgradeHandler
|
|||||||
* @throws TransformerException
|
* @throws TransformerException
|
||||||
*/
|
*/
|
||||||
private void fixDate(DocumentBuilder builder, File configDirectory,
|
private void fixDate(DocumentBuilder builder, File configDirectory,
|
||||||
String filename)
|
File backupDirectory, String filename)
|
||||||
throws SAXException, IOException, TransformerConfigurationException,
|
throws SAXException, IOException, TransformerConfigurationException,
|
||||||
TransformerException
|
TransformerException
|
||||||
{
|
{
|
||||||
File configFile = new File(configDirectory, filename);
|
File configFile = new File(configDirectory, filename);
|
||||||
|
File backupFile = new File(backupDirectory, filename);
|
||||||
|
|
||||||
|
IOUtil.copy(configFile, backupFile);
|
||||||
|
|
||||||
if (configFile.exists())
|
if (configFile.exists())
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user