/*
* eXist Open Source Native XML Database
* Copyright (C) 2005-2011 The eXist-db Project
* http://exist-db.org
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*
* $Id: Restore.java 15109 2011-08-09 13:03:09Z deliriumsky $
*/
package org.exist.backup.restore.listener;
import java.util.ArrayList;
import java.util.List;
import java.util.Observable;
/**
*
* @author Adam Retter <adam@exist-db.org>
*/
public abstract class AbstractRestoreListener implements RestoreListener {
private final List<Problem> problems = new ArrayList<Problem>();
private String currentCollectionName;
private String currentResourceName;
private List<Observable> observables;
private abstract class Problem {
private final String message;
public Problem(String message) {
this.message = message;
}
protected String getMessage() {
return message;
}
}
private class Error extends Problem {
public Error(String message) {
super(message);
}
@Override
public String toString() {
return "ERROR: " + getMessage();
}
}
private class Warning extends Problem {
public Warning(String message) {
super(message);
}
@Override
public String toString() {
return "WARN: " + getMessage();
}
}
@Override
public void restoreStarting() {
info("Starting restore of backup...");
}
@Override
public void restoreFinished() {
info("Finished restore of backup.");
}
@Override
public void createCollection(String collection) {
info("Creating collection " + collection);
}
@Override
public void setCurrentBackup(String currentBackup) {
info("Processing backup: " + currentBackup);
}
@Override
public void setCurrentCollection(String currentCollectionName) {
this.currentCollectionName = currentCollectionName;
}
@Override
public void setCurrentResource(String currentResourceName) {
this.currentResourceName = currentResourceName;
}
@Override
public void observe(Observable observable) {
if(observables == null) {
observables = new ArrayList<Observable>();
}
if(!observables.contains(observable)) {
observables.add(observable);
}
}
@Override
public void restored(String resource) {
info("Restored " + resource);
}
@Override
public void warn(String message) {
problems.add(new Warning(message));
}
@Override
public void error(String message) {
problems.add(new Error(message));
}
@Override
public boolean hasProblems() {
return problems.size() > 0;
}
@Override
public String warningsAndErrorsAsString() {
final StringBuilder builder = new StringBuilder();
builder.append("------------------------------------\n");
builder.append("Problems occured found during restore:\n");
for(final Problem problem : problems) {
builder.append(problem.toString());
builder.append(System.getProperty("line.separator"));
}
return builder.toString();
}
}