package org.reldb.rel.v0.backup;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.URL;
import org.reldb.rel.exceptions.ExceptionFatal;
import org.reldb.rel.v0.interpreter.Interpreter;
import org.reldb.rel.v0.storage.RelDatabase;
import org.reldb.rel.v0.version.Version;
public class Backup {
public static boolean backup(RelDatabase database, PrintStream outputStream) {
String backupScript = "";
try {
ClassLoader loader = database.getClass().getClassLoader();
URL backupScriptURL = loader.getResource("org/reldb/rel/v" + Version.getDatabaseVersion() + "/backup/DatabaseToScript.rel");
if (backupScriptURL == null) {
new ExceptionFatal("RS0414: Unable to find backup script.");
}
BufferedReader in = new BufferedReader(new InputStreamReader(backupScriptURL.openStream()));
String line;
while ((line = in.readLine()) != null) {
backupScript += line + System.lineSeparator();
}
in.close();
} catch (IOException ioe) {
new ExceptionFatal("RS0412: Unable to load backup script", ioe);
}
try {
Interpreter.executeStatement(database, backupScript, outputStream);
return true;
} catch (Exception e) {
new ExceptionFatal("RS0413: Unable to run backup script", e);
return false;
}
}
}