/*
* ====================================================================
* Copyright (c) 2004-2012 TMate Software Ltd. All rights reserved.
*
* This software is licensed as described in the file COPYING, which
* you should have received as part of this distribution. The terms
* are also available at http://svnkit.com/license.html.
* If newer versions of this license are posted there, you may use a
* newer version instead, at your option.
* ====================================================================
*/
package org.tmatesoft.svn.cli.svndumpfilter;
import java.util.Iterator;
import org.tmatesoft.svn.core.SVNCancelException;
import org.tmatesoft.svn.core.SVNException;
import org.tmatesoft.svn.core.wc.SVNEvent;
import org.tmatesoft.svn.core.wc.admin.ISVNAdminEventHandler;
import org.tmatesoft.svn.core.wc.admin.SVNAdminClient;
import org.tmatesoft.svn.core.wc.admin.SVNAdminEvent;
import org.tmatesoft.svn.core.wc.admin.SVNAdminEventAction;
/**
* @version 1.3
* @author TMate Software Ltd.
*/
public class SVNDumpFilterIncludeCommand extends SVNDumpFilterCommand implements ISVNAdminEventHandler {
private boolean myHasPrintedRenumberedRevisionsHeader;
private boolean myIsPrintFinalEOL;
public SVNDumpFilterIncludeCommand() {
super("include", null, 0);
}
public void run() throws SVNException {
SVNDumpFilterCommandEnvironment environment = getSVNDumpFilterEnvironment();
if (!environment.isQuiet()) {
if (environment.isDropEmptyRevisions()) {
environment.getErr().println("Including (and dropping empty revisions for) prefixes:");
} else {
environment.getErr().println("Including prefixes:");
}
for (Iterator prefixesIter = environment.getPrefixes().iterator(); prefixesIter.hasNext();) {
String prefix = (String) prefixesIter.next();
environment.getErr().println(" '" + prefix + "'");
}
environment.getErr().println();
}
SVNAdminClient client = getEnvironment().getClientManager().getAdminClient();
client.setEventHandler(this);
client.doFilter(environment.getIn(), environment.getOut(), false, environment.isRenumberRevisions(),
environment.isDropEmptyRevisions(), environment.isPreserveRevisionProperties(),
environment.getPrefixes(), environment.isSkipMissingMergeSources());
if (!environment.isQuiet() && myIsPrintFinalEOL) {
environment.getErr().println();
}
}
public void handleAdminEvent(SVNAdminEvent event, double progress) throws SVNException {
SVNDumpFilterCommandEnvironment environment = getSVNDumpFilterEnvironment();
if (!environment.isQuiet()) {
SVNAdminEventAction action = event.getAction();
if (action == SVNAdminEventAction.DUMP_FILTER_REVISION_COMMITTED ||
action == SVNAdminEventAction.DUMP_FILTER_REVISION_SKIPPED) {
environment.getErr().println(event.getMessage());
} else if (action == SVNAdminEventAction.DUMP_FILTER_TOTAL_REVISIONS_DROPPED) {
environment.getErr().println();
environment.getErr().println(event.getMessage());
environment.getErr().println();
environment.getErr().println();
} else if (action == SVNAdminEventAction.DUMP_FILTER_RENUMBERED_REVISION ||
action == SVNAdminEventAction.DUMP_FILTER_DROPPED_RENUMBERED_REVISION) {
if (!myHasPrintedRenumberedRevisionsHeader) {
environment.getErr().println("Revisions renumbered as follows:");
myHasPrintedRenumberedRevisionsHeader = true;
}
environment.getErr().println(" " + event.getMessage());
} else if (action == SVNAdminEventAction.DUMP_FILTER_TOTAL_NODES_DROPPED) {
if (myHasPrintedRenumberedRevisionsHeader) {
environment.getErr().println();
}
environment.getErr().println(event.getMessage());
myIsPrintFinalEOL = true;
} else if (action == SVNAdminEventAction.DUMP_FILTER_DROPPED_NODE) {
environment.getErr().println(" " + event.getMessage());
}
}
}
public void handleEvent(SVNEvent event, double progress) throws SVNException {
}
public void checkCancelled() throws SVNCancelException {
}
}