package com.sandwich.util.io;
import java.io.File;
import java.io.IOException;
public abstract class SourceAndDestinationFileAction extends ForEachFileAction {
private final File source;
private final File destination;
public SourceAndDestinationFileAction(String sourceDir, String destinationDir){
this(new File(sourceDir), new File(destinationDir));
}
public SourceAndDestinationFileAction(File source, File destination){
this.source = assertIsDirectory(source);
this.destination = assertIsDirectory(destination);
}
public void operate() throws IOException {
super.operate(source);
}
public void onFile(File file) throws IOException {
String subDir = file.getAbsolutePath().replace(source.getAbsolutePath(), "");
File dest = new File(destination.getAbsolutePath() + File.separator + subDir);
sourceToDestination(file, dest);
}
abstract public void sourceToDestination(File src, File dest) throws IOException;
private File assertIsDirectory(File file) {
if(file == null || !file.isDirectory()){
throw new IllegalArgumentException(file + " is not a directory.");
}
return file;
}
}