package jetbrains.mps.jps.build;
import com.intellij.openapi.util.io.FileUtil;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.Set;
/**
* evgeny, 11/28/12
*/
public class MPSIdeaRefreshComponent {
private final Object LOCK = new Object();
private Collection<String> created = new ArrayList<String>();
private Collection<String> removed = new ArrayList<String>();
private Collection<String> genRoots = new ArrayList<String>();
public void refresh(String path) {
synchronized (LOCK) {
created.add(path);
}
}
public void removed(Collection<String> paths) {
synchronized (LOCK) {
removed.addAll(paths);
}
}
public void addOutputRoot(String path) {
path = FileUtil.toCanonicalPath(path);
synchronized (LOCK) {
genRoots.add(path);
}
}
Collection<String> getFilesToRefresh() {
Set<String> result = new HashSet<String>();
synchronized (LOCK) {
result.addAll(created);
for (String r : removed) {
for (String root : genRoots) {
if (FileUtil.isAncestor(root, r, false)) {
result.add(r);
break;
}
}
}
}
return result;
}
}