package jetbrains.mps.internal.make.runtime.java;
/*Generated by MPS */
import jetbrains.mps.generator.generationTypes.StreamHandler;
import jetbrains.mps.internal.make.runtime.util.FilesDelta;
import jetbrains.mps.vfs.IFile;
import org.jdom.Element;
public class FileDeltaCollector implements StreamHandler {
private final FilesDelta myDelta;
private final IFile myOutputDir;
private final FileProcessor myProcessor;
public FileDeltaCollector(IFile outputDir, FileProcessor fileProcessor) {
myDelta = new FilesDelta(outputDir);
myOutputDir = outputDir;
myProcessor = fileProcessor;
}
public FilesDelta getDelta() {
return myDelta;
}
@Override
public void saveStream(String name, String content) {
IFile file = getFile(name);
if (myProcessor.saveContent(file, content)) {
myDelta.written(file);
} else {
myDelta.kept(file);
}
}
@Override
public void saveStream(String name, Element element) {
IFile file = getFile(name);
if (myProcessor.saveContent(file, element)) {
myDelta.written(file);
} else {
myDelta.kept(file);
}
}
@Override
public void saveStream(String name, byte[] content) {
IFile file = getFile(name);
if (myProcessor.saveContent(file, content)) {
myDelta.written(file);
} else {
myDelta.kept(file);
}
}
@Override
public boolean touch(String name) {
IFile file = getFile(name);
myDelta.kept(file);
return file.exists();
}
private IFile getFile(String name) {
return myOutputDir.getDescendant(name);
}
}