create backup of old configuration files

This commit is contained in:
Sebastian Sdorra
2011-04-27 12:58:13 +02:00
parent f572d66316
commit ac062ebd19

View File

@@ -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())
{ {